流量转发方法和装置与流程

文档序号:14351177阅读:216来源:国知局
流量转发方法和装置与流程

本公开涉及通信技术领域,尤其涉及一种流量转发方法和装置。



背景技术:

图1是基于分布式聚合提出的mlag(multi-chassislinkaggregationgroup,多机箱链路聚合)+evpn(ethernetvirtualprivatenetwork,以太网虚拟专用网络)的有peerlink(聚合链接)的组网示意图。如图1所示,各组件的含义如下:

evpn是一种二层vpn(virtualprivatenetwork,虚拟专用网络)技术,控制平面采用mp-bgp(multiprotocolbordergatewayprotocol,多协议边界网关协议)通告evpn路由信息,数据平面采用vxlan(virtualextensiblelocalareanetwork,可扩展虚拟局域网)封装方式转发报文。

vm(virtualmachine,虚拟机):在一台服务器上可以创建多台虚拟机,不同的虚拟机可以属于不同的vxlan。属于相同vxlan的虚拟机处于同一个逻辑二层网络,彼此之间二层互通;属于不同vxlan的虚拟机之间二层隔离。vxlan通过vxlanid来标识,vxlanid又称vni(vxlannetworkidentifier,vxlan网络标识符),其长度为24比特。

vtep(vxlantunnelendpoint,vxlan隧道端点):vxlan的边缘设备。vxlan的相关处理都在vtep上进行,例如识别以太网数据帧所属的vxlan、基于vxlan对数据帧进行二层转发、封装/解封装报文等。vtep可以是一台独立的物理设备,也可以是虚拟机所在的服务器。

vxlan隧道:两个vtep之间的点到点逻辑隧道。vtep为数据帧封装vxlan头、udp头和ip头后,通过vxlan隧道将封装后的报文转发给远端vtep,远端vtep对其进行解封装。

核心设备:ip核心网络中的设备。核心设备不参与vxlan处理,仅需要根据封装后报文的目的ip地址对报文进行三层转发。

vsi(virtualswitchinstance,虚拟交换实例):vtep上为一个vxlan提供二层交换服务的虚拟交换实例。vsi可以看作是vtep上的一台基于vxlan进行二层转发的虚拟交换机,它具有传统以太网交换机的所有功能,包括源mac地址学习、mac地址老化、泛洪等。vsi与vxlan一一对应。

ac(attachmentcircuit,接入电路):vtep连接本地站点的物理电路或虚拟电路。在vtep上,与vsi关联的三层接口或以太网服务实例(serviceinstance)称为ac。其中,以太网服务实例在二层以太网接口上创建,以太网服务实例定义了一系列匹配规则,用来匹配从该二层以太网接口上接收到的数据帧。1个二层物理口下面配置了服务实例。

这个ac的意义在于:从物理端口ten1/0/1进入的数据报文,如果携带tag10,则会进入vsivpnb转发,即完成了vlantag10到封装vxlanid100报文的映射。

drni(distributedresilientnetworkinterconnect,分布式弹性网络互连)是一种跨设备链路聚合技术,将两台物理设备在聚合层面虚拟成一台设备来实现跨设备链路聚合,从而提供设备级冗余保护和流量负载分担。

ipp(intra-portalport,内部控制链路端口):连接对端dr邻居设备用于内部控制的二层聚合接口。每台dr设备只有一个ipp口。ipp间通过ipl(intra-portallink,内部控制链路)在dr设备间传输drni协议报文。一个dr系统只有一条ipl。图2中,vtepb和vtepc之间的链路就是ipp口的链路。

dr接口(distributedrelayinterface,分布式聚合接口):与外部设备相连的二层聚合接口。与外部设备上相同聚合组相连的dr接口属于同一dr组(distributed-relaygroup,分布式聚合组)。如图2所示,vtepb上与cea连接的二层聚合接口和vtepb上与cea连接的二层聚合接口属于同一dr组。

如图1所示,vm1到vm2的流量转发可以经过分布式聚合的任意一台设备vtep1或者vtep3设备。当一台设备挂掉,不会影响另外一台接替工作。



技术实现要素:

有鉴于此,本公开提出了一种流量转发方法和装置。

根据本公开的一方面,提供了一种流量转发方法,应用于分布式聚合系统中的第一vtep中,所述分布式聚合系统中包括至少两个vtep,不同的vtep配置有不同的mac地址,所述方法包括:

在检测到与自身连接的虚拟机上线的情况下,获取所述分布式聚合系统中的各vtep的转发性能;

根据各vtep的当前业务量和转发性能向所述虚拟机返回用于进行负载分担的vtep的mac地址。

根据本公开的另一方面,提供了一种流量转发装置,应用于分布式聚合系统中的第一vtep中,所述分布式聚合系统中包括至少两个vtep,不同的vtep配置有不同的mac地址,所述装置包括:

获取模块,用于在检测到与自身连接的虚拟机上线的情况下,获取所述分布式聚合系统中的各vtep的转发性能;

返回模块,用于根据各vtep的当前业务量和转发性能向所述虚拟机返回用于进行负载分担的vtep的mac地址。

在分布式聚合系统中,可以为不同vtep设置不同的mac地址作为实际的mac的地址,根据分布式聚合系统中两台vtep设备的当前业务量和转发性能动态地决定虚拟机业务流量的负载分担,使得分布式聚合系统的各vtep都能得到高效的运用。

根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。

附图说明

包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。

图1是基于分布式聚合的mlag和evpn的组网示意图。

图2是分布式聚合和evpn的综合组网等价负载分担的示意图。

图3示出根据本公开一实施例的流量转发方法的流程图。

图4示出根据本公开一实施例的流量转发方法的另一流程图。

图5示出根据本公开一实施例的流量转发方法的应用场景的示意图。

图6示出根据本公开一实施例的流量转发装置的结构框图。

图7示出根据本公开一实施例的流量转发装置的另一结构框图。

图8是根据一示例性实施例示出的流量转发装置的示意图。

具体实施方式

以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。

在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。

另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。

目前分布式聚合和evpn的综合组网,从虚拟机侧通过分布式聚合的dr口转发的流量都是通过等价负载分担进行转发的。如图2所示,从vma向vme转发的业务数据报文,在vma出接口的时候,会根据业务平衡的负载分担到vtepb和vtepc进行转发。

但是,目前的方案是基于vtepb和vtepc属于转发性能差不多的交换设备而言的。如果vtepb和vtepc属于转发性能差异较大的设备,采用平衡的负载分担并不适合,会导致转发性能较差的设备较忙、转发性能高的设备较空闲的情况。

针对以上的问题,本公开提出了基于分布式聚合和evpn的综合组网下,通过构建网关的虚mac来动态区分流量的方案。

在分布式聚合系统中,为所有的evpn的网关(例如vtep)设置不同的mac地址作为实际的mac地址。在进行负载分担时,在hash(哈希)到分布式聚合系统中的一台vtep后,该vtep可以根据分布式聚合系统中两台vtep的转发性能比来向vm返回进行报文转发的实际mac地址表项。通过这种方案可以动态的根据vtep的转发性能来决定虚拟机业务流量的负载分担,使得分布式聚合系统的两个vtep都能得到高效的运用。

图3示出根据本公开一实施例的流量转发方法的流程图。如图3所示,该方法应用于分布式聚合系统中的第一vtep中,所述分布式聚合系统中包括至少两个vtep,不同的vtep配置有不同的mac地址,所述方法包括:

步骤101、在检测到与自身连接的虚拟机上线的情况下,获取所述分布式聚合系统中的各vtep的转发性能;

步骤102、根据各vtep的当前业务量和转发性能向所述虚拟机返回用于进行负载分担的vtep的mac地址。

在一种可能的实现方式,分布式聚合系统中包括第一vtep和第二vtep,第一vtep可以通过evpn的协议交互获取自身和第二vtep的转发性能和当前业务量。第二vtep可以通过evpn的协议交互获取自身和第一vtep的转发性能和当前业务量。如图4所示,步骤102包括:

步骤201、根据分布式聚合系统中的第一vtep与第二vtep的当前业务量和转发性能,确定用于进行负载分担的vtep;

步骤202、如果用于进行负载分担的vtep为第一vtep,则向所述虚拟机返回所述第一vtep的mac地址。

在一种可能的实现方式中,如图4所示,步骤102还包括:

步骤203、如果用于进行负载分担的vtep为第二vtep,则向所述虚拟机返回所述第二vtep的mac地址。

在分布式聚合系统中,每个vtep的转发性能与各自转发性能例如能够转发的最大业务量有关。在第一vtep和第二vtep上将进行vsi(虚拟交换实例)的转发性能设定为某个数值。举例而言,如果第二vtep的转发性能是第一vtep的2倍,可以在第二vtep上将进行vsi的转发性能设定为2,在第一vtep上将进行vsi的转发性能设定为1。第一vtep通过evpn的协议交互获取自身和第二vtep的转发性能。并且,第一vtep还可以通过evpn的协议交互获取自身和第二vtep的当前业务量,例如当前收到的业务数目。在第一vtep上,如果根据第一vtep与第二vtep的当前业务量和转发性能,确定用于进行负载分担的vtep为第一vtep,则第一vtep向虚拟机返回第一vtep的mac地址。在第一vtep上,如果确定用于进行负载分担的vtep为第二vtep,则第一vtep向虚拟机返回第二vtep的mac地址。

在一种可能的实现方式中,步骤201包括:

如果分布式聚合系统中的第一vtep与第二vtep的当前业务量的比值小于第一阈值,则用于进行负载分担的vtep为第一vtep,所述第一阈值是根据所述第一vtep和所述第二vtep的转发性能来确定的。例如,第一阈值是所述第一vtep的转发性能与所述第二vtep的转发性能的比值。

如果第一vtep与第二vtep的当前业务量的比值小于第一阈值,说明第一vtep与第二vtep的当前业务量比较来说,第一vtep相对于自身可承载的转发性能来说负载较轻,第二vtep相对于自身可承载的转发性能来说负载较重。因此,第一vtep可以承受更多的业务量,选择第一vtep分担当前负载。

在一种可能的实现方式中,步骤201还包括:

如果分布式聚合系统中的第一vtep与第二vtep的当前业务量的比值大于或等于第一阈值,则用于进行负载分担的vtep为第二vtep的mac地址。这时,第一vtep可以向虚拟机返回第二vtep的mac地址,使得虚拟机将转发表项中的下一跳从第一vtep修改为第二vtep。

如果第一vtep与第二vtep的当前业务量的比值大于或等于第一阈值,说明第一vtep与第二vtep的当前业务量比较来说,第一vtep相对于自身可承载的转发性能来说负载较重,第二vtep相对于自身可承载的转发性能来说负载较轻。因此,第二vtep可以承受更多的业务量,选择第二vtep分担当前负载。

需要说明的是,以上负担分担的实现方式仅是一种示例,而非限制。例如,分布式聚合系统中的第一vtep与第二vtep的当前业务量的比值等于第一阈值时,说明第一vtep与第二vtep的负载均衡,哪个vtep分担当前负载均可。因此,这时,第一vtep也可以不直接向虚拟机返回第二vtep的mac地址,而是向虚拟机随机返回第一vtep或第二vtep的mac地址。

在本实施例中,各vtep可以通过evpn协议交互来获知该分布式聚合系统中其他vtep的转发性能,从而确定自身的转发性能在分布式聚合系统中所占的比例。

接上例,在第一vtep中,可以将第一vtep与第二vtep的转发性能的比值1/2作为第一阈值。在第二vtep中可以将第二vtep与第一vtep的转发性能的比值2/1作为第二阈值。第一阈值和第二阈值可以用于在后续判断用哪个vtep进行负载分担。

在确定用哪个vtep进行负载分担时,分布式聚合系统中的第一vtep可以根据收到的业务数目来确定自身的当前业务量,并获取该分布式聚合系统中的第二vtep的当前业务量。

在第一vtep中,如果计算出第一vtep与第二vtep的当前业务量的比值小于第一阈值,可以认为第一vtep相对于自身可承载的转发性能来说负载较轻,因此,可以将第一vtep的mac地址应答给vm。如果计算出第一vtep与第二vtep的当前业务量的比值大于或等于第一阈值,可以认为第二vtep相对于自身可承载的转发性能来说负载较轻,因此,可以将第二vtep的mac地址应答给vm。

在第二vtep中,如果计算出第二vtep与第一vtep的当前业务量的比值小于第二阈值,可以认为第二vtep相对于自身可承载的转发性能来说负载较轻,因此,可以将第二vtep的mac地址应答给vm。如果计算出第二vtep与第一vtep的当前业务量的比值大于或等于第二阈值,可以认为第一vtep相对于自身可承载的转发性能来说负载较轻,因此,可以将第一vtep的mac地址应答给vm。

本公开在分布式聚合系统中,可以为不同vtep设置不同的mac地址作为实际的mac的地址,根据分布式聚合系统中两台vtep设备的当前业务量和转发性能动态地决定虚拟机业务流量的负载分担,使得分布式聚合系统的各vtep都能得到高效的运用。

图5示出根据本公开一实施例的流量转发方法的应用场景的示意图。如图5所示,该流量转发方法包括以下步骤:

步骤1、vma接入分布式聚合系统,分布式聚合系统包括两个vtep设备,分别为vtepb和vtepc。vtepb上面配置的实际的ip地址为1.1.1.1,虚拟机evpnip地址为3.3.3.3,网关的mac地址为1-1-1。vtepc上面配置的实际的ip地址为2.2.2.2,虚拟机evpnip地址为3.3.3.3,网关的mac地址为2-2-2。

步骤2、在vtepb和vtepc上面进行转发性能的比例配置设定。比如vtepc的转发性能是vtepb的双倍,则在vtepc上面,将进行vsi的转发性能设定为2;在vtepb上面,将进行vsi(virtualswitchinterface,虚拟交换接口)的转发性能设定为1。vtepb和vtepc扩展了evpn的协议交互,使得vtepb和vtepc互相知道对方的转发性能比例,从而确定自己所占用的转发性能在分布式聚合中的占用比例。

步骤3、vtepb和vtepc会交互对方网关的mac地址,在本地进行记录。

步骤4、当有虚拟机业务从分布式聚合系统的dr口(分布式聚合接口)进行分布式聚合之后,vtepb和vtepc会根据目前两台设备收到的业务数目来决定,是使用vtepb还是使用vtepc的网关mac地址进行应答。

步骤5、比如vma上线之后,哈希(hash)到vtepb上面。如果此时vtepb上面的vxlan业务上线数据,vtepb和与vtepc收到的业务数目的比例还没有达到1:2,则确认vma可以hash到vtepb上面进行转发。vtepb将自身的网关mac地址1-1-1应答给vma设备;

步骤6、如果vma上线之后,hash到vtepb上面。如果此时vtepb上面的vxlan业务上线数据,vtepb与vtepc收到的业务数目的比例超过了1:2,则确认vma应该hash到vtepc上面进行转发。vtepb将对端vtepc的网关mac地址2-2-2应答给vma。同时,在vma的转发表项中,将针对vma100.1.1.2的转发下一跳从vtepb切换到vtepc上面。

比较而言,如果vma上线之后,哈希(hash)到vtepc上面。如果此时vtepc上面的vxlan业务上线数据,vtepc和与vtepb收到的业务数目的比例还没有达到2:1,则确认vma可以hash到vtepc上面进行转发。vtepc将自身的网关mac地址2-2-2应答给vma设备。如果vtepc和与vtepb收到的业务数目的比例超过了2:1,则确认vma可以hash到vtepb上面进行转发。vtepc将对端vtepb的网关mac地址1-1-1应答给vma设备。同时,在vma的转发表项中,将针对vma100.1.1.2的转发下一跳从vtepc切换到vtepb上面。

本公开带来的直接效果:在分布式聚合系统中,为所有的evpn的网关设置不同的mac地址作为实际的mac的地址,根据分布式聚合系统中两台vtep设备的转发性能比来进行hash,设备报文转发的mac地址表项,通过这种方案可以动态的根据vtep设备的转发性能来决定虚拟机业务流量的负载分担,使得分布式聚合系统的两个vtep都能得到高效的运用。

本公开在分布式聚合系统中,根据各vtep的转发性能按比例进行业务流量转发,使用不同的mac地址来表示不同的vtep对不同的虚拟机业务进行应答,保证了虚拟机业务能够选择正确的evpn的网关通信。

图6示出根据本公开一实施例的流量转发装置的结构框图。如图6所示,该流量转发装置应用于分布式聚合系统中的第一vtep中,所述分布式聚合系统中包括至少两个vtep,不同的vtep配置有不同的mac地址,所述装置包括:

获取模块41,用于在检测到与自身连接的虚拟机上线的情况下,获取所述分布式聚合系统中的各vtep的转发性能;

返回模块43,用于根据各vtep的当前业务量和转发性能向所述虚拟机返回用于进行负载分担的vtep的mac地址。

在一种可能的实现方式中,如图5所示,所述返回模块43包括:

比较子模块51,用于根据分布式聚合系统中的第一vtep与第二vtep的当前业务量和转发性能,确定用于进行负载分担的vtep;

第一返回子模块53,用于如果用于进行负载分担的vtep为第一vtep,则向所述虚拟机返回所述第一vtep的mac地址。

在一种可能的实现方式中,所述返回模块43还包括:

第二返回子模块55,用于如果用于进行负载分担的vtep为第二vtep,则向所述虚拟机返回所述第二vtep的mac地址。

在一种可能的实现方式中,所述比较子模块51还用于如果分布式聚合系统中的第一vtep与第二vtep的当前业务量的比值小于第一阈值,则用于进行负载分担的vtep为第一vtep,所述第一阈值是根据所述第一vtep和所述第二vtep的转发性能来确定的。例如,第一阈值是所述第一vtep的转发性能与所述第二vtep的转发性能的比值。

在一种可能的实现方式中,所述比较子模块51还用于如果分布式聚合系统中的第一vtep与第二vtep的当前业务量的比值大于或等于第一阈值,则用于进行负载分担的vtep为第二vtep的mac地址。

第二返回子模块55还用于在比较子模块51确定用于进行负载分担的vtep为第二vtep时,向虚拟机返回第二vtep的mac地址,使得虚拟机上将转发表项中的下一跳从第一vtep修改为第二vtep。

关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

图8是根据一示例性实施例示出的流量转发装置的示意图。参照图8,该装置900可包括处理器901、存储有机器可执行指令的机器可读存储介质902。处理器901与机器可读存储介质902可经由系统总线903通信。并且,处理器901通过读取机器可读存储介质902中与流量转发逻辑对应的机器可执行指令以执行上文所述的流量转发方法。

本文中提到的机器可读存储介质902可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:ram(radomaccessmemory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。

以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

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