一种通过隧道传输报文的方法、装置和系统与流程

文档序号:18009255发布日期:2019-06-25 23:47阅读:300来源:国知局
一种通过隧道传输报文的方法、装置和系统与流程

本申请涉及网络通信技术,尤其涉及一种通过隧道传输报文的方法、装置和系统。



背景技术:

隧道技术是一种通过互联网络基础设施在网络之间传递数据的方式。使用隧道传递的数据可以是不同协议的原始报文,隧道发送端根据隧道协议将该原始报文封装在隧道头中得到隧道报文,并将该隧道报文通过公共互联网络发送给隧道接收端。隧道接收端接收到该隧道报文后,解封装该的报文,得到该原始报文,并将该原始报文转发到最终目的地。上述过程中,该隧道报文在公共互联网络上传输时所经过的逻辑路径称为隧道。

由于隧道发送端在发送原始报文前要为该原始报文封装隧道头,导致封装得到的隧道报文的长度大于该原始报文的长度。由于该隧道报文中携带的有效数据(即载荷)与该原始报文携带的有效数据相同,并且,当该隧道报文的长度大于该网络的最大传输单元(maximumtransmissionunit,mtu)时,该原始报文会被封装为两个隧道报文。可见,在采用隧道技术时,需要通过一个较长的隧道报文或者两个隧道报文传输与一个原始报文相同的有效数据,降低了网络的带宽利用率。



技术实现要素:

本申请提供了一种通过隧道传输报文的方法、装置和系统,能够在通过隧道传输报文时,提高网络的带宽利用率。

本申请第一方面提供了一种通过隧道传输报文的方法,该隧道用于将报文从隧道发送端发送到隧道接收端。隧道发送端接收第一报文,该第一报文包括第一报文头,该第一报文头包括目标字段,该目标字段包括该第一报文头中的不变字段。该隧道发送端查找该目标字段对应的压缩表项,该压缩表项包括该目标字段和索引标识的对应关系,并获取该压缩表项中的该索引标识。该隧道发送端从该第一报文中删除该第一报文头,得到该第一报文的载荷,为该第一报文的载荷添加扩展隧道头,得到封装后的第一报文,该扩展隧道头中包括该索引标识。该隧道发送端向该隧道接收端发送该封装后的第一报文。

本申请第一方面中,隧道发送端在向隧道接收端发送第一报文的时候,删除了该第一报文中原有的第一报文头,只添加了扩展隧道头,该扩展隧道头的长度等于标准隧道头的长度。因此,本申请实施中最终生成的封装后的第一报文的长度小于按照传统的隧道封装方法得到的隧道报文的长度,提高了隧道中传输的有效数据的比例,进而提高了网络带宽的利用率。

在一个实施方式中,该隧道发送端在接收该第一报文之前,还接收第二报文。该第二报文包括第二报文头,该第二报文头包括该目标字段。该隧道发送端根据该第二报文头获取该压缩表项。

在一个实施方式中,该隧道发送端根据该第二报文头中的该目标字段计算得到该索引标识,并建立该索引标识和该目标字段的对应关系,得到该压缩表项。

在另一个实施方式中,该隧道发送端向控制器发送该目标字段,并接收该控制发送的根据该目标字段生成的该压缩表项。

通过本申请实施例上述各实施方式,该隧道发送端获取了该压缩表项,然后根据该压缩表项压缩接收的第一报文,提高了网络带宽的利用率。

在一个实施方式中,该隧道发送端还向该隧道发送端该第二报文,以使该隧道接收端根据该第二报文头建立该压缩表项。然后,该隧道发送端接收该隧道接收端发送的响应消息,该响应消息携带该索引标识。该隧道发送端根据该响应消息确定该隧道接收端已经建立了该压缩表项。

在另一个实施方式中,该隧道发送端还向该隧道接收端发送该压缩表项,并接收该隧道接收端发送的响应消息,该响应消息用于确认该隧道接收端已经收到该压缩表项。

通过上述方式,该隧道发送端能够确认该隧道接收端支持隧道压缩,避免隧道发送端在隧道接收端不支持隧道压缩的情况下隧道接收端发送压缩后的隧道报文造成的报文丢失和业务中断。

在一个实施方式中,当该第一报文头中包括可变字段时,该扩展隧道头中还包括该第一报文头中不能计算得到的可变字段。

在上述实施方式中,通过在隧道扩展头中携带第一报文头中不能计算得到的可变字段,使得隧道接收端可以根据该隧道头中的该不能计算得到的可变字段和压缩表项中的该目标字段,恢复该第一报文,避免了隧道接收端仅仅根据目标字段不能恢复第一报文导致的报文丢失和业务中断。

本申请第一方面的各实施方式可以以任何不冲突的方式与本申请第一方面的方法结合以实现本申请第一方面的目的。

本申请实施例第二方面提供了另一种通过隧道传输报文的方法,该隧道用于将报文从隧道发送端发送到隧道接收端。该隧道接收端接收该隧道发送端发送的封装后的第一报文,该封装后的第一报文包括扩展隧道头,该扩展隧道头中包括索引标识。该隧道接收端从该扩展隧道头中获取该索引标识,从该封装后的第一报文中剥离该扩展隧道头得到第一报文的载荷;该第一报文为该封装后的第一报文的原始报文。该隧道接收端根据该索引标识查找压缩表项,得到该压缩表项中的目标字段,该压缩表项包括该索引标识和该目标字段的对应关系。该隧道接收端为该第一报文的载荷添加第一报文头,得到该第一报文,该目标字段用于生成该第一报文头中的不变字段。

本申请第二方面中,支持隧道压缩功能的隧道接收端在接收到隧道发送端发送的封装后的第一报文时,从该封装后的第一报文中删除扩展隧道头,并根据扩展隧道头中包括的索引标识获取到目标字段,根据该目标字段恢复原始的第一报文。不仅能够节约网络带宽,还能保证得到的原始的报文,避免业务中断。

在一个实施方式中,该隧道接收端还接收该隧道发送端发送的第二报文,该第二报文包括第二报文头,该第二报文头包括该目标字段。然后,该隧道接收端根据该目标字段计算得到该索引标识,建立该索引标识和该目标字段的对应关系,得到该压缩表项。该隧道接收端向该隧道发送端发送响应消息,该响应消息包括该索引标识,该响应消息用于通知该隧道发送端该压缩表项已经建立。

在另一个实施方式中,该隧道接收端还接收该隧道发送端发送的该压缩表项,并向该隧道发送端发送响应消息,该响应消息用于确认该隧道接收端已经收到该压缩表项。

在再一个实施方式中,该隧道接收端还接收控制器发送的该压缩表项。

通过以上实施方式,隧道发送端和隧道接收端均获得了同样的压缩表项,能够实现对同报文的压缩和恢复处理,在节约网络带宽的同时,保证了业务的连续性。

在一个实施方式中,该扩展隧道头中还包括不能计算得到的可变字段,该隧道接收端还用于根据该目标字段和该不能计算得到的可变字段生成该第一报文头,并为该第一报文的载荷添加该第一报文头,得到该第一报文。

在上述实施方式中,通过在隧道扩展头中携带第一报文头中不能计算得到的可变字段,使得隧道接收端可以根据该隧道头中的该不能计算得到的可变字段和压缩表项中的该目标字段,恢复该第一报文,避免了隧道接收端仅仅根据目标字段不能恢复第一报文导致的报文丢失和业务中断。

本申请第二方面的各实施方式可以以任何不冲突的方式与本申请第二方面的方法结合以实现本申请第二方面的目的。

本申请第三方面提供了一种隧道发送端,该隧道发送端包括用于实现本申请第一方面及该第一方面的各实施方式中的方法的功能模块或单元。

本申请第四方面提供了一种隧道发送端,该隧道发送端包括存储器和处理器,该存储器用于存储程序代码或程序指令,该程序代码或程序指令被执行时,使得处理器执行本申请第一方面及该第一方面的各实施方式中的方法。

本申请第五方面提供了一种计算机可读存储介质,该计算机可读存储介质用于存储程序代码或程序指令,该程序代码或程序指令被执行时,使得处理器或计算机执行本申请第一方面及该第一方面的各实施方式中的方法。可选地,该计算机可读存储介质可以是非易失性存储介质或易失性存储介质。

本申请第六方面提供了一种隧道接收端,该隧道接收端包括用于实现本申请第二方面及该第二方面的各实施方式中的方法的功能模块或单元。

本申请第七方面提供了一种隧道接收端,该隧道接收端包括存储器和处理器,该存储器用于存储程序代码或程序指令,该程序代码或程序指令被执行时,使得处理器实现本申请第二方面及该第二方面的各实施方式中的方法。

本申请第八方面提供了一种计算机可读存储介质,该计算机可读存储介质用于存储程序代码或程序指令,该程序代码或程序指令被执行时,能够实现本申请第二方面及该第二方面的各实施方式中的方法。可选地,该计算机可读存储介质可以是非易失性存储介质或易失性存储介质。

本申请第九方面提供了一种网络系统,该网络系统包括本申请第三或第四方面的隧道发送端和第六或第七方面的隧道接收端。

本申请第三到第九方面的有益效果可以参考本申请第一方面及其各实现方式以及本申请第二方面及其各实现方式的有益效果。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。

图1为本申请一实施例提供的系统示意图;

图2为本申请另一实施例提供的系统示意图;

图3为本申请实施例提供的一种通过隧道传输报文的方法的交互示意图;

图4为本申请实施例提供的一种获取压缩表项的过程示意图;

图5为本申请实施例提供的另一种获取压缩表项的过程示意图;

图6为vxlan的结构示意图;

图7为标准vxlan报文的结构示意图;

图8为本申请实施例提供的压缩表的结构示意图;

图9为本申请实施例提供的扩展vxlan报文的结构示意图;

图10为本申请实施例提供的隧道发送端的结构示意图;

图11为本申请实施例提供的隧道接收端的结构示意图;

图12为本申请实施例提供的隧道端设备的结构示意图。

具体实施方式

本申请实施例中使用的“第一”、“第二”、“第三”等字眼,仅用于区分不同的对象,并不用于作为顺序的限制。

本申请实施例应用于使用隧道技术的系统中。

如图1所示,为本申请一实施例提供的系统100。系统100包括隧道发送端110和隧道接收端120。

如图2所示,为本申请另一实施例提供的系统200。系统200在系统100的基础上还包括控制器130。

隧道发送端110和隧道接收端120之间的隧道可以是虚拟可扩展局域网(virtualextensiblelocalareanetwork,vxlan)隧道,通用路由封装(genericroutingencapsulation,gre)隧道,二层隧道协议(layer2tunnelingprotocol,l2tp)隧道等。

由于隧道是双向互通的,上述隧道发送端110和隧道接收端120的角色可以互换。在一个实施方式中,隧道发送端110和隧道接收端120在通过隧道传输数据之前,需要通过隧道协议建立隧道连接。

基于以上系统和装置,如图3所示,本申请实施例还提供了一种通过隧道传输报文的方法,相应地,能够执行所述方法的隧道发送端110和隧道发送端120具有隧道压缩功能。以下结合图3,对本申请实施例进行详细说明。

在步骤302中,隧道发送端110接收第二报文。该第二报文包括第二报文头,该第二报文头包括目标字段。该目标字段包括该第二报文头中的全部或部分不变字段。该不变字段是指不随着报文载荷变化而变化的字段。该第二报文头可以包括以太(ethernet)头和因特网协议(internetprotocol,ip)头中的至少一种,相应地,该目标字段例如可以包括源媒体访问控制(mediaaccesscontrol,mac)地址,目的mac地址,源ip地址和目的ip地址中的至少一个。该目标字段还可以包括协议版本号,例如ipv4,ipv6,802.3,802.1q等。本申请中,将隧道发送端110接收并需要发送给隧道接收端120的报文称为原始报文,这里的第二报文,以及后面的第一报文都属于原始报文。

在步骤304中,隧道发送端110和隧道接收端120分别获取该目标字段对应的压缩表项,该压缩表项包括索引标识和该目标字段的对应关系。其中,该索引标识是根据该目标字段生成的。在一个实施方式中,该索引标识是对该目标字段通过哈希计算生成的。其中,该目标字段可以是该第二报文头中的全部或部分字段。

在一个实施方式中,该第二报文头的所有字段都不会因报文的不同而变化,即和该第二报文属于同一数据流的所有报文的报文头都相同,该压缩表项中的目标字段可以包括所述第二报文头的所有字段。

在另一个实施方式中,该第二报文头的部分字段,例如,报文长度,报文校验和(checksum)等,会因报文的不同而变化,所述压缩表项中的目标字段包括所述第二报文头的不变字段。所述不变字段例如,源mac地址,目的mac地址,源ip地址,目的ip地址等。

如图4所示,在步骤304的实施方式304-1中,隧道发送端110和隧道接收端120通过以下方式获取该目标字段对应的压缩表项:

304-11、隧道发送端110根据该第二报文的第二报文头中的目标字段计算得到该索引标识,并建立索引标识和该目标字段的对应关系,得到该压缩表项。即隧道发送端110只执行步骤304-11即可得到该压缩表项。

304-12、隧道发送端110为该第二报文添加标准隧道头,得到封装后的第二报文。其中,标准隧道头是指不包括索引标识的隧道头。

304-13、隧道发送端110将该封装后的第二报文发送给隧道接收端120,隧道接收端120接收该封装后的第二报文。

304-14、隧道接收端120从该封装后的第二报文中删除该隧道头,得到该第二报文。

其中,上述步骤304-12到304-14属于现有的发送第二报文的流程,可以简化为:隧道发送端110向隧道接收发送该第二报文。

304-15、隧道接收端120根据该第二报文的第二报文头中的目标字段计算该索引标识,并建立索引标识和该目标字段的对应关系,得到该压缩表项。

304-16、隧道接收端120向隧道发送端110发送响应消息,该响应消息包括所述索引标识,用于通知隧道发送端110该压缩表项已经建立。隧道接收端110接收该响应消息。

304-17、隧道发送端110根据该响应消息确定隧道接收端120已经建立了该压缩表项。隧道发送端110接收到该响应消息后,根据该响应消息中的索引标识,查找到自身存储的压缩表项,确定隧道接收端120已经建立了该压缩表项。

通过上述实施方式304-1,隧道接收端120和隧道发送端110上均建立了该压缩表项,此后,隧道发送端110即可根据该压缩表项封装该第二报文所属的数据流的后续报文,例如,下文提到的第一报文。

在另一个实施方式中,隧道发送端110在发送第二报文后的设定时间内没有接收到隧道接收端120发送的响应消息,隧道发送端110向隧道接收端120发送该压缩表项。当隧道发送端110已经向隧道接收端120发送了设定次数(例如三次)的该压缩表项后,仍然没有接收到隧道接收端120发送的响应消息,则说明隧道接收端120不支持本申请实施例所提供的方法,隧道发送端110采用封装标准隧道头的方式传输该第二报文以及该第二报文所属的数据流的后续报文。

在另一个实施方式中,在步骤304-11之前,图4所示的方法还可以进一步包括隧道发送端110和隧道接收端120协商目标字段的过程。例如,当隧道发送端110支持隧道压缩时,隧道发送端110向隧道接收端120发送协商请求消息,该协商请求消息包括待压缩报文类型,该协商请求消息用于确认隧道接收端120是否能够压缩所述待压缩报文类型。其中,待压缩报文类型为隧道发送端110能够压缩的报文类型。隧道接收端120收到该隧道协商请求后,确定隧道接收端120是否能够压缩所述待压缩报文类型。当隧道接收端120能够压缩所述待压缩报文类型时,向隧道发送端110发送协商响应消息,该协商响应消息包括隧道接收端120确定的该待压缩报文类型的目标字段。隧道发送端110收到该协商响应消息后,可以根据该协商响应消息为对应该待压缩报文类型的不同数据流生成相应的压缩表项。例如,当该待压缩报文类型为ip报文,隧道接收端120确定的目标字段为源ip地址和目的ip地址时,隧道发送端110为对应不同源ip地址和目的ip地址组合的数据流分别建立对应的压缩表项。

另外,在上述实施方式304-1中,如果隧道发送端110在发送该第二报文之后,且没有接收到该响应消息之前接收到该第一报文,则隧道发送端110先缓存该第一报文,直到接收到该响应消息才对该第一报文执行步骤308的操作。

可见,在上述实施方式304-1中,对于每个数据流,隧道发送端110将接收的该数据流的第一个报文按照现有方式发送给隧道接收端120,并在隧道接收端120生成对应的压缩表项后,对于该数据流的后续报文,按照本申请实施例提供的方式处理。

如图5所示,在步骤304的另一个实施方式304-2中,隧道发送端110和隧道接收端120通过以下方式获取该目标字段对应的压缩表项:

304-21、隧道发送端110将该目标字段发送给控制器130。控制器130接收该目标字段。

隧道发送端110可以直接将该目标字段发送给控制器130,将该第二报文头发送给控制器130,或者将该第二报文发送给控制器130。

304-22、控制器130根据该目标字段确定对应的隧道接收端120。

其中,控制器根据该目标字段中的目的mac地址或目的ip地址等信息确定对应的隧道接收端120。

304-23、控制器130根据该目标字段计算该索引标识,并建立索引标识和该目标字段的对应关系,得到该压缩表项。

其中,步骤304-22和304-23没有执行顺序的限制。

304-24、控制器130向隧道发送端110和隧道接收端120分别发送该压缩表项。

304-25、隧道发送端110和隧道接收端120接收到该压缩表项后,分别存储该压缩表项。

在上述实施方式304-2中,隧道发送端110在收到第二报文后,可以先缓存第二报文,直到收到该压缩表项后再根据该压缩表项封装该第二报文;隧道发送端110也可以按照现有方式转发该第二报文,而根据该压缩表项转发该第二报文所属的数据流的后续报文。

进一步地,控制器130在步骤304-23中还可以根据该目标字段分别针对隧道发送端110和隧道接收端120计算该第二报文所属的数据流的转发表项,并在步骤304-24中将针对隧道发送端110的转发表项发送给隧道发送端110,将针对隧道接收端120的转发表项发送给隧道接收端120。通常,转发表项存储在转发表中,后续对转发表项有详细说明。

在另一个实施方式中,在步骤304-21之前,图5所示的方法还可以进一步包括控制器130分别为隧道发送端110和隧道接收端120配置隧道压缩功能的过程。例如,控制器130可以向隧道发送端110和隧道接收端120分别发送配置信息,该配置信息包括至少一个待压缩报文类型和每个待压缩报文类型对应的目标字段。

在一个实施方式中,隧道发送端110和隧道接收端120分别将该压缩表项存储在隧道发送端110和隧道接收端120各自的压缩表中。所述压缩表用于存储不同数据流对应的压缩表项。其中,一个数据流对应一个原始报文头中的目标字段。

上述步骤302和304可以看作是本申请实施例的预处理过程,不需要对每个报文都执行步骤302和304。

在步骤306中,隧道发送端110接收该第二报文所属的数据流的第一报文,该第一报文包括第一报文头,该第一报文头包括该目标字段。其中,该第一报文为该数据流中该第二报文的后续报文。该第一报文头可以与该第二报文头相同,也可以与该第二报文头不同,但是该第一报文头与该第二报文头均包括该目标字段,因此属于同一数据流。

在步骤308中,隧道发送端110查找该目标字段对应的该压缩表项,获取该压缩表项中的该索引标识。

隧道发送端110根据该目标字段查找压缩表,得到该压缩表项,进而获取该压缩表项中的索引标识。

在步骤310中,隧道发送端110从该第一报文中删除该第一报文头,得到该第一报文的载荷,为该第一报文的载荷添加扩展隧道头,并在该隧道头中添加该索引标识,得到封装后的第一报文。其中,该扩展隧道头是指能承载索引标识的隧道头。

其中,隧道发送端110在处理第一报文之前需要查找该数据流对应的转发表项,该转发表项可以是发送端110自己生成的,也可以是控制器130生成并发送给隧道发送端110的。该转发表项包括关键字、出接口和操作方式。其中,关键字可以包括目的ip地址,目的mac地址,vlan标识(identifier,id),vxlan网络标识(vxlannetworkidentifier,vni)中的至少一个,操作方式包括封装扩展隧道头。其中,不同的隧道协议对应不同的扩展隧道头。隧道发送端110具体根据该转发表项中的操作方式为该第一报文的载荷添加扩展隧道头,并在该扩展隧道头中添加该索引标识。其中,该封装后的第一报文可以称为扩展隧道报文。

在一个实施方式中,当该第二报文头和第一报文头包括可变字段时,所述压缩表项中的目标字段不包括该可变字段。该可变字段又可分为能计算出的可变字段和不能计算出的可变字段。在一个实施方式中,隧道发送端110在所述扩展隧道头中添加所述第一报文头中的全部可变字段。在另一个实施方式中,隧道发送端110在所述扩展隧道头中添加所述第一报文头中的不能计算出的可变字段。

该可变字段例如是报文的序列号、报文的优先级等。

在步骤312中,隧道发送端110向隧道接收端120发送该封装后的第一报文。

具体地,隧道发送端110根据该目标字段对应的转发表项中的出接口发送该封装后的第一报文。隧道接收端120接收该封装后的第一报文。

在步骤314中,隧道接收端120从该封装后的第一报文的该扩展隧道头中获取该索引标识,并从该封装后的第一报文中剥离该扩展隧道头得到该第一报文的载荷。

该第一报文为该封装后的第一报文的原始报文。

在步骤316中,隧道接收端120根据该索引标识获取该压缩表项中的该目标字段。

在步骤318中,隧道接收端120为该第一报文的载荷添加该第一报文头,得到该第一报文,该目标字段用于生成该第一报文头中的不变字段。

在一个实施方式中,该目标字段为该第二报文头和该第一报文头的所有字段,隧道接收端120根据该目标字段得到该第一报文头,并为该第一报文的载荷添加该第一报文头,得到该第一报文,或,隧道接收端120先为该第一报文的载荷添加空的报文头,并将该目标字段的每个字段写入该空的报文头的相应字段,得到该第一报文。

在另一个实施方式中,该扩展隧道头中还包括不能计算得到的可变字段;则为该第一报文的载荷添加第一报文头得到该第一报文包括:根据该目标字段和该不能计算得到的可变字段生成该第一报文头,并为该第一报文的载荷添加该第一报文头,得到该第一报文。

在一个实施方式a中,该目标字段为该第二报文头和该第一报文头的不变字段,该扩展隧道头中还包括该第一报文头的全部可变字段,隧道接收端120还需要从该扩展隧道头中获取该全部可变字段,根据该目标字段和该全部可变字段得到该第一报文头,并为该第一报文的载荷添加该第一报文头,得到该第一报文;或,隧道接收端120先为该第一报文的载荷添加空的报文头,并将该目标字段和该全部可变字段中的每个字段写入该空的报文头的相应字段,得到该第一报文。

在另一个实施方式b中,该目标字段为该第二报文头和该第一报文头的不变字段,该扩展隧道头中还包括该第一报文头的不能计算出的可变字段,隧道接收端120还需要计算该第一报文头的能计算出的可变字段,并根据该目标字段、不能计算出的可变字段和能计算出的可变字段生成该第一报文头,并为该第一报文的载荷添加该第一报文头,得到该第一报文;或,隧道接收端120先为该第一报文的载荷添加空的报文头,并将该目标字段、不能计算出的可变字段和能计算出的可变字段中的每个字段写入该空的报文头的相应字段,得到该第一报文。

然后,隧道接收端120可以根据现有的转发方法将该第一报文发送给目的设备。

进一步地,本申请实施例中还包括老化该压缩表项的步骤,该老化转发表项包括以下方式之一:

方式1、该隧道发送端110和隧道接收端120上均存储有该数据流的转发表项,当隧道发送端110和该隧道接收端120超过设定时间没有接收到该数据流的后续报文需要删除各自的转发表项时,该隧道发送端110和隧道接收端120分别删除各自存储的转发表项对应的压缩表项。对于同一数据流隧道发送端110上的出端口并不同于隧道接收端120上的出端口,因此隧道发送端110上存储的该数据流的转发表项与隧道接收端120上存储的该数据流的转发表项不同,但隧道发送端110上存储的该数据流的转发表项与隧道接收端120上存储的该数据流的转发表项可以对应到相同的压缩表项。

方式2、该隧道发送端110上存储有该数据流的转发表项,该隧道接收端120没有存储该数据流的转发表项,当隧道发送端110超过设定时间没有接收到该数据流的后续报文时,隧道发送端110删除该转发表项和该压缩表项,并且,隧道发送端110向隧道接收端120发送通知消息,该通知消息携带该索引标识,用于通知隧道接收端120删除该压缩表项。隧道接收端120收到该通知消息后,获取该通知消息中的该索引标识,根据该索引标识查找到该压缩表项并删除该压缩表项。

本申请实施例中要求隧道发送端110和隧道接收端120均支持上述的隧道封装和解封装过程。在执行图3所示的方法前,隧道发送端110和隧道接收端120可以通过协商或分别接收控制器发送的通知消息确认对端支持本申请实施例提供的功能。

本申请实施例中,通过在隧道发送端和隧道接收端分别存储压缩表项,使隧道发送端在向隧道发送原始报文之前,删除该原始报文的原始报文头,减小了隧道报文的长度,提高隧道报文中的有效载荷的占比,提高了网络带宽的利用率。并且,隧道接收端在收到隧道报文后,可以根据压缩表项恢复出原始报文,保证了原始报文的正确传输。

以下以vxlan隧道为例,具体说明本申请的技术方案。

vxlan是建立在三层网络即ip网络之上的虚拟以太网,其基本原理是由一个vxlan隧道端点(vxlantunnelendpoint,vtep)为内层以太报文封装外层隧道头得到vxlan报文,并将vxlan报文发送给对端的vtep。当前,vtep可以为服务器上虚拟出来的虚拟交换机(vswitch)或物理交换机,例如,架顶交换机(topofrack,tor)。

如图6所示,为vxlan的结构示意图。图6中,服务器1上部署了虚拟机vm1和vm2,服务器2上部署了虚拟机vm3和vm4。并且,服务器1上部署了虚拟交换机1,服务器2上部署了虚拟交换机2。虚拟交换机1为vm1和vm2的vtep,虚拟交换机2为vm3和vm4的vtep。假设vm1和vm4属于同一个租户,需要互相通信。当vm1发出的报文(原始报文)到达虚拟交换机1后,虚拟交换机1要为该报文封装vxlan隧道头,如图7所示,为标准的vxlan封装过程示意图,该标准vxlan隧道头包括8字节的外层以太头,又称外层mac头(outermacheader),20字节的外层ip头(outeripheader),8字节的用户数据报协议(userdatagramprotocol,udp)头和8字节的vxlan头。其中,vxlan头包括8比特的vxlan标识(用于指示该报文为vxlan报文),24比特的第一保留字段,24比特的vni,和8比特的第二保留字段。封装之后,该原始报文的以太头成为标准vxlan报文的内层以太头,该原始报文的ip头成为该标准vxlan报文的内层ip头。从图7可以看出,隧道封装后的vxlan报文长度较大,在网络中传输长度较大的vxlan报文会降低网络中带宽的实际利用率(即有效数据占实际传输的数据的比值)。

应用本申请实施例提供的方法,虚拟交换机1(隧道发送端)在接收到vm1发送的目的为vm4的报文后,获取该报文的原始报文头,该原始报文头包括以太头和ip头。虚拟交换机1根据该原始报文头确定的目标字段为该以太头中的源mac地址(以下简称为smac),目的mac地址(以下简称为dmac),虚拟局域网标识(以下简称为vlanid)、以太类型(以下简称为etype)和该ip头中的源ip地址(以下简称为sip)和目的ip地址(以下简称为dip)。

虚拟交换机1根据该目标字段查找自身的压缩表,确定该压缩表中是否存储有该目标字段对应的压缩表项。如果虚拟交换机1已经存储了该压缩表项,则根据该目标字段对应的转发表项和该压缩表项为该报文封装扩展vxlan隧道头并删除该报文的原始报文头得到扩展的vxlan报文,该扩展vxlan隧道头包括该压缩表项中的索引标识。如果虚拟交换机1没有存储该压缩表项,虚拟交换机1首先获取该压缩表项。虚拟交换机1可以自己根据上述目标字段生成所述压缩表项或者将上述目标字段发送给控制器,由控制器生成压缩表项并发送给虚拟交换机1。

如图8所示,为虚拟交换机1上生成的压缩表的结构示意图。该压缩表包括至少一个压缩表项,每个压缩表项包括索引标识和对应的目标字段。索引标识例如id1,id2……idn。每个压缩表项对应一条数据流,用于封装属于该数据流的报文。

基于图8所示的压缩表,如图9所示,为本申请实施例中虚拟交换机1为接收的原始报文封装扩展vxlan隧道头之后得到的扩展vxlan报文。与图7所示的标准vxlan报文不同的是,本申请实施例中的扩展vxlan报文在扩展vxlan隧道头(具体是在vxlan头)中封装了索引标识和原始报文头中的可变字段(称为内层可变字段),并且,扩展vxlan报文中不包括内层以太头和内层ip头。该内层可变字段例如可以包括ip头中的优先级信息或者协议类型(例如是ipv4协议还是ipv6协议)。其中,该内层可变字段携带在标准vxlan隧道头的部分保留字段,不会改变vxlan隧道头的长度。

虚拟交换机1将该扩展vxlan报文发送给虚拟交换机2。虚拟交换机2接收到该扩展vxlan报文,读取该扩展vxlan报文的扩展vxlan隧道头,发现其中携带有索引标识。虚拟交换机2根据该索引标识查找虚拟交换机的压缩表,找到对应的压缩表项。虚拟交换机2根据该压缩表项中的目标字段以及该扩展隧道头中的可变字段生成该原始报文头,从该扩展vxlan报文中剥离该扩展vxlan隧道头,得到该原始载荷,并为该原始载荷添加该原始报文头,得到该原始报文。然后,虚拟交换机根据该原始报文查找转发表,得到对应转发表项,并通过该转发表项中的出接口将该原始报文发送给vm4。

本申请实施例可以应用在任何场景下,但是对有效载荷较小的报文的压缩效果尤其显著。以以太头长18字节,ip头长20字节为例,一个长100字节的原始报文,其中的有效载荷为62字节,采用标准的vxlan隧道封装,得到的标准vxlan报文的长度为150字节(其中,50字节为标准vxlan隧道头的长度),带宽的实际利用率为41.3%;而采用本申请实施例提供的封装方式,由于在生成扩展vxlan的时候删除了以太头和ip头共38字节,得到的扩展vxlan报文的长度为112字节,带宽的实际利用率为55.4%。可见,上述过程中,虚拟交换机1通过为报文封装扩展vxlan隧道头可以减少扩展vxlan报文的长度,进而提高带宽的实际利用率。

进一步地,本申请实施例还提供了一种隧道发送端和一种隧道接收端用于实现本申请图3-图5所示的方法。

如图10所示,为本申请实施例提供的一种隧道发送端110的结构示意图,该隧道发送端110包括第一接收单元1101,处理单元1102,第一发送单元1103。其中,第一接收单元1101用于执行步骤302和306;处理单元1102用于执行步骤304,308和311;第一发送单元1101用于执行步骤312。在一个实施方式中,处理单元1102还用于执行步骤304-11,304-12和304-17;第一发送单元1101还用于执行步骤304-13,该隧道发送端111还包括第二接收单元1104,用于执行步骤304-16。在另一个实施方式中,该隧道发送端111还包括第二发送单元1105和第三接收单元1106,第二发送单元1105用于执行步骤304-21,第三接收单元1106用于执行步骤304-24。处理单元1102还用于执行步骤304-25。

如图11所示,为本申请实施例提供的一种隧道接收端120的结构示意图,该隧道接收端120包括第一接收单元1201和处理单元1202。其中,第一接收单元1201用于执行步骤312,处理单元1202用于执行步骤314,316和318。在一个实施方式中,第一接收单元1201还用于执行步骤304-13,处理单元还用于执行步骤304-14和304-15。该隧道接收端120还包括发送单元1203,用于执行步骤304-16。在另一个实施方式中,该隧道接收端120还包括第二接收单元1204,用于执行步骤304-25。

由于隧道发送端110和隧道接收端120可以互换角色,因此,该隧道发送端110和隧道接收端120可以统称为隧道端设备,该隧道端设备具有图12所示的硬件结构。如图12所示,本申请实施例提供的隧道端设备1300包括:处理器1301、存储器1302、第一通信接口1303和第二通信接口1304。存储器1302用于存储程序代码,转发表和压缩表。处理器1301用于调用所述程序代码,通过第一通信接口1303与隧道对端通信,以及利用所述转发表和压缩表实现图3-5所示的方法。处理器1301还用于调用所述程序代码,通过第二通信接口1304从源设备接收报文或向目的设备发送报文。进一步地,隧道端设备1300还可以包括第三通信接口1305,处理器1301还用于调用所述程序代码,通过第三通信接口1305与控制器通信。

本申请实施例中提到的隧道发送端、隧道接收端可以是路由器或交换机或服务器或具有上述功能的其他设备。本申请实施例中提到的控制器可以是路由器或服务器。

通过以上实施方式的描述,本领域的技术人员可以清楚地了解到本申请可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例的方法。

以上该仅是本申请的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1