CN101207571B - 转发报文的方法和设备 - Google Patents
转发报文的方法和设备 Download PDFInfo
- Publication number
- CN101207571B CN101207571B CN2007101793481A CN200710179348A CN101207571B CN 101207571 B CN101207571 B CN 101207571B CN 2007101793481 A CN2007101793481 A CN 2007101793481A CN 200710179348 A CN200710179348 A CN 200710179348A CN 101207571 B CN101207571 B CN 101207571B
- Authority
- CN
- China
- Prior art keywords
- message
- tunnel
- length
- fringe node
- double
- 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
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种转发报文的方法和设备,属于通信领域。所述方法包括:利用隧道双向探测报文获取GRE隧道的最小MTU;根据该MTU转发报文到GRE隧道中,或对报文分片后再转发到GRE隧道中。所述设备包括:获取模块和转发模块。本发明通过利用隧道双向探测报文获取GRE隧道的最小MTU,并根据该MTU决定是否直接转发报文还是分片后再转发报文到GRE隧道中,保证GRE隧道中转发的报文不用再被分片,GRE隧道的出边缘节点不用再进行报文重组,避免了出边缘节点对不完整的分片报文进行缓存,节省了出边缘节点设备的资源,减轻了该设备的负担。另外,GRE隧道中的转发节点也不用进行分片处理,从而也减轻了中间转发节点的负担。
Description
技术领域
本发明涉及通信领域,特别涉及一种转发报文的方法和设备。
背景技术
GRE(Generic Routing Encapsulation,公用路由封装协议)可以作为VPN(Virtual PrivateNetwork,虚拟专用网)的第三层隧道协议,在协议层之间采用隧道(Tunnel)技术。Tunnel是一个虚拟的点对点的连接,可以看成仅支持点对点连接的虚拟接口,这个接口提供了一条通路,使封装的数据报文能够在这条通路上传输,并在一个Tunnel的两端分别对数据报文进行封装及解封装。
现有技术中当报文经应用GRE的网络转发时,通常在GRE网络的入边缘节点处先对转发报文做GRE封装成GRE报文,即加上外层IP和GRE头,然后转发到GRE网络中;在GRE网络的出边缘节点处对该报文进行解封装。如果GRE网络中的转发节点的MTU(Maximum Transmission Unit,最大传输单元)小于GRE报文的长度,则转发节点对该报文进行分片,使分片后的报文长度不超过转发节点的MTU,然后进行转发;分片后的报文到达出边缘节点时,出边缘节点对分片报文进行重组,重组成原GRE报文后,再做GRE解封装正常转发。
在实现本发明的过程中,发明人发现上述现有技术至少具有以下缺点:
当GRE网络中的转发节点的MTU小于GRE报文的长度时,需要对GRE报文进行分片,从而导致GRE网络的出边缘节点必须进行报文重组,不仅加重了出边缘节点设备的负担,而且如果分片报文丢失或是延时时间比较长,则会导致出边缘节点设备缓存分片报文,消耗出边缘节点设备的资源;另外,对GRE网络中的转发节点也增加了分片处理的负担。
发明内容
为了降低GRE网络节点设备转发报文的负担,本发明实施例提供了一种转发报文的方法和设备。所述技术方案如下:
公用路由封装协议的隧道的入边缘节点发送第一隧道双向探测报文至所述隧道的出边缘节点;
根据所述出边缘节点返回的报文的长度,获取所述隧道的最小的最大传输单元;
根据所述最大传输单元转发报文到所述隧道中,或对所述报文分片后再转发到所述隧道中。
另一方面,本发明实施例提供了一种转发报文的设备,所述设备作为公用路由封装协议的隧道的入边缘节点设备,具体包括:
获取模块,用于发送第一隧道双向探测报文至所述隧道的出边缘节点设备,并接收所述出边缘节点设备返回的报文,根据所述出边缘节点返回的报文的长度,获取所述隧道的最小的最大传输单元;
转发模块,用于根据所述获取模块得到的最大传输单元转发报文到所述隧道中,或对所述报文分片后再转发到所述隧道中。
本发明实施例提供的技术方案的有益效果是:
利用隧道双向探测报文获取GRE隧道的最小MTU,并根据该MTU决定是否直接转发报文还是分片后再转发报文到GRE隧道中,保证GRE隧道中转发的报文不用再被分片,GRE隧道的出边缘节点不用再进行报文重组,避免了出边缘节点对不完整的分片报文进行缓存,节省了出边缘节点设备的资源,减轻了该设备的负担。另外,GRE隧道中的转发节点也不用进行分片处理,从而也减轻了中间转发节点的负担。
附图说明
图1是本发明实施例1提供的转发报文的方法流程图;
图2是本发明实施例2提供的转发报文的设备结构图;
图3是本发明实施例2提供的转发报文的设备具体结构图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
本发明实施例提供的转发报文的方法具体包括:首先利用隧道双向探测报文获取GRE隧道的最小MTU;然后根据获取的最小MTU转发报文到GRE隧道中,或对报文进行分片后再转发到GRE隧道中。本发明实施例通过提前对报文进行分片,可以保证报文在GRE隧道 中不再被分片,相应地出GRE隧道时也不用再重组,从而降低了GRE隧道中节点设备的负担。在本发明实施例中涉及的隧道双向探测报文是一种特殊的报文,接收到所述隧道双向探测报文的节点不会对该报文做任何修改,直接将该报文返回给发送该报文的节点。隧道双向探测报文有多种,如GRE隧道中的GRE keeplive报文(GRE隧道状态检测报文),IPV6 PathMTU Discovery(用于IPv6的发现通路MTU)中的探测报文等等。
实施例1
参见图1,本发明实施例提供了一种转发报文的方法,具体包括:
S101:GRE隧道的入边缘节点发送预设长度的隧道双向探测报文至GRE隧道的出边缘节点;在本实施例中采用GRE keeplive报文作为隧道双向探测报文,出边缘节点收到后返回该GRE keeplive报文给入边缘节点。如果预设的报文长度大于隧道中某些节点的MTU,则报文在隧道传输的过程中将被分片。现有的分片技术通常为在保证所有分片报文长度之和与分片前的报文长度相等的情况下,按照隧道的最小MTU进行均分,如果分片过程中最后一片报文的长度小于最小MTU,则以其实际长度为准。如隧道最小MTU为500byte,对长度为1200byte的报文进行分片后,得到长度分别为500byte、500byte和200byte的分片报文。另外,不排除还有其他分片的方式,如在保证所有分片报文长度之和与分片前的报文长度相等的情况下,对报文进行均分,使每个分片报文的长度都小于隧道的最小MTU,如隧道最小MTU为500byte,对长度为1200byte的报文进行分片后,得到3个长度均为400byte的分片报文。本实施例中,采用的是按照隧道的最小MTU进行均分的分片技术。
S102:GRE隧道的入边缘节点收到出边缘节点返回的报文后,根据该报文的长度判断GRE keeplive报文是否被分片,即判断出边缘节点返回的报文的长度与入边缘节点发送的报文的长度是否不一致,如果是,表明GRE keeplive报文被分片,接收到的报文是分片报文,则执行S103;否则,表明GRE keeplive报文未被分片,执行S104。
S103:此时GRE隧道的最小MTU为收到的分片报文中最大的报文长度,然后执行S105;例如,预设GRE keeplive报文的长度为2000byte,入边缘节点发送该GRE keeplive报文给出边缘节点后,收到出边缘节点返回的3个分片报文,长度分别为800byte、800byte和400byte,则将分片报文中最大的报文长度800byte作为GRE隧道的最小MTU。
S104:发送报文长度比预设长度大的GRE keeplive报文给出边缘节点,直到收到出边缘节点返回的分片报文,此时GRE隧道的最小MTU为收到的分片报文中最大的报文长度,然后执行S105。如预设长度为L,设置L’>L,发送长度为L’的GRE keeplive报文给出边缘节点,直到收到出边缘节点返回的分片报文。
S105:判断待发送的报文的长度与外层IP头和GRE头的长度之和是否大于最小MTU,即进行GRE封装后的报文长度是否大于最小MTU,如果是,则执行S106;否则,执行S107。
S106:对待发送的报文进行分片,使分片后的报文的长度与外层IP头和GRE头的长度之和不超过最小MTU,即分片报文进行GRE封装后的长度小于或等于最小MTU,然后转发分片后的报文到GRE隧道中,即对分片后的报文进行GRE封装,然后转发到GRE隧道中。
S107:直接转发待发送的报文到GRE隧道中,即对待发送的报文进行GRE封装,然后转发到GRE隧道中。
当然,若在本发明本实施例中采用的是对报文进行均分的分片技术,则入边缘节点获取的GRE隧道的最小MTU值小于GRE隧道的真实最小MTU值,同样也能保证报文在GRE隧道中转发时不用再被分片。
本实施例利用隧道双向探测报文获取GRE隧道的最小MTU,并根据该MTU决定是否直接转发报文还是分片后再转发报文到GRE隧道中,保证GRE隧道中转发的报文不用再被分片,GRE隧道的出边缘节点不用再进行报文重组,避免了出边缘节点对不完整的分片报文进行缓存,节省了出边缘节点设备的资源,减轻了该设备的负担。另外,GRE隧道中的转发节点也不用进行分片处理,从而也减轻了中间转发节点的负担。
实施例2
参见图2,本发明实施例还提供了一种转发报文的设备,具体包括:
获取模块,用于利用隧道双向探测报文获取GRE隧道的最小MTU;
转发模块,用于根据获取模块得到的最小MTU转发报文到GRE隧道中,或对报文分片后再转发到GRE隧道中。
其中,获取模块具体包括:
通信单元,用于发送第一隧道双向探测报文至公用路由封装协议的隧道的出边缘节点设备,并接收出边缘节点设备返回的报文;还用于将第一隧道双向探测报文的长度和出边缘节点设备返回的报文的个数和长度发送至处理单元;
处理单元,用于接收通信单元发来的第一隧道双向探测报文的长度和出边缘节点设备返回的报文的个数和长度,进行分析处理,获取到GRE隧道的最小MTU。
其中,处理单元具体包括:
接收和比较子单元,用于接收通信单元发来的出边缘节点设备返回的报文的个数和长度以及第一隧道双向探测报文的长度,进行比较后将比较结果发送至分析子单元;
分析子单元,用于接收接收和比较子单元发来的比较结果,若比较结果为出边缘节点设 备返回多个报文且每个报文的长度都小于第一隧道双向探测报文的长度,则GRE隧道的最小MTU为所述多个报文中最大的报文长度;若比较结果为出边缘节点设备返回一个报文且该报文的长度等于第一隧道双向探测报文的长度,则通知通信单元继续探测,并接收通信单元返回的分片报文的长度,则所述分片报文的长度中最大的报文长度为GRE隧道的最小MTU;
相应地,通信单元还用于接收分析子单元发来的通知,并发送第二隧道双向探测报文给出边缘节点设备,直到接收到出边缘节点设备返回的分片报文,然后将所述分片报文的长度发送给分析子单元,第二隧道双向探测报文长度大于第一隧道双向探测报文。
另外,转发模块具体包括:
判断单元,用于判断待发送的报文的长度与外层IP头和公用路由封装协议头的长度之和是否大于获取模块获取的GRE隧道的最小MTU,并将判断结果发送至转发单元;
转发单元,用于接收判断单元发来的判断结果,当判断结果为是时,对待发送的报文进行分片,使分片后的报文的长度与外层IP头和公用路由封装协议头的长度之和不超过最小MTU,然后转发分片后的报文到GRE隧道中;当判断结果为否时,直接转发待发送的报文到GRE隧道中。
例如,参见图3,当获取模块包括通信单元和处理单元,且处理单元包括接收和比较子单元、分析子单元时,转发模块可以包括判断单元和转发单元,则判断单元具体根据分析子单元得到的GRE隧道的最小MTU来进行判断。
本实施例中的设备可以为数据通信设备,如路由器或交换机等等,可以位于网络中的任何位置。本实施例中的隧道双向探测报文可以具体为GRE keeplive报文。
本实施例利用隧道双向探测报文获取GRE隧道的最小MTU,并根据该MTU决定是否直接转发报文还是分片后再转发报文到GRE隧道中,保证GRE隧道中转发的报文不用再被分片,GRE隧道的出边缘节点不用再进行报文重组,避免了出边缘节点对不完整的分片报文进行缓存,节省了出边缘节点设备的资源,减轻了该设备的负担。另外,GRE隧道中的转发节点也不用进行分片处理,从而也减轻了中间转发节点的负担。
本发明实施例可以利用软件实现,相应的软件可以存储在可读取的存储介质中,如路由器的硬盘或缓存中。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (7)
1.一种转发报文的方法,其特征在于,所述方法包括:
公用路由封装协议的隧道的入边缘节点发送第一隧道双向探测报文至所述隧道的出边缘节点;
根据所述出边缘节点返回的报文的长度,获取所述隧道的最小的最大传输单元;
根据所述最大传输单元转发报文到所述隧道中,或对所述报文分片后再转发到所述隧道中。
2.根据权利要求1所述的转发报文的方法,其特征在于,所述根据所述出边缘节点返回的报文的长度,获取所述隧道的最小的最大传输单元,具体包括:
如果所述出边缘节点返回多个报文且每个报文的长度都小于所述第一隧道双向探测报文的长度,则所述第一隧道双向探测报文被分片,所述隧道的最小的最大传输单元为所述多个报文中最大的报文长度;
如果所述出边缘节点返回一个报文且该报文的长度等于所述第一隧道双向探测报文的长度,则所述第一隧道双向探测报文没有被分片,所述入边缘节点发送第二隧道双向探测报文给所述出边缘节点,直到所述出边缘节点返回分片报文,所述隧道的最小的最大传输单元为所述分片报文中最大的报文长度;
所述第二隧道双向探测报文的长度大于所述第一隧道双向探测报文的长度。
3.根据权利要求1所述的转发报文的方法,其特征在于,所述隧道双向探测报文具体为公用路由封装协议隧道状态检测报文。
4.根据权利要求1所述的转发报文的方法,其特征在于,所述根据所述最大传输单元转发报文到所述隧道中,或对所述报文分片后再转发到所述隧道中,具体包括:
判断报文的长度与外层IP头和公用路由封装协议头的长度之和是否大于所述最大传输单元,如果是,则对所述报文进行分片,使分片后的报文的长度与所述外层IP头和公用路由封装协议头的长度之和不超过所述最大传输单元,然后转发所述分片后的报文到所述隧道中;否则,直接转发所述报文到所述隧道中。
5.一种转发报文的设备,其特征在于,所述设备作为公用路由封装协议的隧道的入边缘节点设备,具体包括:
获取模块,用于发送第一隧道双向探测报文至所述隧道的出边缘节点设备,并接收所述出边缘节点设备返回的报文,根据所述出边缘节点返回的报文的长度,获取所述隧道的最小的最大传输单元;
转发模块,用于根据所述获取模块得到的最大传输单元转发报文到所述隧道中,或对所述报文分片后再转发到所述隧道中。
6.根据权利要求5所述的转发报文的设备,其特征在于,所述获取模块具体包括:
通信单元,用于发送第一隧道双向探测报文至公用路由封装协议的隧道的出边缘节点设备,并接收所述出边缘节点设备返回的报文;还用于将所述第一隧道双向探测报文的长度和所述出边缘节点设备返回的报文的个数和长度发送至处理单元;
所述处理单元,用于接收所述通信单元发来的所述第一隧道双向探测报文的长度和所述出边缘节点设备返回的报文的个数和长度,进行比较,若所述比较的结果为所述出边缘节点设备返回多个报文且每个报文的长度都小于所述第一隧道双向探测报文的长度,则所述隧道的最小的最大传输单元为所述多个报文中最大的报文长度;若所述比较的结果为所述出边缘节点设备返回一个报文且该报文的长度等于所述第一隧道双向探测报文的长度,则通知所述通信单元继续探测,并接收所述通信单元返回的分片报文的长度,则所述分片报文的长度中最大的报文长度为所述公用路由封装协议的隧道的最小的最大传输单元;
相应地,所述通信单元还用于接收所述处理单元发来的通知,并发送第二隧道双向探测报文给所述出边缘节点设备,直到接收到所述出边缘节点设备返回的分片报文,然后将所述分片报文的长度发送给所述处理单元,所述第二隧道双向探测报文长度大于所述第一隧道双向探测报文。
7.根据权利要求5所述的转发报文的设备,其特征在于,所述转发模块具体包括:
判断单元,用于判断待发送的报文的长度与外层IP头和公用路由封装协议头的长度之和是否大于所述获取模块获取的所述隧道的最小的最大传输单元,并将判断结果发送至转发单元;
所述转发单元,用于接收所述判断单元发来的判断结果,当所述判断结果为是时,对所述待发送的报文进行分片,使分片后的报文的长度与所述外层IP头和公用路由封装协议头的 长度之和不超过所述最大传输单元,然后转发所述分片后的报文到所述隧道中;当所述判断结果为否时,直接转发所述待发送的报文到所述隧道中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007101793481A CN101207571B (zh) | 2007-12-12 | 2007-12-12 | 转发报文的方法和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007101793481A CN101207571B (zh) | 2007-12-12 | 2007-12-12 | 转发报文的方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101207571A CN101207571A (zh) | 2008-06-25 |
CN101207571B true CN101207571B (zh) | 2011-04-20 |
Family
ID=39567467
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007101793481A Active CN101207571B (zh) | 2007-12-12 | 2007-12-12 | 转发报文的方法和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101207571B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101488912B (zh) * | 2008-12-19 | 2011-06-15 | 华为技术有限公司 | 一种ip分片方法和装置 |
CN101989954B (zh) * | 2010-11-16 | 2014-09-10 | 中兴通讯股份有限公司 | 报文分片方法和网络转发设备 |
US9203751B2 (en) * | 2010-12-21 | 2015-12-01 | Telefonaktiebolaget L M Ericsson (Publ) | IP fragmentation in GTP tunnel |
CN102868613A (zh) * | 2012-08-14 | 2013-01-09 | 中兴通讯股份有限公司 | 一种通用路由封装隧道报文发送方法和装置 |
CN106713187B (zh) * | 2015-11-17 | 2019-09-17 | 大唐移动通信设备有限公司 | 一种报文传输方法和装置 |
CN106411677A (zh) * | 2016-09-06 | 2017-02-15 | 杭州迪普科技有限公司 | 一种确定vpn数据通道的最优mtu的方法和装置 |
CN106411783A (zh) * | 2016-09-30 | 2017-02-15 | 杭州华三通信技术有限公司 | 一种报文发送方法及装置 |
CN107707549B (zh) * | 2017-09-30 | 2020-07-28 | 迈普通信技术股份有限公司 | 一种自动提取应用特征的装置及方法 |
CN110191066B (zh) * | 2019-06-14 | 2022-05-20 | 迈普通信技术股份有限公司 | 一种确定最大传输单元pmtu的方法、设备及系统 |
CN112333094B (zh) * | 2020-11-27 | 2022-10-18 | 迈普通信技术股份有限公司 | 数据传输处理方法、装置、网络设备及可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1494296A (zh) * | 2002-10-10 | 2004-05-05 | ض� | 确定网络路径传输单元 |
CN1543104A (zh) * | 2003-04-28 | 2004-11-03 | 华为技术有限公司 | 一种移动分组网络的数据传输方法 |
CN1647454A (zh) * | 2002-03-29 | 2005-07-27 | 三星电子株式会社 | 在动态互联网协议网络上改变路径最大传输单位的方法及使用该方法的设备 |
CN1909503A (zh) * | 2005-08-05 | 2007-02-07 | 华为技术有限公司 | 一种探测路径最大传输单元的方法 |
-
2007
- 2007-12-12 CN CN2007101793481A patent/CN101207571B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1647454A (zh) * | 2002-03-29 | 2005-07-27 | 三星电子株式会社 | 在动态互联网协议网络上改变路径最大传输单位的方法及使用该方法的设备 |
CN1494296A (zh) * | 2002-10-10 | 2004-05-05 | ض� | 确定网络路径传输单元 |
CN1543104A (zh) * | 2003-04-28 | 2004-11-03 | 华为技术有限公司 | 一种移动分组网络的数据传输方法 |
CN1909503A (zh) * | 2005-08-05 | 2007-02-07 | 华为技术有限公司 | 一种探测路径最大传输单元的方法 |
Non-Patent Citations (1)
Title |
---|
JP特开2001-251353A 2001.09.14 |
Also Published As
Publication number | Publication date |
---|---|
CN101207571A (zh) | 2008-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101207571B (zh) | 转发报文的方法和设备 | |
KR100603951B1 (ko) | 무선 패킷 통신 장치 및 방법 | |
US9059916B2 (en) | Apparatus and method for transmitting packets in a communication system | |
US8134919B2 (en) | Method and device for protecting ethernet tree services | |
CN103401773B (zh) | 一种实现板间通信的方法及网络设备 | |
CN103490972B (zh) | 多链路隧道报文传输方法及系统 | |
WO2018120914A1 (zh) | Dcn报文处理方法、网络设备和网络系统 | |
WO2017054576A1 (zh) | 单播隧道建立方法、装置和系统 | |
US9602461B2 (en) | Service forwarding method and device | |
US20190229950A1 (en) | Packet Processing Method and Device | |
CN101262429B (zh) | 一种实现虚拟专用网通信的系统与方法 | |
WO2019178813A1 (zh) | 处理报文分片的方法、装置和系统 | |
CN100433714C (zh) | 一种ip分片报文传输处理方法 | |
WO2014019528A1 (zh) | 一种多径tcp拥塞控制的方法、装置及系统 | |
WO2021174987A1 (zh) | 小基站覆盖系统 | |
CN107819658B (zh) | 一种报文传输方法、mec设备和系统 | |
CN102315892B (zh) | 数据转发装置和线卡板以及数据转发方法 | |
CN104335675A (zh) | 数据传输方法、装置及系统 | |
CN112511587A (zh) | 一种电力配网差动业务的通信数据处理方法及装置 | |
CN101848168A (zh) | 基于目的mac地址的流量控制方法、系统及设备 | |
WO2019062268A1 (zh) | 传输组播报文的方法、装置和系统 | |
CN111698708B (zh) | 一种在传送系统中业务类型适配的方法和装置 | |
CN109787838B (zh) | 在多跳网络中规避故障中继节点的方法 | |
WO2015096512A1 (zh) | 一种基于trill网络的报文传输方法及设备 | |
CN109873763B (zh) | 一种通信方法及设备 |
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 |