CN101695048A - 隧道最大传输单元的发现处理方法与装置、路由器 - Google Patents

隧道最大传输单元的发现处理方法与装置、路由器 Download PDF

Info

Publication number
CN101695048A
CN101695048A CN200910208811A CN200910208811A CN101695048A CN 101695048 A CN101695048 A CN 101695048A CN 200910208811 A CN200910208811 A CN 200910208811A CN 200910208811 A CN200910208811 A CN 200910208811A CN 101695048 A CN101695048 A CN 101695048A
Authority
CN
China
Prior art keywords
probe messages
router
recipient
mtu
target
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN200910208811A
Other languages
English (en)
Other versions
CN101695048B (zh
Inventor
黄小珊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujian Star Net Communication Co Ltd
Original Assignee
Fujian Star Net Communication Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujian Star Net Communication Co Ltd filed Critical Fujian Star Net Communication Co Ltd
Priority to CN200910208811XA priority Critical patent/CN101695048B/zh
Publication of CN101695048A publication Critical patent/CN101695048A/zh
Application granted granted Critical
Publication of CN101695048B publication Critical patent/CN101695048B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种隧道最大传输单元的发现处理方法与装置、路由器,其中,方法包括:向接收方路由器发送第一探测报文,其中携带有DF位;接收到针对第一探测报文返回的目标不可达报文时,根据该目标不可达报文中接收方路由器的MTU值学习路径MTU,向接收方路由器发送第二探测报文,其中携带有DF位,第二探测报文的长度为学习到的路径MTU值;在第一预设条件下未接收到针对第二探测报文返回的目标不可达报文时,执行向接收方路由器发送第一探测报文的操作。本发明实施例可以避免按照较小MTU值对报文分片造成的网络资源浪费、系统工作性能下降与数据传输效率降低,以及按照较大MTU值发送报文造成报文的丢失与通信业务的中断。

Description

隧道最大传输单元的发现处理方法与装置、路由器
技术领域
本发明涉及通信技术,尤其是一种隧道最大传输单元的发现处理方法与装置、路由器。
背景技术
通用路由封装协议(Generic Routing Encapsulation,以下简称:GRE)与由一个第四版本互联网协议(Internet Protocol version 4,以下简称:IPv4)网络承载另一个IPv4网络数据(IPv4 over IPv4,以下简称:IPIP)协议都是虚拟个人网络(Virtual Private Network,以下简称:VPN)的第三层隧道(Tunnel)协议,其在协议层之间采用了隧道技术,可以将报文在原始的发送方地进行再一次的封装,在远程接收方地进行解封装还原原始报文,以达到穿越网络的目的。其中,GRE隧道能对某些网络层协议,例如:IP协议、互连网分组协议(Internetwork Packet Exchange protocol,以下简称:IPX)的报文进行封装,将这些被封装的报文在另一个网络层协议,例如:IP中传输。IPIP隧道能对IP报文进行封装,将IP数据包封装在附加的IP包头中,使得一个IPv4网络的数据能够在另一个IPv4网络中传输。因此,通过GRE隧道与IPIP隧道可以实现以下功能:构建VPN网络;对公网隐藏企业网的IP地址,使用保留地址进行网络互联;隧道对于负载协议来说只算一跳,对于一些存活时间(Time To Live,以下简称:TTL)跳数有限制的网络提供了跨越更多跳数的能力等。GRE隧道还可以让用户利用公共的IP网络连接IPX、机网络协议(AppleTalk)等网络。
在采用隧道技术进行数据传输的过程中,链路层以及在底层运行的硬件通常都限制了一个数据包发送的最大长度,称为最大传输单元(Maximum Transmission Unit,以下简称:MTU)。以采用IPIP隧道传输报文为例,一个IPIP报文传输时,都要将其数据段长度与该报文经过接口的MTU进行比较,若IPIP报文中数据段的长度大于该报文经过接口的MTU,就要对数据段进行分片发送,由最终的接收方接收该报文后,对分片的IP数据包进行重新组装,还原原始IP报文。例如:经过接口的MTU为1500,IPIP报文头的长度为40,如果该IPIP报文的数据段的长度大于1500-40=1460,就要对数据段进行分片发送,由最终的接收方接收该报文后,对分片的IP数据包进行重新组装,还原原始IP报文。
在报文传输的过程中,如果对报文分片过多,就会降低数据传输效率与通信系统性能,浪费网络资源。因此,为了避免分片的频繁发生,发送报文的源主机应该查明从源主机到接收报文的目的主机之间路径上的MTU,也即:构成源主机到目的主机之间路径上各段链路的MTU的最小值,该MTU也称为路径MTU或最小MTU。
现有技术中,通过以下两种方法获取从源主机到目的主机之间路径上的MTU:
一种方法是,发送方发送一个带有禁止分片(division forbidden,以下简称:DF)位的IP报文。由于报文禁止分片,在该报文长度大于目的接收方的MTU,接收方无法接收该报文,就向发送方返回一个表示目标不可达的网间控制报文协议(Internet Control Messages Protocol,以下简称:ICMP)报文,该ICMP报文的类型(TYPE)等于3,代码(CODE)等于4,并且其中携带了接收方的MTU的值。这样,发送方通过解封装该ICMP报文,就可以从中获取接收方MTU的值。该方法也称为路径最大传输单元发现(Path MTU Discovery,以下简称:PMTUD)方法。
另一种方法是,利用隧道双向探测报文获取GRE隧道的最小MTU,根据该最小MTU决定是否直接转发报文还是分片后再转发报文到GRE隧道中。
采用现有技术的方法获取从源主机到目的主机之间路径上的MTU时,至少存在以下问题:
GRE&IPIP隧道接口的MTU值被配置后永不过期,现有技术中发送方学习了当前隧道的MTU值之后,会一直保持该MTU值不变,无法动态获知路径MTU值,在隧道路径中MTU值被修改变大或变小时,发送方也不会知晓该MTU值的变化,因此一直保持原来学习到的MTU值不变。这样,即使在隧道路径中MTU值被修改变大了,发送方每次发送报文前,都要按照之前学习到的较小的MTU值在发送方接口进行分片,造成网络资源浪费、系统工作性能下降、数据传输效率降低;而在隧道路径中MTU值被修改变小了,发送方仍在按照原来较大的MTU值发送报文,而在报文的长度大于修改后隧道路径中MTU值时,可会造成报文的丢失,从而造成通信业务的中断。
发明内容
本发明实施例的目的是:提供一种隧道最大传输单元的发现处理方法与装置、路由器,动态学习隧道MTU,避免按照较小MTU值对报文分片造成的网络资源浪费、系统工作性能下降与数据传输效率降低,以及按照较大MTU值发送报文造成报文的丢失与通信业务的中断。
本发明实施例提供的一种隧道最大传输单元的发现处理方法,包括:
向接收方路由器发送第一探测报文,该第一探测报文中携带有禁止分片DF位;
接收到针对第一探测报文返回的目标不可达报文时,根据该目标不可达报文中接收方路由器的最大传输单元MTU值学习路径MTU,向所述接收方路由器发送第二探测报文,所述第二探测报文中携带有DF位,所述第二探测报文的长度为学习到的路径MTU值;
在第一预设条件下未接收到针对第二探测报文返回的目标不可达报文时,执行所述向接收方路由器发送第一探测报文的操作。
本发明实施例提供的一种隧道最大传输单元的发现处理装置,包括:
发送模块,用于向接收方路由器发送第一探测报文与第二探测报文,所述第一探测报文与所述第二探测报文中携带有DF位;
接收模块,用于接收所述接收方路由器返回的目标不可达报文;
检测模块,用于检测所述接收模块是否接收到所述接收方路由器针对第一探测报文返回的目标不可达报文,以及检测所述接收模块在所述发送模块发送第二探测报文后的第一预设条件下,是否接收到针对第二探测报文返回的目标不可达报文,并在第一预设条件下未接收到针对第二探测报文返回的目标不可达报文时,触发所述发送模块向接收方路由器发送第一探测报文;
学习模块,用于根据所述检测模块的检测结果,在所述接收模块接收到针对第一探测报文返回的目标不可达报文时,根据该目标不可达报文中接收方路由器的MTU值,学习路径MTU,并触发所述发送模块向所述接收方路由器发送第二探测报文,所述第二探测报文的长度为学习到的路径MTU值。
本发明实施例提供的一种路由器,包括本发明上述实施例提供的隧道最大传输单元的发现处理装置。
基于本发明上述实施例提供的隧道MTU的发现处理方法与装置、路由器,学习到路径MTU以后,可以向接收方路由器发送长度为学习到的路径MTU值的第二探测报文,该第二探测报文中携带有DF位,并在第一预设条件下未接收到针对第二探测报文返回的目标不可达报文时,重新向接收方路由器发送第一探测报文,以重新学习路径MTU,动态获取隧道内的路径MTU,实现路径MTU的老化,从而正确决定是否需要对报文进行分片发送,与现有技术相比,避免按照较小MTU值对报文分片造成的网络资源浪费、系统工作性能下降与数据传输效率降低的问题,以及避免按照较大MTU值发送报文造成报文的丢失与通信业务的中断的问题,在保证报文正常发送的情况下实现网络资源的高效利用,提高系统工作性能与数据传输效率。另外,本发明实施例中学习路径MTU时,采用的是专用的探测报文而非正常通信业务的报文,因此与通信业务过程独立,不会影响通信业务的正常进行。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明隧道MTU的发现处理方法一个实施例的流程图;
图2为本发明隧道MTU的发现处理方法另一个实施例的流程图;
图3为本发明隧道MTU的发现处理方法又一个实施例的流程图;
图4为本发明隧道MTU的发现处理方法一个应用实施例的流程图;
图5为本发明隧道MTU的发现处理装置一个实施例的结构示意图;
图6为本发明隧道MTU的发现处理装置另一个实施例的结构示意图;
图7为本发明隧道MTU的发现处理装置又一个实施例的结构示意图;
图8为本发明隧道MTU的发现处理装置再一个实施例的结构示意图;
图9为本发明隧道MTU的发现处理装置还一个实施例的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明隧道MTU的发现处理方法一个实施例的流程图。如图1所示,其包括:
步骤101,向接收方路由器发送第一探测报文,该第一探测报文中携带有DF位。
作为本发明的一个具体实施例,探测报文可以是PMTUD报文。
步骤102,接收到针对第一探测报文返回的目标不可达报文时,根据该目标不可达报文中接收方路由器的MTU值学习路径MTU,并向接收方路由器发送第二探测报文,该第二探测报文中携带有DF位,第二探测报文的长度为学习到的路径MTU值。
具体地,该目标不可达报文具体可以是ICMP报文。根据目标不可达报文中接收方路由器的MTU值学习路径MTU,就是将隧道接口的MTU值配置为接收方路由器的MTU值。
步骤103,在第一预设条件下未接收到针对第二探测报文返回的目标不可达报文时,重新执行步骤101,向接收方路由器发送第一探测报文。
基于本发明上述实施例提供的隧道MTU的发现处理方法,学习到路径MTU以后,可以向接收方路由器发送长度为学习到的路径MTU值的第二探测报文,该第二探测报文中携带有DF位,并在第一预设条件下未接收到针对第二探测报文返回的目标不可达报文时,重新向接收方路由器发送第一探测报文,以重新学习路径MTU,动态获取隧道内的路径MTU,实现路径MTU的老化,从而正确决定是否需要对报文进行分片发送,与现有技术相比,避免按照较小MTU值对报文分片造成的网络资源浪费、系统工作性能下降与数据传输效率降低的问题,以及避免按照较大MTU值发送报文造成报文的丢失与通信业务的中断的问题,在保证报文正常发送的情况下实现网络资源的高效利用,提高系统工作性能与数据传输效率。另外,本发明实施例中学习路径MTU时,采用的是专用的探测报文而非正常通信业务的报文,因此与通信业务过程独立,不会影响通信业务的正常进行。本发明实施例可以适用于任意隧道的路径MTU,包括但不限于GRE隧道与IPIP隧道。
根据本发明的一个具体实施例,步骤103中,在第一预设条件下未接收到针对第二探测报文返回的目标不可达报文具体可以是:针对连续M次向接收方路由器发送的第二探测报文,或者在第一预设时间内连续向接收方路由器发送的第二探测报文,均未接收到接收方路由器返回的目标不可达报文,其中,M为大于1的整数。
在图1所示的实施例中,接收到针对第二探测报文返回的目标不可达报文时,可以针对该目标不可达报文执行步骤102,即:根据该目标不可达报文中接收方路由器的MTU值学习路径MTU,将隧道接口的MTU值配置为接收方路由器的MTU值,并根据该最新配置的隧道接口的MTU值,向接收方路由器发送第二探测报文,第二探测报文的长度为最新配置的隧道接口的MTU值。
根据本发明的另一个具体实施例,步骤103具体可以通过如下方式实现:
在第一预设条件下未接收到针对第二探测报文返回的目标不可达报文时,以学习到的路径MTU值与N值之和,作为第三探测报文的长度,向接收方路由器发送第三探测报文,该第三探测报文中携带有DF位,N为大于零的整数;
接收到针对第三探测报文返回的目标不可达报文时,根据该目标不可达报文中接收方路由器的MTU值学习路径MTU,将隧道接口的MTU值配置为目标不可达报文中携带的接收方路由器的MTU值;
在第二预设条件下未接收到针对第三探测报文返回的目标不可达报文时,重新执行步骤101,向接收方路由器发送第一探测报文。
具体地,根据本发明的又一个具体实施例,在第二预设条件下未接收到针对第三探测报文返回的目标不可达报文可以是:针对连续L次向接收方路由器发送的第三探测报文,或者在第二预设时间内连续向接收方路由器发送的第三探测报文,均未接收到接收方路由器返回的目标不可达报文,其中,L为大于1的整数。
在动态学习到隧道中的路径MTU后,如果不改变发送的探测报文的大小,那么一旦路径MTU变大,则无法再次的学习到正确的路径MTU。如果再次以最初的发送方路由器的物理接口的MTU值作为探测报文长度发送探测报文的话,就会发起新一轮的路径MTU学习,这就会造成学习MTU的震荡。本发明实施例中,在第一预设条件下未接收到针对第二探测报文返回的目标不可达报文时,以学习到的路径MTU值与N值之和,作为第三探测报文的长度,向接收方路由器发送第三探测报文,可以一直保持学习当前隧道的路径MTU,而不用重新学习路径MTU,有效防止了MTU学习震荡。
另外,根据本发明的再一个具体实施例,可以从发送方路由器隧道边缘接口配置的目的地址对应的路由信息中获取发送方路由器上的隧道MTU值与物理接口MTU值,选取该隧道MTU值与物理接口MTU值的较大MTU值,生成长度为该较大MTU值的第一探测报文;或者,也可以从发送方路由器隧道边缘接口配置的目的地址对应的路由信息中获取发送方路由器上的物理接口MTU值,生成长度为该物理接口MTU值的第一探测报文。第一次向接收方路由器发送第一探测报文时,具体可以发送长度为隧道MTU值与物理接口MTU值中的较大MTU值的第一探测报文,也可以发送长度为物理接口MTU值的第一探测报文。
图2为本发明隧道MTU的发现处理方法另一个实施例的流程图。如图2所示,其包括:
步骤201,向接收方路由器发送第一探测报文,该第一探测报文中携带有DF位。
步骤202,检测是否接收到接收方路由器针对第一探测报文返回的目标不可达报文。若接收到接收方路由器针对第一探测报文返回的目标不可达报文,执行步骤203;否则,不执行本实施例的后续流程。
步骤203,获取目标不可达报文中携带的接收方路由器的MTU值,并比较该接收方路由器的MTU值是否小于预设最小MTU值。若接收方路由器的MTU值不小于预设最小MTU值时,执行步骤204;否则,不执行本实施例的后续流程。
步骤204,根据该目标不可达报文中接收方路由器的MTU值学习路径MTU,将隧道接口的MTU值配置为接收方路由器的MTU值。
步骤205,向接收方路由器发送第二探测报文,该第二探测报文中携带有DF位,第二探测报文的长度为学习到的路径MTU值。
步骤206,检测在第一预设条件下是否接收到针对第二探测报文返回的目标不可达报文。若在第一预设条件下未接收到针对第二探测报文返回的目标不可达报文,执行步骤207。否则,若在第一预设条件下接收到针对第二探测报文返回的目标不可达报文,执行步骤203。
具体地,第一预设条件可以根据连续向接收方路由器发送第二探测报文的次数M确定。相应的,该步骤206中,针对每一次向接收方路由器发送的第二探测报文,都检测是否接收到接收方路由器针对第二探测报文返回的目标不可达报文,若针对第P次向接收方路由器发送的第二探测报文,未接收到接收方路由器针对第二探测报文返回的目标不可达报文,则重新执行步骤205,再一次向接收方路由器发送第二探测报文,其中,1≤P≤M-1,直到针对第M次向接收方路由器发送的第二探测报文,均未接收到接收方路由器针对第二探测报文返回的目标不可达报文,才认为在第一预设条件下是否接收到针对第二探测报文返回的目标不可达报文。否则,只要针对M次中有一次发送的第二探测报文接收到目标不可达报文,则认为在第一预设条件下接收到针对第二探测报文返回的目标不可达报文,不继续发送下一次第二探测报文。
步骤207,以学习到的路径MTU值与N值之和,作为第三探测报文的长度,向接收方路由器发送第三探测报文,该第三探测报文中携带有DF位,其中,N为大于零的整数。
另外,还可以将隧道接口的MTU值配置为作为第一次发送的第一探测报文长度的MTU值,即:隧道MTU值与物理接口MTU值的较大MTU值,来作为学习到的路径MTU。步骤207中,具体以该路径MTU值与N值之和,作为第三探测报文的长度,向接收方路由器发送第三探测报文。
步骤208,检测在第二预设条件下是否接收到针对第三探测报文返回的目标不可达报文。若在第二预设条件下未接收到针对第三探测报文返回的目标不可达报文,重新执行步骤201,向接收方路由器发送第一探测报文,再次学习路径MTU。否则,若在第二预设条件下接收到针对第三探测报文返回的目标不可达报文,执行步骤203。
具体地,第二预设条件可以根据连续向接收方路由器发送第三探测报文的次数N确定。相应的,该步骤208中,针对每一次向接收方路由器发送的第三探测报文,都检测是否接收到接收方路由器针对第三探测报文返回的目标不可达报文,若针对第Q次向接收方路由器发送的第三探测报文,未接收到接收方路由器针对第三探测报文返回的目标不可达报文,则重新执行步骤207,再一次向接收方路由器发送第三探测报文,其中,1≤Q≤N-1,直到针对第N次向接收方路由器发送的第三探测报文,均未接收到接收方路由器针对第三探测报文返回的目标不可达报文,才认为在第二预设条件下是否接收到针对第三探测报文返回的目标不可达报文。否则,只要针对N次中有一次发送的第三探测报文接收到目标不可达报文,则认为在第二预设条件下接收到针对第三探测报文返回的目标不可达报文,不继续发送下一次第三探测报文。
采用现有技术的方法获取从源主机到目的主机之间路径上的MTU的方法,可能遭受ICMP PMTUD攻击。ICMP PMTUD攻击就是:在学习路径MTU的过程 中,非法用户可能捏造一个假ICMP目标不可达报文,并且将该假ICMP目标不可达报文中携带的MTU值设置的很小,一旦源发送方路由器接收了该假ICMP目标不可达报文,便会被欺骗,而将隧道接口的MTU值修改为该很小的MTU值,致使正常的报文不能通过该隧道接口。采用本发明上述实施例的方法,获取到目标不可达报文中携带的接收方路由器的MTU值后,还比较该接收方路由器的MTU值是否小于预设最小MTU值,只有在接收方路由器的MTU值不小于预设最小MTU值时,才学习路径MTU,从而降低了ICMP PMTUD攻击带来的影响,还可以将遭受ICMP PMTUD攻击后被改小的MTU值恢复为当前隧道中的路径MTU值。
根据本发明的进一步实施例,可以以一个状态机的状态作为参考,来动态学习隧道中的路径MTU。其中,状态机的状态包括初始(INITE)状态、学习(LEARNING)状态与保持(KEEP)状态。状态机可以根据第一预设条件更新第一统计值,根据第二预设条件更新第二统计值,以及统计生成第一探测报文的次数。其中的第一统计值、第二统计值可以是次数或者预设时间或者次数与预设时间的结合。图3为本发明隧道MTU的发现处理方法又一个实施例的流程图。如图3所示,参考状态机的状态动态学习隧道中的路径MTU的流程包括:
步骤301,在状态机处于初始状态下,第一次生成第一探测报文时,从发送方路由器隧道边缘接口配置的目的地址对应的路由信息中获取发送方路由器上的隧道MTU值与物理接口MTU值,选取该隧道MTU值与物理接口MTU值的较大MTU值,生成长度为该较大MTU值的第一探测报文,该第一探测报文中携带有DF位。
另外,作为另外一个实施例,也可以仅从发送方路由器隧道边缘接口配置的目的地址对应的路由信息中获取发送方路由器上的物理接口MTU值,直接生成长度为该物理接口MTU值的第一探测报文。
根据本发明的再一个实施例,若不是第一次生成第一探测报文,可以从发送方路由器隧道边缘接口配置的目的地址对应的路由信息中获取发送方路由器上的隧道MTU值与物理接口MTU值,选取该隧道MTU值与物理接口MTU值的较小MTU值,生成长度为该较小MTU值的第一探测报文。
步骤302,向接收方路由器发送第一探测报文,将状态机的状态更新为学习状态,并更新状态机上发送第一探测报文的次数。
步骤303,在状态机的状态处于学习状态下,检测是否接收到接收方路由器针对第一探测报文返回的目标不可达报文。若接收到接收方路由器针对第一探测报文返回的目标不可达报文,执行步骤304;否则,不执行本实施例的后续流程。
步骤304,获取目标不可达报文中携带的接收方路由器的MTU值,并比较该接收方路由器的MTU值是否小于预设最小MTU值。若接收方路由器的MTU值不小于预设最小MTU值时,执行步骤305;否则,不执行本实施例的后续流程。
步骤305,根据该目标不可达报文中接收方路由器的MTU值学习路径MTU,将隧道接口的MTU值配置为接收方路由器的MTU值。
步骤306,向接收方路由器发送第二探测报文,并根据第一预设条件更新状态机上的第一统计值。第二探测报文中携带有DF位,第二探测报文的长度为学习到的路径MTU值,
具体地,若第一预设条件根据连续向接收方路由器发送第二探测报文的次数M确定,则更新状态机上向接收方路由器发送第二探测报文的次数P。
步骤307,检测在第一预设条件下是否接收到针对第二探测报文返回的目标不可达报文。若在第一预设条件下未接收到针对第二探测报文返回的目标不可达报文,执行步骤308。否则,若在第一预设条件下接收到针对第二探测报文返回的目标不可达报文,执行步骤304。
步骤308,清空第一统计值,并且将状态机的状态更新为保持状态。
另外,还可以将隧道接口的MTU值配置为作为第一次发送的第一探测报文长度的MTU值,即:隧道MTU值与物理接口MTU值的较大MTU值,来作为学习到的路径MTU。
步骤309,在状态机的状态处于保持状态下,以学习到的路径MTU值与N值之和,作为第三探测报文的长度,向接收方路由器发送第三探测报文,并根据第二预设条件更新状态机上的第二统计值。第三探测报文中携带有DF位,其中,N为大于零的整数。
具体地,若第二预设条件根据连续向接收方路由器发送第三探测报文的次数N确定,则更新状态机上向接收方路由器发送第三探测报文的次数Q。
步骤310,检测在第二预设条件下是否接收到针对第三探测报文返回的目标不可达报文。若在第二预设条件下未接收到针对第三探测报文返回的目标不可达报文,执行步骤311。否则,若在第二预设条件下接收到针对第三探测报文返回的目标不可达报文,执行步骤312。
步骤311,清空第二统计值,并且将状态机的状态更新为初始状态,在初始状态下重新执行步骤301,向接收方路由器发送第一探测报文,再次学习路径MTU。之后不再执行本实施例的后续流程。
步骤312,清空第二统计值,然后执行步骤304。
图4为本发明隧道MTU的发现处理方法一个应用实施例的流程图。该实施例中,M=5,N=5。如图4所示,其包括:
步骤401,在状态机处于初始状态下,在GRE&IPIP隧道接口上开启计时器进行计时,计时器超时可以触发生成与发送探测报文。
具体地,计时器的超时时间具体可以根据实际需求设置,例如:可以设置为10-30分钟。
步骤402,计时器超时,第一次生成第一探测报文时,从发送方路由器隧道边缘接口配置的目的地址对应的路由信息中获取发送方路由器上的隧道MTU值与物理接口MTU值,选取该隧道MTU值与物理接口MTU值的较大MTU值,生成长度为该较大MTU值的第一探测报文,该第一探测报文中携带有DF位。如果不是第一次生成第一探测报文,选取该隧道MTU值与物理接口MTU值的较小MTU值,生成长度为该较小MTU值的第一探测报文。
步骤403,向接收方路由器发送第一探测报文,将状态机的状态更新为学习状态,并更新状态机上发送第一探测报文的次数。
步骤404,在隧道的路径中,如果第一探测报文的长度大于接收方路由器的MTU值,接收方路由器就会返回一个目标不可达报文,该目标不可达报文携带有接收方路由器的MTU值。接收到目标不可达报文时,获取目标不可达报文中携带的接收方路由器的MTU值,并比较该接收方路由器的MTU值是否小于预设最小MTU值min_mtu。如果小于预设最小MTU值min_mtu,不执行本发明实施例的后续流程。否则,若不小于预设最小MTU值min_mtu,执行步骤405。
具体地,预设最小MTU值min_mtu可以依据通信环境中的实际情况进行配置。例如:在目前的一个通信环境中,普通物理接口所能接受的最小MTU值为68K,GRE头最小的消耗值为24K,则可以设置最小MTU值min_mtu为92K。
步骤405,根据该目标不可达报文中接收方路由器的MTU值学习路径MTU,将隧道接口的MTU值配置为接收方路由器的MTU值。
只有在目标不可达报文中接收方路由器的MTU值不小于预设最小MTU值min_mtu时,才将隧道接口的MTU值配置为接收方路由器的MTU值,降低了ICMP PMTUD攻击的影响,不会因为将隧道接口的MTU值修改太小而使隧道内无法通过正常的数据报文。
之后,可以再次通过计时器超时重复执行步骤402-405的操作,学习到正常的路径MTU。由于不是第一次生成第一探测报文,选取该隧道MTU值与物理接口MTU值的较小MTU值,生成并发送的是长度为该较小MTU值的第一探测报文。
步骤406,向接收方路由器发送第二探测报文,并更新状态机上发送第二探测报文的次数该第二探测报文中携带有DF位,第二探测报文的长度为学习到的路径MTU值。
步骤407,检测针对连续5次向接收方路由器发送第二探测报文,是否接收到针对第二探测报文返回的目标不可达报文。若针对连续5次向接收方路由器发送第二探测报文均未接收到针对第二探测报文返回的目标不可达报文,执行步骤408。否则,只要针对其中一次发送的第二探测报文接收到目标不可达报文,执行步骤404。
步骤408,若针对连续5次向接收方路由器发送第二探测报文均未接收到针对第二探测报文返回的目标不可达报文,可能有两种情况,一种是隧道的对端不可达,另一种是该作为第二探测报文长度的MTU值不大于正确的隧道路径MTU。无论是哪种情况,都可以将隧道接口的MTU值配置为作为第一次发送的第一探测报文长度的MTU值,即:隧道MTU值与物理接口MTU值的较大MTU值,并将状态机上的发送次数清空,将状态机的状态更新为保持状态。
步骤409,在状态机的状态处于保持状态下,以学习到的路径MTU值+1,作为第三探测报文的长度,向接收方路由器发送第三探测报文,并更新状态机上的发送次数。第三探测报文中携带有DF位。
步骤410,检测针对连续5次向接收方路由器发送第三探测报文是否接收到目标不可达报文。若均未接收到针对第三探测报文返回的目标不可达报文,执行步骤411。否则,只要针对其中一次发送的第三探测报文接收到目标不可达报文,执行步骤412。
步骤411,清空状态机上的发送次数,并且将状态机的状态更新为初始状态,在初始状态下重新执行步骤402,向接收方路由器发送第一探测报文,再次学习路径MTU。
步骤412,清空状态机上的发送次数,并且将状态机的状态更新为学习状态,在学习状态下执行步骤404。
在状态机处于保持状态时,如果发送的探测报文长度保持不变,则隧道路径MTU一旦变大,发送方路由器永远不会学习到该路径MTU,一旦遭遇ICMP PMTUD攻击,将隧道接口的MTU值改小后无法自动改回来;如果直接将状态机转为初始状态发送第一探测报文,又会发起新一轮的路径MTU学习,将会造成MTU震荡。本发明实施例中,在状态机处于保持状态时,发送隧道的路径MTU值加1大小的探测报文,这样,如果收到接收方路由器返回的目标不可达报文,判断是否需要修改隧道接口的MTU值,需要修改则进入状态机学习状态,不需要修改则状态机继续处于保持状态,不会影响当前隧道的最小路径MTU值。如果针对连续5次发送的探测报文都没有收到相应的目标不可达报文,则有两种可能的情况:一种是隧道的路径MTU值增大了,另一种是隧道不可达。无论哪种情况,都在将长度为MTU值+1的探测报文重传了5次后清空状态机上的发送次数统计值,将状态机变为初始状态,重复执行步骤402-步骤412的流程,避免了隧道中路径MTU的学习震荡。
以下以一个具体实例来进一步详细说明本发明隧道MTU的发现处理方法的应用。假设源发送方路由器、第一路由器、第二路由器、第三路由器与目的端路由器形成GRE隧道或IPIP隧道,其MTU值分别为1500、1200、1400、1000与1200。计时器超时,源发送方路由器开始向目的端路由器发送长度为1500的带DF位的GRE报文或IPIP报文。途径MTU值为1200的第一路由器时,由于GRE报文或IPIP报文的长度大于该第一路由器的MTU值并且携带DF位,第一路由器向源发送方路由器返回一个类型等于3、代码等于4的ICMP报文。源发送方路由器接收到该ICMP报文时,将隧道接口的MTU置为1200。计时器再次超时,源发送方路由器再次向目的端路由器发送长度为1200的带DF位的GRE或IPIP报文。途经MTU值为1000的第三路由器时,由于GRE报文或IPIP报文的长度大于该第三路由器的MTU并且携带DF位,该第三路由器向源发送方路由器返回一个类型等于3、代码等于4的ICMP报文。源发送方路由器接收到该ICMP报文时,将隧道接口的MTU置为1000,至此,该隧道的路径MTU就被学到了。之后,源发送方路由器根据计时器超时时间持续发送路径MTU+1大小的带DF位的GRE报文或IPIP报文。如果路径MTU变小,根据返回的目标不可达报文可以直接学习到变小后的路径MTU;如果路径MTU变大,5次发送探测报文均未收到ICMP报文就会重新进入初始状态,再次以MTU=1500发探测报文,学习路径MTU。如果路径MTU值不变,源发送方路由器就会一直处于保持状态不变。
图5为本发明隧道MTU的发现处理装置一个实施例的结构示意图,该实施例的隧道MTU的发现处理装置可用于实现本发明上述隧道MTU的发现处理方法实施例的流程。如图5所示,该实施例的隧道MTU的发现处理装置包括发送模块501、接收模块502、检测模块503与学习模块504。
其中,发送模块501用于向接收方路由器发送第一探测报文与第二探测报文,其中的第一探测报文与第二探测报文中携带有DF位。接收模块502用于接收由接收方路由器返回的目标不可达报文。检测模块503用于检测接收模块502是否接收到接收方路由器针对第一探测报文返回的目标不可达报文,以及检测接收模块502在发送模块501发送第二探测报文后的第一预设条件下,是否接收到针对第二探测报文返回的目标不可达报文,并在第一预设条件下未接收到针对第二探测报文返回的目标不可达报文时,触发发送模块501向接收方路由器发送第一探测报文。学习模块504用于根据检测模块503的检测结果,在接收模块502接收到针对第一探测报文返回的目标不可达报文时,根据该目标不可达报文中接收方路由器的MTU值,学习路径MTU,并触发发送模块501向接收方路由器发送第二探测报文,该第二探测报文的长度为学习模块504学习到的路径MTU值。
另外,在图5所示实施例的隧道MTU的发现处理装置中,学习模块504还可以用于根据检测模块503的检测结果,在接收模块502接收到针对第二探测报文返回的目标不可达报文时,根据该目标不可达报文中接收方路由器的MTU值学习路径MTU,并触发发送模块501向接收方路由器发送第二探测报文。
图6为本发明隧道MTU的发现处理装置另一个实施例的结构示意图。与图5所示的实施例相比,该实施例中,检测模块503包括检测单元601与触发单元602。其中,检测单元601用于检测接收模块502是否接收到接收方路由器针对第一探测报文返回的目标不可达报文,检测接收模块502在发送模块501发送第二探测报文后的第一预设条件下,是否接收到针对第二探测报文返回的目标不可达报文,以及检测接收模块502在发送模块501发送第三探测报文后的第二预设条件下,是否接收到针对第三探测报文返回的目标不可达报文。触发单元602用于根据检测单元601的检测结果,若接收模块502在第一预设条件下未接收到针对第二探测报文返回的目标不可达报文时,以学习模块504学习到的路径MTU值与N值之和,作为第三探测报文的长度,触发发送模块501向接收方路由器发送第三探测报文,该第三探测报文中携带有DF位,其中,N为大于零的整数;若接收模块502在第二预设条件下接收到针对第三探测报文返回的目标不可达报文时,触发学习模块504根据该目标不可达报文中接收方路由器的MTU值学习路径MTU;若接收模块502在第二预设条件下未接收到针对第三探测报文返回的目标不可达报文时,触发发送模块501向接收方路由器发送第一探测报文。
进一步地,在本发明实施例的隧道MTU的发现处理装置中,还可以包括生成模块505,用于从发送方路由器隧道边缘接口配置的目的地址对应的路由信息中获取发送方路由器上的隧道MTU值与物理接口MTU值,选取隧道MTU值与物理接口MTU值的较大MTU值,并生成长度为较大MTU值的第一探测报文,或者生成长度为物理接口MTU值的第一探测报文。相应的,发送模块501具体用于向接收方路由器发送生成模块生成的第一探测报文。如图7所示,为本发明隧道MTU的发现处理装置又一个实施例的结构示意图。
图8为本发明隧道MTU的发现处理装置再一个实施例的结构示意图,该实施例的隧道MTU的发现处理装置可用于实现本发明图2所示实施例的流程。请参见图8,与图5-图7所示的实施例相比,该实施例的隧道MTU的发现处理装置还包括比较模块506,用于根据检测模块503的检测结果,在接收模块502接收到目标不可达报文时,从目标不可达报文中获取接收方路由器的MTU值,并比较该接收方路由器的MTU值是否小于预设最小MTU值。相应的,学习模块504具体根据比较模块506的比较结果,在接收方路由器的MTU值不小于预设最小MTU值时,学习路径MTU。
图9为本发明隧道MTU的发现处理装置还一个实施例的结构示意图,该实施例的隧道MTU的发现处理装置可用于实现本发明图3与图4所示实施例的流程。请参见图9,与本发明上述实施例的隧道MTU的发现处理装置相比,该实施例的隧道MTU的发现处理装置还包括状态机507,用于进行状态指示,该状态包括初始状态、学习状态与保持状态,以及根据第一预设条件更新第一统计值,根据第二预设条件更新第二统计值,以及统计生成第一探测报文的次数。
相应的,生成模块505具体在状态机507处于初始状态并且第一次生成第一探测报文时,生成长度为较大MTU值或物理接口MTU值的第一探测报文;在状态机507处于初始状态但不是第一次生成第一探测报文时,选取该隧道MTU值与物理接口MTU值的较小MTU值,并生成长度为该较小MTU值的第一探测报文。
相应的,发送模块501具体在状态机507处于初始状态下,向接收方路由器发送第一探测报文,还用于在向接收方路由器发送第一探测报文后,将状态机507的状态更新为学习状态,并更新状态机507上发送第一探测报文的次数;在状态机507的状态处于学习状态下时,向接收方路由器发送第二探测报文,并在向接收方路由器发送第二探测报文之后,根据第一预设条件更新状态机507上的第一统计值;在状态机507的状态处于保持状态下时,向接收方路由器发送第三探测报文;并在向接收方路由器发送第三探测报文之后,根据第二预设条件更新状态机507上的第二统计值。
相应的,接收模块502还用于根据状态机507上的第一统计值,在第一预设条件下未接收到针对第二探测报文返回的目标不可达报文时,清空第一统计值,并且将状态机507的状态更新为保持状态;在接收到针对第二探测报文返回的目标不可达报文时,清空第一统计值;根据状态机507上的第二统计值,在第二预设条件下未接收到针对第三探测报文返回的目标不可达报文时,清空第二统计值,并且将状态机507的状态更新为初始状态,以便发送模块501在初始状态下向接收方路由器发送第一探测报文;接收到针对第三探测报文返回的目标不可达报文时,空第二统计值,并且状态机507的状态更新为学习状态,以便学习模块504在学习状态下根据该目标不可达报文中接收方路由器的MTU值学习路径MTU值。
相应的,学习模块504具体在状态机507处于学习状态下时,根据目标不可达报文中接收方路由器的MTU值学习路径MTU。
本发明实施例还提供了一种路由器,其可以包括本发明上述实施例图5至图9任意一个实施例提供的隧道MTU的发现处理装置。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
本发明实施例学习到路径MTU以后,可以向接收方路由器发送长度为学习到的路径MTU值的第二探测报文,该第二探测报文中携带有DF位,并在第一预设条件下未接收到针对第二探测报文返回的目标不可达报文时,重新向接收方路由器发送第一探测报文,以重新学习路径MTU,动态获取隧道内的路径MTU,实现路径MTU的老化,从而正确决定是否需要对报文进行分片发送,避免按照较小MTU值对报文分片造成的网络资源浪费、系统工作性能下降与数据传输效率降低的问题,以及避免按照较大MTU值发送报文造成报文的丢失与通信业务的中断的问题,在保证报文正常发送的情况下实现网络资源的高效利用,提高系统工作性能与数据传输效率。另外,本发明实施例中学习路径MTU时,采用的是专用的探测报文而非正常通信业务的报文,因此与通信业务过程独立,不会影响通信业务的正常进行。
最后所应说明的是:以上实施例仅用以说明本发明的技术方案,而非对本发明作限制性理解。尽管参照上述较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解:其依然可以对本发明的技术方案进行修改或者等同替换,而这种修改或者等同替换并不脱离本发明技术方案的精神和范围。

Claims (15)

1.一种隧道最大传输单元的发现处理方法,其特征在于,包括:
向接收方路由器发送第一探测报文,该第一探测报文中携带有禁止分片DF位;
接收到针对第一探测报文返回的目标不可达报文时,根据该目标不可达报文中接收方路由器的最大传输单元MTU值学习路径MTU,向所述接收方路由器发送第二探测报文,所述第二探测报文中携带有DF位,所述第二探测报文的长度为学习到的路径MTU值;
在第一预设条件下未接收到针对第二探测报文返回的目标不可达报文时,执行所述向接收方路由器发送第一探测报文的操作。
2.根据权利要求1所述的方法,其特征在于,所述在第一预设条件下未接收到针对第二探测报文返回的目标不可达报文具体为:
针对连续M次向所述接收方路由器发送的第二探测报文,或者在第一预设时间内连续向所述接收方路由器发送的第二探测报文,均未接收到所述接收方路由器返回的目标不可达报文,其中,M为大于1的整数。
3.根据权利要求1所述的方法,其特征在于,还包括:
接收到针对第二探测报文返回的目标不可达报文时,执行所述根据该目标不可达报文中接收方路由器的MTU值学习路径MTU,向所述接收方路由器发送第二探测报文的操作。
4.根据权利要求1至3任意一项所述的方法,其特征在于,在第一预设条件下未接收到针对第二探测报文返回的目标不可达报文时,执行所述向接收方路由器发送第一探测报文的操作包括:
在第一预设条件下未接收到针对第二探测报文返回的目标不可达报文时,以学习到的路径MTU值与N值之和,作为第三探测报文的长度,向接收方路由器发送第三探测报文,所述第三探测报文中携带有DF位,N为大于零的整数;
接收到针对第三探测报文返回的目标不可达报文时,根据该目标不可达报文中接收方路由器的MTU值学习路径MTU;
在第二预设条件下未接收到针对第三探测报文返回的目标不可达报文时,执行所述向接收方路由器发送第一探测报文的操作。
5.根据权利要求4所述的方法,其特征在于,在第二预设条件下未接收到针对第三探测报文返回的目标不可达报文具体为:
针对连续L次向所述接收方路由器发送的第三探测报文,或者在第二预设时间内连续向所述接收方路由器发送的第三探测报文,均未接收到所述接收方路由器返回的目标不可达报文,其中,L为大于1的整数。
6.根据权利要求5所述的方法,其特征在于,所述向接收方路由器发送第一探测报文之前,还包括:
从所述发送方路由器隧道边缘接口配置的目的地址对应的路由信息中获取所述发送方路由器上的隧道MTU值与物理接口MTU值,选取该隧道MTU值与物理接口MTU值的较大MTU值,生成长度为该较大MTU值的所述第一探测报文;或者
从所述发送方路由器隧道边缘接口配置的目的地址对应的路由信息中获取所述发送方路由器上的物理接口MTU值,生成长度为该物理接口MTU值的所述第一探测报文。
7.根据权利要求6所述的方法,其特征在于,接收到目标不可达报文时,还包括:
获取该目标不可达报文中接收方路由器的MTU值,并比较该接收方路由器的MTU值是否小于预设最小MTU值,并在该接收方路由器的MTU值不小于预设最小MTU值时,执行所述学习路径MTU的操作。
8.根据权利要求6所述的方法,其特征在于,在状态机处于初始状态并且第一次生成第一探测报文时,执行从所述发送方路由器隧道边缘接口配置的目的地址对应的路由信息中获取所述发送方路由器上的隧道MTU值与物理接口MTU值的操作,或者执行从所述发送方路由器隧道边缘接口配置的目的地址对应的路由信息中获取所述发送方路由器上的物理接口MTU值的操作;
在状态机处于初始状态但不是第一次生成第一探测报文时,从所述发送方路由器隧道边缘接口配置的目的地址对应的路由信息中获取所述发送方路由器上的隧道MTU值与物理接口MTU值,选取该隧道MTU值与物理接口MTU值的较小MTU值,生成长度为该较小MTU值的所述第一探测报文;
向接收方路由器发送第一探测报文后,还包括:将所述状态机的状态更新为学习状态,并更新所述状态机上发送第一探测报文的次数;
向所述接收方路由器发送第二探测报文具体为:在所述状态机的状态处于学习状态下时,向所述接收方路由器发送第二探测报文;
向所述接收方路由器发送第二探测报文之后,还包括:根据第一预设条件更新所述状态机上的第一统计值,并在第一预设条件下未接收到针对第二探测报文返回的目标不可达报文时,清空所述第一统计值,并且将所述状态机的状态更新为保持状态;
接收到针对第二探测报文返回的目标不可达报文时,清空所述第一统计值,在学习状态下根据该目标不可达报文中接收方路由器的MTU值学习路径MTU;
向接收方路由器发送第三探测报文具体为:在所述状态机的状态处于保持状态下时,向所述接收方路由器发送第三探测报文;
向所述接收方路由器发送第三探测报文之后,还包括:根据第二预设条件更新所述状态机上的第二统计值,并在第二预设条件下未接收到针对第三探测报文返回的目标不可达报文时,清空所述第二统计值,并且将所述状态机的状态更新为初始状态,在初始状态下执行所述向接收方路由器发送第一探测报文的操作;
接收到针对第三探测报文返回的目标不可达报文时,清空所述第二统计值,并且所述状态机的状态更新为学习状态,在学习状态下根据该目标不可达报文中接收方路由器的MTU值学习路径MTU。
9.一种隧道最大传输单元的发现处理装置,其特征在于,包括:
发送模块,用于向接收方路由器发送第一探测报文与第二探测报文,所述第一探测报文与所述第二探测报文中携带有DF位;
接收模块,用于接收所述接收方路由器返回的目标不可达报文;
检测模块,用于检测所述接收模块是否接收到所述接收方路由器针对第一探测报文返回的目标不可达报文,以及检测所述接收模块在所述发送模块发送第二探测报文后的第一预设条件下,是否接收到针对第二探测报文返回的目标不可达报文,并在第一预设条件下未接收到针对第二探测报文返回的目标不可达报文时,触发所述发送模块向接收方路由器发送第一探测报文;
学习模块,用于根据所述检测模块的检测结果,在所述接收模块接收到针对第一探测报文返回的目标不可达报文时,根据该目标不可达报文中接收方路由器的MTU值,学习路径MTU,并触发所述发送模块向所述接收方路由器发送第二探测报文,所述第二探测报文的长度为学习到的路径MTU值。
10.根据权利要求9所述的装置,其特征在于,所述学习模块还用于根据所述检测模块的检测结果,在所述接收模块接收到针对第二探测报文返回的目标不可达报文时,根据该目标不可达报文中接收方路由器的MTU值学习路径MTU,并触发所述发送模块向所述接收方路由器发送第二探测报文。
11.根据权利要求10所述的装置,其特征在于,所述检测模块包括:
检测单元,用于检测所述接收模块是否接收到所述接收方路由器针对第一探测报文返回的目标不可达报文,检测所述接收模块在所述发送模块发送第二探测报文后的第一预设条件下,是否接收到针对第二探测报文返回的目标不可达报文,以及检测所述接收模块在所述发送模块发送第三探测报文后的第二预设条件下,是否接收到针对第三探测报文返回的目标不可达报文;
触发单元,用于根据所述检测单元的检测结果,若所述接收模块在第一预设条件下未接收到针对第二探测报文返回的目标不可达报文时,以所述学习模块学习到的路径MTU值与N值之和,作为第三探测报文的长度,触发所述发送模块向接收方路由器发送第三探测报文,所述第三探测报文中携带有DF位,N为大于零的整数;所述接收模块在第二预设条件下接收到针对第三探测报文返回的目标不可达报文时,触发所述学习模块根据该目标不可达报文中接收方路由器的MTU值学习路径MTU;所述接收模块在第二预设条件下未接收到针对第三探测报文返回的目标不可达报文时,触发所述发送模块向接收方路由器发送第一探测报文。
12.根据权利要求9、10或11所述的装置,其特征在于,还包括:
生成模块,用于从所述发送方路由器隧道边缘接口配置的目的地址对应的路由信息中获取所述发送方路由器上的隧道MTU值与物理接口MTU值,选取所述隧道MTU值与所述物理接口MTU值的较大MTU值,并生成长度为所述较大MTU值的所述第一探测报文,或者生成长度为所述物理接口MTU值的所述第一探测报文;
所述发送模块用于向接收方路由器发送所述生成模块生成的第一探测报文。
13.根据权利要求12所述的装置,其特征在于,还包括:
比较模块,用于根据所述检测模块的检测结果,在所述接收模块接收到目标不可达报文时,从所述目标不可达报文中获取接收方路由器的MTU值,并比较该接收方路由器的MTU值是否小于预设最小MTU值;
所述学习模块具体根据所述比较模块的比较结果,在所述接收方路由器的MTU值不小于预设最小MTU值时,学习路径MTU。
14.根据权利要求13所述的装置,其特征在于,还包括:
状态机,用于进行状态指示,所述状态包括初始状态、学习状态与保持状态,根据第一预设条件更新第一统计值,根据第二预设条件更新第二统计值,以及统计生成第一探测报文的次数;
所述生成模块具体在状态机处于初始状态并且第一次生成第一探测报文时,生成长度为所述较大MTU值或所述物理接口MTU值的所述第一探测报文;在状态机处于初始状态但不是第一次生成第一探测报文时,选取该隧道MTU值与物理接口MTU值的较小MTU值,并生成长度为该较小MTU值的所述第一探测报文;
所述发送模块具体在所述状态机处于初始状态下向接收方路由器发送第一探测报文,还用于在向接收方路由器发送第一探测报文后,将所述状态机的状态更新为学习状态,并更新所述状态机上发送第一探测报文的次数;在所述状态机的状态处于学习状态下时,向所述接收方路由器发送第二探测报文,并在向所述接收方路由器发送第二探测报文之后,根据第一预设条件更新所述状态机上的第一统计值;在所述状态机的状态处于保持状态下时,向所述接收方路由器发送第三探测报文;并在向所述接收方路由器发送第三探测报文之后,根据第二预设条件更新所述状态机上的第二统计值;
所述接收模块还用于根据所述状态机上的第一统计值,在第一预设条件下未接收到针对第二探测报文返回的目标不可达报文时,清空所述第一统计值,并且将所述状态机的状态更新为保持状态;在接收到针对第二探测报文返回的目标不可达报文时,清空所述第一统计值;根据所述状态机上的第二统计值,在第二预设条件下未接收到针对第三探测报文返回的目标不可达报文时,清空所述第二统计值,并且将所述状态机的状态更新为初始状态,以便所述发送模块在初始状态下向接收方路由器发送第一探测报文;接收到针对第三探测报文返回的目标不可达报文时,清空所述第二统计值,并且所述状态机的状态更新为学习状态,以便所述学习模块在学习状态下根据该目标不可达报文中接收方路由器的MTU值学习路径MTU值;
所述学习模块具体在所述状态机处于学习状态下根据目标不可达报文中接收方路由器的MTU值学习路径MTU。
15.一种路由器,其特征在于,包括权利要求9至14任意一项所述的隧道最大传输单元的发现处理装置。
CN200910208811XA 2009-10-29 2009-10-29 隧道最大传输单元的发现处理方法与装置、路由器 Expired - Fee Related CN101695048B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN200910208811XA CN101695048B (zh) 2009-10-29 2009-10-29 隧道最大传输单元的发现处理方法与装置、路由器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200910208811XA CN101695048B (zh) 2009-10-29 2009-10-29 隧道最大传输单元的发现处理方法与装置、路由器

Publications (2)

Publication Number Publication Date
CN101695048A true CN101695048A (zh) 2010-04-14
CN101695048B CN101695048B (zh) 2012-05-30

Family

ID=42093990

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200910208811XA Expired - Fee Related CN101695048B (zh) 2009-10-29 2009-10-29 隧道最大传输单元的发现处理方法与装置、路由器

Country Status (1)

Country Link
CN (1) CN101695048B (zh)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102088410A (zh) * 2011-01-25 2011-06-08 中国人民解放军国防科学技术大学 一种报文分片方法及系统
CN103368841A (zh) * 2012-03-29 2013-10-23 深圳市腾讯计算机系统有限公司 报文转发方法和装置
CN103475596A (zh) * 2013-08-30 2013-12-25 广州市动景计算机科技有限公司 基于mtu值的中间件与移动终端的数据传输方法及系统
CN105792154A (zh) * 2016-05-16 2016-07-20 青岛海信移动通信技术股份有限公司 一种多媒体短信传输的方法和装置
CN106330706A (zh) * 2015-07-01 2017-01-11 中兴通讯股份有限公司 一种获取设备接口mru值的方法和装置
CN106411677A (zh) * 2016-09-06 2017-02-15 杭州迪普科技有限公司 一种确定vpn数据通道的最优mtu的方法和装置
CN106559288A (zh) * 2016-11-23 2017-04-05 北京航天自动控制研究所 一种基于icmp报文的快速故障检测方法
WO2017206460A1 (zh) * 2016-05-31 2017-12-07 中兴通讯股份有限公司 最大传输单元值的设置方法及装置、设备
CN110995583A (zh) * 2019-09-12 2020-04-10 华为技术有限公司 路径探测方法、装置及计算机存储介质
CN111654354A (zh) * 2020-05-28 2020-09-11 北京小米移动软件有限公司 最大传输单元mtu的探测方法、装置及存储介质
CN112688879A (zh) * 2020-12-29 2021-04-20 联想未来通信科技(重庆)有限公司 一种数据限值确定方法及装置
CN112787905A (zh) * 2020-12-25 2021-05-11 北京中科网威信息技术有限公司 Mtu确定方法及系统、电子设备及存储介质
US11070483B2 (en) 2019-02-11 2021-07-20 Cisco Technology, Inc. Discovering and mitigating MTU/fragmentation issues in a computer network

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100486241C (zh) * 2004-06-28 2009-05-06 杭州华三通信技术有限公司 获取隧道网关环境中路径最大传输长度的方法及系统
CN100505673C (zh) * 2006-09-15 2009-06-24 华为数字技术有限公司 检测路径最大传输单元的方法和系统

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102088410A (zh) * 2011-01-25 2011-06-08 中国人民解放军国防科学技术大学 一种报文分片方法及系统
CN103368841A (zh) * 2012-03-29 2013-10-23 深圳市腾讯计算机系统有限公司 报文转发方法和装置
CN103368841B (zh) * 2012-03-29 2016-08-17 深圳市腾讯计算机系统有限公司 报文转发方法和装置
CN103475596A (zh) * 2013-08-30 2013-12-25 广州市动景计算机科技有限公司 基于mtu值的中间件与移动终端的数据传输方法及系统
CN103475596B (zh) * 2013-08-30 2016-08-17 广州市动景计算机科技有限公司 基于mtu值的中间件与移动终端的数据传输方法及系统
CN106330706A (zh) * 2015-07-01 2017-01-11 中兴通讯股份有限公司 一种获取设备接口mru值的方法和装置
CN105792154B (zh) * 2016-05-16 2019-08-20 青岛海信移动通信技术股份有限公司 一种多媒体短信传输的方法和装置
CN105792154A (zh) * 2016-05-16 2016-07-20 青岛海信移动通信技术股份有限公司 一种多媒体短信传输的方法和装置
WO2017206460A1 (zh) * 2016-05-31 2017-12-07 中兴通讯股份有限公司 最大传输单元值的设置方法及装置、设备
CN106411677A (zh) * 2016-09-06 2017-02-15 杭州迪普科技有限公司 一种确定vpn数据通道的最优mtu的方法和装置
CN106559288A (zh) * 2016-11-23 2017-04-05 北京航天自动控制研究所 一种基于icmp报文的快速故障检测方法
CN106559288B (zh) * 2016-11-23 2019-11-12 北京航天自动控制研究所 一种基于icmp报文的快速故障检测方法
US11070483B2 (en) 2019-02-11 2021-07-20 Cisco Technology, Inc. Discovering and mitigating MTU/fragmentation issues in a computer network
CN110995583A (zh) * 2019-09-12 2020-04-10 华为技术有限公司 路径探测方法、装置及计算机存储介质
CN111654354A (zh) * 2020-05-28 2020-09-11 北京小米移动软件有限公司 最大传输单元mtu的探测方法、装置及存储介质
CN111654354B (zh) * 2020-05-28 2023-08-08 北京小米移动软件有限公司 最大传输单元mtu的探测方法、装置及存储介质
CN112787905A (zh) * 2020-12-25 2021-05-11 北京中科网威信息技术有限公司 Mtu确定方法及系统、电子设备及存储介质
CN112688879A (zh) * 2020-12-29 2021-04-20 联想未来通信科技(重庆)有限公司 一种数据限值确定方法及装置
CN112688879B (zh) * 2020-12-29 2023-08-22 联想未来通信科技(重庆)有限公司 一种数据限值确定方法及装置

Also Published As

Publication number Publication date
CN101695048B (zh) 2012-05-30

Similar Documents

Publication Publication Date Title
CN101695048B (zh) 隧道最大传输单元的发现处理方法与装置、路由器
US9130863B2 (en) Managing host routes for local computer networks with a plurality of field area routers
EP3780517B1 (en) Method and apparatus for processing multicast data packet
CN111682927B (zh) 一种基于mlag环境的报文同步方法、装置、设备及介质
EP3574617B1 (en) Method and apparatus for managing routing disruptions in a computer network
US10862800B2 (en) Method and system for managing network communications
KR102074916B1 (ko) Rpl 기반 분산 mqtt 브로커 구조
US20070091897A1 (en) Method of performing tunnel signaling over IP tunneling path and apparatus using the method
US20180241695A1 (en) Direct replying actions in sdn switches
EP1938510A1 (en) Method and apparatus of performing tunnel signaling over ip tunneling path
CN104821923A (zh) Sdn网络中发送上送控制器协议报文的方法和装置
CN110024329B (zh) 业务功能链和覆盖传输环路预防
CN104038427A (zh) 路由更新方法和路由更新装置
CN107547690A (zh) Nat中的端口分配方法、装置、nat设备及存储介质
US8923303B2 (en) Method, system and installation for forwarding data transmission frames
CN115914164A (zh) 一种隧道连接方法、装置、电子设备和存储介质
CN108494679A (zh) 一种基于Linux系统实现路由器的SSH报文转发方法和装置
CN108881027A (zh) 一种基于Linux系统实现路由器的radius报文转发方法和装置
CN108768851A (zh) 一种基于Linux系统实现的路由器环回口方法和装置
US20210014166A1 (en) Data traffic processing method, device, and system
CN111464443B (zh) 基于服务功能链的报文转发方法、装置、设备及存储介质
CN113765865A (zh) 一种报文处理方法、设备及系统
CN108881026A (zh) 一种基于Linux系统实现路由器的BGP报文转发方法和装置
CN104702505A (zh) 一种报文传输方法和节点
Fu et al. TCP Veno revisited

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20120530

Termination date: 20141029

EXPY Termination of patent right or utility model