一种报文转发的方法及装置与流程

文档序号:16309619发布日期:2018-12-19 05:13阅读:156来源:国知局
一种报文转发的方法及装置与流程

本发明涉及通信技术领域,尤其涉及一种报文转发的方法及装置。

背景技术

vxlan(virtualextensiblelan,可扩展虚拟局域网络)是基于ip网络、采用“macinudp”封装形式的二层vpn(virtualprivatenetwork,虚拟专用网络)技术。目前在vxlan网络中实现纵向堆叠时,一般是将多台pe(portextenderdevice,端口扩展设备)连接到父设备控制设备cb上,将每台pe设备虚拟化成cb的一块远程业务板,由父设备统一管理。

为了减轻cb的处理压力,对于pe设备,增加了本地转发的功能,就是开启pe设备的下行口的mac学习功能,若流量匹配到对应的mac转发表项,则在本pe设备内进行流量转发,否则将流量发送cb转发。

pe设备上面具有本地交换能力之后,pe设备自身连接的第一vm和第二vm之间可以根据pe设备学习到的mac转发表项进行本地转发,不用发送cb处理,因此cb上没有第一vm和第二vm的mac表项。若第二vm迁移到其他pe设备上导致第二vm的mac地址发生变化时,由于该pe设备删无法感知第二vm迁移的变化,因此第一vm的访问第二vm的流量在该pe设备上还会根据之前学习的mac表项进行转发,因此导致第一vm和第二vm之间连接中断。



技术实现要素:

有鉴于此,本发明提供一种报文转发方法及装置,来避免在vm迁移时导致的连接中断问题。

具体地,本发明是通过如下技术方案实现的:

本发明提供一种报文转发方法,所述方法应用于cb,所述方法包括:

pe发送的由所述pe下挂的vm发送的arp报文;

获取所述arp报文中的所述vm的mac地址和对应的第二出接口;

当本cb记录的所述vm的mac地址对应的第一mac转发表项中的第一出接口与所述第二出接口不相同时,将所述第二出接口作为所述第一mac转发中的新的出接口;

将所述arp报文转发到自身连接的除了所述pe以外的其他pe,以使其他pe在记录的所述vm的mac地址对应的第二mac转发表项中的出接口与所述第二出接口不同时,删除所述第二mac转发表项。

基于相同的构思,本发明还提供一种报文转发装置,所述装置应用于cb,所述装置包括:

第一接收单元,用于接收pe发送的由所述pe下挂的vm发送的arp报文;

地址获取单元,用于获取所述arp报文中的所述vm的mac地址和对应的第二出接口;

表项更新单元,用于当本cb记录的所述vm的mac地址对应的第一mac转发表项中的第一出接口与所述第二出接口不相同时,将所述第二出接口作为所述第一mac转发中的新的出接口;

报文转发单元,用于将所述arp报文转发到自身连接的除了所述pe以外的其他pe,以使其他pe在记录的所述vm的mac地址对应的第二mac转发表项中的出接口与所述第二出接口不同时,删除所述第二mac转发表项。

由此可见,本发明可以使cb在接收pe发送的其下挂的vm发送的arp报文时,获取其中携带的vm的mac地址和对应的第二出接口,当本cb记录的该vm的mac地址对应的第一mac转发表项中的第一出接口与第二出接口不相同时,将第二出接口作为该第一mac转发中的新的出接口;将该arp报文转发到自身连接的除了该pe以外的其他pe,以使其他pe在记录的该vm的mac地址对应的第二mac转发表项中的出接口与所述第二出接口不同时,删除该第二mac转发表项。本发明可以使pe将arp报文发送到cb,使cb学习该pe下挂的vm的mac转发表项,因此当vm迁移时,cb可以学习该vm迁移后的mac转发表项,从而实现对该vm的报文进行转发,并且cb可以通过转发该vm的arp报文来使vm迁移前的pe删除vm迁移前的mac转发表项,从而避免vm迁移后的数据报文还是根据迁移前的mac转发表项进行转发导致的连接中断的问题,从而提升了网络的稳定性。

附图说明

图1是本发明一种示例性实施方式中的一种vxlan组网示意图;

图2是本发明一种示例性实施方式中的一种报文转发方法的处理流程图;

图3是本发明一种示例性实施方式中的另一种vxlan组网示意图;

图4本发明一种示例性实施方式中的报文转发装置所在cb的硬件结构图;

图5本发明一种示例性实施方式中的一种报文转发装置的逻辑结构图。

具体实施方式

请参考图1为vxlan组网示意图,其中包括:vm(virtualmachine,虚拟机)、irf(intelligentresilientframework,智能弹性架构)组网以及核心网络;其中可以在一台服务器上可以创建多台vm,属于相同vxlan的vm处于同一个逻辑二层网络,彼此之间二层互通;属于不同vxlan的vm之间二层隔离;vm通过irf组网实现二层互通;核心网络用于实现对报文进行三层转发。

在irf组网中,为了实现的纵向堆叠,通常将多台pe连接到父设备cb上,进行必要的配置后,将每台pe虚拟化成cb的一块远程业务板,由cb统一管理,从而提高父设备的接口密度,简化网络拓扑,降低网络维护成本。对于在纵向堆叠中,为了减轻cb的处理压力,增加了pe的本地转发的功能,简言之就是开启pe的mac学习(上行口和级联口不开启mac学习)功能,若流量匹配到pe中的mac转发表项,则在本pe内进行流量转发,若流量没有匹配到mac转发表项,则发送cb进行转发;如果去使能本地转发,则关闭mac学习,并删除学习到的所有单播mac转发表项。

举例来讲,pe1使能本地转发功能时,如果学习到vm4的mac地址之后,创建mac转发表项,内容如下:

mac地址为4-4-4,出接口为pe1上的port4的ac接口;

当vm1要访问vm4时,由于pe1上学习到了vm4的mac转发表项,因此可以将vm1发送的流量直接由pe1进行二层交换转发至vm4,而不需要把流量发送cb处理,提升了转发效率。

但是如果vm4发生的mac迁徙,例如从pe1迁徙到pe2设备上之后,由于pe1无法感知vm4的迁移,所以vm1向vm4转发的流量仍然会被pe1根据mac转发表项由pe1的port4进行转发直至表项老化才会停止,从而导致此期间vm1发送的流量无法访问vm4,造成连接中断。

为了解决现有技术存在的问题,本发明可以使cb在接收pe发送的由该pe下挂的vm发送的arp报文时,获取其中携带的vm的mac地址和对应的第二出接口,当本cb记录的该vm的mac地址对应的第一mac转发表项中的第一出接口与第二出接口不相同时,将第二出接口作为该第一mac转发中的新的出接口;将该arp报文转发到自身连接的除了该pe以外的其他pe,以使其他pe在记录的该vm的mac地址对应的第二mac转发表项中的出接口与所述第二出接口不同时,删除该第二mac转发表项。本发明可以使pe将arp报文发送到cb,使cb学习该pe下挂的vm的mac转发表项,因此当vm迁移时,cb可以学习该vm迁移后的mac转发表项,从而实现对该vm的报文进行转发,并且cb可以通过转发该vm的arp报文来使vm迁移前的pe删除vm迁移前的mac转发表项,从而避免vm迁移后的数据报文还是根据迁移前的mac转发表项进行转发导致的连接中断的问题,从而提升了网络的稳定性。

请参考图2,是本发明一种示例性实施方式中的一种报文转发的方法的处理流程图,所述方法应用于cb,所述方法包括:

步骤201、接收pe发送的由所述pe下挂的vm发送的arp报文;

在本实施例中,vm在pe上上线时,会发送arp报文,cb可以收到pe发送的该vm发送的arp报文。

步骤202、获取所述arp报文中的所述vm的mac地址和对应的第二出接口;

在本实施例中,cb可以获取该arp报文携带的vm的mac地址和第二出接口。

步骤203、当本cb记录的所述vm的mac地址对应的第一mac转发表项中的第一出接口与所述第二出接口不相同时,将所述第二出接口作为所述第一mac转发中的新的出接口;

为了确定该vm是否发生mac地址迁移,cb可以在本cb记录的mac转发表项中查找该述vm的mac地址对应的第一mac转发表项,该第一mac转发表项中包括该vm的mac地址和第一出接口;比较第一出接口和第二出接口是否相同,若不同,则说明该vm发生迁移,因此可以将所述第二出接口作为所述第一mac转发中的新的出接口,以使后续流量访问该vm时,可以根据更新后的第一mac转发表项转发流量到该vm。

作为一个实施例,当本cb记录的所述vm的mac地址对应的第一mac转发表项中的第一出接口与所述第二出接口相同时,则说明该vm没有发生mac迁移,因此可以保留当前的第一mac转发表项;丢弃该arp报文。

作为一个实施例,当本cb记录未查找到所述vm的mac地址时,说明该vm是首次在该组网中上线,因此可以记录所述vm的mac地址和对应第二出接口作为第一mac转发表项。

步骤204、将所述arp报文转发到自身连接的除了所述pe以外的其他pe,以使其他pe在记录的所述vm的mac地址对应的第二mac转发表项中的出接口与所述第二出接口不同时,删除所述第二mac转发表项。

在本实施例中,cb更新本地的第一mac转发表项后,还可以进一步将该arp报文转发到自身连接的除了所述pe以外的其他pe。以使其他pe在其本地记录中查找是否有该vm的mac地址对应的第二mac转发表项中的出接口与所述第二出接口不同,若存在,则说明该pe是该vm迁移前所连接的pe,该pe还保留着vm迁移前的mac转发表项,因此需要将该删除所述第二mac转发表项,从而可以避免该pe根据该第二mac转发表项转发该vm的流量,从而可以保证vm在迁移后的流量可以正常转发。

为使本发明的目的、技术方案及优点更加清楚明白,下面结合图1对本发明的方案作进一步地详细说明。

如图1所示,组网中cb下挂3个pe设备,分别为pe1、pe2和pe3,其中vm1和vm4同时接入vxlanid10的业务,并且在pe1上面的port1和port4配置vm1和vm4的vxlan接入业务,pe从指定vlan或以太网服务实例接收到数据报文后,可以根据关联方式判断数据报文所属的vxlan。在vxlan中,与vsi(virtualswitchinstance,虚拟交换实例)关联的以太网服务实例称为ac(attachmentcircuit,接入电路),通常可以在ac上配置以太网服务实例的报文匹配规则,用来匹配从该二层以太网接口上接收到的数据报文。

例如,在vm1的vxlan接入业务中,ac1的配置包括:

接口为pe1的port1接口,服务实例为service-instance1;封装形式为encapsulations-vid1;将以太网服务实例与vsi关联的vsi名称xconnectvsi为vpn;

在vm4的vxlan接入业务中,ac2的配置包括:

接口为pe1的port4接口,服务实例为service-instance1;封装形式为ncapsulations-vid1;将以太网服务实例与vsi关联的vsi名称xconnectvsi为vpn;

可见,vm1和vm4都接入相同的vsivpn业务;

当使能pe的本地交换能力时,vm4在pe1首次上线之后,会触发arp的发送,该arp报文中包含vm4的mac地址4-4-4;pe1收到该arp报文后会学习vm4的mac转发表项:

mac地址为4-4-4,出接口为pe1的port4的ac2口;

cb收到该arp报文后会学习vm4的mac转发表项:

mac地址为4-4-4,出接口为pe1的port4的ac2口;

当vm1要访问vm4的时候,vm1发送的数据报文的目的mac为vm4的mac地址4-4-4,当pe1从port1的ac1口收到vm1的数据报文时,则可以直接查询本地的该mac地址4-4-4对应的mac转发表项,从而确定数据报文的出接口为pe1的port2的ac2口,然后通过该出接口转发该数据报文到vm4。

当vm4因为业务需求从pe1的port4下挂的服务器迁徙到pe2的port5下挂的服务器时,vm4在pe2的port5下挂的服务器上线之后,会在pe2的port5端口下配置vxlan接入配置:

在vm4的vxlan接入业务中,ac2的配置包括:

接口为pe1的port4接口,服务实例为service-instance1;封装形式为ncapsulations-vid1;将以太网服务实例与vsi关联的vsi名称xconnectvsi为vpn;

ac3的配置包括:

接口为pe2的port5接口,服务实例为service-instance1;封装形式为ncapsulations-vid1;将以太网服务实例与vsi关联的vsi名称xconnectvsi为vpn;

vm4上线之后,通过pe2的port5对应的ac3口接入vsivpn,上报arp报文到cb,cb从pe2的port5收到源mac为4-4-4的vm4的arp报文之后,发现本地存在mac地址为4-4-4对应的mac转发表项,出接口为pe1设备的port4,与当前的出接口(即pe2的port5对应的ac3口)不同,则确定该vm4在cb上产生mac迁移操作,因此可以将该mac转发表项中的出接口更新为当前的出接口,即pe2的port5对应的ac3口。

然后cb可以将从pe2的port5收到的arp报文,通过二层转发发送给除该pe2设备的其他pe,即pe1和pe3。pe1收到cb发送的arp报文后,遍历本地记录的转发mac表项,发现存在vm4的mac地址4-4-4对应转发表项,其中的出接口与更新后的出接口不同时,例如为pe1的port4的ac1口时,说明该pe1记录的mac转发表项是该vm4迁移前的mac转发表项,因此将该表项删除;pe3收到cb发送的arp报文之后,遍历本地记录的转发mac表项,发现不存在mac4-4-4对应的mac转发表项,因此可以不刷新mac转发表项。

后续若vm1发送数据报文访问vm4,则当vm1发送的数据报文到达pe1之后,pe1发现本地没有vm4对应的mac地址转发表项,则将报文发送cb,cb设备收到pe1发送过来的vm1的数据报文,本地查询的mac转发表项,根据该mac转发转发表项,将数据报文发送给pe2,从port5的ac3口出接口发送给vm4,从而完成数据报文的转发。

现有技术中,pe1上面具有本地交换能力之后,vm1能够直接访问vm4,而不需要把流量发送cb,但是此时vm1的源mac1-1-1只会学习到pe1设备上面,因为vm1的流量不发送cb,cb也不会学习到vm1的源mac地址表项,如果这时候,vm3要访问vm1时,由于pe3上面没有vm1的mac地址的表项,pe3将报文发送cb,因为cb上面也没有vm1的mac地址表项,则cb会将报文复制多份,在所有pe设备上进行广播,这就导致了组网中会有大量不必要的广播报文。

为了解决上述问题,作为一个实施例,本发明还可以使cb接收pe发送的复制数据报文,该复制数据报文复制的是由该pe自身下挂的vm发送并命中pe记录的mac转发表项的数据报文;cb判断该复制数据报文是否为指定数据报文;具体来讲,cb可以获取该复制数据报文封装中的保留字段,判断保留字段是否为1,若是,则确定该复制数据报文是指定数据报文,则记录所述复制数据报文中的所述vm的mac地址和所述复制数据报文的出接口的对应关系,并丢弃所述复制数据报文;若否,则确定该复制数据报文不是指定数据报文;则根据本cb记录的所述vm的mac地址对应的第二出接口转发所述复制数据报文。

为使本发明的目的、技术方案及优点更加清楚明白,请结合图3对本发明的方案作进一步地详细说明。

如图3所示:纵向堆叠cb下挂3个pe,vm1和vm4同时接入vxlanid10的业务,并且在pe1上面的port1和port4配置vm1和vm4的vxlan接入业务:vm1和vm4都接入相同的vsivpn业务;

vm1的vxlan接入业务:

ac1的配置包括:

接口为pe1的port1接口,服务实例为service-instance1;封装形式为ncapsulations-vid1;将以太网服务实例与vsi关联的vsi名称xconnectvsi为vpn;

vm4的vxlan接入业务:

ac2的配置包括:

接口为pe1的port4接口,服务实例为service-instance1;封装形式为ncapsulations-vid1;将以太网服务实例与vsi关联的vsi名称xconnectvsi为vpn;

使能pe本地交换能力后,vm4在pe1上线之后,会触发arp的发送,pe1会学习vm4的mac转发表项:

mac地址为4-4-4,出接口为pe1的port4的ac2口;

cb也会学习vm4的mac转发表项:

mac地址为4-4-4,出接口为pe1的port4的ac2口;

vm1想要访问vm4的时候,数据报文的目的mac为vm4的mac地址,当pe1从port1的ac1口收到vm1的报文的时候,则直接查询对应的pe1上面的mac转发表项,从pe1的port2的ac2口直接向vm4转发。pe1学习到vm1的源mac地址表项,出接口为pe1的port1上面的ac1口;同时因为在pe1上面命中了本地mac转发表项,则会负责一份vm1发送给vm4的数据报文,修改cb和pe1之间etag封装,将封装的ecid(即vid字段)为cb为vsivpn绑定的pe1的port1,并且利用该封装的保留字段的最高位,将保留字段设置为1。当cb收到pe1复制发送的数据报文之后,解封装etag的头,发现保留字段的最高位置1,则将该数据报文的mac转发表项学习到cb设备上,mac转发表项具体为:

mac地址为1-1-1,出接口为pe1的port1的ac1口;

cb学完mac表项之后,丢弃该数据报文。

当vm3访问vm1的时候,目的mac为vm1的mac地址1-1-1,该报文到达pe3设备之后,因为pe3本地不存在vm1的mac地址表项,则将数据报文发送cb,在cb上查询mac地址1-1-1对应的mac转发表项,因此查到对应的出接口为pe1的port1的ac1口,则可以直接将数据报文发送给pe1。

数据报文到达pe1设备之后,命中pe1上面vm1的本地mac转发表项,从pe1的port1的ac1口转发出去,到达vm1设备。

进一步的,cb可以在mac地址老化之前5s,检查即将老化的mac地址1-1-1,发送arp请求报文,vm1收到arp请求报文后,给cb发送应答报文,cb可以更新本地的mac表项,防止1-1-1mac地址老化被删除。

综上所述,本发明可以对mac迁徙检测机制进行了更新扩展,当vm在pe之间进行迁徙的时候,能够快速感知vm发生了迁徙,将cb和vm接入pe的mac转发表项做同步更新,保证了vm之间业务能够正常转发。

同时也增加了pe和cb之间同步学习pe本地mac转发表项的功能,当pe第一次学习到本地mac转发表项之后,复制一份数据报文给cb,使cb根据该数据报文学习mac转发表项,从而可以让后续从其他pe转发的数据报文在发送cb之后直接可以走单播转发流程,避免组网环境中不必要的广播。

基于相同的构思,本发明还提供一种报文转发装置,该装置可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,本发明的报文转发装置作为一个逻辑意义上的装置,是通过其所在装置的cpu将存储器中对应的计算机程序指令读取后运行而成。

请参考图4,是本发明一种示例性实施方式中的一种报文转发装置500,所述装置应用于cb,该装置基本运行环境包括cpu,存储器以及其他硬件,从逻辑层面上来看,该装置500的逻辑结构如图5所示,其中包括:

第一接收单元501,用于接收pe发送的由所述pe下挂的vm发送的arp报文;

地址获取单元502,用于获取所述arp报文中的所述vm的mac地址和对应的第二出接口;

表项更新单元503,用于当本cb记录的所述vm的mac地址对应的第一mac转发表项中的第一出接口与所述第二出接口不相同时,将所述第二出接口作为所述第一mac转发中的新的出接口;

报文转发单元504,用于将所述arp报文转发到自身连接的除了所述pe以外的其他pe,以使其他pe在记录的所述vm的mac地址对应的第二mac转发表项中的出接口与所述第二出接口不同时,删除所述第二mac转发表项。

作为一个实施例,所述装置还包括:

报文丢弃单元505,用于当本cb记录的所述vm的mac地址对应的第一mac转发表项中的第一出接口与所述第二出接口相同时,丢弃所述arp报文。

作为一个实施例,所述装置还包括:

表项记录单元506,用于当本cb记录未查找到所述vm的mac地址时,记录所述vm的mac地址和对应第二出接口作为第一mac转发表项。

作为一个实施例,所述装置还包括:

第二接收单元507,发送的复制数据报文,所述复制数据报文所复制的是由所述pe自身下挂的vm发送并命中pe记录的mac转发表项的数据报文;

报文判断单元508,用于判断所述复制数据报文是否为指定数据报文;若是,则记录所述复制数据报文中的所述vm的mac地址和所述复制数据报文的出接口的对应关系,并丢弃所述复制数据报文;若否,则根据本cb记录的所述vm的mac地址对应的第二出接口转发所述复制数据报文。

作为一个实施例,所述报文判断单元508,具体用于获取所述复制数据报文封装中的保留字段,判断所述保留字段是否为1,若是,则确定所述复制数据报文是指定数据报文;若否,则确定所述复制数据报文不是指定数据报文。

由此可见,本发明可以使cb在接收pe发送的由该pe下挂的vm发送的arp报文时,获取其中携带的vm的mac地址和对应的第二出接口,当本cb记录的该vm的mac地址对应的第一mac转发表项中的第一出接口与第二出接口不相同时,将第二出接口作为该第一mac转发中的新的出接口;将该arp报文转发到自身连接的除了该pe以外的其他pe,以使其他pe在记录的该vm的mac地址对应的第二mac转发表项中的出接口与所述第二出接口不同时,删除该第二mac转发表项。本发明可以使pe将arp报文发送到cb,使cb学习该pe下挂的vm的mac转发表项,因此当vm迁移时,cb可以学习该vm迁移后的mac转发表项,从而实现对该vm的报文进行转发,并且cb可以通过转发该vm的arp报文来使vm迁移前的pe删除vm迁移前的mac转发表项,从而避免vm迁移后的数据报文还是根据迁移前的mac转发表项进行转发导致的连接中断的问题,从而提升了网络的稳定性。

上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

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