CN102325076B - 一种路径最大传输单元发现方法和节点 - Google Patents

一种路径最大传输单元发现方法和节点 Download PDF

Info

Publication number
CN102325076B
CN102325076B CN201110136938.2A CN201110136938A CN102325076B CN 102325076 B CN102325076 B CN 102325076B CN 201110136938 A CN201110136938 A CN 201110136938A CN 102325076 B CN102325076 B CN 102325076B
Authority
CN
China
Prior art keywords
pmtu
message
routes
mtu
mtu value
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.)
Active
Application number
CN201110136938.2A
Other languages
English (en)
Other versions
CN102325076A (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.)
ZTE Corp
Original Assignee
ZTE Corp
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 ZTE Corp filed Critical ZTE Corp
Priority to CN201110136938.2A priority Critical patent/CN102325076B/zh
Publication of CN102325076A publication Critical patent/CN102325076A/zh
Priority to PCT/CN2012/072519 priority patent/WO2012159481A1/zh
Application granted granted Critical
Publication of CN102325076B publication Critical patent/CN102325076B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/36Flow control; Congestion control by determining packet size, e.g. maximum transfer unit [MTU]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明提供一种PMTU发现方法,源节点为待发送报文查找是否存在对应的PMTU路由,如果不存在或者查找到的PMTU路由的MTU值无效,则建立或更新PMTU路由的MTU值为指定值,该指定值不大于系统最小的MTU,以该指定值对所述待发送报文进行分片处理,发送携带PMTU探测指示的报文;各中间节点接收到携带PMTU探测指示的报文时,转发报文,发送包过大报文至源节点,携带出接口的MTU;源节点接收各中间节点返回的包过大报文,根据其中携带的MTU值确定对应的PMTU路由的MTU值。本发明还提供一种节点。本发明解决了PMTU学习过程中数据报文丢包问题,减少了PMTU学习过程中的报文交互数量。

Description

一种路径最大传输单元发现方法和节点
技术领域
本发明涉及数据通信领域,特别涉及IPV6协议中路径最大传输单元(PathMaximum Transmission Unit,PMTU)发现方法和节点。
背景技术
随着IPv4地址的日益枯竭,IPv6网络的大量部署逐渐被提上日程,和IPv4协议栈相比,IPv6协议栈一个重要的进步就是支持路径最大传输单元(Path MaximumTransmission Unit,PMTU),也就是IPV6数据包从源端发出时,数据包的长度必须小于整个路径的最大传输单元(Maximum Transmission Unit,MTU),这样报文经过中间节点的时就不用分片,提高了网络设备的报文转发效率。PMTU的实现原理如图1所示,报文从源节点发出时,按照路由的MTU分片(路由默认MTU值就是出接口的MTU),在中间节点转发时,如果发现出接口MTU比报文长度小,则丢弃报文,并向源节点发送一个包过大的互联网控制报文协议第6版(Internet Control Message Protocol Version 6,ICMPv6)差错报文,携带出接口的MTU值。源节点收到包过大报文后,如果不存在一条目的地址的主机路由,用发包的目的地址创建一条主机路由,路由的MTU值就是报文中携带的MTU值;如果存在这样一条目的地址的主机路由,比较一下MTU值,若MTU值变小,就直接修改路由的MTU值。经过几轮交互,就可以学习到整个路径的最小MTU,即PMTU,下一次再发报文时,就会根据PMTU进行分片,保证中间节点不分片。
目前IPv6协议栈PMTU功能的实现,一次发现可能需要经过多次报文交互才能完成,在有n个节点时,极限情况从第一个节点发一个报文到第n个节点,需要交互2*(n-2)个报文才能完成一次PMTU学习,其实就是中间节点都需要收到一个转发报文,回一个包过大的ICMPv6报文。这样当中间节点比较多时,一次学习时间就比较长,并且请求注解(RequestFor Comments,RFC)规定一次学习到的PMTU信息,有效时间只有10分钟,10分钟以后就会删除,以后再发包,又需要重新学习,又会出现一段时间内报文因为MTU问题转发丢包。所以目前的PMTU学习机制,在网络MTU逐跳递减的情况下,PMTU的学习收敛慢,并且在分布式设备上,整机PMTU收敛更慢(因为此时板间通信也多),这些问题给系统带来了额外的开销,浪费了系统的带宽。
同时网络中还有一种针对PMTU学习的攻击,通过伪造包过大报文,导致学习的PMTU错误,引起网络性能下降或者拒绝服务攻击。
发明内容
本发明提供一种路径最大传输单元发现方法和节点,改进目前IPV6协议中PMTU发现效率低下、带宽浪费以及容易被攻击的问题。
为了解决上述问题,本发明提供了一种路径最大传输单元发现方法,包括:
源节点为待发送报文查找是否存在对应的路径最大传输单元(PMTU)路由,如果不存在或者查找到的PMTU路由的最大传输单元(MTU)值无效,则建立或更新PMTU路由的MTU值为指定值,该指定值不大于系统最小的最大传输单元,以该指定值对所述待发送报文进行分片处理,发送携带PMTU探测指示的报文;
各中间节点接收到携带所述PMTU探测指示的报文时,转发所述报文,发送包过大报文至所述源节点,所述包过大报文中携带所述中间节点上查到的出接口的MTU;
源节点接收各中间节点返回的包过大报文,根据所述包过大报文中携带的MTU值确定对应的PMTU路由的MTU值。
进一步的,所述方法还包括,
判断所述待发送报文的长度是否小于该指定值,如果是,直接发送所述待发送报文;以及,所述源节点为所述待发送报文查找到对应的PMTU路由且该PMTU路由的MTU值有效,且所述待发送报文的长度小于所述PMTU路由的MTU值时,直接发送所述待发送报文。
进一步的,所述报文中通过如下方式携带PMTU探测指示:
在所述报文中携带逐跳选项头,该逐跳选项头中携带一选项,该选项携带PMTU探测指示,所述选项为路由告警(route alert)选项或新增选项。
进一步的,上述方法还可具有以下特点,
所述源节点未查找到对应的PMTU路由或者查找到的PMTU路由的MTU值无效时,还建立或更新与所述PMTU路由对应的PMTU缓存条目,设置该PMTU缓存条目的MTU值为所述源节点查到的出接口的MTU;
所述源节点根据所述包过大报文中携带的MTU值确定对应的PMTU路由的MTU值包括:
所述源节点接收到所述中间节点返回的包过大报文后,取出该包过大报文中的MTU值并查找对应的PMTU缓存条目,如果所述取出的MTU值小于所述PMTU缓存条目中的MTU值,则用所述取出的MTU值替换所述PMTU缓存条目中的MTU值,否则不处理;
所述源节点在处理完所有中间节点返回的包过大报文后,使用该PMTU缓存条目的MTU值更新对应的PMTU路由的MTU值,完成该PMTU路由的MTU值发现。
进一步的,上述方法还可具有以下特点,
所述源节点接收所述包过大报文后,如果未查找到对应的PMTU缓存条目,则丢弃该包过大报文。
进一步的,上述方法还可具有以下特点,
设定学习时间、有效时间和老化时间;
所述源节点发送携带PMTU探测指示的报文后,将对应的PMTU缓存条目设置为学习状态;
如果从学习状态开始的所述学习时间内,所述源节点完成该PMTU路由的MTU值发现,则将所述PMTU缓存条目的状态设置为有效状态,否则,将所述PMTU缓存条目的状态设置为老化状态;
从所述有效状态开始超过所述有效时间时,将所述PMTU缓存条目设置为老化状态;
从所述老化状态开始超过所述老化时间时,删除所述PMTU缓存条目和PMTU路由。
进一步的,上述方法还可具有以下特点,
所述源节点为待发送报文查找到对应的PMTU路由且该PMTU路由的MTU值有效,且所述待发送报文的长度大于等于所述PMTU路由的MTU值:
当所述PMTU路由对应的PMTU缓存条目为老化状态时,以所述PMTU路由的MTU值对报文进行分片处理,发送携带PMTU探测指示的报文,将对应的PMTU缓存条目设置为学习状态;
当所述PMTU路由对应的PMTU缓存条目为学习状态或有效状态时,以所述PMTU路由的MTU值对报文进行分片处理,发送报文。
本发明还提供一种节点,包括报文发送单元和报文接收单元,其中:
所述报文发送单元用于:在所述节点作为源节点时,为待发送报文查找是否存在对应的PMTU路由,如果不存在或者查找到的PMTU路由的MTU值无效,则建立或更新PMTU路由的MTU值为指定值,所述指定值不大于系统最小的最大传输单元,以所述指定值对报文进行分片处理,发送携带PMTU探测指示的报文;
所述报文接收单元用于:接收到各中间节点返回的包过大报文时,根据所述包过大报文中携带的MTU值确定对应的PMTU路由的MTU值。
进一步的,上述节点还可具有以下特点,
所述报文发送单元还用于:判断所述待发送报文的长度是否小于所述指定值,如果是,直接发送所述待发送报文;以及,在所述节点作为源节点时,当为待发送报文查找到对应的PMTU路由且该PMTU路由的MTU值有效,且所述待发送报文的长度小于所述PMTU路由的MTU值时,直接发送所述待发送报文。
进一步的,上述节点还可具有以下特点,
所述报文发送单元是用于通过如下方式携带所述PMTU探测指示:在所述报文中携带逐跳选项头,该逐跳选项头中携带一选项,该选项携带PMTU探测指示,所述选项为路由告警(route alert)选项或新增选项。
进一步的,上述节点还可具有以下特点,
所述报文发送单元还用于:未查找到对应的PMTU路由或者查找到的PMTU路由的MTU值无效时,建立或更新与所述PMTU路由对应的PMTU缓存条目,设置该PMTU缓存条目的MTU值为所述源节点查到的出接口的MTU;
所述报文接收单元是用于根据如下方式确定对应的PMTU路由的MTU值:
接收到所述中间节点返回的包过大报文后,取出该包过大报文中的MTU值并查找对应的PMTU缓存条目,如果所述取出的MTU值小于所述PMTU缓存条目中的MTU值,则用所述取出的MTU值替换所述PMTU缓存条目中的MTU值,否则不处理;
在处理完所有中间节点返回的包过大报文后,使用该PMTU缓存条目的MTU值更新对应的PMTU路由的MTU值,完成该PMTU路由的MTU值发现。
进一步的,上述节点还可具有以下特点,
所述报文接收单元接收所述包过大报文后,如果未查找到对应的PMTU缓存条目,则丢弃该包过大报文。
进一步的,上述节点还可具有以下特点,
所述报文发送单元还用于:设定学习时间、有效时间和老化时间;
发送携带PMTU探测指示的报文后,将对应的PMTU缓存条目设置为学习状态;
如果从学习状态开始的所述学习时间内,完成该PMTU路由的MTU值发现,则将所述PMTU缓存条目的状态设置为有效状态,否则,将所述PMTU缓存条目的状态设置为老化状态;
从所述有效状态开始超出所述有效时间时,将所述PMTU缓存条目设置为老化状态;
从所述老化状态开始超出所述老化时间时,删除所述PMTU缓存条目和PMTU路由;
当所述节点为源节点,为待发送报文查找到对应的PMTU路由且该PMTU路由的MTU值有效,且所述待发送报文的长度大于等于所述PMTU路由的MTU值:
当所述PMTU路由对应的PMTU缓存条目为老化状态时,以所述PMTU路由的MTU值对报文进行分片处理,发送携带PMTU探测指示的报文,将对应的PMTU缓存条目设置为学习状态;
当所述PMTU路由对应的PMTU缓存条目为学习状态或有效状态时,以所述PMTU路由的MTU值对报文进行分片处理,发送报文。
进一步的,上述节点还可具有以下特点,
所述节点还包括转发处理单元,所述转发处理单元用于:接收到携带PMTU探测指示的报文时,当该节点不是该报文的目的节点时,转发所述报文,发送包过大报文至该报文的源节点,所述包过大报文中携带该节点上查到的出接口的MTU。
本发明进行PMTU发现,解决了PMTU学习过程中数据报文丢包问题,减少了PMTU学习过程中的报文交互数量以及PMTU老化后再学习丢包问题,同时还解决了PMTU学习过程中的安全问题,提高了PMTU学习的效率和可靠性。
附图说明
图1是现有IPv6路径MTU发现原理图;
图2是逐跳头选项格式示意图;
图3是route alert选项格式示意图;
图4是本发明定义的一种选项格式示意图;
图5是PMTU缓存条目状态切换图;
图6是本发明PMTU发现示意图;
图7是源节点发包处理流程图;
图8是源节点收包处理流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
本发明的核心思想是:源节点以不大于系统最小的最大传输单元的指定值发送报文,且报文中携带PMTU探测指示,中间节点收到携带PMTU探测指示的报文时,转发报文,并且反馈包过大报文至源节点,包过大报文中携带中间节点出接口的MTU,源节点根据包过大报文中的MTU确定PMTU路由的MTU值。
本发明提供一种路径最大传输单元发现方法,包括:
源节点为待发送报文查找是否存在对应的PMTU路由,如果不存在或者查找到的PMTU路由的MTU值无效,则建立或更新PMTU路由的MTU值为指定值,该指定值不大于系统最小的最大传输单元,以指定值对报文进行分片处理,发送携带PMTU探测指示的报文;
各中间节点接收到携带所述PMTU探测指示的报文时,转发所述报文,发送包过大报文至所述源节点,所述包过大报文中携带所述中间节点上查到的出接口的MTU;
源节点接收各中间节点返回的包过大报文,根据所述包过大报文中携带的MTU值确定对应的PMTU路由的MTU值。
其中,所述源节点为待发送报文查找到对应的PMTU路由且该PMTU路由的MTU值有效,且所述待发送报文的长度小于所述PMTU路由的MTU值时,直接发送所述待发送报文;另外,如果查找不到对应的PMTU路由或者查找到的PMTU路由的MTU值无效,且待发送报文的长度小于该指定值时,直接发送所述待发送报文。这样可以避免小报文时触发PMTU学习,减少浪费系统的路由和PMTU存储空间。
其中,通过如下方式携带PMTU探测指示:在所述报文中携带逐跳选项头,该逐跳选项头中携带一选项,该选项携带PMTU探测指示,所述选项为路由告警(route alert)选项或新增选项。发送的报文包括如下信息:基本报文头、包含PMTU探测指示的逐跳选项头,以及要发送的分片报文。
在IPv6基础协议栈中,定义了一种逐跳选项报文头,这种选项格式如附图2所示,其主要功能就是要求报文传输过程中的每一个节点都要进行检查。逐跳选项报文又可以携带一个或者多个TLV(Type-Length-Value,类型-长度-数据)编码的选项,其中很重要的一种选项是route alert选项,这个route alert选项就是要求对经过路由器,但是目的地址不是该路由器的报文进行检查处理,其格式如附图3所示,2个字节的数据(网络序),目前定义如下:
0表示报文是一个MLD(多播侦听者发现协议)报文
1表示报文是一个RSVP(资源预定协议)报文
2表示报文是一个活动网络协议报文
3-65535保留待分配
本发明中新定义一个route alert数据,使用3-65535中任一个,比如8,作为PMTU探测指示,指示报文为PMTU探测报文。
还可以使用新增的选项来携带PMTU探测指示,比如可以定义一个和route alert并列的选项,该选项也属于逐跳选项报文的选项,选项格式也是TLV方式,如图4所示,类型可以从目前保留的里面选一个,比如8等。
其中,所述源节点未查找到对应的PMTU路由或者查找到的PMTU路由的MTU值无效时,还建立或更新与所述PMTU路由对应的PMTU缓存条目,设置该PMTU缓存条目的MTU值为所述源节点查到的出接口的MTU;
所述源节点根据所述包过大报文中携带的MTU值确定对应的PMTU路由的MTU值包括:
所述源节点接收到所述中间节点返回的包过大报文后,取出该包过大报文中的MTU值并查找对应的PMTU缓存条目,如果所述取出的MTU值小于所述PMTU缓存条目中的MTU值,则用所述取出的MTU值替换所述PMTU缓存条目中的MTU值,否则不处理;
所述源节点在处理完所有中间节点的后,使用该PMTU缓存条目的MTU值更新对应的PMTU路由的MTU值,完成该PMTU路由的MTU值发现。
其中,源节点在接收到目的节点的反馈报文时,判断已对所有中间节点返回的包过大报文进行处理。其中,目的节点的反馈报文可以是包过大报文,也可以是其他指示报文,指示探测到达终端。其中,如果是包过大报文,可以在该报文中携带指示消息,通知源节点PMTU探测到达终点;也可以携带一指定的MTU值,比如0,表明该包过大报文是目的节点返回的,当然,MTU值也可以是任意值,源节点通过目的节点返回的报文中的源地址和该源节点探测的目的地址相同判断PMTU探测到达终点。
其中,所述源节点接收所述包过大报文后,如果未查找到对应的PMTU缓存条目,则丢弃该包过大报文。该方法可以防范非法报文攻击。因为本发明的PMTU缓存条目先于PMTU探测报文产生,如果是合法报文,根据返回的包过大报文一定可以找到PMTU缓存条目。找不到则可以认为是非法报文。
其中,还为PMTU缓存条目设定学习时间、有效时间和老化时间;
所述源节点发送携带PMTU探测指示的报文后,将对应的PMTU缓存条目设置为学习状态;
如果从学习状态开始的所述学习时间内,所述源节点完成该PMTU路由的MTU值发现,则将所述PMTU缓存条目的状态设置为有效状态,否则,将所述PMTU缓存条目的状态设置为老化状态;
从所述有效状态开始超过所述有效时间时,将所述PMTU缓存条目设置为老化状态;
从所述老化状态开始超过所述老化时间时,删除所述PMTU缓存条目和PMTU路由。各状态之间的转化如图5所示。
其中,所述源节点为待发送报文查找到对应的PMTU路由且该PMTU路由的MTU值有效,且所述待发送报文的长度大于等于所述PMTU路由的MTU值:
当所述PMTU路由对应的PMTU缓存条目为老化状态时,以所述PMTU路由的MTU值对报文进行分片处理,发送携带PMTU探测指示的报文,将对应的PMTU缓存条目设置为学习状态;
当所述PMTU路由对应的PMTU缓存条目为学习状态或有效状态时,以所述PMTU路由的MTU值对报文进行分片处理,发送报文。
如图6所示,为本发明PMTU发现的一示意图。
以三个中间节点为例,包括:
源节点在不存在或者查找到的PMTU路由的MTU值无效时,以指定值对报文进行分片处理,发送报文,报文中携带PMTU探测指示,本实施例中,指定值为系统最小的最大传输单元1280;
中间节点R1接收到该携带PMTU探测指示的报文时,转发报文,返回包过大报文给源节点,包过大报文中携带出接口MTU值1450;
中间节点R2接收到R1转发的携带PMTU探测指示的报文时,转发报文,返回包过大报文给源节点,包过大报文中携带出接口MTU值1400;
中间节点R3接收到R2转发的携带PMTU探测指示的报文时,转发报文,返回包过大报文给源节点,包过大报文中携带出接口MTU值1300;
目的节点接收到R3转发的携带PMTU探测指示的报文时,处理报文,返回包过大报文给源节点,携带MTU值=0;
源节点对各包过大报文进行处理,获得PMTU路由的MTU值为1300。
本发明提供一种PMTU发现方法,包括:
步骤一:源节点进行报文发送;
如图7所示,包括:
源节点向外发IPv6报文时,先查路由,查到PMTU路由且该PMTU路由的MTU值有效,即系统最小的MTU<=路由MTU<=源节点出接口MTU,取该PMTU路由的MTU值为分片最大传输单元(简称FMTU);判断待发送报文长度是否小于FMTU,如果是,直接发送报文,否则,根据FMTU进行分片发送;
如果未查找到对应的PMTU路由,则以指定值为FMTU,本实施例中以系统最小的MTU值1280为指定值;判断待发送报文长度是否小于FMTU,如果是,直接发送报文,否则,产生PMTU路由及PMTU缓存条目,将PMTU路由的MTU值设置为所述指定值,将PMTU缓存条目的MTU值设置为源节点出接口的MTU值,构造PMTU探测报文,按照FMTU进行分片发送,并设置PMTU缓存条目的状态为学习状态;
如果查找到对应的PMTU路由但该PMTU路由的MTU值无效,则以指定值为FMTU,本实施例中以系统最小的MTU值1280为指定值;判断待发送报文长度是否小于FMTU,如果是,直接发送报文,否则,更新PMTU路由及PMTU缓存条目,将PMTU路由的MTU值设置为所述指定值,将PMTU缓存条目的MTU值设置为源节点出接口的MTU值,构造PMTU探测报文,按照FMTU进行分片发送;将PMTU缓存条目状态设置为学习状态。
步骤二:中间节点收到报文,判断报文是否携带PMTU探测指示,如果是,则转发报文,再给源节点回一个ICMPv6的包过大报文,包过大报文里面返回的MTU为该中间节点上查到的出接口MTU,即报文转发出接口的MTU值;否则,按照正常的流程处理,转发或者本地处理。
其中,根据如下方式判断是否携带PMTU探测指示:
在报文转发的过程中,中间节点发现IPv6报文携带逐跳选项头,则把报文送给IPv6协议栈处理。IPv6协议栈解析逐跳选项头,进一步判断是否带route alert选项,带了再判断其route alert选项是不是定义的PMTU学习的类型,如果是,则报文携带了PMTU探测指示。当然,如果使用新增选项携带PMTU指示,则判断报文中是否携带该新增选项。
步骤三:目的节点收到携带PMTU探测指示的报文后,处理和中间节点类似,不同的是,此时不再转发报文,且返回给源节点的ICMPv6的包过大报文中携带的MTU值为0。
步骤四:源节点接收包过大报文,根据包过大报文中的MTU值确定PMTU路由。
如图8所示,包括:
源节点收到包过大报文,取出包过大报文中的MTU值,根据产生该包过大报文的原始报文的目的地址查找PMTU缓存条目,如果找不到则认为是攻击报文,丢弃该报文。
如果找到对应的PMTU缓存条目,且包过大报文中取出的MTU不为0(表明是中间节点返回的包过大报文),并且PMTU缓存条目学习状态没有超时,则判断取出的MTU和PMTU缓存条目中的MTU大小,如果取出的MTU小于PMTU缓存条目中的MTU,则用取出的MTU替换PMTU缓存条目中的MTU,否则不处理;如果该包过大报文中取出的MTU为0(表明是目的节点返回的包过大报文,探测已到终点),用该PMTU缓存条目的MTU更新对应的PMTU路由的MTU,并把PMTU缓存条目状态设置为有效状态,完成PMTU发现。
步骤五:源节点学习到PMTU后,再发送报文时就根据学习到的PMTU发包。
PMTU有效时间到,PMTU缓存条目进入老化状态;以及,如果PMTU缓存条目学习状态超时,还没有收到目的节点返回的反馈报文(比如,没有收到MTU为0的包过大报文),则还没有学习到PMTU,PMTU缓存条目进入老化状态;
进入老化状态后,如果继续有流发送,根据FMTU发一次携带PMTU探测指示的报文,PMTU缓存条目进入学习状态,重复上面的PMTU学习过程;
老化状态超时,说明老化这段时间没有报文发送,则删除PMTU缓存条目和对应的PMTU路由。可使用老化定时器进行定时。
本发明进行PMTU发现,解决了PMTU学习过程中数据报文丢包问题,减少了PMTU学习过程中的报文交互数量以及PMTU老化后再学习丢包问题,同时还解决了PMTU学习过程中的安全问题,提高了PMTU学习的效率和可靠性。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

Claims (12)

1.一种路径最大传输单元发现方法,其特征在于,包括:
源节点为待发送报文查找是否存在对应的路径最大传输单元PMTU路由,如果不存在或者查找到的PMTU路由的最大传输单元MTU值无效,则建立或更新PMTU路由的MTU值为指定值,该指定值不大于系统最小的最大传输单元,以该指定值对所述待发送报文进行分片处理,发送携带PMTU探测指示的报文;
各中间节点接收到携带所述PMTU探测指示的报文时,转发所述报文,直接发送包过大报文至所述源节点,所述包过大报文中携带所述中间节点上查到的出接口的MTU;
源节点接收各中间节点直接返回的包过大报文,根据所述包过大报文中携带的MTU值确定对应的PMTU路由的MTU值;
其中,所述源节点未查找到对应的PMTU路由或者查找到的PMTU路由的MTU值无效时,还建立或更新与所述PMTU路由对应的PMTU缓存条目,设置该PMTU缓存条目的MTU值为所述源节点查到的出接口的MTU;
所述源节点根据所述包过大报文中携带的MTU值确定对应的PMTU路由的MTU值包括:
所述源节点接收到所述中间节点返回的包过大报文后,取出该包过大报文中的MTU值并查找对应的PMTU缓存条目,如果所述取出的MTU值小于所述PMTU缓存条目中的MTU值,则用所述取出的MTU值替换所述PMTU缓存条目中的MTU值,否则不处理;
所述源节点在处理完所有中间节点返回的包过大报文后,使用该PMTU缓存条目的MTU值更新对应的PMTU路由的MTU值,完成该PMTU路由的MTU值发现。
2.如权利要求1所述的方法,其特征在于,所述方法还包括,
判断所述待发送报文的长度是否小于该指定值,如果是,直接发送所述待发送报文;以及,所述源节点为所述待发送报文查找到对应的PMTU路由且该PMTU路由的MTU值有效,且所述待发送报文的长度小于所述PMTU路由的MTU值时,直接发送所述待发送报文。
3.如权利要求1所述的方法,其特征在于,所述报文中通过如下方式携带PMTU探测指示:
在所述报文中携带逐跳选项头,该逐跳选项头中携带一选项,该选项携带PMTU探测指示,所述选项为路由告警route alert选项或新增选项。
4.如权利要求1所述的方法,其特征在于,所述方法还包括:
所述源节点接收所述包过大报文后,如果未查找到对应的PMTU缓存条目,则丢弃该包过大报文。
5.如权利要求1所述的方法,其特征在于,所述方法还包括:
设定学习时间、有效时间和老化时间;
所述源节点发送携带PMTU探测指示的报文后,将对应的PMTU缓存条目设置为学习状态;
如果从学习状态开始的所述学习时间内,所述源节点完成该PMTU路由的MTU值发现,则将所述PMTU缓存条目的状态设置为有效状态,否则,将所述PMTU缓存条目的状态设置为老化状态;
从所述有效状态开始超过所述有效时间时,将所述PMTU缓存条目设置为老化状态;
从所述老化状态开始超过所述老化时间时,删除所述PMTU缓存条目和PMTU路由。
6.如权利要求5所述的方法,其特征在于,所述方法还包括:
所述源节点为待发送报文查找到对应的PMTU路由且该PMTU路由的MTU值有效,且所述待发送报文的长度大于等于所述PMTU路由的MTU值:
当所述PMTU路由对应的PMTU缓存条目为老化状态时,以所述PMTU路由的MTU值对报文进行分片处理,发送携带PMTU探测指示的报文,将对应的PMTU缓存条目设置为学习状态;
当所述PMTU路由对应的PMTU缓存条目为学习状态或有效状态时,以所述PMTU路由的MTU值对报文进行分片处理,发送报文。
7.一种节点,其特征在于,包括报文发送单元和报文接收单元,其中:
所述报文发送单元用于:在所述节点作为源节点时,为待发送报文查找是否存在对应的PMTU路由,如果不存在或者查找到的PMTU路由的MTU值无效,则建立或更新PMTU路由的MTU值为指定值,所述指定值不大于系统最小的最大传输单元,以所述指定值对报文进行分片处理,发送携带PMTU探测指示的报文;
所述报文接收单元用于:在所述节点作为源节点时,接收到各中间节点直接返回的包过大报文时,根据所述包过大报文中携带的MTU值确定对应的PMTU路由的MTU值;
其中,所述报文发送单元还用于:在所述节点作为源节点时,未查找到对应的PMTU路由或者查找到的PMTU路由的MTU值无效时,建立或更新与所述PMTU路由对应的PMTU缓存条目,设置该PMTU缓存条目的MTU值为所述源节点查到的出接口的MTU;
所述报文接收单元是用于根据如下方式确定对应的PMTU路由的MTU值:
接收到所述中间节点返回的包过大报文后,取出该包过大报文中的MTU值并查找对应的PMTU缓存条目,如果所述取出的MTU值小于所述PMTU缓存条目中的MTU值,则用所述取出的MTU值替换所述PMTU缓存条目中的MTU值,否则不处理;
在处理完所有中间节点返回的包过大报文后,使用该PMTU缓存条目的MTU值更新对应的PMTU路由的MTU值,完成该PMTU路由的MTU值发现。
8.如权利要求7所述的节点,其特征在于,
所述报文发送单元还用于:判断所述待发送报文的长度是否小于所述指定值,如果是,直接发送所述待发送报文;以及,在所述节点作为源节点时,当为待发送报文查找到对应的PMTU路由且该PMTU路由的MTU值有效,且所述待发送报文的长度小于所述PMTU路由的MTU值时,直接发送所述待发送报文。
9.如权利要求7所述的节点,其特征在于,
所述报文发送单元是用于通过如下方式携带所述PMTU探测指示:在所述报文中携带逐跳选项头,该逐跳选项头中携带一选项,该选项携带PMTU探测指示,所述选项为路由告警route alert选项或新增选项。
10.如权利要求7所述的节点,其特征在于,
所述报文接收单元接收所述包过大报文后,如果未查找到对应的PMTU缓存条目,则丢弃该包过大报文。
11.如权利要求7所述的节点,其特征在于,
所述报文发送单元还用于:设定学习时间、有效时间和老化时间;
在所述节点作为源节点时,发送携带PMTU探测指示的报文后,将对应的PMTU缓存条目设置为学习状态;
如果从学习状态开始的所述学习时间内,完成该PMTU路由的MTU值发现,则将所述PMTU缓存条目的状态设置为有效状态,否则,将所述PMTU缓存条目的状态设置为老化状态;
从所述有效状态开始超出所述有效时间时,将所述PMTU缓存条目设置为老化状态;
从所述老化状态开始超出所述老化时间时,删除所述PMTU缓存条目和PMTU路由;
当所述节点为源节点,为待发送报文查找到对应的PMTU路由且该PMTU路由的MTU值有效,且所述待发送报文的长度大于等于所述PMTU路由的MTU值:
当所述PMTU路由对应的PMTU缓存条目为老化状态时,以所述PMTU路由的MTU值对报文进行分片处理,发送携带PMTU探测指示的报文,将对应的PMTU缓存条目设置为学习状态;
当所述PMTU路由对应的PMTU缓存条目为学习状态或有效状态时,以所述PMTU路由的MTU值对报文进行分片处理,发送报文。
12.如权利要求7所述的节点,其特征在于,所述节点还包括转发处理单元,所述转发处理单元用于:接收到携带PMTU探测指示的报文时,当该节点不是该报文的目的节点时,转发所述报文,发送包过大报文至该报文的源节点,所述包过大报文中携带该节点上查到的出接口的MTU。
CN201110136938.2A 2011-05-24 2011-05-24 一种路径最大传输单元发现方法和节点 Active CN102325076B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201110136938.2A CN102325076B (zh) 2011-05-24 2011-05-24 一种路径最大传输单元发现方法和节点
PCT/CN2012/072519 WO2012159481A1 (zh) 2011-05-24 2012-03-19 一种路径最大传输单元发现方法和节点

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110136938.2A CN102325076B (zh) 2011-05-24 2011-05-24 一种路径最大传输单元发现方法和节点

Publications (2)

Publication Number Publication Date
CN102325076A CN102325076A (zh) 2012-01-18
CN102325076B true CN102325076B (zh) 2017-04-12

Family

ID=45452749

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110136938.2A Active CN102325076B (zh) 2011-05-24 2011-05-24 一种路径最大传输单元发现方法和节点

Country Status (2)

Country Link
CN (1) CN102325076B (zh)
WO (1) WO2012159481A1 (zh)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102325076B (zh) * 2011-05-24 2017-04-12 中兴通讯股份有限公司 一种路径最大传输单元发现方法和节点
CN102594810B (zh) * 2012-02-08 2016-03-30 神州数码网络(北京)有限公司 一种IPv6网络防止PMTU攻击的方法和装置
CN102821051B (zh) * 2012-08-21 2015-11-18 神州数码网络(北京)有限公司 通用路由封装隧道中路径最大传输单元更改方法
EP2953311B1 (en) * 2013-06-26 2019-01-16 Huawei Technologies Co., Ltd. Packet identification method and protective device
CN104348785B (zh) * 2013-07-29 2018-06-05 中国电信股份有限公司 IPv6网中防止主机PMTU攻击的方法、装置与系统
CN103475596B (zh) * 2013-08-30 2016-08-17 广州市动景计算机科技有限公司 基于mtu值的中间件与移动终端的数据传输方法及系统
EP3905618A3 (en) 2015-08-31 2022-02-16 Huawei Technologies Co., Ltd. Data packet sending method and apparatus in ipv6 network
CN106533969B (zh) * 2016-11-17 2020-05-08 东软集团股份有限公司 一种最大传输单元值设置方法及装置
CN108965122B (zh) * 2017-05-19 2022-03-11 中兴通讯股份有限公司 路由选路方法、设备及计算机可读存储介质
CN109873763B (zh) * 2017-12-05 2021-12-03 北京华为数字技术有限公司 一种通信方法及设备
CN112887209B (zh) * 2019-11-30 2023-06-20 华为技术有限公司 关于数据传输的表项建立方法及相关设备
CN112333094B (zh) * 2020-11-27 2022-10-18 迈普通信技术股份有限公司 数据传输处理方法、装置、网络设备及可读存储介质
CN114244782A (zh) * 2021-08-27 2022-03-25 新华三信息安全技术有限公司 路径最大传输单元Path MTU值调整方法及装置
CN113890858B (zh) * 2021-09-29 2023-10-20 杭州迪普科技股份有限公司 Pmtu的探测方法及装置
CN115842732B (zh) * 2023-02-13 2023-05-23 北京天维信通科技有限公司 分布式全路径探测mtu的方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100459576C (zh) * 2005-08-05 2009-02-04 华为技术有限公司 一种探测路径最大传输单元的方法
CN101931588A (zh) * 2009-06-23 2010-12-29 丛林网络公司 发现路径最大传输单元尺寸

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7542471B2 (en) * 2002-10-30 2009-06-02 Citrix Systems, Inc. Method of determining path maximum transmission unit
US7995478B2 (en) * 2007-05-30 2011-08-09 Sony Computer Entertainment Inc. Network communication with path MTU size discovery
CN101616078B (zh) * 2009-07-16 2011-09-28 杭州华三通信技术有限公司 一种路径最大传输单元的发现方法、路由器及节点设备
CN102325076B (zh) * 2011-05-24 2017-04-12 中兴通讯股份有限公司 一种路径最大传输单元发现方法和节点

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100459576C (zh) * 2005-08-05 2009-02-04 华为技术有限公司 一种探测路径最大传输单元的方法
CN101931588A (zh) * 2009-06-23 2010-12-29 丛林网络公司 发现路径最大传输单元尺寸

Also Published As

Publication number Publication date
CN102325076A (zh) 2012-01-18
WO2012159481A1 (zh) 2012-11-29

Similar Documents

Publication Publication Date Title
CN102325076B (zh) 一种路径最大传输单元发现方法和节点
US10367718B2 (en) Method for acquiring, by SDN switch, exact flow entry, and SDN switch, controller, and system
Speakman et al. PGM reliable transport protocol specification
EP2421206B1 (en) Flooding-based routing protocol having database pruning and rate-controlled state refresh
KR100453055B1 (ko) Ip 네트워크 상에서의 경로 mtu 탐색 방법 및 그 장치
CN107968750B (zh) 报文传输方法、装置及节点
US20080159150A1 (en) Method and Apparatus for Preventing IP Datagram Fragmentation and Reassembly
WO2018058677A1 (zh) 一种报文处理方法、计算设备以及报文处理装置
US7778204B2 (en) Automatic maintenance of a distributed source tree (DST) network
EP2589189B1 (en) Method and apparatus for dissemination of information between routers
US9923835B1 (en) Computing path maximum transmission unit size
US8830867B2 (en) Methods and network elements operable to specify and determine complete sets of link state messages for link state routing protocols
US20140241368A1 (en) Control apparatus for forwarding apparatus, control method for forwarding apparatus, communication system, and program
EP2642691A1 (en) Method and device for link fault detecting and recovering based on arp interaction
US9973400B2 (en) Network flow information collection method and apparatus
EP3243316B1 (en) Installation of cached downward paths based on upward data traffic in a non-storing low-power and lossy network
US10389619B2 (en) Wireless bypass of next-hop device in source route path
WO2014026571A1 (zh) 一种通用路由封装隧道报文发送方法和装置
WO2012159461A1 (zh) 一种二层路径最大传输单元发现方法和节点
CN110881006B (zh) 发送报文的方法、网络设备及计算机存储介质
CN108965122B (zh) 路由选路方法、设备及计算机可读存储介质
CN107317753B (zh) 双向转发检测bfd会话建立的方法、装置和系统
EP4333397A1 (en) Packet processing method and system, and network device
Speakman et al. RFC3208: PGM Reliable Transport Protocol Specification
JP5752644B2 (ja) 通信路終端装置、データサイズ決定方法およびデータサイズ決定プログラム

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant