一种VXLAN隧道负载均衡的方法及系统与流程

文档序号:11263580阅读:703来源:国知局
一种VXLAN隧道负载均衡的方法及系统与流程

本发明涉及数据通信领域,尤其涉及一种vxlan隧道负载均衡的方法及系统。



背景技术:

vxlan(virtualextensiblelan,可扩展虚拟局域网络)是基于ip网络、采用“macinudp”封装形式的二层vpn(虚拟专用网络)技术。vxlan可以基于已有的服务提供商或企业ip网络,为分散的物理站点提供二层互联,并能够为不同的租户提供业务隔离。vxlan主要应用于数据中心网络。

vxlan具有如下特点:

1、支持大量的租户:使用24位的标识符,最多可支持2的24次方(16777216)个vxlan,支持的租户数目大规模增加,解决了传统二层网络vlan资源不足的问题。

2、易于维护:基于ip网络组建大二层网络,使得网络部署和维护更加容易,并且可以充分地利用现有的ip网络技术,例如利用等价路由进行负载分担等;只有ip核心网络的边缘设备需要进行vxlan处理,网络中间设备只需根据ip头转发报文,降低了网络部署的难度和费用。目前,设备只支持基于ipv4网络的vxlan技术,不支持基于ipv6网络的vxlan技术。

正是因为采取了隧道封装方式,多条乘客网络的流量进入隧道后,就合并为一条流了,vxlan封装的格式如图1所示:

在原始二层数据帧外添加8字节vxlan头、8字节udp头和20字节ip头。其中,udp头的目的端口号为vxlanudp端口号(缺省为4789)。vxlan头主要包括两部分:

标记位:“i”位为1时,表示vxlan头中的vxlanid有效;为0,表示vxlanid无效。其他位保留未用,设置为0。

vxlanid:用来标识一个vxlan网络,长度为24比特。

在vxlan头部外,封装有udp头+ip头,从这一点出发,不同的乘客网络流量进入到vxlan隧道后,其udp头,ip头,vxlan头都相同,这样导致无法进行报文负载均衡(因为报文可以做负载分担的内容完全相同)。



技术实现要素:

本发明所要解决的技术问题是:本发明提出一种vxlan隧道负载均衡的方法及系统,解决传统技术中xvlan网络环境下,不同的乘客流量报文无法进行流量负载均衡的问题。

一方面,本发明实施例提供一种vxlan隧道负载均衡的系统,包括第一隧道端设备和第二隧道端设备,至少两个网络设备,所述第一隧道端设备与第二隧道端设备之间建立vxlan隧道,所述至少两个网络设备用于在vxlan隧道中提供至少两条流量通道;

所述第一隧道端设备包括:报文接收模块、隧道封装模块、流量负载均衡模块;

所述报文接收模块,用于接收需要途经隧道的乘客报文;

隧道封装模块,用于对乘客报文进行隧道封装,在封装时,根据乘客报文的二层头信息做hash运算,并将得到的hash值设置在vxlan头的保留字段中作为流量负载均衡需要的乘客报文信息;

所述流量负载均衡模块,用于根据隧道封装后的乘客报文的外层信息进行流量负载均衡,选择vxlan隧道中的一条流量通道发送封装后的乘客报文;

所述第二隧道端设备包括:报文收取模块、隧道解封装模块、转发模块;

报文收取模块,用于接收到达vxlan隧道出口的乘客报文;

隧道解封装模块,用于对乘客报文进行解封装处理,获得内层的原始乘客报文;

转发模块,用于根据原始乘客报文中的地址信息转发该报文。

作为进一步优化,所述报文接收模块还用于,根据乘客报文的二层头信息查找路由,判断该报文是否为需要途经隧道的乘客报文。

作为进一步优化,所述隧道封装模块对乘客报文进行隧道封装具体包括:在乘客报文的原始二层数据帧外添加8字节的vxlan头、8字节的udp头和20字节的ip头。

作为进一步优化,所述隧道封装模块根据乘客报文的二层头信息做hash运算,具体包括:隧道封装模块提取乘客报文的二层头信息,并对二层头信息做hash运算。

作为进一步优化,所述隧道封装后的乘客报文的外层信息包括:添加的ip头中的源ip地址、目的ip地址、udp头中的源端口、目的端口及vxlan头的保留字段。

另一方面,本发明实施例提供一种vxlan隧道负载均衡的方法,其包括:

a.第一隧道端设备接收需要途经隧道的乘客报文;

b.第一隧道端设备对乘客报文进行隧道封装,在封装时,根据乘客报文的二层头信息做hash运算,并将得到的hash值设置在vxlan头的保留字段中作为流量负载均衡需要的乘客报文信息;

c.第一隧道端设备根据隧道封装后的乘客报文的外层信息进行流量负载均衡,选择vxlan隧道中的流量通道发送封装后的乘客报文;

d.第二隧道端设备接收到达vxlan隧道出口的乘客报文;

e.第二隧道端设备对乘客报文进行解封装处理,获得内层的原始乘客报文;

f.第二隧道端设备根据原始乘客报文中的地址信息转发该报文。

作为进一步优化,步骤a中还包括:第一隧道端设备根据乘客报文的二层头信息查找路由,判断该报文是否为需要途经隧道的乘客报文。

作为进一步优化,步骤b中,所述第一隧道端设备对乘客报文进行隧道封装,包括:在乘客报文的原始二层数据帧外添加8字节的vxlan头、8字节的udp头和20字节的ip头。

作为进一步优化,步骤b中,所述根据乘客报文的二层头信息做hash运算,具体包括:隧道封装模块提取乘客报文的二层头信息,并对二层头信息做hash运算。

作为进一步优化,步骤c中,所述隧道封装后的乘客报文的外层信息包括:添加的ip头中的源ip地址、目的ip地址、udp头中的源端口、目的端口及vxlan头的保留字段。

本发明的有益效果是:

对乘客报文的二层头信息做hash运算,将获得的hash值设置在vxlan头的保留字段中来体现乘客网络的流量信息,如此,不同的乘客报文虽然进入了同一个隧道,但是,由于vxlan头中保留字段不同,同样可以做到流量负载均衡;由此,本发明解决了vxlan隧道组网环境下隧道负载均衡的问题,在现实组网中,即可以利用vxlan隧道的优势(例如节省公网地址、穿越异构网络等),也可以做到根据原始报文计算出的值进一步做到负载均衡,提高网络传输效率。

附图说明

图1为vxlan封装格式示意图;

图2为本发明中的vxlan隧道负载均衡的系统结构示意图;

图3为本发明中的vxlan隧道负载均衡方法流程图;

图4为实施例中vxlan隧道负载均衡系统组网示意图。

具体实施方式

本发明旨在提出一种vxlan隧道负载均衡的方法及系统,解决传统技术中xvlan网络环境下,不同的乘客流量报文无法进行流量负载均衡的问题。

如图2所示,本发明中的vxlan隧道负载均衡系统包括:

包括第一隧道端设备和第二隧道端设备,至少两个网络设备,所述第一隧道端设备与第二隧道端设备之间建立vxlan隧道,所述至少两个网络设备用于在vxlan隧道中提供至少两条流量通道;

所述第一隧道端设备包括:报文接收模块、隧道封装模块、流量负载均衡模块;

所述报文接收模块,用于接收需要途经隧道的乘客报文;

隧道封装模块,用于对乘客报文进行隧道封装,在封装时,根据乘客报文的二层头信息做hash运算,并将得到的hash值设置在vxlan头的保留字段中作为流量负载均衡需要的乘客报文信息;

所述流量负载均衡模块,用于根据隧道封装后的乘客报文的外层信息进行流量负载均衡,选择vxlan隧道中的流量通道发送封装后的乘客报文;

所述第二隧道端设备包括:报文收取模块、隧道解封装模块、转发模块;

报文收取模块,用于接收到达vxlan隧道出口的乘客报文;

隧道解封装模块,用于对乘客报文进行解封装处理,获得内层的原始乘客报文;

转发模块,用于根据原始乘客报文中的地址信息转发该报文。

基于上述系统,本发明实现的vxlan隧道负载均衡的方法如图3所示,其包括以下步骤:

1、第一隧道端设备接收需要途经隧道的乘客报文;

在本步骤中,第一隧道端设备作为vxlan隧道的入口处网络设备,其对于收到的乘客报文根据报文的二层头信息(源ip、目的ip、源端口、目的端口、协议号)查找路由,判断该报文是否为需要途经隧道的乘客报文。

2、第一隧道端设备对乘客报文进行隧道封装,在封装时,根据乘客报文的二层头信息做hash运算,并将得到的hash值设置在vxlan头的保留字段中作为流量负载均衡需要的乘客报文信息;

在本步骤中,隧道封装的格式如图1所示,在乘客报文的原始二层数据帧外添加8字节的vxlan头、8字节的udp头和20字节的ip头;考虑到vxlan头中有两个保留字段reserved0和reserved1,这两个字段目前没有被用到,可以利用这两个字段来体现乘客网络的流量信息(例如根据乘客网络报文的二层头信息做hash运算);reserved0作为24比特的保留字段,reserved1作为8比特的保留字段,其容量足够乘客网络流量使用;

具体操作时,可以提取乘客报文的二层头信息(源ip、目的ip、源端口、目的端口、协议号),并对二层头信息做hash运算,或者根据二层头信息中的任意元素的组合做hash运算,hash运算的算法可以使用传统技术中的任意算法,这里不作限定。

然后将hash运算获得的hash值设置到vxlan头部的保留字段中,作为流量负载均衡需要的乘客报文信息。

3、第一隧道端设备根据隧道封装后的乘客报文的外层信息进行流量负载均衡,选择vxlan隧道中的流量通道发送封装后的乘客报文;

本步骤中,第一隧道端设备根据添加的ip头中的源ip地址、目的ip地址、udp头中的源端口、目的端口及vxlan头的保留字段对报文流量进行分流,在分流算法方面,可以参考传统的使用二层头做分流的算法(只需要将本发明vxlan中的保留字段对应于通用二层头中的协议号),这样不同的乘客报文虽然进入了同一个隧道,但是,由于vxlan头中reserved字段不同,同样可以做到流量负载均衡。

4、第二隧道端设备接收到达vxlan隧道出口的乘客报文;

本步骤中,第二隧道端设备作为vxlan隧道出口处的网络设备,其接收到达vxlan隧道出口的乘客报文,此时乘客报文为经过隧道封装后的报文;

5、第二隧道端设备对乘客报文进行解封装处理,获得内层的原始乘客报文;

本步骤中,第二隧道端设备在收到报文后走隧道解封装流程,即去掉隧道封装时添加的vxlan头、外层的ip头、udp头,从而得到内层的原始乘客报文。

6、第二隧道端设备根据原始乘客报文中的地址信息转发该报文。

本步骤中,第二隧道端设备在获得原始乘客报文后,根据乘客报文中的地址信息(源ip地址、目的ip地址)转发所述报文。

实施例:

如图4所示,本实施例的vxlan隧道负载均衡系统在实施组网时,gw1(第一隧道端设备)和gw2(第二隧道端设备)之间建立隧道,gw1隧道端点地址为ip1,gw2隧道端点地址为ip2,r1、r2为隧道中的两个网络设备,对应提供了两条传输通道;

假如乘客报文要从pc1发送到pc2,pc1、pc2的地址分别为ip_pc1,ip_pc2;

本发明的具体实施过程包括如下几个方面:

一、gw1的行为:

1、收到pc1到pc2的报文,提取报文二层头信息(源ip、目的ip、源端口、目的端口、传输协议),根据二层头知晓该报文的源地址为ip_pc1,目的地址ip_pc2,协议号为x,从而查找路由,应该走隧道;

2、使用二层头信息做hash运算,获得hash值;

3、对原始报文做隧道封装,封装后的源地址为ip1,目的地址为ip2,将vxlan头中的保留字段reserve0设置为步骤2获得的hash值;

4、根据封装后的报文源地址、目的地址、udp头的源端口、udp头中目的端口、vxlan头的保留字段reserve0做分流,例如当前有两条路,可以通过算法,在r1和r2之间选择一条,例如选择r1,后续再有流量进入隧道时,采取相同的方式做处理,这样流量就可以均匀分布在去往r1和r2的路径上,达到了负载均衡的目的;

需要说明的是:本实施例中只应用了r1和r2,在实际组网环境中,可能路径更多,这样负载均衡的效果更佳;

二、gw2的行为:

1、收到隧道封装后的报文,源地址为ip1,目的地址为ip2,vxlan头中保留位reserve0字段为hash值;

2、走隧道解封装流程,去掉vxlan头和外层的ip头,得到内层报文源地址为ip_pc1,目的地址为ip_pc2,这样就可以将报文转发给pc2。

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