探测以太网最大传输单元的方法及维护端点
技术领域
本发明涉及网络传输技术领域,具体涉及探测以太网最大传输单元(MTU,Maximum Transmission Unit)的方法及维护端点。
背景技术
运行、管理和维护(OAM,Operation,Administration and Management)机制在传统电信网中已应用很久了,其主要是通过故障检测、告警、定位和隔离等手段提高网络的运营维护水平。
随着以太网技术向城域网和广域网的拓展,电气和电子工程师协会(IEEE,Institute of Electrical and Electronics Engineer)和国际电信联盟远程通信标准化组织(ITU-T,Telecommunication Standardization Sector of ITU)等标准化组织完成了以太网OAM的标准化工作。IEEE于2007年通过IEEE802.1ag,该标准的名称是连通错误管理(CFM,Connectivity FaultManagement),它定义了一种在以太网上实现端到端的链路管理和维护方法。以下对它的基本概念和功能做简单介绍。
基本概念:
维护域(MD,Maintenance Domain):连通错误管理所覆盖的网络称为维护域,它的界限是由配置在端口上的一系列维护点所限制的。维护域具有级别,高级别的维护域内可以嵌套低级别的维护域即,高级别维护域所覆盖的范围比低级别维护域要大。在草案5.2中,用0~7的整数表示级别,级别越高,则数字越大。
维护集(MA,Maintenance Association):维护域中的一个集合,包含一些维护点。维护集具有虚拟局域网(VLAN,Virtual Local Area Network)的属性,维护集中的维护点所发送的报文在该VLAN内被转发,同时也接收维护集内其它维护点发送的报文。
维护点(MP,Maintenance Point):维护端点和维护中间点的统称。配置在端口上,属于一个维护集。在一个端口上,每个维护集只能配置一个维护点。维护点有两种,分别是维护端点和维护中间点。
维护端点(MEP,Maintenance association End Point):维护连接的终结点,可以收发任何IEEE 802.1ag报文。维护端点配置在端口上,它确定了维护域的范围。维护端点所属的维护集和维护域确定了维护端点所发出的报文的VLAN属性和级别属性。根据维护端点在维护域中所处的位置,维护端点的方向有内向和外向。如果所配置的维护端点从所在端口接收IEEE 802.1ag报文,则该维护端点是外向的;反之,如果维护端点从其它端口接收IEEE802.1ag报文,则该维护端点是内向的。
维护中间点(MIP,Maintenance association Intermediate Point):维护连接的中间点,可处理和回应IEEE 802.1ag报文。
以太网连通错误管理的功能主要包括:连通性检测、环回、链路跟踪,分别如下:
一、连通性检测(Continuity Check)功能
连通性检测功能是IEEE 802.1ag的最基本功能,用来检测维护端点之间链路的连通状态。连通状态的检测方法是:每个维护端点根据已设定好的频率周期性地发送连通检测报文(CCM,Continuity Check Message),同时接收其它维护端点发送的CCM,如果接收的报文频率正常,则说明其它维护端点到本维护端点的路径是连通的;如果有若干个CCM没有收到,则认为该路径有故障。
CCM是一种组播报文,它在交换机内被广播转发,直到碰到维护端点为止。
远端故障指示(RDI,Remote Defect Indication)位是CCM中的一个比特位,用于标识本端的接收故障。如果本地维护端点接收到所有已配置的维护端点的CCM,则本地维护端点发出的CCM的RDI位是不置位的(即等于0);如果本地维护端点没有接收到其中任何一个远端维护端点的CCM,则在发送的CCM中将RDI位置位(即等于1)。
二、环回(LB,Loop Back)功能
以太网环回功能用于验证与远端设备之间的连接状态,实现的方式是由一端的设备发送环回报文(LBM,LB Message)给远端节点,根据能否接收到对方反馈的环回应答报文来检验连通性。如果收到对方的应答,则认为链路是连通的;否则,认为链路有故障。
三、链路跟踪(LT,Link Trace)功能
链路跟踪功能有两个目的:相邻关系检索和故障定位。通过发送链路跟踪报文(LTM,LT Message)给目标维护端点,目标维护端点及链路跟踪报文路过的维护点接收到并返回链路跟踪响应(LTR,Link Trace Response)报文,以此来检测故障点。
IEEE 802.1ag支持分层管理,层次用MA的级别标识。高低层之间可以嵌套,高层MA可以跨越低层MA,低层MA无法跨越高层MA。所有的IEEE802.1ag报文都由维护端点发起,维护中间点不会主动发送任何IEEE 802.1ag报文,但维护中间点会响应LTM或目的为自己的同层LBM。
图1给出了现有的维护域的分层管理示意图,如图1所示,图中有6个交换机,分别标识为1到6。每个交换机具有两个端口。在一些端口上配置了维护端点和维护中间点,图中共有3个层次的MA,标识号较大如:5的层次级别高、控制范围广;标识号较小如:2的层次级别低、控制范围窄。
RFC 1191描述了“路径最大传输单元发现方法”,这是一种确定两个因特网协议(IP,Internet Protocol)主机之间路径最大传输单元的技术,其目的是为了避免IP分片。在这项技术中,源地址将数据报的不要分片(DF,Don′t Fragment)位置位,再逐渐增大发送的数据报的大小,路径上任何需要将分组进行分片的设备都会将这种数据报丢弃并返回一个“数据报过大”的因特网控制报文协议(ICMP,Internet Control Message Protocol)响应报文到源主机,这样,源主机就“学习”到了不用进行分片就能通过这条路径的最大传输单元了。
不幸的是,越来越多的网络因为安全的原因,例如为了防范分布式拒绝服务(DDOS,Distributed Denial of service)攻击,封杀了ICMP报文的传输,这使得路径最大传输单元发现方法不能正常工作,其常见表现就是一个连接在低数据流量的情况下可以正常工作,但一旦有大量数据同时发送,就会立即挂起,例如在使用互联网中继聊天(IRC,Internet Relay Chat)时,客户会发现在发送了一个禁止IP欺骗的ping之后就得不到任何响应了,这是因为该连接被大量的欢迎消息堵塞了。
RFC 1191的主要缺点在于目前很多网络封杀了ICMP报文的传输;另外,RFC 1191依赖于中间节点的响应,但事实上,本端只关心链路上MTU的数值,对在哪个点造成了瓶颈并不关心。
发明内容
本发明提供探测以太网MTU的方法及维护端点,以提高MTU探测效率。
本发明的技术方案是这样实现的:
一种探测以太网最大传输单元MTU的方法,该方法包括:
当本地维护端点要检测自身与各远端维护端点间路径的MTU时,周期性地发送携带有MTU-TLV的组播连通检测报文CCM,且每隔预设数目个周期将CCM的长度增加一次;
当本地维护端点接收到任一远端维护端点发来的CCM时,若发现该CCM中的RDI被置位,且还未检测出自身与该远端维护端点间路径的MTU,则根据预设的维护端点的CCM等待时长,计算最近一次被该远端维护端点成功接收的CCM的发送时刻,将该时刻发送的CCM长度作为自身与该远端维护端点间路径的MTU值。
所述根据预设的维护端点的CCM等待时长,计算最近一次被该远端维护端点成功接收的CCM的发送时刻为:
计算t0=t-tv,其中,t0为最近一次被该远端维护端点成功接收的CCM的发送时刻,t为当前时刻,tv的取值范围为:tw<tv<T+tw,T为CCM的发送周期,tw为预设的维护端点的CCM等待时长。
所述预设数目为大于0的整数。
所述方法进一步包括:
若本地维护端点在预设的维护端点的CCM等待时长内,未接收到任一远端维护端点发来的CCM,则将当前周期内发送的CCM中的RDI置位。
预先设置最大探测循环次数,所述将该时刻发送的CCM长度作为自身与该远端维护端点间路径的MTU值之后进一步包括:
当本次探测过程已经得到所有路径的MTU值时,将CCM的长度恢复为初始长度,返回所述每隔预设数目个周期将CCM的长度增加一次的动作,开始新一轮探测过程;
且,当探测循环次数到达最大探测循环次数时,对于任一路径,将所有探测过程中得到的相同次数最多的该路径的MTU值作为该路径的最终MTU值。
预先设置最大探测循环次数,所述将该时刻发送的CCM长度作为自身与该远端维护端点间路径的MTU值之后进一步包括:
当本次探测过程已经得到所有路径的MTU值时,开始每隔预设数目个周期将CCM的长度减少一次,且,当本地维护端点接收到任一远端维护端点发来的CCM时,若发现该CCM中的RDI被复位,且还未检测出自身与该远端维护端点间路径的MTU,则将最近发送的CCM长度作为自身与该远端维护端点间路径的MTU值,当重新得到所有路径的MTU值时,确定本次探测过程结束,返回执行所述每隔预设数目个周期将CCM的长度增加一次的动作;
且,当探测循环次数到达最大探测循环次数时,对于任一路径,将所有探测过程中得到的相同次数最多的该路径的MTU值作为该路径的最终MTU值。
一种探测以太网MTU的方法,该方法包括:
当本地维护端点要检测自身与各远端维护端点间路径的MTU时,周期性地发送携带有MTU-TLV的组播CCM,且每隔预设数目个周期将CCM的长度减少一次;
当本地维护端点接收到任一远端维护端点发来的CCM时,若发现该CCM中的RDI被复位,且还未检测出自身与该远端维护端点间路径的MTU,则将最近发送的CCM长度作为自身与该远端维护端点间路径的MTU值。
所述预设数目为大于0的整数。
预先设置最大探测循环次数,所述将最近发送的CCM长度作为自身与该远端维护端点间路径的MTU值之后进一步包括:
当本次探测过程已经得到所有路径的MTU值时,将CCM的长度恢复为初始长度,返回所述每隔预设数目个周期将CCM的长度减少一次的动作,开始新一轮探测过程;
且,当探测循环次数到达最大探测循环次数时,对于任一路径,将所有探测过程中得到的相同次数最多的该路径的MTU值作为该路径的最终MTU值。
预先设置最大探测循环次数,所述将最近发送的CCM长度作为自身与该远端维护端点间路径的MTU值之后进一步包括:
当本次探测过程已经得到所有路径的MTU值时,开始每隔预设数目个周期将CCM的长度增加一次,且,当本地维护端点接收到任一远端维护端点发来的CCM时,若发现该CCM中的RDI被复位,且还未检测出自身与该远端维护端点间路径的MTU,则根据预设的维护端点的CCM等待时长,计算最近一次被该远端维护端点成功接收的CCM的发送时刻,将该时刻发送的CCM长度作为自身与该远端维护端点间路径的MTU值,当重新得到所有路径的MTU值时,确定本次探测过程结束,返回执行所述每隔预设数目个周期将CCM的长度减少一次的动作;
且,当探测循环次数到达最大探测循环次数时,对于任一路径,将所有探测过程中得到的相同次数最多的该路径的MTU值作为该路径的最终MTU值。
一种维护端点,包括:
CCM发送模块:当要检测本维护端点与各远端维护端点间路径的MTU时,周期性地发送携带有MTU-TLV的组播CCM,且每隔预设数目个周期将CCM的长度增加一次;
MTU检测模块:当接收到任一远端维护端点发来的CCM时,若发现该CCM中的RDI被置位,且还未检测出自身与该远端维护端点间路径的MTU,则根据预设的维护端点的CCM等待时长,计算最近一次被该远端维护端点成功接收的CCM的发送时刻,将该时刻发送的CCM长度作为本维护端点与该远端维护端点间路径的MTU值。
所述MTU检测模块进一步用于,当本次探测过程已经得到所有路径的MTU值时,向CCM发送模块发送开始新一轮探测指示;
所述CCM发送模块接收到所述开始新一轮探测指示,将CCM的长度恢复为初始长度,并继续每隔预设数目个周期将CCM的长度增加一次;
且,所述MTU检测模块进一步用于,当探测循环次数到达最大探测循环次数时,对于任一路径,将所有探测过程中得到的相同次数最多的该路径的MTU值作为该路径的最终MTU值。
所述MTU检测模块进一步用于,当本次探测过程已经得到所有路径的MTU值时,向CCM发送模块发送开始新一轮减探测指示;
且,所述CCM发送模块接收到所述开始新一轮减探测指示,开始每隔预设数目个周期将CCM的长度减少一次;同时,
所述MTU检测模块进一步用于,当接收到任一远端维护端点发来的CCM时,若发现该CCM中的RDI被复位,且还未检测出本维护端点与该远端维护端点间路径的MTU,则将最近发送的CCM长度作为本维护端点与该远端维护端点间路径的MTU值,当重新得到所有路径的MTU值时,确定本次减探测过程结束,向CCM发送模块发送开始新一轮增探测指示;
且,所述CCM发送模块接收到所述开始新一轮增探测指示,开始每隔预设数目个周期将CCM的长度增加一次;
且,所述MTU检测模块进一步用于,当探测循环次数到达最大探测循环次数时,对于任一路径,将所有探测过程中得到的相同次数最多的该路径的MTU值作为该路径的最终MTU值。
一种维护端点,包括:
CCM发送模块:当要检测本维护端点与各远端维护端点间路径的MTU时,周期性地发送携带有MTU-TLV的组播CCM,且每隔预设数目个周期将CCM的长度减少一次;
MTU检测模块:当接收到任一远端维护端点发来的CCM时,若发现该CCM中的RDI被复位,且还未检测出自身与该远端维护端点间路径的MTU,则将最近发送的CCM长度作为本维护端点与该远端维护端点间路径的MTU值。
所述MTU检测模块进一步用于,当本次探测过程已经得到所有路径的MTU值时,向CCM发送模块发送开始新一轮探测指示;
所述CCM发送模块接收到所述开始新一轮探测指示,将CCM的长度恢复为初始长度,并继续每隔预设数目个周期将CCM的长度减少一次;
且,所述MTU检测模块进一步用于,当探测循环次数到达最大探测循环次数时,对于任一路径,将所有探测过程中得到的相同次数最多的该路径的MTU值作为该路径的最终MTU值。
所述MTU检测模块进一步用于,当本次探测过程已经得到所有路径的MTU值时,向CCM发送模块发送开始新一轮增探测指示;
所述CCM发送模块接收到所述开始新一轮增探测指示,开始每隔预设数目个周期将CCM的长度增加一次;同时,
所述MTU检测模块进一步用于,当接收到任一远端维护端点发来的CCM时,若发现该CCM中的RDI被复位,且还未检测出自身与该远端维护端点间路径的MTU,则根据预设的维护端点的CCM等待时长,计算最近一次被该远端维护端点成功接收的CCM的发送时刻,将该时刻发送的CCM长度作为自身与该远端维护端点间路径的MTU值,当重新得到所有路径的MTU值时,确定本次增探测过程结束,向CCM发送模块发送开始新一轮减探测指示;
所述CCM发送模块接收到所述开始新一轮减探测指示,开始每隔预设数目个周期将CCM的长度减少一次;
所述MTU检测模块进一步用于,当探测循环次数到达最大探测循环次数时,对于任一路径,将所有探测过程中得到的相同次数最多的该路径的MTU值作为该路径的最终MTU值。
与现有技术相比,本发明中采用CCM来探测以太网MTU,由于CCM报文不存在被网络封杀的情况,因此,提高了MTU探测效率;另外,本发明不依赖于中间节点的响应,可以直接测出相关路径的MTU;且,本发明可同时测量一个节点与多个节点间的多条路径的MTU。
附图说明
图1为现有的维护域的分层管理示意图;
图2为本发明实施例一提供的探测以太网MTU的方法流程图;
图3为图2所示实施例的一个应用示例示意图;
图4为本发明实施例二提供的探测以太网MTU的方法流程图;
图5为本发明实施例一提供的维护端点的组成示意图。
具体实施方式
下面结合附图及具体实施例对本发明再作进一步详细的说明。
实现本发明的前提是,当要检测两个设备间路径的MTU时,该两设备上必须配置有维护端点。
图2为本发明实施例一提供的探测以太网MTU的方法流程图,如图2所示,其具体步骤如下:
步骤201:本地维护端点A按照配置的周期T,周期性地发送组播CCM,当本地维护端点A要检测自身与各远端维护端点间路径的MTU时,开始在后续周期性发送的组播CCM中增加MTU-类型长度值(TLV,Type Length andValue),设后续发送的CCM的初始长度为a,且每隔m个周期将CCM的长度增加b。
其中,CCM的初始长度a可根据经验确定,该长度要保证小于维护端点A与任一远端维护端点间路径的MTU。
根据IEEE 802.1ag协议第21.5.2节组织自定义TLV(Organization-Specific TLV)的规定,MTU-TLV的类型Type=31。
m可以取大于0的整数。当m=1时,即,对于相邻两个周期内发送的两个CCM来说,后一周期内发送的CCM长度比前一周期内发送的CCM长度增加b。
b可根据经验确定。
根据IEEE 802.1ag,每个维护端点都会周期性地发送组播CCM。本发明中,当一个维护端点要检测自身与各远端维护端点间路径的MTU时,就开始在此后发送的CCM中增加MTU-TLV。
步骤202:对于任一远端维护端点,该维护端点按照配置的周期T,周期性地发送组播CCM,且若在最近的CCM等待时长tw内,未接收到任意一个维护端点发来的CCM,则在当前周期内发出的CCM中,将RDI置位,即RDI=1;否则,将RDI复位,即RDI=0。
根据IEEE 802.1ag,CCM等待时长tw=3.5*T。
对于任一维护端点B来说,其上配置了其它所有维护端点的地址,当在一个tw内,其未收到任意一个其它维护端点发来的CCM时,就将当前发出的CCM中的RDI置位,即,只有在tw内,其接收到了其它所有维护端点发来的CCM,其才会将当前发出的CCM中的RDI复位。
本实施例中,远端维护端点的所有动作与现有技术完全相同。
步骤203:维护端点A接收各远端维护端点发来的CCM,对于任一CCM,判断该CCM中的RDI=0还是RDI=1,若RDI=0,执行步骤204;若RDI=1,执行步骤205。
步骤204:维护端点A将发来该CCM的远端维护端点地址放入MTU待检测维护端点列表中,本流程结束。
实际上,本步骤中,维护端点A在将发来该CCM的远端维护端点地址放入MTU待检测维护端点列表中之前,要判断一下该远端维护端点地址是否已在该列表中,若已在,就没必要重复放入了。
步骤205:维护端点A判断发来该CCM的远端维护端点地址是否位于MTU待检测维护端点列表中,若是,执行步骤206;否则,执行步骤207。
步骤206:维护端点A计算t0=t-tv,将t0所在周期T内发送的CCM长度作为自身与发来该CCM的远端维护端点间路径的MTU值,并将该远端维护端点地址从MTU待检测维护端点列表中删除,本流程结束。
其中,t为当前时刻,tv的取值范围为(tw,tw+T),即tw<tv<tw+T。
步骤207:维护端点A不作进一步处理,本流程结束。
由于该CCM中的RDI=1,且发来该CCM的远端维护端点地址不在MTU待检测维护端点列表中,则说明维护端点A与该远端维护端点间路径的MTU已经检测出,无需再作进一步处理了。
需要说明的是,对于图2所示实施例,步骤201、步骤202、步骤203~207并无执行时间上的先后之分。维护端点A会周期性地执行步骤201,各远端维护端点会周期性地执行步骤202,当维护端点A接收到一个CCM时就会执行步骤203~207。
以下给出图2所示实施例的一个应用示例:
如图3所示,设备a、设备b和设备c上分别配置了维护端点1、2和3,配置的CCM发送周期T为1秒。
维护端点1、2、3分别以1秒为周期,周期性地发出组播CCM;
当维护端点1要检测自身与维护端点2、3间路径的MTU时,维护端点1开始在此后周期性发送的CCM中携带MTU-TLV,并设此后发送的CCM初始长度为len1,且对于相邻两个CCM,后一个CCM的长度比前一个增加b;
对于维护端点2、3,也仍然周期性地发送组播CCM,且若在最近3.5*T内未接收到任何维护端点发来的CCM,则将当前周期内发出的CCM中的RDI置位;否则,将RDI复位。例如:维护端点1在p秒时发出第一个携带MTU-TLV的CCM,其中,MTU-TLV的长度=len1,维护端点2接收到了该CCM;维护端点1在p+1秒时发出第二个携带MTU-TLV的CCM,其中,MTU-TLV的长度=len1+b=len2,由于len2超出了维护端点1、2间路径的MTU,因此,维护端点2不会接收到该CCM,则维护端点2在等待3.5*T后,发现未接收到维护端点1发来的CCM,则在随后发出的CCM中会将RDI置位;
维护端点1接收维护端点2、3发来的CCM,若发现一个CCM中的RDI=1,则计算t0=t-tv,将t0所在周期内发出的CCM的长度作为自身与该CCM的发送者之间的路径的MTU,其中,t为当前时刻。例如:维护端点2在q时刻发来的CCM中的RDI=1,则维护端点1计算t0=q-tv,将t0所在周期内发出的CCM的长度作为自身与维护端点2之间的路径的MTU,其中,tv的取值范围为(tw,tw+T)。
图4为本发明实施例二提供的探测以太网MTU的方法流程图,如图4所示,其具体步骤如下:
步骤401:本地维护端点A按照配置的周期T,周期性地发送组播CCM,当本地维护端点A要检测自身与各远端维护端点间路径的MTU时,开始在后续周期性发送的组播CCM中增加MTU-TLV,设后续发送的CCM的初始长度为c,且每隔m个周期将CCM的长度减少d。
其中,CCM的初始长度c可根据经验确定,该长度要保证大于维护端点A与任一远端维护端点间路径的MTU。
根据IEEE 802.1ag协议第21.5.2节组织自定义TLV(Organization-Specific TLV)的规定,MTU-TLV的类型Type=31。
m可以取大于0的整数。当m=1时,即,对于相邻两个周期内发送的两个CCM来说,后一周期内发送的CCM长度比前一周期内发送的CCM长度减少d。
d可根据经验确定。
步骤402:对于任一远端维护端点,该维护端点按照配置的周期T,周期性地发送组播CCM,且若在最近的CCM等待时长tw内,未接收到任意一个维护端点发来的CCM,则在当前周期内发出的CCM中,将RDI置位,即RDI=1;否则,将RDI复位,即RDI=0。
根据IEEE 802.1ag,CCM等待时长tw=3.5*T。
本实施例中,远端维护端点的所有动作与现有技术完全相同。
步骤403:维护端点A接收各远端维护端点发来的CCM,对于任一CCM,判断该CCM中的RDI=0还是RDI=1,若RDI=0,执行步骤405;若RDI=1,执行步骤404。
步骤404:维护端点A将发来该CCM的远端维护端点地址放入MTU待检测维护端点列表中,本流程结束。
实际上,本步骤中,维护端点A在将发来该CCM的远端维护端点地址放入MTU待检测维护端点列表中之前,要判断一下该远端维护端点地址是否已在该列表中,若已在,就没必要重复放入了。
步骤405:维护端点A判断发来该CCM的远端维护端点地址是否位于MTU待检测维护端点列表中,若是,执行步骤406;否则,执行步骤407。
步骤406:维护端点A将最近发送的CCM长度作为自身与发来该CCM的远端维护端点间路径的MTU值,并将该远端维护端点地址从MTU待检测维护端点列表中删除,本流程结束。
步骤407:维护端点A不作进一步处理,本流程结束。
由于该CCM中的RDI=0,且发来该CCM的远端维护端点地址不在MTU待检测维护端点列表中,则说明维护端点A与该远端维护端点间路径的MTU已经检测出,无需再作进一步处理了。
需要说明的是,对于图4所示实施例,步骤401、步骤402、步骤403~407并无执行时间上的先后之分。维护端点A会周期性地执行步骤401,各远端维护端点会周期性地执行步骤402,当维护端点A接收到一个CCM时就会执行步骤403~407。
由于远端维护端点将CCM中的RDI置位,不仅仅会由于本地维护端点A发来的CCM长度过长,也会有其它原因,例如:与另一远端维护端点间的链路发生故障等。因此,为了提高MTU值的准确率。本发明中,可进行多次探测,对于任一条路径,将该多次探测结果中相同次数最多的MTU值作为该路径的MTU值。在进行多次探测时,可重复执行图2或图4所示实施例,也可图2、图3所示实施例交替进行。
需要说明的是,对于图2、3所示实施例,一次探测过程的结束,可由MTU待检测维护端点列表变为空来得知,当MTU待检测维护端点列表变为空时,就说明本次探测过程已结束,即,已经得到了本地维护端点A与其它所有远端维护端点间路径的MTU值了,可以开始下一次探测过程了。
图5为本发明实施例一提供的维护端点的组成示意图,如图5所示,其主要包括:CCM发送模块51和MTU检测模块52,其中:
CCM发送模块51:当要检测本维护端点与各远端维护端点间路径的MTU时,开始在周期性发送的组播CCM中增加MTU-TLV,且每隔预设数目个周期将CCM的长度增加一次。
MTU检测模块52:当接收到任一远端维护端点发来的CCM时,若发现该CCM中的RDI被置位,且还未检测出自身与该远端维护端点间路径的MTU,则计算t0=t-tv,将t0所在周期内发送的CCM长度作为本维护端点与该远端维护端点间路径的MTU值,其中,t为当前时刻,tw<tv<T+tw,T为CCM的发送周期,tw为预设的CCM等待时长。
MTU检测模块52进一步用于,当接收到任一远端维护端点发来的CCM时,判断该CCM中的RDI=0还是RDI=1,若RDI=0,则将该远端维护端点地址放入MTU待检测维护端点列表中;若RDI=1,则判断该远端维护端点地址是否位于MTU待检测维护端点列表中,若是,执行计算t0=t-tv,将t0所在周期内发送的CCM长度作为本维护端点与该远端维护端点间路径的MTU的动作,并将该远端维护端点地址从MTU待检测维护端点列表中删除,否则,不作进一步处理。
MTU检测模块52进一步用于,在将t0所在周期内发送的CCM长度作为本维护端点与该远端维护端点间路径的MTU值之后,判断本次探测过程是否已经得到所有路径的MTU值,若已得到,确定本次探测过程结束,向CCM发送模块发送开始新一轮探测指示;
CCM发送模块接收到开始新一轮探测指示,将CCM的长度恢复为初始长度,并继续每隔预设数目个周期将CCM的长度增加一次;
且,MTU检测模块进一步用于,当探测循环次数到达最大探测循环次数时,对于任一路径,将所有探测过程中得到的相同次数最多的该路径的MTU值作为该路径的最终MTU值。
MTU检测模块进一步用于,在将t0所在周期内发送的CCM长度作为本维护端点与该远端维护端点间路径的MTU值之后,判断本次探测过程是否已经得到所有路径的MTU值,若是,确定本次增探测过程结束,向CCM发送模块发送开始新一轮减探测指示;
且,CCM发送模块接收到开始新一轮减探测指示,开始每隔预设数目个周期将CCM的长度减少一次;同时,
所述MTU检测模块进一步用于,当接收到任一远端维护端点发来的CCM时,若发现该CCM中的RDI被复位,且还未检测出本维护端点与该远端维护端点间路径的MTU,则将最近发送的CCM长度作为本维护端点与该远端维护端点间路径的MTU值,当重新得到所有路径的MTU值时,确定本次减探测过程结束,向CCM发送模块发送开始新一轮增探测指示;
且,CCM发送模块接收到所述开始新一轮增探测指示,开始每隔预设数目个周期将CCM的长度增加一次;
且,MTU检测模块进一步用于,当探测循环次数到达最大探测循环次数时,对于任一路径,将所有探测过程中得到的相同次数最多的该路径的MTU值作为该路径的最终MTU值。
以下给出本发明实施例二提供的维护端点的组成,其主要包括:CCM发送模块和MTU检测模块,其中:
CCM发送模块:当要检测本维护端点与各远端维护端点间路径的MTU时,开始在周期性发送的组播CCM中增加MTU-TLV,且每隔预设数目个周期将CCM的长度减少一次。
MTU检测模块:当接收到任一远端维护端点发来的CCM时,若发现该CCM中的RDI被复位,且还未检测出自身与该远端维护端点间路径的MTU,则将最近发送的CCM长度作为本维护端点与该远端维护端点间路径的MTU值。
MTU检测模块进一步用于,当接收到任一远端维护端点发来的CCM时,判断该CCM中的RDI=0还是RDI=1,若RDI=1,则将该远端维护端点地址放入MTU待检测维护端点列表中;若RDI=0,则判断该远端维护端点地址是否位于MTU待检测维护端点列表中,若是,执行将最近发送的CCM长度作为本维护端点与该远端维护端点间路径的MTU值的动作,并将该远端维护端点地址从MTU待检测维护端点列表中删除,否则,不作进一步处理。
MTU检测模块进一步用于,在将最近发送的CCM长度作为自身与该远端维护端点间路径的MTU值之后,判断本次探测过程是否已经得到所有路径的MTU值,若已得到,确定本次探测过程结束,向CCM发送模块发送开始新一轮探测指示;
CCM发送模块接收到开始新一轮探测指示,将CCM的长度恢复为初始长度,并继续每隔预设数目个周期将CCM的长度减少一次;
且,MTU检测模块进一步用于,当探测循环次数到达最大探测循环次数时,对于任一路径,将所有探测过程中得到的相同次数最多的该路径的MTU值作为该路径的最终MTU值。
MTU检测模块进一步用于,在将最近发送的CCM长度作为自身与该远端维护端点间路径的MTU值之后,判断本次探测过程是否已经得到所有路径的MTU值,若是,确定本次减探测过程结束,向CCM发送模块发送开始新一轮增探测指示;
CCM发送模块接收到所述开始新一轮增探测指示,开始每隔预设数目个周期将CCM的长度增加一次;同时,
MTU检测模块进一步用于,当接收到任一远端维护端点发来的CCM时,若发现该CCM中的RDI被复位,且还未检测出自身与该远端维护端点间路径的MTU,则计算t0=t-tv,将t0所在周期内发送的CCM长度作为自身与该远端维护端点间路径的MTU值,其中,t为当前时刻,tw<tv<T+tw,T为CCM的发送周期,tw为预设的CCM等待时长,当重新得到所有路径的MTU值时,确定本次增探测过程结束,向CCM发送模块发送开始新一轮减探测指示;
CCM发送模块接收到开始新一轮减探测指示,开始每隔预设数目个周期将CCM的长度减少一次;
MTU检测模块进一步用于,当探测循环次数到达最大探测循环次数时,对于任一路径,将所有探测过程中得到的相同次数最多的该路径的MTU值作为该路径的最终MTU值。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。