说明书
发明名称 : 一种获取设备接口MRU值的方法及装置
[0001]
本文涉及但不限于动态路由技术,尤指一种获取设备接口最大接收单元(MRU,Maximum Receive Unit)值的方法和装置。
[0002]
动态路由协议主要包括距离矢量路由算法和链路状态路由算法。距离矢量路由算法包括路由信息协议(RIP,Routing Information Protocol)、边界网关协议(BGP,Border Gateway Protocol);链路状态路由算法包括开放式最短路径优先(OSPF,Open Shortest Path First)、中间系统—中间系统(ISIS,Intermediate System-to-Intermediate System)。在距离矢量路由算法中,每一台路由器维护一张表,表中列举了当前已知的自身到每个目的地的最佳路径,这些表通过邻居之间的相互交换信息而不断被更新,最终每台路由器都有到达每个目的地的最佳路径。
[0003]
由于距离矢量路由算法存在一定的缺点,比如当网络拓扑结构发生变化后距离矢量路由算法需要太长时间才能收敛到状态,由此逐渐出现了链路状态路由算法。在链路状态路由算法中,通过发送和接收HELLO报文来发现邻居,邻居之间进行链路状态数据库(LSDB,Link State Database)的同步,LSDB同步完成后本地路由器利用LSDB来构建最短路径优先(SPF,Shortest Path First)树,最终计算出自身到达每一个目的地址的最佳路径。
[0004]
其中,OSPF协议既可以在直连设备之间建立邻居关系,也可以跨越多台设备在非直连设备之间建立邻居关系,即虚链邻居。图1为相关技术中虚链邻居的示意图,如图1所示,路由器1和路由器3之间为虚链邻居。
[0005]
在邻居之间进行LSDB的同步之前,发送端和接收端之间会通过数据库摘要(DD,Database Description)报文来进行最大传输单元(MTU,Maximum Transmission Unit)值和最大接收单元(MRU,Maximum Receive Unit)值的协商。具体地,发送端将DD报文发送给接收端;接收端接收到DD报文,如果判断出DD报文中的接口MTU字段的值大于自身接收接口的MRU值, 则结束本流程,不进行LSDB的同步;如果判断出DD报文中的接口MTU字段的值小于或等于自身接收接口的MRU值,则向发送端返回DD报文,发送端接收到DD报文后,进行LSDB的同步。
[0006]
上述过程中,对于直连设备,发送端向接收端(即发送端的邻居)发送的DD报文中的接口MTU字段为发送端的MTU值,实现了发送端和接收端之间MTU值和MRU值的协商。对于虚链邻居,由于发送端向接收端发送的DD报文中的接口MTU字段为0,发送端和接收端之间无法实现MTU值和MRU值之间的协商,从而有可能导致发送端和接收端在进行LSDB的同步过程中,接收端无法接收发送端的报文。仍以图1的虚链邻居为例,如果路由器1的接口1的MTU值大于路由器2的接口2的MRU值或路由器3的接口3的MRU值,则在进行LSDB的同步过程中,路由器3可能无法接收路由器1发送的报文。
[0008]
以下是对本文详细描述的主题的概述。本概述并非是为了限制权利要求的保护范围。
[0009]
本发明实施例提供一种获取设备接口MRU值的方法和装置,能够实现MTU值和MRU值之间的协商。
[0010]
其中,本发明实施例提供一种获取设备接口最大接收单元MRU值的方法,包括:
[0011]
虚链源端设备向虚拟链路上自身的下一跳设备发送生存时间TTL为1的用户数据报协议UDP报文;其中,UDP报文的目的互联网协议IP地址为虚链邻居的IP地址;
[0012]
当虚链源端设备接收到因特网控制报文协议ICMP超时差错报文时,保存ICMP超时差错报文中的未使用字段MRU值,并继续向虚拟链路上自身的下一跳设备发送TTL比上一次发送的UDP报文的TTL大1的UDP报文。
[0013]
可选的,所述方法还包括:当所述虚链源端设备接收到ICMP目的不可达报文时,
[0014]
保存所述ICMP目的不可达报文中的未使用字段MRU值;
[0015]
获取保存的所有未使用字段MRU值的最小值,判断出获得的MRU值的最小值小于自身虚链出接口的最大传输单元MTU值,重新配置自身虚链出接口的MTU值。
[0016]
可选的,所述重新配置自身虚链出接口的MTU值包括:
[0017]
将所述自身虚链出接口的MTU值配置为小于或等于所述获得的MRU值的最小值。
[0018]
本发明实施例还提出了一种获取设备接口的最大接收单元MRU值的方法,包括:
[0019]
处于虚链源端设备的虚拟链路上的下一跳设备接收虚链源端设备发送的UDP报文,计算UDP报文的生存时间TTL和1之间的差值;
[0020]
当处于虚链源端设备的虚拟链路上的下一跳设备判断出计算得到的差值为0,且UDP报文中的目的互联网协议IP地址不是自身的IP地址时,向虚链源端设备发送因特网控制报文协议ICMP超时差错报文;其中,ICMP超时差错报文中的未使用字段为自身接收接口的最大接收单元MRU值。
[0021]
可选的,所述方法还包括:当处于虚链源端设备的虚拟链路上的下一跳设备判断出所述计算得到的差值为0,且所述UDP报文中的目的IP地址为自身的IP地址时,
[0022]
所述处于虚链源端设备的虚拟链路上的下一跳设备判断出所述UDP报文中的目的端口号不存在时,向所述虚链源端设备发送ICMP目的不可达报文;其中,ICMP目的不可达报文中的未使用字段为自身接收接口的MRU值。
[0023]
可选的,所述方法还包括:当处于虚链源端设备的所述虚拟链路上的下一跳设备判断出计算得到的差值不为0时,
[0024]
所述处于虚链源端设备的虚拟链路上的下一跳设备向所述虚拟链路上自身的下一跳设备转发所述UDP报文;其中,转发的UDP报文的TTL为计算得到的差值。
[0025]
本发明实施例还提出了一种虚链源端设备,包括:第一发送模块、第一接收模块和存储模块;其中,
[0026]
第一发送模块设置为,向虚拟链路上自身的下一跳设备发送TTL为1的用户数据报协议UDP报文;存储模块保存ICMP超时差错报文中的未使用字段MRU值时,继续向虚拟链路上自身的下一跳设备发送TTL比上一次发送的UDP报文的TTL大1的UDP报文;
[0027]
第一接收模块设置为,接收ICMP超时差错报文;
[0028]
存储模块设置为,第一接收模块接收到ICMP超时差错报文时,保存ICMP超时差错报文中的未使用字段MRU值;
[0029]
UDP报文的目的IP地址为虚链邻居的IP地址。
[0033]
保存所述ICMP目的不可达报文中的未使用字段MRU值;
[0035]
配置模块设置为,获取保存的所有未使用字段的MRU值的最小值,判断出获得的最小值小于自身虚链出接口的最大传输单元MTU值,重新配置自身虚链出接口的MTU值。
[0037]
获取保存的所有未使用字段的MRU值的最小值,判断出获得的MRU值的最小值小于自身虚链出接口的最大传输单元MTU值,将所述自身虚链出接口的MTU值配置为小于或等于所述获得的MRU值的最小值。
[0038]
本发明实施例还提出了一种虚拟链路上的设备,包括:第二接收模块和第二发送模块;其中,
[0039]
第二接收模块设置为,接收UDP报文;
[0040]
第二发送模块,计算UDP报文的生存时间TTL和1之间的差值;判断出计算得到的差值为0,且UDP报文中的目的互联网协议IP地址不是自身的IP地址时,向虚链源端设备发送ICMP超时差错报文;ICMP超时差错报文中的未使用字段为自身接收接口的最大接收单元MRU值。
[0042]
判断出所述计算得到的差值为0,且所述UDP报文中的目的IP地址为自身的IP地址,判断出所述UDP报文中的目的端口号不存在,向所述虚链源端设备发送ICMP目的不可达报文;其中,ICMP目的不可达报文中的未使用字段为自身接收接口的MRU值。
[0044]
判断出计算得到的差值不为0,向所述虚拟链路上自身的下一跳设备转发所述UDP报文;其中,转发的UDP报文的TTL为计算得到的差值。
[0045]
与相关技术相比,本发明提供的技术方案,包括:虚链源端设备向虚拟链路上自身的下一跳设备发送TTL为1的UDP报文;其中,UDP报文的目的IP地址为虚链邻居的IP地址;当发送端接收到ICMP超时差错报文时,保存ICMP超时差错报文中的未使用字段MRU值,并继续向虚拟链路上自身的下一跳设备发送TTL比上一次发送的UDP报文的TTL大1的UDP报文。通过本发明的方案,虚链源端设备采用UDP报文获取到虚拟链路上其他设备的接收接口的MRU值,实现了MTU值和MRU值之间的协商。
[0046]
在阅读并理解了附图和详细描述后,可以明白其他方面。
[0048]
图1为相关技术中的虚链邻居的示意图;
[0049]
图2为本发明实施例获取设备接口MRU值的方法的流程图;
[0050]
图3为本发明实施例虚链源端设备的结构组成示意图;
[0051]
图4为本发明实施例虚拟链路上的设备的结构组成示意图。
[0052]
下文中将结合附图对本申请的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
[0053]
参见图2,本发明实施例提出了一种获取设备接口MRU值的方法,包括:
[0054]
步骤200、虚链源端设备向虚拟链路上自身的下一跳设备发送生存时间 (TTL,Time To Live)为1的用户数据报协议(UDP,User Datagram Protocol)报文。
[0055]
本发明实施例中,UDP报文的目的互联网协议(IP,Internet Protocol)地址为虚链邻居的IP地址。
[0056]
可选的,UDP报文的目的端口号为一般应用程序不使用的数值,如30000以上的数值。
[0057]
可选的,虚链源端设备可以通过调用路由跟踪(TraceRoute)应用的方式来向虚拟链路上自身的下一跳设备发送UDP报文,具体实现属于本领域技术人员的公知技术,并不用于限定本发明的保护范围,这里不再赘述。
[0058]
其中,在调用TraceRoute应用时,将虚链邻居的IP地址传入TraceRoute应用中。
[0059]
步骤201、处于虚链源端设备的虚拟链路上的下一跳设备接收虚链源端设备发送的UDP报文,计算UDP报文的TTL和1之间的差值。
[0060]
步骤202、当处于虚链源端设备的虚拟链路上的下一跳设备判断出计算得到的差值为0,且UDP报文中IP地址不是自身的IP地址时,向虚链源端设备发送因特网控制报文协议(ICMP,Internet Control Message Protocol)超时差错报文。
[0061]
可选的,ICMP超时差错报文中的未使用字段为自身接收接口的MRU值。
[0062]
表1为ICMP超时差错报文或ICMP目的不可达报文的结构示意图,如表1所示,ICMP超时差错报文或ICMP目的不可达报文中有4个字节长度的未使用字段。
[0065]
步骤203、当虚链源端设备接收到ICMP超时差错报文时,保存ICMP超时差错报文中的未使用字段MRU值,并继续向虚拟链路上自身的下一跳 设备发送TTL比上一次发送的UDP报文的TTL大1的UDP报文。
[0066]
本发明实施例方法还包括:处于虚链源端设备的虚拟链路上的下一跳设备判断出计算得到的差值为0,且UDP报文中的目的IP地址为自身的IP地址时,
[0067]
处于虚链源端设备的虚拟链路上的下一跳设备判断出UDP报文中的目的端口号不存在时,向虚链源端设备发送ICMP目的不可达报文;
[0068]
可选的,ICMP目的不可达报文中的未使用字段为自身接收接口的MRU值;
[0069]
可选的,本发明实施例方法还包括:虚链源端设备接收到ICMP目的不可达报文时,保存ICMP目的不可达报文中的未使用字段MRU值;获取保存的所有未使用字段MRU值的最小值,判断出获得的MRU值的最小值小于自身虚链出接口的MTU值,重新配置自身虚链出接口的MTU值。
[0070]
其中,判断UDP报文中的目的端口号是否存在属于本领域技术人员的公知技术,并不用于限定本发明的保护范围,这里不再赘述。
[0071]
可选的,重新配置自身虚链出接口的MTU值包括:将自身虚链出接口的MTU值配置为小于或等于获得的MRU值的最小值。
[0072]
本发明实施例方法还包括:当处于虚链源端设备的虚拟链路上的下一跳设备判断出计算得到的差值不为0时,
[0073]
处于虚链源端设备的虚拟链路上的下一跳设备向自身的下一跳设备转发UDP报文;其中,转发的UDP报文的TTL为计算得到的差值。
[0074]
通过本发明实施例的方案,虚链源端设备采用UDP报文获取到虚拟链路上其他设备的接收接口MRU值,实现了MTU值和MRU值之间的协商。
[0075]
需要说明的是,本发明实施例中,步骤200、203由虚链源端设备执行,可以通过虚链源端设备的收发装置执行UDP报文的发送和ICMP超时差错报文,通过中央处理器执行TTL的设置;通过存储介质存储ICMP超时差错报文中的未使用字段MRU值。步骤201和步骤202由处于虚链源端设备的虚拟链路上的下一跳设备执行,可以通过处于虚链源端设备的虚拟链路上的下一跳设备上的收发装置接收UDP报文、发送ICMP超时差错报文,通过中央 处理器进行差值的计算、计算得到的差值为0的判断,及UDP报文中IP地址是否是自身的IP地址的判断。
[0076]
参见图3,本发明实施例还提出了一种虚链源端设备,包括:第一发送模块、第一接收模块和存储模块;其中,
[0077]
第一发送模块设置为,向虚拟链路上自身的下一跳设备发送TTL为1的UDP报文;存储模块保存ICMP超时差错报文中的未使用字段MRU值时,继续向虚拟链路上自身的下一跳设备发送TTL比上一次发送的UDP报文的TTL大1的UDP报文;
[0078]
第一接收模块设置为,接收到ICMP超时差错报文;
[0079]
存储模块设置为,第一接收模块接收到ICMP超时差错报文时,保存ICMP超时差错报文中的未使用字段MRU值,向第一发送模块发送通知消息;
[0080]
UDP报文的目的IP地址为虚链邻居的IP地址。
[0081]
本发明实施例的虚链源端设备中,第一接收模块还设置为:
[0084]
保存ICMP目的不可达报文中的未使用字段MRU值;
[0086]
配置模块设置为,获取保存的所有未使用字段MRU值的最小值,判断出获得的最小值小于自身虚链出接口的MTU值,重新配置自身虚链出接口的MTU值。
[0087]
本发明实施例的虚链源端设备中,配置模块是设置为:
[0088]
获取保存的所有未使用字段MRU值的最小值,判断出获得的MRU值的最小值小于自身虚链出接口的最大传输单元MTU值,将自身虚链出接口的MTU值配置为小于或等于获得的MRU值的最小值。
[0089]
参见图4,本发明实施例还提出了一种虚拟链路上的设备,包括:第二接收模块和第二发送模块;其中,
[0090]
第二接收模块设置为,接收UDP报文;
[0091]
第二发送模块设置为,计算UDP报文的TTL和1之间的差值;判断出计算得到的差值为0,且UDP报文中的目的IP地址不是自身的IP地址,向虚链源端设备发送ICMP超时差错报文;
[0092]
ICMP超时差错报文中的未使用字段为自身接收接口的最大接收单元MRU值。
[0093]
需要说明的是,本发明实施例虚拟链路上的设备包括:处于虚链源端设备的虚拟链路上的下一跳设备。
[0094]
本发明实施例的虚拟链路上的设备中,第二发送模块还设置为:
[0095]
判断出计算得到的差值为0,且UDP报文中的目的IP地址为自身的IP地址,判断出UDP报文中的目的端口号不存在,向虚链源端设备发送ICMP目的不可达报文,其中,ICMP目的不可达报文中的未使用字段为自身接收接口的MRU值。
[0096]
本发明实施例的虚拟链路上的设备中,第二发送模块还设置为:
[0097]
判断出计算得到的差值不为0,向虚拟链路上自身的下一跳设备转发UDP报文;其中,转发的UDP报文的TTL为计算得到的差值。
[0098]
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件(例如处理器)完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的每个模块/单元可以采用硬件的形式实现,例如通过集成电路来实现其相应功能,也可以采用软件功能模块的形式实现,例如通过处理器执行存储于存储器中的程序/指令来实现其相应功能。本发明不限制于任何特定形式的硬件和软件的结合。”
[0099]
虽然本申请所揭露的实施方式如上,但所述的内容仅为便于理解本申请而采用的实施方式,并非用以限定本申请,如本发明实施方式中的具体的实现方法。任何本申请所属领域内的技术人员,在不脱离本申请所揭露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但本 申请的专利保护范围,仍须以所附的权利要求书所界定的范围为准。
[0100]
上述技术方案实现了MTU值和MRU值之间的协商。
权利要求书
[权利要求 1]
一种获取设备接口最大接收单元MRU值的方法,包括: 虚链源端设备向虚拟链路上自身的下一跳设备发送生存时间TTL为1的用户数据报协议UDP报文;其中,UDP报文的目的互联网协议IP地址为虚链邻居的IP地址; 当虚链源端设备接收到因特网控制报文协议ICMP超时差错报文时,保存ICMP超时差错报文中的未使用字段MRU值,并继续向虚拟链路上自身的下一跳设备发送TTL比上一次发送的UDP报文的TTL大1的UDP报文。
[权利要求 2]
根据权利要求1所述的方法,所述方法还包括:所述虚链源端设备接收到ICMP目的不可达报文时, 保存所述ICMP目的不可达报文中的未使用字段MRU值; 获取保存的所有未使用字段MRU值的最小值,判断出获得的MRU值的最小值小于自身虚链出接口的最大传输单元MTU值,重新配置自身虚链出接口的MTU值。
[权利要求 3]
根据权利要求2所述的方法,其中,所述重新配置自身虚链出接口的MTU值包括: 将所述自身虚链出接口的MTU值配置为小于或等于所述获得的MRU值的最小值。
[权利要求 4]
一种获取设备接口的最大接收单元MRU值的方法,包括: 处于虚链源端设备的虚拟链路上的下一跳设备接收虚链源端设备发送的UDP报文,计算UDP报文的生存时间和1之间的差值; 当处于虚链源端设备的虚拟链路上的下一跳设备判断出计算得到的差值为0,且UDP报文中的目的互联网协议IP地址不是自身的IP地址时,向虚链源端设备发送因特网控制报文协议ICMP超时差错报文; 所述ICMP超时差错报文中的未使用字段为自身接收接口的最大接收单元MRU值。
[权利要求 5]
根据权利要求4所述的方法,所述方法还包括:当所述处于虚链源端 设备的虚拟链路上的下一跳设备判断出所述计算得到的差值为0,且所述UDP报文中的目的IP地址为自身的IP地址时, 所述处于虚链源端设备的虚拟链路上的下一跳设备判断出所述UDP报文中的目的端口号不存在时,向所述虚链源端设备发送ICMP目的不可达报文; 其中,ICMP目的不可达报文中的未使用字段为自身接收接口的MRU值。
[权利要求 6]
根据权利要求4或5所述的方法,所述方法还包括:所述处于虚链源端设备的虚拟链路上的下一跳设备判断出计算得到的差值不为0时, 所述处于虚链源端设备的虚拟链路上的下一跳设备向自身的下一跳设备转发所述UDP报文;其中,转发的UDP报文的TTL为计算得到的所述差值。
[权利要求 7]
一种虚链源端设备,包括:第一发送模块、第一接收模块和存储模块;其中, 第一发送模块设置为,向虚拟链路上自身的下一跳设备发送TTL为1的UDP报文;存储模块保存ICMP超时差错报文中的未使用字段MRU值时,继续向虚拟链路上自身的下一跳设备发送TTL比上一次发送的UDP报文的TTL大1的UDP报文; 第一接收模块设置为,接收ICMP超时差错报文; 存储模块设置为,第一接收模块接收到ICMP超时差错报文时,保存ICMP超时差错报文中的未使用字段MRU值,向第一发送模块发送通知消息; UDP报文的目的IP地址为虚链邻居的IP地址。
[权利要求 8]
根据权利要求7所述的虚链源端设备,所述第一接收模块还设置为: 接收ICMP目的不可达报文; 所述存储模块还设置为: 保存所述ICMP目的不可达报文中的未使用字段MRU值; 所述虚链源端设备还包括配置模块: 配置模块设置为,获取保存的所有未使用字段的MRU值的最小值,判断出获得的最小值小于自身虚链出接口的最大传输单元MTU值,重新配置 自身虚链出接口的MTU值。
[权利要求 9]
根据权利要求8所述的虚链源端设备,其中,所述配置模块是设置为: 获取保存的所有未使用字段的MRU值的最小值,判断出获得的MRU值的最小值小于自身虚链出接口的最大传输单元MTU值,将所述自身虚链出接口的MTU值配置为小于或等于所述获得的MRU值的最小值。
[权利要求 10]
一种虚拟链路上的设备,其特征在于,包括:第二接收模块和第二发送模块;其中, 第二接收模块设置为,接收UDP报文; 第二发送模块设置为,计算UDP报文的生存时间TTL和1之间的差值;判断出计算得到的差值为0,且UDP报文中的目的IP地址不是自身的IP地址时,向虚链源端设备发送ICMP超时差错报文; 所述ICMP超时差错报文中的未使用字段为自身接收接口的最大接收单元MRU值。
[权利要求 11]
根据权利要求10所述的虚拟链路上的设备,所述第二发送模块还设置为: 判断出计算得到的所述差值为0,且所述UDP报文中的目的IP地址为自身的IP地址,判断出所述UDP报文中的目的端口号不存在,向所述虚链源端设备发送ICMP目的不可达报文; 所述ICMP目的不可达报文中的未使用字段为自身接收接口的MRU值。
[权利要求 12]
根据权利要求10或11所述的虚拟链路上的设备,所述第二发送模块还设置为: 判断出计算得到的差值不为0,向所述自身的下一跳设备转发所述UDP报文; 所述转发的UDP报文的TTL为计算得到的所述差值。
[权利要求 13]
一种计算机存储介质,所述计算机存储介质中存储有计算机可执行指令,所述计算机可执行指令用于执行权利要求1~6中任一项所述的方法。
附图