CN101150510B - 一种实现GRE协议兼容IPinIP协议的方法及装置 - Google Patents
一种实现GRE协议兼容IPinIP协议的方法及装置 Download PDFInfo
- Publication number
- CN101150510B CN101150510B CN2007101634305A CN200710163430A CN101150510B CN 101150510 B CN101150510 B CN 101150510B CN 2007101634305 A CN2007101634305 A CN 2007101634305A CN 200710163430 A CN200710163430 A CN 200710163430A CN 101150510 B CN101150510 B CN 101150510B
- Authority
- CN
- China
- Prior art keywords
- protocol
- datagram
- gre
- icmp
- icmp packet
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种实现GRE协议兼容IP in IP协议的方法及装置,用以解决现有技术中存在的GRE协议不支持处理ICMP报文的问题。本发明方法包括:对IP协议数据报进行解封装,得到里层IP协议数据报,当确定该里层IP协议数据报携带ICMP报文时,对该ICMP报文进行处理;其中,所述IP协议数据报是通过对所述里层IP协议数据报先进行GRE协议封装,再进行IP协议封装得到的。本发明用于实现GRE协议兼容IP in IP协议,使得GRE可以处理ICMP报文,进而使得拥塞处理、重定向等操作,以及GRE隧道MTU发现机制得以实现。
Description
技术领域
本发明涉及网络技术领域,尤其涉及一种实现通用路由封装(GRE,GenericRouting Encapsulation)协议兼容IP封装IP(IP in IP,IP Encapsulation within IP)协议的方法及装置。
背景技术
虚拟专用网络(VPN,Virtual Private Network)是利用公用网络来连接到企业私有网络。在VPN组网中,隧道(Tunnel)是一个很重要的技术,如图1所示,两个私网之间通过隧道传输数据,它可以使分离的同一属性的子网通过隧道实现透明连接。这样就可以将不连续的子网建立起连接,组建VPN网络。
现有技术中,可以通过在IP协议数据报中封装另一个IP协议数据报,即RFC2003规范中描述的IP in IP协议,使得两个私网之间的数据报可以通过因特网进行传输。封装好的数据报如图2所示。RFC2003把路由信息送往某个中间目的地址,而不是原IP协议数据报头部的目的地址,因此,该封装方式可用于很多方面,例如,使用移动IP把数据报传送到某个移动节点。
IP in IP协议支持动态最大传输单元(MTU,Maximum Transmission Unit)检查。因此,可以避免大数据报在主机内进行无谓的多次分片。另外,封装后的数据报被发送后,封装方可能从该隧道内的任一中间路由器而不是隧道出口接收到一条网际控制报文协议(ICMP,Internet Control Message Protocol)信息。ICMP是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。该控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。收到ICMP报文信息的封装方采取何种动作,取决于所收到的ICMP报文信息的类型,即包含的控制消息具体是什么。封装方可以使用收到的ICMP报文信息产生一个相似的ICMP报文信息,发送给产生图3中所示最底层的IP协议数据报的构建者,即原始发送方。该过程称为中继(relaying)来自隧道的ICMP报文信息。因此,封装方可以通过处理数据报内部的ICMP报文进行相应的处理,如完成拥塞控制、重定向等操作。但是,IP in IP协议兼容性较差,只能由IP封装IP协议数据报,对路由器的资源占用相对较大,并且安全机制较差。因此,IP in IP协议的应用面较窄。
另外,在现有技术中,还可以使用通用路由封装(GRE,Generic RoutingEncapsulation)协议,GRE协议在乘客协议数据和乘客协议头的外层封装上GRE协议头(携带相应的GRE Tunnel信息),在GRE协议头外部再封装一层传输协议头,封装好的数据报如图3所示。由于封装好的数据报有一层GRE协议头(GRE Header),因此,里面可以携带隧道安全识别内容,提供一定的安全性。
GRE协议具有较好的灵活性、安全性和兼容性。通过GRE隧道可以支持IP封装IP、IPv6等三层协议,也可以支持封装二层协议。但是,GRE协议不支持在隧道接口处理隧道内部的ICMP报文信息,所以GRE协议不支持拥塞控制、重定向等操作,以及GRE隧道的MTU发现机制,而且需要静态配置GRE隧道的MTU。
发明内容
本发明实施例提供了一种实现GRE协议兼容IP in IP协议的方法及装置,用以解决现有技术中存在的GRE协议不支持处理ICMP报文的问题。
本发明实施例提供的方法包括:
对IP协议数据报进行解封装,得到里层IP协议数据报,当确定该里层IP协议数据报携带ICMP报文时,对该ICMP报文进行处理;
其中,所述IP协议数据报是通过对所述里层IP协议数据报先进行GRE协议封装,再进行IP协议封装得到的。
本发明实施例提供的装置包括:解封装单元、判定单元和ICMP处理单元;
所述解封装单元,用于对IP协议数据报进行解封装,得到里层IP协议数据报,其中,所述IP协议数据报是通过对所述里层IP协议数据报先进行GRE协议封装,再进行IP协议封装得到的;
所述判定单元,用于当确定该里层IP协议数据报携带ICMP报文时,触发所述ICMP处理单元;
所述ICMP处理单元,用于当接收到所述判定单元的触发时,对该ICMP报文进行处理。
本发明实施例对IP协议数据报进行解封装,得到里层IP协议数据报,当确定该里层IP协议数据报携带ICMP报文时,对该ICMP报文进行处理;其中,所述IP协议数据报是通过对所述里层'协议数据报先进行GRE协议封装,再进行IP协议封装得到的。通过该技术方案,实现了GRE协议与IP in IP协议的兼容,使得GRE协议支持处理ICMP报文,在已有的GRE隧道上复用IP inIP协议,减少需要的系统资源,节约了开发成本。
附图说明
图1为现有技术中VPN的结构示意图;
图2为现有技术中通过GRE协议封装好的数据报结构示意图;
图3为现有技术中通过IP协议封装好的数据报结构示意图;
图4为本发明实施例提供的具体方法流程示意图;
图5为本发明实施例提供的装置结构示意图。
具体实施方式
本发明实施例提供了一种实现GRE协议兼容IP in IP协议的方法及装置,用以实现GRE协议与IP in IP协议的互通,在GRE协议中实现IP in IP协议的处理ICMP报文的功能,从而使得GRE隧道可以支持拥塞控制、重定向以及GRE隧道MTU发现等功能。
下面结合附图,对本发明实施例进行详细说明。
参见图4,本发明实施例方法具体包括:
S401、对IP协议数据报进行解封装,得到里层IP协议数据报。
其中,所述IP协议数据报是通过对所述里层IP协议数据报先进行GRE协议封装,再进行IP协议封装得到的。
步骤S401具体包括:
对所述IP协议数据报进行IP协议解封装,去掉外层IP协议头,得到GRE协议数据报;
对所述GRE协议数据报进行GRE协议解封装,去掉GRE协议头,得到所述里层IP协议数据报。
S402、判断所述里层IP数据报是否携带ICMP报文,如果是,则进行步骤S403;否则,进行步骤S404。
如果所述里层IP协议数据报的封装协议标志域的值为ICMP协议的编号,则说明所述里层IP协议数据报携带ICMP报文。
S403、对所述ICMP报文进行处理,例如,可以进行拥塞处理、重定向处理等。
S404、将所述里层IP数据报作为普通业务数据报加入IP队列。
步骤403中,对于所述ICMP报文的处理可以有两种形式:中继处理和封装方处理。中继处理时,封装方采取的动作取决于所收到的ICMP报文的信息类型。封装方可以使用收到的ICMP报文产生一个相似的ICMP报文,发送给产生所述里层IP数据报的生成者(即源发送方)。封装方处理时,封装方对接收到的ICMP报文进行相应处理,而不中继给源发送方。
根据ICMP报文的类型(Type)域和代码(Code)域,将ICMP报文分为目标不可达(Destination Unreachable)(Type 3)、源淹没(Source Quench)(Type4)、重定向(Redirect)(Type 5)、超时(Type 11)和参数问题(Parameter Problem)(Type 12)ICMP信息类型等,相应的处理如下:
(1)目标不可达(Destination Unreachable)(Type 3)
ICMP目标不可达信息由封装方根据它们的Code域进行处理。本发明实施例中给出的模型允许隧道扩展(″extend″)到一个包括非本地节点(如移动节点)的网络。这样,如果未封装数据报中的目标地址与封装者处在同一网络,可以修改目标不可达的值(Destination Unreachable Code)。根据Code域,目标不可达又可分为:
网络不可达(Network Unreachable)(Code 0):一条目标不可达ICMP信息应该返回给原始发送方。如果未封装数据报的目的地址与封装者处在同一个网络上,封装方新产生的目标不可达信息应该为Code=1(Host Unreachable)。否则,目的地址与封装方处在不同的网络上,如果封装者返回目标不可达信息,Code域必须设置为0(Network Unreachable)。
主机不可达(Host Unreachable)(Code 1):封装方应该尽可能把主机不可达信息中继到源发送方。
协议不可达(Protocol Unreachable)(Code 2):当收到协议不可达ICMP报文信息时,封装方应该向源发送方发送一个Code域为0或1的目标不可达信息。
端口不可达(Port Unreachable)(Code 3):该代号应该不被封装方接收,因为,外层IP头部不指定任何端口号。不允许把该代号发送给源发送方。
数据报太大(Datagram Too Big)(Code 4):在传输过程中需要分片,但是IP协议头设置了不可分片标志。封装方必须把数据报太大ICMP报文中继给源发送方。
源路由失败(Source Route Failed)(Code 5):该代号应该由封装方处理。不允许把它中继给源发送方。
(2)源淹没(Source Quench)(Type 4)
封装方不应该把源淹没信息中继给源发送方,但应该激活所使用的拥塞控制机制,以帮助减轻隧道内部所检测到的拥塞。封装方应该使用适当手段来对拥塞进行控制。封装方可能收到来自隧道内部的拥塞暗示,例如,收到隧道内部的源淹没(Source Quench)ICMP报文信息。另外,与因特网无关的链路层以及各种协议可能以拥塞标志位(Congestion Experienced)的形式提供该暗示。封装方在随后向隧道转发数据报时,封装方应该使用适当手段来对拥塞进行控制,但是,封装方不应该向源发送方发送源淹没(Source Quench)ICMP报文信息。
(3)重定向(Redirect)(Type 5)
封装方自己处理重定向ICMP报文信息。不允许把重定向ICMP报文信息中继到源发送方。
(4)超时(Type 11)
超时ICMP报文信息在隧道自身内部环回。封装方收到超时信息必须把该超时信息作为主机不可达(Type 3,Code 1)信息向源发送方报告。
(5)参数问题(Parameter Problem)(Type 12)
如果参数问题指向从未封装数据报中拷贝而来的某个域,封装方可能把该ICMP报文信息中继给源发送方,否则,如果问题是由封装方插入的IP选项引起,封装方不允许把该ICMP报文信息中继给源发送方。
下面介绍一下本发明实施例是如何实现MTU发现机制的。
将ICMP报文的类型设置为上述数据报太大(Datagram Too Big)(Type 3,Code 4),则可以实现GRE隧道的MTU发现机制。
源发送方构建向隧道对端地址发出的ICMP报文,携带此ICMP报文的IP协议数据报(即里层IP协议数据报)在封装路由器先进行GRE协议封装,再进行IP协议封装。将封装后的IP协议数据报的的大小设为隧道对端地址的出口路由的接口MTU,并将外层IP协议头中不允许分片标记(DF)置为有效(说明此IP协议数据报不允许分片)。如果在路由的途中有路由器因为数据报太大,而又不能对它分片(因为标记了DF位),将数据报丢弃,则此丢弃数据报的路由器会向封装路由器返回一个ICMP报文,此报文包含一个标记:需要被分片,但DF位被设置为有效。如果此丢弃数据报的路由器支持MTU识别技术,则在该ICMP报头中下一跳(Next-Hop)MTU区(16个字节)填入准确的MTU值(此值不小于68字节),封装路由器收到携带此ICMP报文的IP协议数据报后,Next-Hop MTU区减去正封装的IP协议头的大小和GRE协议头的大小,中继给源发送方。如此下去,直到到达对端。这样,源发送方就可以知道隧道的MTU。
当知道隧道的MTU后,源发送方可以将出接口设为隧道的MTU和本端MTU中较小的值,因此可以减少分片,在封装后只执行一次。阻止对一个数据报进行的多次分片,提高拆分方和隧道内部的处理效率。
封装方不可能把所有ICMP报文信息中继给源发送方。如果源发送方正在进行路径MTU发现,那么要求封装方知道隧道的MTU。任何来自隧道内部的数据报太大(Datagram Too Big)信息都被返回到封装方,通过维护隧道MTU封装方可以把正确的数据报太大信息返回给源发送方,以支持它的MTU发现机制。在这种情况下,由封装方发送给源发送方的MTU应该是隧道的MTU减去正封装的IP协议头和GRE协议头的大小。源发送方将出接口设置为隧道返回的MTU值,避免最初IP协议数据报被封装方分片。
下面介绍一下本发明实施例提供的装置。
参见图5,本发明实施例提供的一种实现GRE协议兼容IP in IP协议的装置包括:解封装单元501、判定单元502和ICMP处理单元503。
所述解封装单元501,用于对IP协议数据报进行解封装,得到里层IP协议数据报,其中,所述IP协议数据报是通过对所述里层IP协议数据报先进行GRE协议封装,再进行IP协议封装得到的。
所述判定单元502,用于当确定所述里层IP协议数据报携带ICMP报文时,触发所述ICMP处理单元503。
所述ICMP处理单元503,用于当接收到所述判定单元502的触发时,对所述ICMP报文进行处理。
所述解封装单元501包括:IP解封装单元5011和GRE解封装单元5012。
所述IP解封装单元5011,用于对所述IP协议数据报进行IP协议解封装,去掉外层IP协议头,得到GRE协议封装数据报。
所述GRE解封装单元5012,用于对所述GRE协议封装数据报进行GRE协议解封装,去掉GRE协议头,得到里层IP协议数据报。
所述ICMP处理单元503,根据所述ICMP报文的类型,对该ICMP报文进行相应处理。
当所述ICMP报文为数据报太大类型的ICMP报文时,可以实现GRE隧道的MTU发现机制。
综上所述,本发明实施例对解封装后得到的里层IP协议数据报进行判断,当该里层IP协议数据报携带ICMP报文时,对ICMP报文进行相应处理,使得GRE支持处理ICMP报文,进而实现拥塞控制、重定向等操作。并且,当该ICMP报文的为数据报太大(Datagram Too Big)类型的ICMP报文时,还可以实现GRE隧道的MTU发现机制。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (9)
1.一种实现通用路由封装GRE协议兼容IP in IP协议的方法,其特征在于,该方法包括:
对IP协议数据报进行IP协议解封装,去掉外层IP协议头,得到GRE协议数据报;对所述GRE协议数据报进行GRE协议解封装,去掉GRE协议头,得到里层IP协议数据报,当确定该里层IP协议数据报携带网际控制报文协议ICMP报文时,对该ICMP报文进行处理;
其中,所述IP协议数据报是通过对所述里层IP协议数据报先进行GRE协议封装,再进行IP协议封装得到的。
2.根据权利要求1所述的方法,其特征在于,当所述里层IP协议数据报的封装协议标志域的值为ICMP协议的编号时,确定所述里层IP协议数据报携带ICMP报文。
3.根据权利要求1所述的方法,其特征在于,根据所述ICMP报文的类型,对该ICMP报文进行相应处理。
4.根据权利要求3所述的方法,其特征在于,所述ICMP报文为数据报太大类型的ICMP报文。
5.一种实现通用路由封装GRE协议兼容IP in IP协议的装置,其特征在于,该装置包括:解封装单元、判定单元和ICMP处理单元;
所述解封装单元,用于对IP协议数据报进行IP协议解封装,去掉外层IP协议头,得到GRE协议数据报;对所述GRE协议数据报进行GRE协议解封装,去掉GRE协议头,得到里层IP协议数据报,其中,所述IP协议数据报是通过对所述里层IP协议数据报先进行GRE协议封装,再进行IP协议封装得到的;
所述判定单元,用于当确定该里层IP协议数据报携带网际控制报文协议ICMP报文时,触发所述ICMP处理单元;
所述ICMP处理单元,用于当接收到所述判定单元的触发时,对该ICMP报文进行处理。
6.根据权利要求5所述的装置,其特征在于,所述解封装单元包括:
IP解封装单元,用于对所述IP协议数据报进行IP协议解封装,去掉外层IP协议头,得到GRE协议数据报;
GRE解封装单元,用于对所述GRE协议数据报进行GRE协议解封装,去掉GRE协议头,得到里层IP协议数据报。
7.根据权利要求5所述的装置,其特征在于,所述判定单元,当判定所述里层IP协议数据报的封装协议标志域的值为ICMP协议的编号时,确定所述里层IP协议数据报携带ICMP报文。
8.根据权利要求5所述的装置,其特征在于,所述ICMP处理单元,根据所述ICMP报文的类型,对该ICMP报文进行相应处理。
9.根据权利要求8所述的装置,其特征在于,所述ICMP报文为数据报太大类型的ICMP报文。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007101634305A CN101150510B (zh) | 2007-10-22 | 2007-10-22 | 一种实现GRE协议兼容IPinIP协议的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007101634305A CN101150510B (zh) | 2007-10-22 | 2007-10-22 | 一种实现GRE协议兼容IPinIP协议的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101150510A CN101150510A (zh) | 2008-03-26 |
CN101150510B true CN101150510B (zh) | 2010-06-02 |
Family
ID=39250859
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007101634305A Expired - Fee Related CN101150510B (zh) | 2007-10-22 | 2007-10-22 | 一种实现GRE协议兼容IPinIP协议的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101150510B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103139035A (zh) * | 2011-11-23 | 2013-06-05 | 中兴通讯股份有限公司 | 一种基于ipv6有线传输网的omcb的接入方法和装置 |
CN103297358B (zh) * | 2012-02-27 | 2016-12-14 | 北京东土科技股份有限公司 | 一种智能电网跨广域网goose报文传输系统及方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005094018A1 (en) * | 2004-03-12 | 2005-10-06 | Telefonaktiebolaget Lm Ericsson (Publ) | Providing higher layer packet / frame boundary information in gre frames |
CN1770766A (zh) * | 2004-11-02 | 2006-05-10 | 华为技术有限公司 | 二层报文传输方法 |
WO2006093392A1 (en) * | 2005-03-04 | 2006-09-08 | Samsung Electronics Co., Ltd. | Method and apparatus for tightly coupled interworking between cellular network and wlan network |
-
2007
- 2007-10-22 CN CN2007101634305A patent/CN101150510B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005094018A1 (en) * | 2004-03-12 | 2005-10-06 | Telefonaktiebolaget Lm Ericsson (Publ) | Providing higher layer packet / frame boundary information in gre frames |
CN1770766A (zh) * | 2004-11-02 | 2006-05-10 | 华为技术有限公司 | 二层报文传输方法 |
WO2006093392A1 (en) * | 2005-03-04 | 2006-09-08 | Samsung Electronics Co., Ltd. | Method and apparatus for tightly coupled interworking between cellular network and wlan network |
Also Published As
Publication number | Publication date |
---|---|
CN101150510A (zh) | 2008-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105577413B (zh) | 操作、管理和维护oam报文处理方法及装置 | |
EP3198822B1 (en) | Computer network packet flow controller | |
EP3255840B1 (en) | Label distribution method and device | |
WO2008092357A1 (fr) | Procédé et dispositif pour établir un tunnel pseudocâblé et transmettre un message à l'aide de celui-ci | |
US9219537B2 (en) | Method and system for transmitting information in relay communication network | |
CN104869065A (zh) | 数据报文处理方法及装置 | |
US20070165603A1 (en) | Access network system, subscriber station device, and network terminal device | |
WO2009012688A1 (fr) | Procédé, système et appareil de réacheminement de message dans un réseau privé virtuel à trois couches | |
CN105591936B (zh) | 一种更新转发表项的方法和装置 | |
JP2007104440A (ja) | パケット伝送システム、トンネリング装置およびパケット伝送方法 | |
CN102624723B (zh) | 一种实现显式拥塞通告的方法及设备 | |
WO2016050177A1 (zh) | 确定隧道最大传输单元的方法、网络设备和系统 | |
CN103067278B (zh) | 一种数据帧的传输处理方法、设备及系统 | |
CN105515816A (zh) | 检测层次信息的处理方法及装置 | |
CN103200107B (zh) | 一种报文的传输方法和设备 | |
CN106921473A (zh) | 一种轨道交通无线局域网的数据传输方法及相关设备 | |
CN106059885A (zh) | 无线控制器对capwap报文的处理方法和系统 | |
CN101150510B (zh) | 一种实现GRE协议兼容IPinIP协议的方法及装置 | |
US20130329733A1 (en) | Method, apparatus and system for processing a tunnel packet | |
CN103812745B (zh) | L2vpn网络中的伪线创建方法及运营商网络边缘设备 | |
CN102821051B (zh) | 通用路由封装隧道中路径最大传输单元更改方法 | |
CN113518477A (zh) | 在有线接入上针对5g客户端设备支持多个pdu会话 | |
CN107835126B (zh) | 一种报文转发方法及系统 | |
CN113542095B (zh) | 一种设备及其恢复隧道的方法 | |
JP3936319B2 (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100602 Termination date: 20211022 |