CN101848171A - 一种基于gre隧道的数据传输方法、设备和系统 - Google Patents
一种基于gre隧道的数据传输方法、设备和系统 Download PDFInfo
- Publication number
- CN101848171A CN101848171A CN201010214003A CN201010214003A CN101848171A CN 101848171 A CN101848171 A CN 101848171A CN 201010214003 A CN201010214003 A CN 201010214003A CN 201010214003 A CN201010214003 A CN 201010214003A CN 101848171 A CN101848171 A CN 101848171A
- Authority
- CN
- China
- Prior art keywords
- data message
- stream label
- gre tunneling
- table item
- head
- 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
Links
Images
Abstract
本发明公开了一种基于GRE隧道的数据传输方法,包括以下步骤:根据第一数据报文GRE隧道流标签转发表项,发送端删除所述第一数据报文的自带IP头并封装成带有流标签的第二数据报文,然后将所述第二数据报文发送给所述接收端;所述接收端收到所述第二数据报文,根据所述第一数据报文GRE隧道流标签转发表项,对所述第二数据报文解封装并重新封装成所述第一数据报文后进行转发。本发明中,减少加封装后所增加的报文字节,提高GRE隧道的数据传输效率,并解决了数据报文无法经过GRE隧道进行传输的问题。
Description
技术领域
本发明涉及通信技术领域,特别是涉及一种基于GRE隧道的数据传输方法、设备和系统。
背景技术
GRE(Generic Routing Encapsulation,通用路由封装)协议是一种封装协议,GRE提供了将一种网络层协议(例如,IP,IPX,AppleTalk等)的数据报文封装在另一种协议的报文中的机制,并使封装后的报文能够在另一个网络层协议(例如,IP)中进行传输。其中,报文进行传输的通道称为Tunnel(隧道)。
具体的,Tunnel是一个虚拟的点对点连接,提供了一条能够使封装的数据报文进行传输的通路,其中,在使用Tunnel进行报文传输时,需要在Tunnel的两端分别对数据报文进行封装及解封装。
如图1所示的Net(Network,网络)1和Net2通过GRE隧道互联的示意图,GRE采用了Tunnel技术,是VPN(Virtual Private Network,虚拟专用网络)的第三层隧道协议,其中,GRE隧道不能配置二层信息,但可以配置IP地址,GRE可以利用为隧道指定的实际物理接口完成转发。
在图1中,所有发送到Net2的原始报文,将首先被发送到隧道源端,隧道源端将根据报文头中的目的地址域来确定如何路由该原始报文。其中,该原始报文的目的地址为Net2的网段地址,需要经过Tunnel接口,此时,设备需要将该原始报文发送给相应的Tunnel接口。另外,原始报文需要在隧道源端进行GRE封装,填写隧道创建时确定的隧道源地址和目的地址,然后通过公共IP网络转发到远端的VPN网络。
具体的,在对原始报文进行GRE封装时,其封装过程如图2所示的示意图,在图2中,原始数据包可以是IP报文,也可以是其它的协议报文,例如,IPX报文、PPP(Point to Point Protocol,点对点协议)、MPLS(Multi-ProtocolLabel Switching,多协议标签交换)等。
当隧道远端接收到IP报文后,将检查目的地址和外层IP报文头部中的协议号。如果发现是本地路由器,外层协议号是47(GRE协议号)时,则剥掉该报文的IP报头,并交给GRE协议进行相应处理(例如,进行检验密钥、检查校验和及报文的序列号等处理)。进一步的,GRE协议完成解封装处理后得到原始报文,并根据原始报文进行后续的转发处理。
GRE报文头以RFC1701定义的GRE头部格式为基础,如表1所示的GRE报文头部格式。
表1
在表1中,C、R、K、S、s为GRE报文头部的最前5位,是一些标志位,其含义如表2所示。
表2
另外,在表1中,其他字段含义如下:
Recur:bits 5-7,Recur域是记录允许的封装次数的计数器。其中,GRE提供了一种特定的机制来防止递归封装,如果路由器想对经过GRE封装的数据报文作进一步封装,应在封装前检查这个域。如果Recur域为非0,则数据报文还可以进行封装,新的GRE报头中的Recur域取值将减1;否则,如果Recur域的值已经是0了,则该数据报文不可以再进行封装。
Flags:bits 8-12,暂没有定义,保留。
Ver:bits 13-15,版本号。
Protocol Type:2byte,Protocol Type指出GRE报文净荷的协议类型,IP是0x0800,Novell IPX是0x8137。
Offset:2byte,Offset域指出Routing域到净荷的字节偏移。
Checksum:2byte,Checksum包括GRE头部和净荷的IP校验和,当Checksum Present位为1时,Checksum域有效。
Key:4byte,Key域用来标识隧道内部单个的业务流,属于同一个业务流的数据报文使用同一个Key值来封装,隧道的拆封点根据Key域的值识别属于某个业务流的数据报文,当Key Present位为1时,KEY域有效。
Sequence Number:4byte,Sequence Number域用来维持GRE隧道内数据报文的顺序,当Sequence Number Present位为1时,Sequence Number域有效。
Routing:4byte,Routing域是可选的,当Routing Present位为1时,Routing域有效。
Payload:净荷,GRE所封装的协议报文。
可以看出,通过GRE隧道进行传输的所有报文均需要在隧道头部进行加封装,其中,需要传输的数据报文为净荷,加封装后新添加的IP头至少为20个字节,GRE头为8至16个字节,因此,GRE隧道每传输一份数据报文,附加的报文头至少需要48字节(2个IP头和1个GRE头对应的字节数)。
由于现有的GRE方式传输数据报文需要携带两个IP头和一个GRE头,GRE隧道的传输效率较低,设备隧道接口的MTU(Maximum TransmissionUnit,最大传输单元)越小时,传输效率就越低。在设备发送数据报文较大的情况下,如果加封装后的数据报文超过设备接口的MTU阈值,则该数据报文无法正常传输。
此时,如果设备不支持分片,将导致数据报文的传输中断;如果设备支持分片,GRE隧道将传输大量的数据碎片报文,继而导致传输效率将进一步下降,隧道尾部需要对数据报文进行重组合后解封装,将导致隧道传输数据乱序、抖动等网络问题。
发明内容
本发明提供一种基于GRE隧道的数据传输方法、设备和系统,以减少加封装后所增加的报文字节,提高GRE隧道的数据传输效率。
为了达到上述目的,本发明提出了一种基于通用路由封装GRE隧道的数据传输方法,应用于包括发送端和接收端的系统中,所述发送端和所述接收端为GRE隧道的两端,所述发送端向所述接收端发送第一数据报文,所述发送端和所述接收端中存储了第一数据报文GRE隧道流标签转发表项且其状态为Forwarding状态,所述方法包括以下步骤:
根据所述第一数据报文GRE隧道流标签转发表项,所述发送端删除所述第一数据报文的自带IP头并封装成带有流标签的第二数据报文,然后将所述第二数据报文发送给所述接收端;
所述接收端收到所述第二数据报文,根据所述第一数据报文GRE隧道流标签转发表项,对所述第二数据报文解封装并重新封装成所述第一数据报文后进行转发。
所述第一数据报文GRE隧道流标签转发表项的内容包括:GRE隧道的隧道标识、第一数据报文的源IP地址和目的IP地址、流标签、表项状态;
所述第一数据报文GRE隧道流标签转发表项的创建包括以下步骤:
所述发送端为所述第一数据报文分配流标签,根据所述流标签创建所述第一数据报文GRE隧道流标签转发表项;并将所述流标签发送给所述接收端,由所述接收端根据所述流标签,创建所述第一数据报文GRE隧道流标签转发表项。
将所述流标签发送给所述接收端,由所述接收端根据所述流标签,创建所述第一数据报文GRE隧道流标签转发表项,具体包括:
所述发送端判断所述第一数据报文加上新增IP头和GRE头的长度是否超过预设MTU阈值;
如果是,所述发送端向所述接收端发送净荷为空的数据报文,所述净荷为空的数据报文中携带所述第一数据报文的源IP地址和目的IP地址、所述流标签;如果否,所述发送端向所述接收端发送净荷不为空的数据报文,所述净荷不为空的数据报文中携带所述流标签和所述第一数据报文;
所述接收端接收所述净荷为空的数据报文或者所述净荷不为空的数据报文,并根据接收到报文中的源IP地址、目的IP地址和流标签创建所述第一数据报文GRE隧道流标签转发表项,将所述第一数据报文GRE隧道流标签转发表项设置为Forwarding状态,并向所述发送端返回创建成功消息,由所述发送端根据所述创建成功消息将自身记录的所述第一数据报文GRE隧道流标签转发表项设置为Forwarding状态。
所述方法还包括:
在所述发送端和所述接收端创建所述第一数据报文GRE隧道流标签转发表项之后,为所述第一数据报文GRE隧道流标签转发表项设置保活定时器,所述发送端根据所述保活定时器定时向所述接收端发送负荷为空的IP报文,所述负荷为空的IP报文中携带流标签,由所述接收端根据所述负荷为空的IP报文向所述发送端回应成功报文;如果预设第一时间内所述发送端无法接收到所述成功报文,所述发送端将所述第一数据报文GRE隧道流标签转发表项设置为Init状态,并向所述接收端重新发起流标签转发表项同步过程;且
所述第一数据报文GRE隧道流标签转发表项设置老化定时器,如果预设第二时间内没有接收到所述第一数据报文GRE隧道流标签转发表项对应的第一数据报文,所述发送端将所述第一数据报文GRE隧道流标签转发表项设置为Stale状态,并向所述接收端发送流标签回收消息,所述流标签回收消息中携带流标签和流标签转发结束标记;当所述接收端接收到所述流标签回收消息,则根据所述流标签回收消息中的流标签清空对应的第一数据报文GRE隧道流标签转发表项,并向所述发送端回应确认消息;当所述发送端接收到所述确认消息后,清空对应的第一数据报文GRE隧道流标签转发表项。
所述发送端删除所述第一数据报文的自带IP头并封装成带有流标签的第二数据报文,具体包括:
所述发送端删除所述第一数据报文自带IP头,在所述第一数据报文中新增IP头和GRE头,并封装成所述第二数据报文;其中,所述GRE头中携带了所述第一数据报文GRE隧道流标签转发表项中的流标签,所述新增IP头的源IP地址和目的IP地址为GRE隧道接口的源IP地址和目的IP地址,且所述新增IP头中携带了从所述第一数据报文自带IP头中复制的域信息;
根据所述第一数据报文GRE隧道流标签转发表项,对所述第二数据报文解封装并重新封装成所述第一数据报文后进行转发,具体包括:
所述接收端将所述第二数据报文解封装去掉所述新增IP头和GRE头,并根据所述GRE头中携带的流标签查找所述第一数据报文GRE隧道流标签转发表项,并根据查找到的所述第一数据报文GRE隧道流标签转发表项中第一数据报文的源IP地址和目的IP地址、以及所述新增IP头中携带的从所述第一数据报文自带IP头中复制的域信息,将解封装后的第二数据报文重新封装成所述第一数据报文后进行转发。
所述发送端删除所述第一数据报文的自带IP头并封装成带有流标签的第二数据报文,具体包括:
所述发送端删除所述第一数据报文自带IP头并封装成带有流标签的第二数据报文;其中,所述新增IP头的源IP地址和目的IP地址为GRE隧道接口的源IP地址和目的IP地址,TOS域字段携带了所述第一数据报文GRE隧道流标签转发表项中的流标签,协议字段为GRE协议类型,且所述新增IP头中携带了从所述第一数据报文自带IP头中复制的域信息;
根据所述第一数据报文GRE隧道流标签转发表项,对所述第二数据报文解封装并重新封装成所述第一数据报文后进行转发,具体包括:
当收到所述第二数据报文后,如果所述第二数据报文的TOS域字段中携带了流标签,则所述接收端将所述第二数据报文解封装去掉所述新增IP头,并根据所述TOS域字段中携带的流标签查找所述第一数据报文GRE隧道流标签转发表项,并根据查找到的所述第一数据报文GRE隧道流标签转发表项中第一数据报文的源IP地址和目的IP地址、以及所述新增IP头中携带的从所述第一数据报文自带IP头中复制的域信息,将解封装后的第二数据报文重新封装成所述第一数据报文后进行转发。
一种基于GRE隧道的发送端,应用于包括所述发送端和接收端的系统中,所述发送端和所述接收端为GRE隧道的两端,所述发送端和所述接收端中存储了第一数据报文GRE隧道流标签转发表项且其状态为Forwarding状态,所述发送端包括:
存储模块,与生成模块连接,用于存储第一数据报文GRE隧道流标签转发表项;
生成模块,分别与存储模块和第一发送模块连接,用于当接收到需要通过GRE隧道进行转发的第一数据报文后,根据所述第一数据报文GRE隧道流标签转发列表,删除所述第一数据报文的自带IP头并封装成带有流标签的第二数据报文;
第一发送模块,与所述生成模块连接,用于将所述第二数据报文发送给所述接收端。
所述第一数据报文GRE隧道流标签转发表项中的内容包括:GRE隧道的隧道标识、第一数据报文的源IP地址和目的IP地址、流标签、表项状态;所述发送端还包括:
处理模块,与所述生成模块连接,用于为所述第一数据报文分配流标签,并根据所述流标签为所述第一数据报文创建第一数据报文GRE隧道流标签转发表项;
第二发送模块,与所述处理模块连接,用于将所述流标签发送给所述接收端,由所述接收端根据所述流标签为所述第一数据报文创建第一数据报文GRE隧道流标签转发表项。
所述第二发送模块,具体用于判断所述第一数据报文加上新增IP头和GRE头的长度是否超过预设MTU阈值;如果是,向所述接收端发送净荷为空的数据报文,所述净荷为空的数据报文中携带所述第一数据报文的源IP地址和目的IP地址、所述流标签;如果否,向所述接收端发送净荷不为空的数据报文,所述净荷不为空的数据报文中携带所述流标签和所述第一数据报文。
所述发送端还包括:
表项维护模块,用于为所述第一数据报文GRE隧道流标签转发表项设置保活定时器,根据所述保活定时器定时向所述接收端发送负荷为空的IP报文,所述负荷为空的IP报文中携带流标签,由所述接收端根据所述负荷为空的IP报文向所述发送端回应成功报文;如果预设第一时间内无法接收到所述成功报文,将所述第一数据报文GRE隧道流标签转发表项设置为Init状态,并向所述接收端重新发起流标签转发表项同步过程;
并为所述第一数据报文GRE隧道流标签转发表项设置老化定时器,如果预设第二时间内没有接收到所述第一数据报文GRE隧道流标签转发表项对应的第一数据报文,将所述第一数据报文GRE隧道流标签转发表项设置为Stale状态,并向所述接收端发送流标签回收消息,所述流标签回收消息中携带流标签和流标签转发结束标记;接收来自所述接收端的确认消息,并清空对应的第一数据报文GRE隧道流标签转发表项。
所述生成模块,具体用于删除所述第一数据报文自带IP头,在所述删除自带IP头的第一数据报文中新增IP头和GRE头,并封装成所述第二数据报文;其中,所述GRE头中携带了所述第一数据报文GRE隧道流标签转发表项中的流标签,所述新增IP头的源IP地址和目的IP地址为GRE隧道接口的源IP地址和目的IP地址,且所述新增IP头中携带了从所述第一数据报文自带IP头中复制的域信息;或者,
删除所述第一数据报文自带IP头,在所述删除自带IP头的第一数据报文中新增IP头,并封装成所述第二数据报文;其中,所述新增IP头的源IP地址和目的IP地址为GRE隧道接口的源IP地址和目的IP地址,TOS域字段携带了所述第一数据报文GRE隧道流标签转发表项中的流标签,协议字段为GRE协议类型,且所述新增IP头中携带了从所述第一数据报文自带IP头中复制的域信息。
一种基于GRE隧道的接收端,应用于包括发送端和所述接收端的系统中,所述发送端和所述接收端为GRE隧道的两端,所述发送端向所述接收端发送第一数据报文,所述发送端和所述接收端中存储了第一数据报文GRE隧道流标签转发表项且其状态为Forwarding状态,所述接收端包括:
存储模块,分别与第一接收模块和第二接收模块连接,用于存储第一数据报文GRE隧道流标签转发表项;
第一接收模块,分别与存储模块和创建模块连接,用于当存储模块没有存储对应的第一数据报文GRE隧道流标签转发表项时,接收来自所述发送端的流标签;
创建模块,与所述第一接收模块连接,用于根据所述流标签为所述第一数据报文创建第一数据报文GRE隧道流标签转发表项;
第二接收模块,与所述存储模块连接,用于当存储模块存储了对应的第一数据报文GRE隧道流标签转发表项时,接收第二数据报文,所述第二数据报文为所述发送端删除所述第一数据报文的自带IP头并封装成带有流标签的数据报文。
所述第一数据报文GRE隧道流标签转发表项的内容包括:GRE隧道的隧道标识、第一数据报文的源IP地址和目的IP地址、流标签、表项状态;
所述创建模块,具体用于当接收到净荷为空的数据报文或者净荷不为空的数据报文时,根据接收到报文中的源IP地址、目的IP地址和流标签为所述第一数据报文创建第一数据报文GRE隧道流标签转发表项,将所述第一数据报文GRE隧道流标签转发表项设置为Forwarding状态,并向所述发送端返回创建成功消息,由所述发送端根据所述创建成功消息将自身记录的所述第一数据报文GRE隧道流标签转发表项设置为Forwarding状态。
还包括:
表项维护模块,用于为所述第一数据报文GRE隧道流标签转发表项设置保活定时器,当接收到来自发送端的负荷为空的IP报文时,根据所述负荷为空的IP报文向所述发送端回应成功报文;所述负荷为空的IP报文中携带流标签;
并为所述第一数据报文GRE隧道流标签转发表项设置老化定时器,当接收到来自发送端的流标签回收消息时,则根据所述流标签回收消息中的流标签清空对应的第一数据报文GRE隧道流标签转发表项,并向所述发送端回应确认消息;所述流标签回收消息中携带流标签和流标签转发结束标记。
还包括:
处理模块,与所述第二接收模块连接,用于当确定所述第二数据报文的GRE头中携带了流标签时,将所述第二数据报文解封装去掉新增IP头和GRE头,并根据所述GRE头中携带的流标签查找所述第一数据报文GRE隧道流标签转发表项,并根据查找到的所述第一数据报文GRE隧道流标签转发表项中第一数据报文的源IP地址和目的IP地址、以及所述新增IP头中携带的从所述第一数据报文自带IP头中复制的域信息,将解封装后的第二数据报文重新封装成所述第一数据报文;或者,
当确定所述第二数据报文的协议类型为GRE类型,且所述第二数据报文的TOS域字段中携带了流标签时,将所述第二数据报文解封装去掉新增IP头,并根据所述TOS域字段中携带的流标签查找所述第一数据报文GRE隧道流标签转发表项,并根据查找到的所述第一数据报文GRE隧道流标签转发表项中第一数据报文的源IP地址和目的IP地址、以及所述新增IP头中携带的从所述第一数据报文自带IP头中复制的域信息,将解封装后的第二数据报文重新封装成所述第一数据报文。
一种基于GRE隧道的数据传输系统,包括发送端和接收端,所述发送端和所述接收端为GRE隧道的两端,所述发送端向所述接收端发送第一数据报文,所述发送端和所述接收端中存储了第一数据报文GRE隧道流标签转发表项且其状态为Forwarding状态;
所述发送端,用于根据所述第一数据报文GRE隧道流标签转发表项,删除所述第一数据报文的自带IP头并封装成带有流标签的第二数据报文,然后将所述第二数据报文发送给所述接收端;
所述接收端,用于收到所述第二数据报文,根据所述第一数据报文GRE隧道流标签转发表项,对所述第二数据报文解封装并重新封装成第一数据报文后转发。
与现有技术相比,本发明具有以下优点:
通过为源IP地址和目的IP地址相同的数据报文分配唯一的流标签,并根据该流标签创建第一数据报文GRE隧道流标签转发表项,从而可以根据该第一数据报文GRE隧道流标签转发表项进行数据报文的传输,减少加封装后所增加的报文字节,提高GRE隧道的数据传输效率,并解决了数据报文无法经过GRE隧道进行传输的问题。
附图说明
图1为现有技术中Net1和Net2通过GRE隧道互联的示意图;
图2为现有技术中对原始报文进行GRE封装的示意图;
图3为本发明提出的一种基于GRE隧道的数据传输方法流程图;
图4为本发明提出的一种应用场景示意图;
图5为本发明应用场景下所提出的一种基于GRE隧道的数据传输方法流程图;
图6为本发明提出的一种发送端的结构图;
图7为本发明提出的一种接收端的结构图。
具体实施方式
本发明中,通过为源IP地址和目的IP地址相同的数据报文分配唯一的流标签,并根据该流标签创建第一数据报文GRE隧道流标签转发表项,从而可以根据该第一数据报文GRE隧道流标签转发表项进行数据报文的传输,减少加封装后所增加的报文字节,提高GRE隧道的数据传输效率。
本发明提供一种基于GRE隧道的数据传输方法,应用于包括发送端和接收端的系统中,所述发送端和所述接收端为GRE隧道的两端,所述发送端向所述接收端发送第一数据报文,所述发送端和所述接收端中存储了第一数据报文GRE隧道流标签转发表项且其状态为Forwarding状态,如图3所示,该方法包括以下步骤:
步骤301,根据所述第一数据报文GRE隧道流标签转发表项,所述发送端删除所述第一数据报文的自带IP头并封装成带有流标签的第二数据报文,然后将所述第二数据报文发送给所述接收端。
步骤302,所述接收端收到所述第二数据报文,根据所述第一数据报文GRE隧道流标签转发表项,对所述第二数据报文解封装并重新封装成所述第一数据报文后进行转发。
为了更加清楚的阐述本发明提供的技术方案,以下结合图4所示的应用场景对本发明进行详细说明。在图4中,GRE隧道A端和GRE隧道B端为GRE隧道的两端,在实际应用中,GRE隧道A端可以作为发送端或者接收端,而GRE隧道B端对应的可以作为接收端或者发送端,本应用场景下以GRE隧道A端为发送端为例进行说明。
如图5所示,该基于GRE隧道的数据传输方法包括以下步骤:
步骤501,发送端接收需要通过GRE隧道进行转发的数据报文。
本应用场景下,为了和后续其他类型的数据报文进行区分,本步骤中将该数据报文作为第一数据报文。
步骤502,发送端查询是否记录了该第一数据报文对应的第一数据报文GRE隧道流标签转发表项。如果否,转到步骤503,如果是,转到步骤507。其中,GRE隧道流标签转发表项的内容包括但不限于:GRE隧道的隧道标识、源IP地址和目的IP地址、流标签、表项状态。
具体的,本发明中,根据第一数据报文的源IP地址和目的IP地址,发送端可以为该第一数据报文分配流标签,而所分配的流标签对于GRE隧道来说是唯一的,从而可以根据该流标签确定第一数据报文的源IP地址和目的IP地址。
而基于该流标签、以及第一数据报文的源IP地址和目的IP地址,发送端能够为该第一数据报文创建对应的第一数据报文GRE隧道流标签转发表项,,该第一数据报文GRE隧道流标签转发表项的创建过程将在后续步骤中详细说明,本步骤中不再赘述。
本应用场景下,GRE隧道A端需要获取第一数据报文的源IP地址和目的IP地址,并根据第一数据报文的源IP地址和目的IP地址查询第一数据报文GRE隧道流标签转发列表中第一数据报文的源IP地址和目的IP地址,如果有匹配的记录,记录了第一数据报文对应的GRE隧道流标签转发表项,如果没有匹配的记录,没有记录第一数据报文对应的GRE隧道流标签转发表项。
步骤503,发送端为第一数据报文分配流标签,并根据流标签为第一数据报文创建第一数据报文GRE隧道流标签转发表项。其中,发送端需要根据第一数据报文的源IP地址和目的IP地址为第一数据报文分配唯一的流标签。
如表3所示的GRE隧道流标签转发列表,该GRE隧道流标签转发列表中记录了各个第一数据报文对应的第一数据报文GRE隧道流标签转发表项。
表3
隧道ID | GRE转发流 | 流标签 | 表项状态 |
1 | 源IP地址1和目的IP地址1 | 1 | Forwarding |
1 | 源IP地址2和目的IP地址2 | 2 | Init |
可以看出,隧道ID可标识该GRE隧道,以根据第一数据报文的源IP地址(源IP地址2)和目的IP地址(目的IP地址2)为第一数据报文分配唯一的流标签2为例,则可以创建表3所示的第一数据报文GRE隧道流标签转发表项,此时,该GRE隧道流标签转发表项的表项状态为Init状态。
步骤504,发送端将流标签发送给接收端。
本应用场景下,当发送端的第一数据报文GRE隧道流标签转发表项创建完成后,该发送端需要向接收端发送流标签。
具体的,发送端需要判断接收到的第一数据报文加上新增IP头和GRE头的长度是否超过预设MTU阈值,(该预设MTU阈值可以根据实际需要进行选择,可默认为接口MTU值减去新增IP头长度和GRE头长度,也可进行人为设置)。
如果是,发送端向接收端发送净荷为空的数据报文,该净荷为空的数据报文中携带源IP地址、目的IP地址和流标签。优选的,该净荷为空的数据报文中可以携带新增IP头、GRE头和第一数据报文自带IP头,其中,第一数据报文自带IP头中携带源IP地址和目的IP地址(该源IP地址和目的IP地址为流标签对应的源IP地址和目的IP地址),GRE头中携带流标签,该流标签包括:第一数据报文GRE隧道流标签转发表项中的流标签、以及流标签转发开始标记。
如果否,发送端向接收端发送净荷不为空的数据报文,净荷不为空的数据报文中携带源IP地址、目的IP地址、流标签和第一数据报文的净荷。优选的,发送端需要在第一数据报文头部新增IP头和GRE头,该第一数据报文的自带IP头和数据报文净荷保持不变。其中,该新增IP头的源IP地址和目的IP地址为GRE隧道的接口源IP地址和目的IP地址,GRE头中携带流标签,该流标签包括:第一数据报文GRE隧道流标签转发表项中的流标签、以及流标签转发开始标记。
当然,在实际应用中,还可以使用其他部分携带源IP地址、目的IP地址和流标签,例如,当该净荷为空的数据报文或者净荷不为空的数据报文中只携带新增IP头和第一数据报文自带IP头时,还可以通过新增IP头携带流标签,本发明中不再详加赘述。
步骤505,接收端根据流标签为第一数据报文创建第一数据报文GRE隧道流标签转发表项。
具体的,在接收端中同样存储了如表3所示的GRE隧道流标签转发列表,本步骤中,接收端需要根据流标签为第一数据报文创建对应的第一数据报文GRE隧道流标签转发表项。
本步骤中,当接收到净荷为空的数据报文或者净荷不为空的数据报文后,接收端需要根据接收到报文中的源IP地址、目的IP地址和流标签为第一数据报文创建第一数据报文GRE隧道流标签转发表项,并将第一数据报文GRE隧道流标签转发表项设置为Forwarding状态。
步骤506,接收端向发送端返回创建成功消息,发送端根据创建成功消息将GRE隧道流标签转发表项设置为Forwarding状态。其中,该创建成功消息中包含IP头和GRE头,且该GRE头中携带同样的流标签。
发送端之前创建第一数据报文GRE隧道流标签转发表项时,将第一数据报文GRE隧道流标签转发表项设置为Init状态,本步骤中,当接收到创建成功消息后,发送端确定第一数据报文GRE隧道流标签转发表项创建成功,并将第一数据报文GRE隧道流标签转发表项设置为Forwarding状态。
需要说明的是,为了对GRE隧道流标签转发表项进行合理的优化,本发明中,还需要在发送端和接收端分别为第一数据报文GRE隧道流标签转发表项设置保活定时器和/或老化定时器。
(1)第一数据报文GRE隧道流标签转发表项设置保活定时器。
本应用场景下,发送端根据保活定时器定时向接收端发送负荷为空的IP报文,其中,负荷为空的IP报文中携带流标签,接收端根据负荷为空的IP报文向发送端回应成功报文。
如果预设第一时间内(即一定周期内)发送端无法接收到该回应的成功报文,则发送端确定接收端出现异常或者第一数据报文GRE隧道流标签转发表项出现不同步,此时,发送端需要将第一数据报文GRE隧道流标签转发表项设置为Init状态,并向接收端重新发起流标签转发表项同步过程(即上述步骤504-步骤506中的过程)。
(2)第一数据报文GRE隧道流标签转发表项设置老化定时器(即流标签老化定时器)。
本应用场景下,如果预设第二时间内没有接收到第一数据报文GRE隧道流标签转发表项对应的第一数据报文,则确定需要将对应的流标签进行回收,此时,发送端需要将GRE隧道流标签转发表项设置为Stale状态,并向接收端发送流标签回收消息,该流标签回收消息中携带流标签和流标签转发结束标记(例如,可以通过GRE头进行携带)。
当接收端接收到流标签回收消息后,则需要根据流标签回收消息中的流标签清空对应的流标签转发表项,并向发送端回应确认消息。而当发送端接收到该确认消息后,则清空对应的流标签转发表项。此时,GRE隧道两端的第一数据报文GRE隧道流标签转发表项保持同步清空。
需要注意的是,在发送端将第一数据报文GRE隧道流标签转发表项设置为Stale状态,且发送端尚未清空对应的流标签转发表项时,如果发送端接收到第一数据报文GRE隧道流标签转发表项对应的第一数据报文,则发送端将第一数据报文GRE隧道流标签转发表项的表项状态转为Init状态,并进入第一数据报文GRE隧道流标签转发表项的创建阶段,此时,不需要分配新的流标签。
另外,如果接收端的老化定时器先到期,则也会执行与发送端相应的处理方式,在此不再赘述。
步骤507,发送端根据第一数据报文GRE隧道流标签转发表项和第一数据报文生成第二数据报文。
具体的,当需要经过GRE隧道进行转发的第一数据数据报文到达发送端之后,如果不存在对应的第一数据报文GRE隧道流标签转发表项或者第一数据报文GRE隧道流标签转发表项不是Forwarding状态,则按照现有的GRE隧道流程进行处理,该处理过程本发明中不再赘述。如果存在对应的第一数据报文GRE隧道流标签转发表项且第一数据报文GRE隧道流标签转发表项为Forwarding状态时,发送端需要根据第一数据报文GRE隧道流标签转发表项对数据报文进行相应处理。以上述的第一数据报文为例,则发送端需要根据该第一数据报文和第一数据报文GRE隧道流标签转发表项生成第二数据报文。
第一种情况:
当接收到第一数据报文后,发送端删除第一数据报文自带IP头,并在第一数据报文中新增IP头和GRE头,从而生成第二数据报文。其中,GRE头中携带了第一数据报文GRE隧道流标签转发表项中的流标签,新增IP头的源IP地址和目的IP地址为GRE隧道接口的源IP地址和目的IP地址,且新增IP头中携带了从第一数据报文自带IP头中复制的域信息。
具体的,新增IP头中还携带了其他字段,该其他字段包括但不限于:TOS(服务类型)域、标识域、标记域、TTL(生存时间)域等字段,而该其他字段中的信息均可以从第一数据报文自带IP头中进行复制,即从第一数据报文自带IP头的各个域中复制相关信息。
另外,需要注意的是,对于无法从第一数据报文自带IP头中进行复制的字段(例如,校验和字段),可以在接收端进行重封装时重新校验。
第二种情况:
在不需要QoS(服务质量)功能,TOS域字段闲置的小型网络中,当接收到第一数据报文后,发送端删除第一数据报文自带IP头,并在第一数据报文中新增IP头,从而生成第二数据报文。其中,新增IP头的源IP地址和目的IP地址为GRE隧道接口的源IP地址和目的IP地址,TOS域字段携带了GRE隧道流标签转发表项中的流标签,协议字段为GRE协议类型,且新增IP头中携带了从第一数据报文自带IP头中复制的域信息。
具体的,新增IP头中还携带了其他字段,该其他字段包括但不限于:标识域、标记域、TTL(生存时间)域等字段,而该其他字段中的信息均可以从第一数据报文自带IP头中进行复制,即从第一数据报文自带IP头的各个域中复制相关信息。
另外,需要注意的是,对于无法从第一数据报文自带IP头中进行复制的字段(例如,校验和字段),可以在接收端进行重封装时重新校验。
步骤508,发送端将第二数据报文发送给接收端。
步骤509,接收端对第二数据报文进行解封装,并根据第一数据报文GRE隧道流标签转发表项还原成第一数据报文。
针对上述步骤507中的第一种情况:
当接收到第二数据报文后,接收端根据GRE头是否携带了流标签来判断是否进行流标签转发。如果第二数据报文的GRE头中携带了流标签时,接收端将第二数据报文解封装去掉新增IP头和GRE头,并根据GRE头中携带的流标签查找第一数据报文GRE隧道流标签转发表项,并根据查找到的第一数据报文GRE隧道流标签转发表项中的源IP地址和目的IP地址将解封装后的第二数据报文重新封装还原成第一数据报文。
其中,在还原成第一数据报文的过程中,TOS域、标识域、标记域、TTL域的相关信息均可以从接收到的第二数据报文的IP头中进行复制,而校验和等字段需要重新进行计算。
针对上述步骤507中的第二种情况:
当接收到第二数据报文后,接收端需要根据IP报文所携带的协议类型是否为GRE类型来判断是否需要进行报文的重封装,如果是GRE类型,则需要解析TOS域字段所携带的流标签信息来判断是否进行流标签转发。当确定第二数据报文的协议类型为GRE类型,且第二数据报文的TOS域字段中携带了流标签时,接收端将第二数据报文解封装去掉新增IP头,并根据TOS域字段中携带的流标签查找GRE隧道流标签转发表项,并根据查找到的第一数据报文GRE隧道流标签转发表项中的源IP地址和目的IP地址将解封装后的第二数据报文重新封装成第一数据报文。
其中,在还原成第一数据报文的过程中,TOS域、标识域、标记域、TTL域的相关信息均可以从接收到的第二数据报文的IP头中进行复制,而校验和等字段需要重新进行计算。
需要说明的是,在根据GRE头或者TOS域字段中携带的流标签查找GRE隧道流标签转发表项时,如果未找到该流标签对应的第一数据报文GRE隧道流标签转发表项,该接收端确定需要将对应的流标签进行回收,此时,接收端还需要向发送端发送流标签回收消息。而当发送端接收到该流标签回收消息后,将对应的第一数据报文GRE隧道流标签转发表项设置为Init状态,并向接收端重新发起流标签转发表项同步过程(即上述步骤504-步骤506中的过程),以保证GRE隧道两端的第一数据报文GRE隧道流标签转发表项能够同步。
基于与上述方法同样的发明构思,本发明还提出了一种基于GRE隧道的发送端,应用于包括所述发送端和接收端的系统中,所述发送端和所述接收端为GRE隧道的两端,所述发送端和所述接收端中存储了第一数据报文GRE隧道流标签转发表项且其状态为Forwarding状态,如图6所示,所述发送端包括:
存储模块11,与生成模块12连接,用于存储第一数据报文GRE隧道流标签转发表项;
生成模块12,分别与存储模块11和第一发送模块13连接,用于当接收到需要通过GRE隧道进行转发的第一数据报文后,根据所述第一数据报文GRE隧道流标签转发列表,删除所述第一数据报文的自带IP头并封装成带有流标签的第二数据报文;
第一发送模块13,与所述生成模块12连接,用于将所述第二数据报文发送给所述接收端。
所述第一数据报文GRE隧道流标签转发表项中的内容包括:GRE隧道的隧道标识、第一数据报文的源IP地址和目的IP地址、流标签、表项状态;所述发送端还包括:
处理模块14,与所述生成模块12连接,用于为所述第一数据报文分配流标签,并根据所述流标签为所述第一数据报文创建第一数据报文GRE隧道流标签转发表项;
第二发送模块15,与所述处理模块14连接,用于将所述流标签发送给所述接收端,由所述接收端根据所述流标签为所述第一数据报文创建第一数据报文GRE隧道流标签转发表项。
所述第二发送模块15,具体用于判断所述第一数据报文加上新增IP头和GRE头的长度是否超过预设MTU阈值;如果是,向所述接收端发送净荷为空的数据报文,所述净荷为空的数据报文中携带所述第一数据报文的源IP地址和目的IP地址、所述流标签;如果否,向所述接收端发送净荷不为空的数据报文,所述净荷不为空的数据报文中携带所述流标签和所述第一数据报文。
所述发送端还包括:
表项维护模块16,用于为所述第一数据报文GRE隧道流标签转发表项设置保活定时器,根据所述保活定时器定时向所述接收端发送负荷为空的IP报文,所述负荷为空的IP报文中携带流标签,由所述接收端根据所述负荷为空的IP报文向所述发送端回应成功报文;如果预设第一时间内无法接收到所述成功报文,将所述第一数据报文GRE隧道流标签转发表项设置为Init状态,并向所述接收端重新发起流标签转发表项同步过程;
并为所述第一数据报文GRE隧道流标签转发表项设置老化定时器,如果预设第二时间内没有接收到所述第一数据报文GRE隧道流标签转发表项对应的第一数据报文,将所述第一数据报文GRE隧道流标签转发表项设置为Stale状态,并向所述接收端发送流标签回收消息,所述流标签回收消息中携带流标签和流标签转发结束标记;接收来自所述接收端的确认消息,并清空对应的第一数据报文GRE隧道流标签转发表项。
所述生成模块12,具体用于删除所述第一数据报文自带IP头,在所述删除自带IP头的第一数据报文中新增IP头和GRE头,并封装成所述第二数据报文;其中,所述GRE头中携带了所述第一数据报文GRE隧道流标签转发表项中的流标签,所述新增IP头的源IP地址和目的IP地址为GRE隧道接口的源IP地址和目的IP地址,且所述新增IP头中携带了从所述第一数据报文自带IP头中复制的域信息;或者,
删除所述第一数据报文自带IP头,在所述删除自带IP头的第一数据报文中新增IP头,并封装成所述第二数据报文;其中,所述新增IP头的源IP地址和目的IP地址为GRE隧道接口的源IP地址和目的IP地址,TOS域字段携带了所述第一数据报文GRE隧道流标签转发表项中的流标签,协议字段为GRE协议类型,且所述新增IP头中携带了从所述第一数据报文自带IP头中复制的域信息。
其中,本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。
基于与上述方法同样的发明构思,本发明还提出了一种基于GRE隧道的接收端,应用于包括发送端和所述接收端的系统中,所述发送端和所述接收端为GRE隧道的两端,所述发送端向所述接收端发送第一数据报文,所述发送端和所述接收端中存储了第一数据报文GRE隧道流标签转发表项且其状态为Forwarding状态,如图7所示,所述接收端包括:
存储模块21,分别与第一接收模块22和第二接收模块24连接,用于存储第一数据报文GRE隧道流标签转发表项;
第一接收模块22,分别与存储模块21和创建模块23连接,用于当存储模块没有存储对应的第一数据报文GRE隧道流标签转发表项时,接收来自所述发送端的流标签;
创建模块23,与所述第一接收模块22连接,用于根据所述流标签为所述第一数据报文创建第一数据报文GRE隧道流标签转发表项;
第二接收模块24,与所述存储模块21连接,用于当存储模块21存储了对应的第一数据报文GRE隧道流标签转发表项时,接收第二数据报文,所述第二数据报文为所述发送端删除所述第一数据报文的自带IP头并封装成带有流标签的数据报文。
所述第一数据报文GRE隧道流标签转发表项的内容包括:GRE隧道的隧道标识、第一数据报文的源IP地址和目的IP地址、流标签、表项状态;
所述创建模块23,具体用于当接收到净荷为空的数据报文或者净荷不为空的数据报文时,根据接收到报文中的源IP地址、目的IP地址和流标签为所述第一数据报文创建第一数据报文GRE隧道流标签转发表项,将所述第一数据报文GRE隧道流标签转发表项设置为Forwarding状态,并向所述发送端返回创建成功消息,由所述发送端根据所述创建成功消息将自身记录的所述第一数据报文GRE隧道流标签转发表项设置为Forwarding状态。
所述接收端还包括:
表项维护模块25,用于为所述第一数据报文GRE隧道流标签转发表项设置保活定时器,当接收到来自发送端的负荷为空的IP报文时,根据所述负荷为空的IP报文向所述发送端回应成功报文;所述负荷为空的IP报文中携带流标签;
并为所述第一数据报文GRE隧道流标签转发表项设置老化定时器,当接收到来自发送端的流标签回收消息时,则根据所述流标签回收消息中的流标签清空对应的第一数据报文GRE隧道流标签转发表项,并向所述发送端回应确认消息;所述流标签回收消息中携带流标签和流标签转发结束标记。
所述接收端还包括:
处理模块26,与所述第二接收模块24连接,用于当确定所述第二数据报文的GRE头中携带了流标签时,将所述第二数据报文解封装去掉新增IP头和GRE头,并根据所述GRE头中携带的流标签查找所述第一数据报文GRE隧道流标签转发表项,并根据查找到的所述第一数据报文GRE隧道流标签转发表项中第一数据报文的源IP地址和目的IP地址、以及所述新增IP头中携带的从所述第一数据报文自带IP头中复制的域信息,将解封装后的第二数据报文重新封装成所述第一数据报文;或者,
当确定所述第二数据报文的协议类型为GRE类型,且所述第二数据报文的TOS域字段中携带了流标签时,将所述第二数据报文解封装去掉新增IP头,并根据所述TOS域字段中携带的流标签查找所述第一数据报文GRE隧道流标签转发表项,并根据查找到的所述第一数据报文GRE隧道流标签转发表项中第一数据报文的源IP地址和目的IP地址、以及所述新增IP头中携带的从所述第一数据报文自带IP头中复制的域信息,将解封装后的第二数据报文重新封装成所述第一数据报文。
其中,本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。
基于与上述方法同样的发明构思,本发明还提出了一种基于GRE隧道的数据传输系统,包括发送端和接收端,所述发送端和所述接收端为GRE隧道的两端,所述发送端向所述接收端发送第一数据报文,所述发送端和所述接收端中存储了第一数据报文GRE隧道流标签转发表项且其状态为Forwarding状态;
所述发送端,用于根据所述第一数据报文GRE隧道流标签转发表项,删除所述第一数据报文的自带IP头并封装成带有流标签的第二数据报文,然后将所述第二数据报文发送给所述接收端;
所述接收端,用于收到所述第二数据报文,根据所述第一数据报文GRE隧道流标签转发表项,对所述第二数据报文解封装并重新封装成第一数据报文后转发。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,u盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明序号仅仅为了描述,不代表实施例的优劣。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。
Claims (16)
1.一种基于通用路由封装GRE隧道的数据传输方法,应用于包括发送端和接收端的系统中,所述发送端和所述接收端为GRE隧道的两端,所述发送端向所述接收端发送第一数据报文,其特征在于,所述发送端和所述接收端中存储了第一数据报文GRE隧道流标签转发表项且其状态为Forwarding状态,所述方法包括以下步骤:
根据所述第一数据报文GRE隧道流标签转发表项,所述发送端删除所述第一数据报文的自带IP头并封装成带有流标签的第二数据报文,然后将所述第二数据报文发送给所述接收端;
所述接收端收到所述第二数据报文,根据所述第一数据报文GRE隧道流标签转发表项,对所述第二数据报文解封装并重新封装成所述第一数据报文后进行转发。
2.如权利要求1所述的方法,其特征在于,所述第一数据报文GRE隧道流标签转发表项的内容包括:GRE隧道的隧道标识、第一数据报文的源IP地址和目的IP地址、流标签、表项状态;
所述第一数据报文GRE隧道流标签转发表项的创建包括以下步骤:
所述发送端为所述第一数据报文分配流标签,根据所述流标签创建所述第一数据报文GRE隧道流标签转发表项;并将所述流标签发送给所述接收端,由所述接收端根据所述流标签,创建所述第一数据报文GRE隧道流标签转发表项。
3.如权利要求2所述的方法,其特征在于,将所述流标签发送给所述接收端,由所述接收端根据所述流标签,创建所述第一数据报文GRE隧道流标签转发表项,具体包括:
所述发送端判断所述第一数据报文加上新增IP头和GRE头的长度是否超过预设MTU阈值;
如果是,所述发送端向所述接收端发送净荷为空的数据报文,所述净荷为空的数据报文中携带所述第一数据报文的源IP地址和目的IP地址、所述流标签;如果否,所述发送端向所述接收端发送净荷不为空的数据报文,所述净荷不为空的数据报文中携带所述流标签和所述第一数据报文;
所述接收端接收所述净荷为空的数据报文或者所述净荷不为空的数据报文,并根据接收到报文中的源IP地址、目的IP地址和流标签创建所述第一数据报文GRE隧道流标签转发表项,将所述第一数据报文GRE隧道流标签转发表项设置为Forwarding状态,并向所述发送端返回创建成功消息,由所述发送端根据所述创建成功消息将自身记录的所述第一数据报文GRE隧道流标签转发表项设置为Forwarding状态。
4.如权利要求1至3任一权利要求所述的方法,其特征在于,所述方法还包括:
在所述发送端和所述接收端创建所述第一数据报文GRE隧道流标签转发表项之后,为所述第一数据报文GRE隧道流标签转发表项设置保活定时器,所述发送端根据所述保活定时器定时向所述接收端发送负荷为空的IP报文,所述负荷为空的IP报文中携带流标签,由所述接收端根据所述负荷为空的IP报文向所述发送端回应成功报文;如果预设第一时间内所述发送端无法接收到所述成功报文,所述发送端将所述第一数据报文GRE隧道流标签转发表项设置为Init状态,并向所述接收端重新发起流标签转发表项同步过程;且
所述第一数据报文GRE隧道流标签转发表项设置老化定时器,如果预设第二时间内没有接收到所述第一数据报文GRE隧道流标签转发表项对应的第一数据报文,所述发送端将所述第一数据报文GRE隧道流标签转发表项设置为Stale状态,并向所述接收端发送流标签回收消息,所述流标签回收消息中携带流标签和流标签转发结束标记;当所述接收端接收到所述流标签回收消息,则根据所述流标签回收消息中的流标签清空对应的第一数据报文GRE隧道流标签转发表项,并向所述发送端回应确认消息;当所述发送端接收到所述确认消息后,清空对应的第一数据报文GRE隧道流标签转发表项。
5.如权利要求1所述的方法,其特征在于,所述发送端删除所述第一数据报文的自带IP头并封装成带有流标签的第二数据报文,具体包括:
所述发送端删除所述第一数据报文自带IP头,在所述第一数据报文中新增IP头和GRE头,并封装成所述第二数据报文;其中,所述GRE头中携带了所述第一数据报文GRE隧道流标签转发表项中的流标签,所述新增IP头的源IP地址和目的IP地址为GRE隧道接口的源IP地址和目的IP地址,且所述新增IP头中携带了从所述第一数据报文自带IP头中复制的域信息;
根据所述第一数据报文GRE隧道流标签转发表项,对所述第二数据报文解封装并重新封装成所述第一数据报文后进行转发,具体包括:
所述接收端将所述第二数据报文解封装去掉所述新增IP头和GRE头,并根据所述GRE头中携带的流标签查找所述第一数据报文GRE隧道流标签转发表项,并根据查找到的所述第一数据报文GRE隧道流标签转发表项中第一数据报文的源IP地址和目的IP地址、以及所述新增IP头中携带的从所述第一数据报文自带IP头中复制的域信息,将解封装后的第二数据报文重新封装成所述第一数据报文后进行转发。
6.如权利要求1所述的方法,其特征在于,所述发送端删除所述第一数据报文的自带IP头并封装成带有流标签的第二数据报文,具体包括:
所述发送端删除所述第一数据报文自带IP头并封装成带有流标签的第二数据报文;其中,所述新增IP头的源IP地址和目的IP地址为GRE隧道接口的源IP地址和目的IP地址,TOS域字段携带了所述第一数据报文GRE隧道流标签转发表项中的流标签,协议字段为GRE协议类型,且所述新增IP头中携带了从所述第一数据报文自带IP头中复制的域信息;
根据所述第一数据报文GRE隧道流标签转发表项,对所述第二数据报文解封装并重新封装成所述第一数据报文后进行转发,具体包括:
当收到所述第二数据报文后,如果所述第二数据报文的TOS域字段中携带了流标签,则所述接收端将所述第二数据报文解封装去掉所述新增IP头,并根据所述TOS域字段中携带的流标签查找所述第一数据报文GRE隧道流标签转发表项,并根据查找到的所述第一数据报文GRE隧道流标签转发表项中第一数据报文的源IP地址和目的IP地址、以及所述新增IP头中携带的从所述第一数据报文自带IP头中复制的域信息,将解封装后的第二数据报文重新封装成所述第一数据报文后进行转发。
7.一种基于GRE隧道的发送端,应用于包括所述发送端和接收端的系统中,所述发送端和所述接收端为GRE隧道的两端,其特征在于,所述发送端和所述接收端中存储了第一数据报文GRE隧道流标签转发表项且其状态为Forwarding状态,所述发送端包括:
存储模块,与生成模块连接,用于存储第一数据报文GRE隧道流标签转发表项;
生成模块,分别与存储模块和第一发送模块连接,用于当接收到需要通过GRE隧道进行转发的第一数据报文后,根据所述第一数据报文GRE隧道流标签转发列表,删除所述第一数据报文的自带IP头并封装成带有流标签的第二数据报文;
第一发送模块,与所述生成模块连接,用于将所述第二数据报文发送给所述接收端。
8.如权利要求7所述的发送端,其特征在于,所述第一数据报文GRE隧道流标签转发表项中的内容包括:GRE隧道的隧道标识、第一数据报文的源IP地址和目的IP地址、流标签、表项状态;所述发送端还包括:
处理模块,与所述生成模块连接,用于为所述第一数据报文分配流标签,并根据所述流标签为所述第一数据报文创建第一数据报文GRE隧道流标签转发表项;
第二发送模块,与所述处理模块连接,用于将所述流标签发送给所述接收端,由所述接收端根据所述流标签为所述第一数据报文创建第一数据报文GRE隧道流标签转发表项。
9.如权利要求8所述的发送端,其特征在于,
所述第二发送模块,具体用于判断所述第一数据报文加上新增IP头和GRE头的长度是否超过预设MTU阈值;如果是,向所述接收端发送净荷为空的数据报文,所述净荷为空的数据报文中携带所述第一数据报文的源IP地址和目的IP地址、所述流标签;如果否,向所述接收端发送净荷不为空的数据报文,所述净荷不为空的数据报文中携带所述流标签和所述第一数据报文。
10.如权利要求9所述的发送端,其特征在于,所述发送端还包括:
表项维护模块,用于为所述第一数据报文GRE隧道流标签转发表项设置保活定时器,根据所述保活定时器定时向所述接收端发送负荷为空的IP报文,所述负荷为空的IP报文中携带流标签,由所述接收端根据所述负荷为空的IP报文向所述发送端回应成功报文;如果预设第一时间内无法接收到所述成功报文,将所述第一数据报文GRE隧道流标签转发表项设置为Init状态,并向所述接收端重新发起流标签转发表项同步过程;
并为所述第一数据报文GRE隧道流标签转发表项设置老化定时器,如果预设第二时间内没有接收到所述第一数据报文GRE隧道流标签转发表项对应的第一数据报文,将所述第一数据报文GRE隧道流标签转发表项设置为Stale状态,并向所述接收端发送流标签回收消息,所述流标签回收消息中携带流标签和流标签转发结束标记;接收来自所述接收端的确认消息,并清空对应的第一数据报文GRE隧道流标签转发表项。
11.如权利要求7至10任一权利要求所述的发送端,其特征在于,
所述生成模块,具体用于删除所述第一数据报文自带IP头,在所述删除自带IP头的第一数据报文中新增IP头和GRE头,并封装成所述第二数据报文;其中,所述GRE头中携带了所述第一数据报文GRE隧道流标签转发表项中的流标签,所述新增IP头的源IP地址和目的IP地址为GRE隧道接口的源IP地址和目的IP地址,且所述新增IP头中携带了从所述第一数据报文自带IP头中复制的域信息;或者,
删除所述第一数据报文自带IP头,在所述删除自带IP头的第一数据报文中新增IP头,并封装成所述第二数据报文;其中,所述新增IP头的源IP地址和目的IP地址为GRE隧道接口的源IP地址和目的IP地址,TOS域字段携带了所述第一数据报文GRE隧道流标签转发表项中的流标签,协议字段为GRE协议类型,且所述新增IP头中携带了从所述第一数据报文自带IP头中复制的域信息。
12.一种基于GRE隧道的接收端,应用于包括发送端和所述接收端的系统中,所述发送端和所述接收端为GRE隧道的两端,所述发送端向所述接收端发送第一数据报文,其特征在于,所述发送端和所述接收端中存储了第一数据报文GRE隧道流标签转发表项且其状态为Forwarding状态,所述接收端包括:
存储模块,分别与第一接收模块和第二接收模块连接,用于存储第一数据报文GRE隧道流标签转发表项;
第一接收模块,分别与存储模块和创建模块连接,用于当存储模块没有存储对应的第一数据报文GRE隧道流标签转发表项时,接收来自所述发送端的流标签;
创建模块,与所述第一接收模块连接,用于根据所述流标签为所述第一数据报文创建第一数据报文GRE隧道流标签转发表项;
第二接收模块,与所述存储模块连接,用于当存储模块存储了对应的第一数据报文GRE隧道流标签转发表项时,接收第二数据报文,所述第二数据报文为所述发送端删除所述第一数据报文的自带IP头并封装成带有流标签的数据报文。
13.如权利要求12所述的接收端,其特征在于,所述第一数据报文GRE隧道流标签转发表项的内容包括:GRE隧道的隧道标识、第一数据报文的源IP地址和目的IP地址、流标签、表项状态;
所述创建模块,具体用于当接收到净荷为空的数据报文或者净荷不为空的数据报文时,根据接收到报文中的源IP地址、目的IP地址和流标签为所述第一数据报文创建第一数据报文GRE隧道流标签转发表项,将所述第一数据报文GRE隧道流标签转发表项设置为Forwarding状态,并向所述发送端返回创建成功消息,由所述发送端根据所述创建成功消息将自身记录的所述第一数据报文GRE隧道流标签转发表项设置为Forwarding状态。
14.如权利要求13所述的接收端,其特征在于,所述接收端还包括:
表项维护模块,用于为所述第一数据报文GRE隧道流标签转发表项设置保活定时器,当接收到来自发送端的负荷为空的IP报文时,根据所述负荷为空的IP报文向所述发送端回应成功报文;所述负荷为空的IP报文中携带流标签;
并为所述第一数据报文GRE隧道流标签转发表项设置老化定时器,当接收到来自发送端的流标签回收消息时,则根据所述流标签回收消息中的流标签清空对应的第一数据报文GRE隧道流标签转发表项,并向所述发送端回应确认消息;所述流标签回收消息中携带流标签和流标签转发结束标记。
15.如权利要求12至14任一权利要求所述的接收端,其特征在于,所述接收端还包括:
处理模块,与所述第二接收模块连接,用于当确定所述第二数据报文的GRE头中携带了流标签时,将所述第二数据报文解封装去掉新增IP头和GRE头,并根据所述GRE头中携带的流标签查找所述第一数据报文GRE隧道流标签转发表项,并根据查找到的所述第一数据报文GRE隧道流标签转发表项中第一数据报文的源IP地址和目的IP地址、以及所述新增IP头中携带的从所述第一数据报文自带IP头中复制的域信息,将解封装后的第二数据报文重新封装成所述第一数据报文;或者,
当确定所述第二数据报文的协议类型为GRE类型,且所述第二数据报文的TOS域字段中携带了流标签时,将所述第二数据报文解封装去掉新增IP头,并根据所述TOS域字段中携带的流标签查找所述第一数据报文GRE隧道流标签转发表项,并根据查找到的所述第一数据报文GRE隧道流标签转发表项中第一数据报文的源IP地址和目的IP地址、以及所述新增IP头中携带的从所述第一数据报文自带IP头中复制的域信息,将解封装后的第二数据报文重新封装成所述第一数据报文。
16.一种基于GRE隧道的数据传输系统,包括发送端和接收端,所述发送端和所述接收端为GRE隧道的两端,所述发送端向所述接收端发送第一数据报文,其特征在于,所述发送端和所述接收端中存储了第一数据报文GRE隧道流标签转发表项且其状态为Forwarding状态;
所述发送端,用于根据所述第一数据报文GRE隧道流标签转发表项,删除所述第一数据报文的自带IP头并封装成带有流标签的第二数据报文,然后将所述第二数据报文发送给所述接收端;
所述接收端,用于收到所述第二数据报文,根据所述第一数据报文GRE隧道流标签转发表项,对所述第二数据报文解封装并重新封装成第一数据报文后转发。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010102140037A CN101848171B (zh) | 2010-07-01 | 2010-07-01 | 一种基于gre隧道的数据传输方法、设备和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010102140037A CN101848171B (zh) | 2010-07-01 | 2010-07-01 | 一种基于gre隧道的数据传输方法、设备和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101848171A true CN101848171A (zh) | 2010-09-29 |
CN101848171B CN101848171B (zh) | 2013-04-03 |
Family
ID=42772634
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010102140037A Expired - Fee Related CN101848171B (zh) | 2010-07-01 | 2010-07-01 | 一种基于gre隧道的数据传输方法、设备和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101848171B (zh) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104301133A (zh) * | 2014-08-08 | 2015-01-21 | 杭州华三通信技术有限公司 | 一种通用路由封装键值的管理方法及设备 |
WO2015010512A1 (zh) * | 2013-07-23 | 2015-01-29 | 中兴通讯股份有限公司 | Gre报文的封装方法、解封装方法及对应的装置 |
WO2015149620A1 (zh) * | 2014-04-04 | 2015-10-08 | 华为技术有限公司 | 一种业务路由报文的封装方法、业务转发实体及控制平面 |
CN105009544A (zh) * | 2014-01-23 | 2015-10-28 | 华为技术有限公司 | 报文的隧道处理方法、交换设备及控制设备 |
CN106059883A (zh) * | 2016-05-20 | 2016-10-26 | 浙江宇视科技有限公司 | 报文的传输方法及装置 |
CN106713025A (zh) * | 2016-12-14 | 2017-05-24 | 广州市品高软件股份有限公司 | 一种用于信息同步的网络容灾方法 |
WO2017124693A1 (zh) * | 2016-01-21 | 2017-07-27 | 中兴通讯股份有限公司 | 一种报文解封装处理、数据写入方法及装置 |
CN107181663A (zh) * | 2017-06-28 | 2017-09-19 | 联想(北京)有限公司 | 一种报文处理方法、相关设备及计算机可读存储介质 |
CN109039918A (zh) * | 2018-10-30 | 2018-12-18 | 新华三技术有限公司 | 一种报文发送方法及装置 |
CN109218200A (zh) * | 2018-11-26 | 2019-01-15 | 新华三技术有限公司 | 一种报文处理方法及装置 |
CN109246012A (zh) * | 2017-07-10 | 2019-01-18 | 中兴通讯股份有限公司 | 报文转发方法、装置及计算机可读存储介质 |
CN109936492A (zh) * | 2017-12-15 | 2019-06-25 | 华为技术有限公司 | 一种通过隧道传输报文的方法、装置和系统 |
CN112804129A (zh) * | 2019-11-13 | 2021-05-14 | 中兴通讯股份有限公司 | 报文传输方法及系统,发送端vpn设备及gre拼接设备 |
CN112822123A (zh) * | 2020-12-29 | 2021-05-18 | 迈普通信技术股份有限公司 | 一种数据采集方法及装置 |
CN113300929A (zh) * | 2021-04-15 | 2021-08-24 | 新华三信息安全技术有限公司 | 一种报文转发方法、装置、电子设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101119273A (zh) * | 2007-09-10 | 2008-02-06 | 杭州华三通信技术有限公司 | 实现通用路由封装隧道穿越的方法及设备 |
CN101247308A (zh) * | 2007-02-13 | 2008-08-20 | 上海亿人通信终端有限公司 | 基于网络处理器实现IPv6穿越IPv4的隧道报文处理方法 |
-
2010
- 2010-07-01 CN CN2010102140037A patent/CN101848171B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101247308A (zh) * | 2007-02-13 | 2008-08-20 | 上海亿人通信终端有限公司 | 基于网络处理器实现IPv6穿越IPv4的隧道报文处理方法 |
CN101119273A (zh) * | 2007-09-10 | 2008-02-06 | 杭州华三通信技术有限公司 | 实现通用路由封装隧道穿越的方法及设备 |
Cited By (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015010512A1 (zh) * | 2013-07-23 | 2015-01-29 | 中兴通讯股份有限公司 | Gre报文的封装方法、解封装方法及对应的装置 |
US10033842B2 (en) | 2013-07-23 | 2018-07-24 | Zte Corporation | GRE message encapsulation method, decapsulation method, and corresponding devices |
CN105009544B (zh) * | 2014-01-23 | 2018-04-20 | 华为技术有限公司 | 报文的隧道处理方法、交换设备及控制设备 |
CN105009544A (zh) * | 2014-01-23 | 2015-10-28 | 华为技术有限公司 | 报文的隧道处理方法、交换设备及控制设备 |
US10237089B2 (en) | 2014-01-23 | 2019-03-19 | Huawei Technologies Co., Ltd. | Packet tunneling method, switching device, and control device |
WO2015149620A1 (zh) * | 2014-04-04 | 2015-10-08 | 华为技术有限公司 | 一种业务路由报文的封装方法、业务转发实体及控制平面 |
CN104980374A (zh) * | 2014-04-04 | 2015-10-14 | 华为技术有限公司 | 一种业务路由报文的封装方法、业务转发实体及控制平面 |
US10205608B2 (en) | 2014-04-04 | 2019-02-12 | Huawei Technologies Co., Ltd. | Method for encapsulating service routing packet, service forwarding entity and control plane |
CN104980374B (zh) * | 2014-04-04 | 2018-07-03 | 华为技术有限公司 | 一种业务路由报文的封装方法、业务转发实体及控制平面 |
CN104301133A (zh) * | 2014-08-08 | 2015-01-21 | 杭州华三通信技术有限公司 | 一种通用路由封装键值的管理方法及设备 |
CN104301133B (zh) * | 2014-08-08 | 2018-03-16 | 新华三技术有限公司 | 一种通用路由封装键值的管理方法及设备 |
WO2017124693A1 (zh) * | 2016-01-21 | 2017-07-27 | 中兴通讯股份有限公司 | 一种报文解封装处理、数据写入方法及装置 |
CN106059883A (zh) * | 2016-05-20 | 2016-10-26 | 浙江宇视科技有限公司 | 报文的传输方法及装置 |
CN106713025A (zh) * | 2016-12-14 | 2017-05-24 | 广州市品高软件股份有限公司 | 一种用于信息同步的网络容灾方法 |
CN106713025B (zh) * | 2016-12-14 | 2019-08-20 | 广州市品高软件股份有限公司 | 一种用于信息同步的网络容灾方法 |
CN107181663A (zh) * | 2017-06-28 | 2017-09-19 | 联想(北京)有限公司 | 一种报文处理方法、相关设备及计算机可读存储介质 |
CN109246012A (zh) * | 2017-07-10 | 2019-01-18 | 中兴通讯股份有限公司 | 报文转发方法、装置及计算机可读存储介质 |
CN109936492B (zh) * | 2017-12-15 | 2021-12-03 | 华为技术有限公司 | 一种通过隧道传输报文的方法、装置和系统 |
CN109936492A (zh) * | 2017-12-15 | 2019-06-25 | 华为技术有限公司 | 一种通过隧道传输报文的方法、装置和系统 |
CN109039918B (zh) * | 2018-10-30 | 2021-05-28 | 新华三技术有限公司 | 一种报文发送方法及装置 |
CN109039918A (zh) * | 2018-10-30 | 2018-12-18 | 新华三技术有限公司 | 一种报文发送方法及装置 |
CN109218200B (zh) * | 2018-11-26 | 2021-05-28 | 新华三技术有限公司 | 一种报文处理方法及装置 |
CN109218200A (zh) * | 2018-11-26 | 2019-01-15 | 新华三技术有限公司 | 一种报文处理方法及装置 |
CN112804129A (zh) * | 2019-11-13 | 2021-05-14 | 中兴通讯股份有限公司 | 报文传输方法及系统,发送端vpn设备及gre拼接设备 |
CN112804129B (zh) * | 2019-11-13 | 2023-11-03 | 中兴通讯股份有限公司 | 报文传输方法及系统,发送端vpn设备及gre拼接设备 |
CN112822123A (zh) * | 2020-12-29 | 2021-05-18 | 迈普通信技术股份有限公司 | 一种数据采集方法及装置 |
CN113300929A (zh) * | 2021-04-15 | 2021-08-24 | 新华三信息安全技术有限公司 | 一种报文转发方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN101848171B (zh) | 2013-04-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101848171B (zh) | 一种基于gre隧道的数据传输方法、设备和系统 | |
CN104243318B (zh) | Vxlan网络中的mac地址学习方法及装置 | |
CN106878065B (zh) | 一种分布式聚合系统的配置方法及装置 | |
CN104243630B (zh) | Vxlan网络中的mac地址学习方法及装置 | |
WO2018058677A1 (zh) | 一种报文处理方法、计算设备以及报文处理装置 | |
CN101631069B (zh) | 伪线参数协商的方法、系统及设备 | |
CN101286922B (zh) | 一种信令控制的方法、系统及设备 | |
CN110224935B (zh) | 一种处理组播数据报文的方法及装置 | |
CN102724118A (zh) | 标签分发方法及设备 | |
CN113132229A (zh) | 段标识的确定方法和设备 | |
CN107612809A (zh) | 一种组播表项同步方法以及设备 | |
CN110401599A (zh) | 数据包的处理方法及装置、存储介质、电子装置 | |
CN106559302A (zh) | 单播隧道建立方法、装置和系统 | |
CN101360046B (zh) | 一种带宽资源的节约方法 | |
CN101662426A (zh) | 一种t-mpls隧道保护处理的方法和系统 | |
WO2019042303A1 (zh) | 报文转发 | |
CN109936492A (zh) | 一种通过隧道传输报文的方法、装置和系统 | |
CN103747502A (zh) | 一种gtp隧道的处理方法及系统 | |
CN104754521A (zh) | 一种报文转发方法、无线接入点、无线控制器和系统 | |
CN102299862A (zh) | 二层隧道快速转发设备和方法 | |
KR100524035B1 (ko) | 프래그먼트된 패킷의 ip 재조합없이, 프래그먼트된 패킷을 프로토콜 프로세서로 분배하는 패킷분배장치 및 그 분배방법 | |
CN104486217A (zh) | 跨网络的报文转发方法和设备 | |
CN109218176B (zh) | 一种报文处理的方法及装置 | |
CN101350760B (zh) | 虚拟专网的数据报文转发方法 | |
CN100481819C (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 | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No. Patentee after: Xinhua three Technology Co., Ltd. Address before: 310053 Hangzhou hi tech Industrial Development Zone, Zhejiang province science and Technology Industrial Park, No. 310 and No. six road, HUAWEI, Hangzhou production base Patentee before: Huasan Communication Technology Co., Ltd. |
|
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: 20130403 Termination date: 20200701 |