一种在NVO3网络中处理组播报文的方法、装置和NVO3网络与流程

文档序号:16168906发布日期:2018-12-07 21:47阅读:295来源:国知局
一种在NVO3网络中处理组播报文的方法、装置和NVO3网络与流程
本发明涉及通信领域,尤其涉及一种在基于三层网络的网络虚拟化(英文:networkvirtualizationoverlayer3,缩写:NVO3)网络中处理组播报文的方法、装置和NVO3网络。
背景技术
:NVO3能够通过MACinIP封装实现二层虚拟专用网(英文:virtualprivatenetwork,缩写:VPN),虚拟扩展局域网(英文:virtualextensiblelocalareanetwork,缩写:VXLAN)和网络虚拟化通用路由封装(英文:networkvirtualizationgenericroutingencapsulation,缩写:NVGRE)是实现NVO3组网的两种典型技术。VXLAN和NVGRE分别通过MACInUDP和MACInGRE封装使不同VPN内的二层报文能够跨三层IP网络进行传输,VXLAN和NVGRE隧道封装中还分别包括24bit的虚拟叠加网(英文:virtualoverlaynetwork,缩写:VN)标识(VNID),通过给报文中封装VNID,不同虚拟叠加网之间能够实现流量隔离。数据中心中一个租户可以对应一个或多个虚拟叠加网。VN的边缘设备称为网络虚拟边缘(英文:networkvirtualizationedge,缩写:NVE),其主要功能就是将租户终端系统(英文:tenantendsystem,缩写:TES)加入虚拟叠加网,NVE能够通过VNID隔离不同虚拟叠加网内的流量。NVE存储有每个虚拟叠加网有对应的组播和单播转发表,对于本地TES发送过来的组播流量(包括未知单播、广播和组播,这里统称为组播),根据本地组播转发表,向其它TES复制发送,根据所述TES的虚拟叠加网对应的网络侧组播转发表,向其它远端NVE进行复制转发;组播报文在向远端NVE发送的时候,可以通过头结点复制或组播逐跳复制两种方式,头结点复制方式采用单播NVO3封装,隧道的目的IP为目的NVE的IP地址,采用组播复制方式,隧道目的IP为组播IP地址。VN和组播IP地址的对应关系由网络管理员在每个NVE上预先设定。NVE对于TES发送的单播报文,通过查找单播转发表,向本地TES或远端NVE进行转发,在向远端NVE转发的时候,需要进行所述单播报文进行单播NVO3封装。如图1所示,为现有技术中NVO3网络的结构示意图。其中,各TES分别通过各自的NVE接入VN。为了保证TES的可靠性,可以将TES通过多个NVE接入网络。如图1中,TES1分别通过NVE1的端口1和NVE2的端口2接入NVO3网络。这种接入方式被称为多归接入,连接TES1的NVE1和NVE2被称为多归NVE,NVE1的端口1和NVE2的端口2构成跨设备的链路聚合组(英文:linkaggregationgroup,简称:LAG);TES1被称为多归TES;多归NVE之外的NVE,被称为多归NVE的远端NVE。当所述多个多归NVE均能转发多归TES的报文时,这种接入方式被称为多活(英文:all-active或active-active)接入。在多活接入场景下,对于VN内的组播报文,需要做到:1、各多归NVE在向本地端口复制转发远端NVE发送的组播报文时,避免多归TES收到多份远端NVE发送的组播报文;以及2、各多归NVE之间能够提供水平分割机制,以避免将多归TES发送的报文经过NVO3网络又环回到该多归TES。现有技术提供了一种水平分割方法,多归NVE为每个LAG分别配置一个IP地址,作为该多归NVE通过所述LAG中的端口发送报文时的源IP地址,所述多归NVE记录所述LAG和IP地址的对应关系。NVO3网络中的NVE之间彼此通告每个NVE的LAG和IP地址的对应关系,每个NVE都记录其他NVE的LAG和IP地址的对应关系。当第一NVE收到第二NVE发送的组播报文后,根据所述组播报文中的源IP地址查找所述第一NVE记录的LAG与IP地址的对应关系,如果该源IP地址没有对应的LAG,则所述第一NVE根据所述组播报文中的VNID向所有对应所述VNID的本地端口复制所述组播报文;如果该源IP地址存在对应的LAG,并且所述第一NVE与所述第二NVE属于同一LAG,则所述第一NVE不向所述LAG对应的本地端口复制所述组播报文。其中,所述本地端口是指连接TES的端口。经过研究发现,上述水平分割方法中多归NVE需要为每个LAG分配IP地址,如果网络中LAG数目很多,会造成IP地址的浪费,并且,每个多归NVE需要针对每个其它多归NVE的IP地址进行是否属于同一个LAG的判断,如果多归NVE数目很多,会降低报文的转发效率。技术实现要素:本发明提供了一种在NVO3网络中处理组播报文的方法、装置和NVO3网络,用于解决TES多活接入场景下引起的IP地址浪费、转发性能降低的问题。本发明第一方面提供了一种在基于三层网络的网络虚拟化NVO3网络中处理组播报文的方法,所述方法包括:接收第一组播报文;在所述第一组播报文的发送方为本地多归租户终端系统TES的情况下,获取所述第一组播报文的入端口及虚拟局域网标识VLANID,根据所述入端口和所述VLANID,获取所述组播报文的虚拟叠加网标识VNID;确定所述入端口是否为所述VNID的指定转发者DF;在所述入端口为所述VNID的DF的情况下,为所述第一组播报文封装扩展NVO3头;将所述封装了扩展NVO3头的第一组播报文发送给其他NVE;所述扩展NVO3头中携带所述第一组播报文的VNID以及所述入端口对应的链路聚合组标识LAGID。在所述第一方面的第一种实现方式中,所述确定所述入端口是否为所述VNID的指定转发者DF包括:根据所述入端口和所述第一组播报文的VNID查找DF表,确定所述入端口是否为所述第一组播报文的VNID的DF,所述DF表包括VNID,端口与DF标记。基于所述第一方面或所述第一方面的第一种实现方式,在所述第一方面的第二种实现方式中,所述方法还包括:接收第二组播报文,在所述第二组播报文的发送方为网络虚拟边缘NVE的情况下,对所述第二组播报文进行NVO3解封装,从所述第二组播报文的NVO3头中获取所述第二组播报文的VNID;查找所述第二组播报文的VNID对应的本地组播转发表项,获取所述本地组播转发表项中的出端口;确定所述出端口是否为所述第二组播报文的VNID的DF,根据所述确定结果对所述解封装后的第二组播报文进行处理。本发明第二方面提供了一种在基于三层叠加网的网络虚拟化NVO3网络中处理组播报文的装置,所述装置包括:接收模块,用于接收第一组播报文;确定模块,用于确定所述第一组播报文的发送方,当确定所述组播报文的发送方为本地多归TES的情况下,触发第一虚拟叠加网标识VNID获取模块;所述第一VNID获取模块用于获取所述第一组播报文的入端口及虚拟局域网标识VLANID,根据所述入端口和所述VLANID,获取所述组播报文的VNID;第一判断模块,用于确定所述入端口是否为所述VNID的指定转发者DF;在所述入端口不为所述VNID的DF的情况下,触发第一发送模块;所述第一发送模块,用于为所述第一组播报文封装扩展NVO3头;将所述封装了扩展NVO3头的第一组播报文发送给其他NVE;所述扩展NVO3头中携带所述第一组播报文的VNID以及所述入端口对应的链路聚合组标识LAGID。在所述第二方面的第一种实现方式中,所述确定模块具体用于根据所述入端口和所述第一组播报文的VNID查找DF表,确定所述入端口是否为所述第一组播报文的VNID的DF,所述DF表包括VNID,端口与DF标记。基于所述第二方面或所述第二方面的第一种实现方式,在所述第二方面的第二种实现方式中,所述装置还包括第二VNID获取模块、出端口获取模块和第二判断模块;所述接收模块还用于接收第二组播报文;所述确定模块还用于确定所述第二组播报文的发送方,在确定所述组播报文的发送方为网络虚拟边缘NVE的情况下,触发所述第二VNID获取模块;所述第二VNID获取模块用于对所述第二组播报文进行NVO3解封装,从所述第二组播报文的NVO3头中获取所述第二组播报文的VNID;所述出端口获取模块用于查找所述第二组播报文的VNID对应的本地组播转发表项,获取所述本地组播转发表项中的出端口;所述第二判断模块用于确定所述出端口是否为所述第二组播报文的VNID的DF,根据所述确定结果对所述解封装后的组播报文进行处理。本发明第三方面提供了一种在基于三层叠加网的网络虚拟化NVO3网络,所述NVO3网络包括多归租户终端系统TES,第一多归网络虚拟边缘NVE和第二多归NVE,所述多归TES分别连接所述第一多归NVE和第二多归NVE;所述TES用于发送第一组播报文;所述第一多归NVE用于接收所述第一组播报文,确定所述第一组播报文的发送方;在确定所述第一组播报文由所述多归TES发送的情况下,获取所述第一组播报文的入端口和虚拟局域网标识VLANID;根据所述第一组播报文的入端口以及所述VLANID获取所述第一组播报文的虚拟叠加网标识VNID;确定所述入端口是否为所述第一组播报文的VNID的指定转发者DF;在所述入端口不是所述第一组播报文的VNID的DF情况下,为所述第一组播报文封装扩展NVO3头;将所述封装了扩展NVO3头的第一组播报文发送给包括所述第二多归NVE的其他NVE;所述扩展NVO3头中携带所述第一组播报文的VNID以及所述入端口对应的链路聚合组标识LAGID。在所述第三方面的第一种实现方式中,所述第一多归NVE根据所述入端口和所述第一组播报文的VNID查找DF表,确定所述入端口是否为所述第一组播报文的VNID的DF,所述DF表包括VNID,端口与DF标记。基于所述第三方面或所述第三方面的第一种实现方式,在所述第三方面的第二种实现方式中,所述方法还包括:所述第二多归NVE用于发送第二组播报文;所述第一多归NVE还用于接收所述第二组播报文,对所述第二组播报文进行NVO3解封装,从所述第二组播报文的NVO3头中获取所述第二组播报文的VNID;查找所述第二组播报文的VNID对应的本地组播转发表项,获取所述本地组播转发表项中的出端口;确定所述出端口是否为所述第二组播报文的VNID的DF,根据所述确定结果对所述解封装后的第二组播报文进行处理。本发明第四方面提供了一种在基于三层叠加网的网络虚拟化NVO3网络中处理组播报文的装置,所述装置包括:处理器、存储器、网络接口和总线,所述处理器、存储器和网络接口均与总线连接;所述存储器用于存储程序指令;所述处理器用于读取所述存储器上存储的程序指令,根据所述程序指令执行本发明第三方面的方法。本发明上述实施例中,第一多归NVE在从多归TES收到第一组播报文的时候,通过判断所述第一组播报文的入端口不是所述组播报文中携带的VNID的DF,则不向本地端口转发所述第一组播报文,避免了所述多归TES环回收到自身发出的第一组播报文,并且,通过扩展原有的NVO3头,利用原有的LAGID,可以避免IP地址的浪费,提高转发效率。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为现有技术中NVO3网络的结构示意图;图2为本发明实施例提供的NVO3网络的结构示意图;图3为本发明实施例提供的NVO3网络中处理组播报文的方法的流程示意图;图4为本发明实施例提供的一种NVO3网络中处理组播报文的装置的结构示意图;图5为本发明实施例提供的另一种NVO3网络中处理组播报文的装置的流程示意图。具体实施方式本发明实施例提供了一种NVO3网络,如图2所示,所述NVO3网络20包括多归TES21以及多个多归NVE,例如,图中的第一多归NVE22a和第二多归NVE22b,所述多归TES21分别连接所述第一多归NVE22a和第二多归NVE22b。所述第一多归TES用于发送第一组播报文;所述第一组播报文包括所有需要通过组播方式在NVO3网络中发送的报文,例如,广播报文,组播报或未知单播报文。所述第一多归NVE22a用于接收所述第一组播报文,确定所述第一组播报文的发送方,在确定所述第一组播报文由所述多归TES发送的情况下,获取所述第一组播报文的入端口和VLANID;根据所述第一组播报文的入端口以及所述VLANID获取所述第一组播报文的VNID;确定所述入端口是否为所述第一组播报文的VNID的DF;在所述入端口不是所述第一组播报文的VNID的DF情况下,为所述第一组播报文封装扩展NVO3头;将所述封装了扩展NVO3头的第一组播报文发送给包括所述第二多归NVE的其他NVE;所述扩展NVO3头中携带所述第一组播报文的VNID以及所述入端口对应的链路聚合组标识LAGID。所述第一多归NVE可以将所述封装了扩展NVO3头的第一组播报文通过头结点(head-end)复制方式或者组播逐跳复制方式发送给其他NVE。如果采用头结点复制方式,所述第一多归NVE为每个目的NVE复制一份报文,并分别通过单播NVO3隧道将复制的报文送到每个目的NVE,所述NVO3隧道外层目的IP地址为每个目的NVE的单播IP地址。如果采用组播逐跳复制方式,所述第一多归NVE通过组播NVO3隧道将报文送到每个目的NVE,NVO3隧道外层目的IP地址为组播IP地址。所述第一多归NVE上预先设置了VNID和组播IP地址的对应关系。在采用头结点复制的情况下,LAGID只需要在每个NVE上唯一,扩展NVO3头中LAGID为目的NVE上分配的LAGID。比如TES多归接入NVE1的端口1、NVE2的端口2、NVE3的端口3,则端口1,端口2和端口3组成一个LAG,NVE1为包括所述LAG分配的标识为10,NVE2为所述LAG分配的标识为20,NVE3为所述LAG分配的标识为30,NVE1向NVE2和NVE3发送报文的时候,扩展NVO3头里面LAGID分别填写20和30。在采用组播复制的情况下,LAGID需要整个网络唯一,同样对于上面的情况,NVE1、NVE2、NVE3都记录该LAG的标识为10,NVE1向NVE2和NVE3发送报文时候,扩展NVO3头里的LAGID均填写10。在一个实施例中,所述第一多归NVE根据所述入端口和所述第一组播报文的VNID查找DF表,确定所述入端口是否为所述第一组播报文的VNID的指定转发者DF。当DF表中不存在与所述第一组播报文的VNID和所述入端口对应的表项,或查找到的表项中的DF标记表明所述入端口不是DF时,确定所述入端口不为所述VNID的DF。在另一个实施例中,所述第一多归NVE还用于记录链路聚合组信息,所述链路聚合组信息包括链路聚合组标识以及链路聚合组中包括的端口;根据所述链路聚合组信息与所述第二多归NVE协商,从所述链路聚合组的所有端口中选择一个端口作为所述多归TES21的VNID的DF,在DF表中记录协商结果;所述VNID用于标识所述多归TES21所属的VN;所述DF表包括VNID,端口与DF标记,所述DF标记用于标识端口是否为某个VNID的DF。例如,图2示出的链路聚合组信息中包括一个链路聚合组,其LAGID为LAG1,包括了第一端口和第二端口。所述第一多归NVE还用于接收所述第二多归NVE发送的第二组播报文,对所述第二组播报文进行NVO3解封装,从所述第二组播报文的NVO3头中获取所述第二组播报文的VNID;查找所述第二组播报文的VNID对应的本地组播转发表项,获取所述本地组播转发表项中的出端口;确定所述出端口是否为所述第二组播报文的VNID的指定转发者DF,根据所述确定结果对所述解封装后的第二组播报文进行处理。在一个实施例中,在确定所述出端口不是所述第二组播报文的VNID的DF情况下,所述第一多归NVE还用于丢弃所述解封装后的第二组播报文。在另一个实施例中,在确定所述出端口是所述第二组播报文的VNID的DF的情况下,所述第一多归NVE还用于确定所述第二组播报文和所述出端口是否具有相同的LAGID,所述第二组播报文的LAGID是从所述第二组播报文的NVO3头中获得的。在所述第二组播报文和所述出端口具有相同的LAGID的情况下,所述第一多归NVE还用于丢弃所述解封装后的第二组播报文;在所述第二组播报文和所述出端口具有不同的LAGID的情况下,所述第一多归NVE还用于通过所述出端口转发所述解封装后的第二组播报文。需要说明的是,本发明实施例中,本地组播转发表和DF表中仅包括端口,当该端口为接收报文的端口时,即为入端口,当该端口用于发送报文时,即为出端口。因此,入端口和出端口只是针对组播报文的方向作出的区分,不对本地组播转发表或者DF表中的信息产生影响。本发明上述实施例中,第一多归NVE在从多归TES收到第一组播报文的时候,通过判断所述第一组播报文的入端口不是所述组播报文中携带的VNID的DF,则不向本地端口转发所述第一组播报文,避免了所述多归TES环回收到自身发出的第一组播报文,并且,通过扩展原有的NVO3头,利用原有的LAGID,可以避免IP地址的浪费,提高转发效率。本发明实施例还提供了一种在NVO3网络中处理组播报文的方法,所述方法应用在图2所示的NVO3网络中,可以由所述多个多归NVE中的任意一个执行,图3以第一多归NVE为例进行说明,在上述NVO3网络实施例中没有明确的细节,可以参考本实施例的描述。如图3所示,所述方法30包括:301、第一多归NVE接收组播报文。所述组播报文包括所有需要通过组播方式在NVO3网络中发送的报文,例如,广播报文,组播报或未知单播报文。302、所述第一多归NVE确定所述组播报文的发送方,在所述组播报文的发送方为其他NVE的情况下,执行步骤303,在所述组播报文的发送方为本地多归TES的情况下,执行步骤310。在步骤302中,在所述组播报文为NVO3封装的报文的情况下,确定所述组播报文的发送方为其他NVE,在所述组播报文为没有NVO3封装的以太报文,且所述组播报文的入端口为LAG中的端口的情况下,确定所述组播报文的发送方为多归TES。所述其他NVE为所述NVO3网络中除所述第一多归NVE之外的任意NVE,可以是多归NVE,也可以是普通NVE。303、所述第一多归NVE对所述组播报文进行NVO3解封装,从所述第二组播报文的NVO3头中获取所述组播报文的VNID。这里的NVO3头既包括正常NVO3头,也包括扩展NVO3头。304、所述第一多归NVE查找所述VNID对应的本地组播转发表项,获取所述本地组播转发表项中的出端口。NVE上预先配置或生成了本地组播转发表,如表1所示,每个本地组播转发表项包括VNID、端口以及虚拟局域网标识(VLANID)。表1VNID端口VLANIDFFFFF11AA1FFFFF22AA2FFFFF33AA3………………当所述第一多归NVE从某个端口接收组播报文时,所述端口被称为入端口,当所述第一多归NVE从某个端口发送组播报文时,所述端口被称为出端口。本步骤中,由于所述组播报文是从其他NVE收到的,需要发送给所述第一多归NVE连接的TES,因此,所述端口被称为出端口。所述第一多归NVE查找到所述本地组播转发表项后,从所述本地组播转发表项中获取所述出端口。所述第一多归NVE在将经过NVO3解封装之后的组播报文从查找到的本地组播转发表项中的出端口发送出去之前,为所述组播报文封装对应的VLANID。305、所述第一多归NVE确定所述出端口是否为所述VNID的DF,根据所述确定结果对所述解封装后的组播报文进行处理。所述根据所述确定结果对所述解封装后的组播报文进行处理,包括在所述出端口为所述VNID的DF的情况下,执行步骤307,在所述出端口不为所述VNID的DF的情况下,执行步骤306。其中,所述DF是由所述第一多归NVE与第二多归NVE(指其端口与第一NVE的端口属于同一LAG的其他一个或多个多归NVE)协商确定,或者由管理员预先配置的。在步骤305中,所述第一多归NVE根据所述VNID和所述出端口,查找DF表,根据查找到的DF表项确定所述出端口是否为所述VNID的DF。其中,所述DF表是预先配置在所述第一多归NVE上,或者由所述第一多归NVE预先生成的。所述DF表的表项包括VNID,出端口和DF标记。所述DF标记用于标识所述出端口是否为所述VNID的DF。当DF表中不存在与所述VNID和所述出端口对应的表项,或查找到的表项中的DF标记表明所述出端口不是DF时,确定所述出端口不为所述VNID的DF。306、所述第一多归NVE丢弃所述解封装后的组播报文。为了避免所述VNID的多个多归NVE均转发组播报文给多归TES引起的报文重复问题,当所述第一多归NVE的出端口不是该VNID的指定转发者时,第一多归NVE在该出端口上丢弃所述组播报文,即所述第一NVE不向所述本地组播转发表项中的出端口连接的多归TES发送所述组播报文。307、所述第一多归NVE确定所述组播报文和所述出端口是否具有相同的LAGID,在所述组播报文和所述出端口具有相同的LAGID的情况下,执行步骤308,在所述组播报文和所述出端口不具有相同的LAGID的情况下,执行步骤309。所述组播报文的LAGID是从所述组播报文的NVO3头中获得的。所述组播报文和所述出端口不具有相同的LAGID,具体包括:所述NVO3头为没有携带LAGID的正常NVO3头,或者所述NVO3头中携带的LAGID为无效值,或者所述NVO3头中携带的LAGID与所述所述出端口的LAGID不同。其中,所述出端口的LAGID是预先配置的。308、所述第一多归NVE丢弃所述解封装后的组播报文。所述组播报文和所述出端口具有相同的链路聚合组标识,表明所述组播报文是由与所述第一多归NVE属于同一链路聚合组的其他多归NVE通过所述VNID的非DF端口转发的、来自所述出端口连接的多归TES的组播报文;为了避免将所述多归TES发送的组播报文再环回给所述多归TES,所述第一多归NVE在所述出端口上丢弃所述组播报文,即不将所述组播报文通过所述出端口转发。309、所述第一多归NVE通过所述出端口转发所述解封装后的组播报文。所述组播报文和所述出端口具有不同的链路聚合组标识,表明所述组播报文不是来自所述出端口的组播报文,将所述组播报文发送给所述出端口不会引起所述出端口连接的多归TES的环路,并且,由于所述出端口为所述VNID对应的DF,所述第一多归NVE通过所述出端口转发所述组播报文也不会引起所述出端口连接的多归TES重复收到所述组播报文。310、所述第一多归NVE获取所述组播报文的入端口和VLANID,根据所述入端口和所述VLANID获取所述组播报文的VNID。由于多归TES发送的组播报文没有经过NVO3封装,所以报文头中没有携带VNID,此时,可以根据所述组播报文的入端口和VLANID查找本地组播转发表,获取所述组播报文的VNID。本步骤中的本地组播转发表如表1所示,由于所述组播报文为从多归TES接收到的报文,则接收所述组播报文的端口被称为入端口。311、所述第一多归NVE确定所述入端口是否为所述VNID的DF,在所述入端口为所述VNID的DF的情况下,执行步骤312,在所述入端口不为所述VNID的DF的情况下,执行步骤313。所述第一多归NVE根据所述入端口和所述组播报文的VNID查找所述DF表,确定所述入端口是否为所述第一组播报文的VNID的DF,所述DF表包括VNID,端口与DF标记。当DF表中不存在与所述组播报文的VNID和所述入端口对应的表项,或查找到的表项中的DF标记表明所述入端口不是DF时,确定所述入端口不为所述VNID的DF。312、所述第一多归NVE对所述组播报文进行正常NVO3封装后发送给其他NVE。本步骤中,由于所述入端口为所述VNID的DF,能够转发所述VNID的报文,因此,所述第一多归NVE将所述VNID封装在所述组播报文的NVO3头后发送给其他NVE。此外,所述第一多归NVE还可以根据本地组播转发表,将所述组播报文通过除所述入端口之外的其他本地端口组播发送给本地除发送所述组播报文的多归TES之外的其他TES。本实施例所说的正常NVO3封装,是指封装后的NVO3头中仅携带VNID。313、所述第一多归NVE为所述组播报文封装扩展NVO3头,将所述封装了扩展NVO3头的组播报文发送给其他NVE。本实施例所说的扩展NVO3头,是携带VNID和LAGID的NVO3头。所述LAGID为所述入端口所属LAG的LAGID。此外,所述扩展NVO3头中还可以进一步携带标志位,所述标志位用于表明该扩展NVO3头中携带了LAGID。本步骤中,由于所述入端口不是所述VNID的DF,为了避免发送所述组播报文的TES上产生环路,所述第一多归NVE不能向本地端口组播发送所述组播报文,而只能向其他NVE发送该组播报文。因此,所述第一多归NVE将所述VNID和所述入端口的LAGID封装到所述组播报文中,以便接收到所述组播报文的第二多归NVE判断所述第二多归NVE是否能够向本地端口组播发送所述组播报文。上述图3为了清楚地解释本发明的技术方案,因此包括了第一多归NVE收到组播报文之后各种可能的处理流程。实际应用中,针对不同的组播报文,图3可以分解成以下处理流程,每个流程都能够独立构成一个在NVO3网络中处理组播报文的方法:流程A,包括步骤301,302,310,311和312,用于处理第一组播报文,所述第一组播报文的特征可以通过对上述步骤的描述获得。流程B,包括步骤301,302,310,311和313,用于处理第二组播报文,所述第二组播报文的特征可以通过对上述步骤的描述获得。流程C,包括步骤301,302,303,304,305和306,用于处理第三组播报文,所述第三组播报文的特征可以通过对上述步骤的描述获得。流程D,包括步骤301,302,303,304,305,307和308,用于处理第四组播报文,所述第四组播报文的特征可以通过对上述步骤的描述获得。流程E,包括步骤301,302,303,304,305,307和309,用于处理第五组播报文,所述第五组播报文的特征可以通过对上述步骤的描述获得。上述第一,第二,第三,第四以及第五仅仅用于示例性说明,并不用于对组播报文顺序的限定。由于上述流程A-E都能够独立完成对一种组播报文的处理,因此,本发明实施例中的在NVO3网络中处理组播报文的方法,只需要至少包括上述流程中的任意一个即可。当选择保护其中一个流程的时候,其他流程中的步骤可以被认为是本发明实施例所述方法的可选实施方式。例如,在一个实施例中,第一多归NVE接收第一组播报文,确定所述第一组播报文的发送方为本地多归TES的情况下,对该第一组播报文执行步骤310,311和313,则其他步骤可选。在另一个实施例中,所述第一多归NVE除接收所述第一组播报文外,还接收第二组播报文,然后根据所述第二组播报文的特征执行303-309中的一个或多个步骤。本发明上述实施例中,第一多归NVE在从多归TES收到第一组播报文的时候,通过判断所述第一组播报文的入端口不是所述组播报文中携带的VNID的DF,则不向本地端口转发所述第一组播报文,避免了所述多归TES环回收到自身发出的第一组播报文,并且,通过扩展原有的NVO3头,利用原有的LAGID,可以避免IP地址的浪费,提高转发效率。本发明实施例另外提供了一种在NVO3网络中处理组播报文的装置,用于执行图3所示的方法,如图4所示,所述装置40包括:接收模块401,用于接收组播报文。所述组播报文包括所有需要通过组播方式在NVO3网络中发送的报文,例如,广播报文,组播报或未知单播报文。确定模块402,用于确定所述组播报文的发送方,在确定所述组播报文的发送方为NVE的情况下,触发第二VNID获取模块403,在确定所述组播报文的发送方为本地多归TES的情况下,触发第一VNID获取模块410。所述确定模块402具体用于,在所述组播报文为NVO3封装的报文的情况下,确定所述组播报文的发送方为其他NVE,在所述组播报文为没有NVO3封装的以太报文,且所述组播报文的入端口为LAG中的端口的情况下,确定所述组播报文的发送方为多归TES。所述其他NVE为所述NVO3网络中的任意NVE,可以是多归NVE,也可以是普通NVE。第二VNID获取模块403,用于对所述组播报文进行NVO3解封装,从所述组播报文的NVO3头中获取所述第二组播报文的VNID。这里的NVO3头既包括正常NVO3头,也包括扩展NVO3头。出端口获取模块404,用于查找所述第二VNID获取模块获取的所述组播报文的VNID对应的本地组播转发表项,获取所述本地组播转发表项中的出端口。所述本地组播转发表,如图3所示实施例中的表1第二判断模块405,用于确定所述出端口是否为所述VNID的DF;在所述出端口为所述VNID的DF的情况下,触发第三判断模块407,在所述出端口不为所述VNID的DF的情况下,触发第一丢弃模块406。其中,所述DF是由所述多个多归NVE协商确定,或者由管理员预先配置的。所述第二判断模块405具体用于根据所述VNID和所述出端口,查找DF表,根据查找到的DF表项确定所述出端口是否为所述VNID的DF。其中,所述DF表的表项包括VNID,出端口和DF标记。所述DF标记用于标识所述出端口是否为所述VNID的DF。当DF表中不存在与所述VNID和所述出端口对应的表项,或查找到的表项中的DF标记表明所述出端口不是DF时,确定所述出端口不为所述VNID的DF。第一丢弃模块406,用于在所述第二判断模块405的触发下丢弃所述解封装后的组播报文。为了避免所述VNID的多个多归NVE均转发组播报文给多归TES引起的报文重复问题,当所述出端口不是该VNID的指定转发者时,第一丢弃模块406在该出端口上丢弃所述组播报文。第三判断模块407,用于确定所述组播报文和所述出端口是否具有相同的LAGID,在所述组播报文和所述出端口具有相同的LAGID情况下,触发第二丢弃模块408,在所述组播报文和所述出端口不具有相同的LAGID的情况下,触发第三发送模块409。所述组播报文的LAGID是从所述组播报文的NVO3头中获得的。所述组播报文和所述出端口不具有相同的LAGID,具体包括:所述NVO3头为没有携带LAGID的正常NVO3头,或者所述NVO3头中携带的LAGID为无效值,或者所述NVO3头中携带的LAGID与所述所述出端口的LAGID不同。其中,所述出端口的LAGID是预先配置的。第二丢弃模块408,用于在所述第三判断模块的触发下丢弃所述解封装后的组播报文。所述组播报文和所述出端口具有相同的链路聚合组标识,表明所述组播报文是由与装置属于同一链路聚合组的其他多归NVE通过所述VNID的非DF端口转发的、来自所述出端口连接的多归TES的组播报文;为了避免将所述多归TES发送的组播报文再环回给所述多归TES,所述第二丢弃模块408在所述出端口上丢弃所述组播报文,即不将所述组播报文通过所述出端口转发。第三发送模块409,用于通过所述出端口转发所述解封装后的组播报文。所述组播报文和所述出端口具有不同的链路聚合组标识,表明所述组播报文不是来自所述出端口的组播报文,将所述组播报文发送给所述出端口不会引起所述出端口连接的多归TES的环路,并且,由于所述出端口为所述VNID对应的DF,所述第三发送模块409通过所述出端口转发所述组播报文也不会引起所述出端口连接的多归TES重复收到所述组播报文。第一VNID获取模块410,用于获取所述组播报文的入端口和VLANID,根据所述入端口和所述VLANID获取所述组播报文的VNID。由于多归TES发送的组播报文没有经过NVO3封装,所以报文头中没有携带VNID,此时,所述第一VNID获取模块410可以根据所述组播报文的入端口和VLANID查找本地组播转发表,获取所述组播报文的VNID。本步骤中的本地组播转发表如表1所示,由于所述组播报文为从多归TES接收到的报文,则接收所述组播报文的端口被称为入端口。第一判断模块411,用于确定所述入端口是否为所述VNID的DF,在所述入端口为所述VNID的DF的情况下,触发第二发送模块412,在所述入端口不为所述VNID的DF的情况下,触发第一发送模块413。所述第一判断模块411根据所述入端口和所述VNID查找所述DF表,确定所述入端口是否为所述组播报文的VNID的DF,所述DF表包括VNID,端口与DF标记。具体来说,当DF表中不存在与所述第一组播报文的VNID和所述入端口对应的表项,或查找到的表项中的DF标记表明所述入端口不是DF时,确定所述入端口不为所述VNID的DF。第二发送模块412,用于对所述组播报文进行正常NVO3封装后发送给其他NVE。本步骤中,由于所述入端口为所述VNID的DF,能够转发所述VNID的报文,因此,所述第二发送模块412将所述VNID封装在所述组播报文的NVO3头后发送给其他NVE。此外,所述第二发送模块412还可以根据本地组播转发表,将所述组播报文通过除所述入端口之外的其他本地端口组播发送给本地除发送所述组播报文的多归TES之外的其他TES。本实施例所说的正常NVO3封装,是指封装后的NVO3头中仅携带VNID。第一发送模块413,用于为所述组播报文封装扩展NVO3头,将所述封装了扩展NVO3头的组播报文发送给其他NVE。本实施例所说的扩展NVO3头,是携带VNID和LAGID的NVO3头。所述LAGID为所述入端口所属LAG的LAGID。此外,所述扩展NVO3头中还可以进一步携带标志位,所述标志位用于表明该扩展NVO3头中携带了LAGID。由于所述入端口不是所述VNID的DF,为了避免发送所述组播报文的TES上产生环路,所述第一发送模块413不能向本地端口组播发送所述组播报文,而只能向其他NVE发送该组播报文。因此,所述第一发送模块413将所述VNID和所述入端口的LAGID封装到所述组播报文中,以便接收到所述组播报文的多归NVE判断所述多归NVE是否能够向本地端口组播发送所述组播报文。上述图4为了清楚地解释本发明的技术方案,因此包括了NVO3网络中处理组播报文的装置收到组播报文之后需要参与处理所述组播报文的各种可能的模块。实际应用中,针对不同的组播报文,图4中的模块可以划分为以下几组,每组都能够独立构成一个在NVO3网络中处理组播报文的装置:组A,包括模块401,402,410,411和412,用于处理第一组播报文,所述第一组播报文的特征可以通过对上述模块的描述获得。组B,包括模块401,402,410,411和413,用于处理第二组播报文,所述第二组播报文的特征可以通过对上述模块的描述获得。组C,包括模块401,402,404,404,405和406,用于处理第三组播报文,所述第三组播报文的特征可以通过对上述模块的描述获得。组D,包括模块401,402,404,404,405,407和408,用于处理第四组播报文,所述第四组播报文的特征可以通过对上述模块的描述获得。组E,包括模块401,402,404,404,405,407和409,用于处理第五组播报文,所述第五组播报文的特征可以通过对上述模块的描述获得。上述第一,第二,第三,第四以及第五仅仅用于示例性说明,并不用于对组播报文顺序的限定。上述各组模块,可以因为处理不同的组播报文被同时调用,也可以被单独调用,上述各组模块的任何调用方式在本发明的保护范围之内。由于上述组A-组E都能够独立完成对一种组播报文的处理,因此,本发明实施例中的在NVO3网络中处理组播报文的装置,只需要至少包括上述各组模块中的任意一组即可。当选择保护其中一组模块的时候,其他各组中的模块均被认为是本发明实施例所述装置的可选实施方式。例如,在一个实施例中,接收模块401接收第一组播报文,确定模块402确定所述第一组播报文的发送方为本地多归TES的情况下,触发第一VNID获取模块410,第一判断模块411和第一发送模块413执行相应的操作。在另一个实施例中,所述接收模块401除接收所述第一组播报文外,还接收第二组播报文,然后根据所述第二组播报文的特征调用模块403-409中的一个或多个。如图5所示,为本发明实施例中提供的另一种在NVO3网络中处理组播报文的装置的结构示意图,如图所示,所述在NVO3网络中处理组播报文的装置50包括处理器501、存储器502、网络接口503和总线504。所述处理器501、存储器502和网络接口503均与总线504连接。所述处理器501用于通过所述网络接口503接收组播报文,根据所述组播报文的特征,执行图3所示方法中的流程A-E中的一个或多个。其中,处理器501执行的上述处理过程通常是由一个或多个软件程序控制完成,所述一个或多个软件程序的程序指令存放于存储器502中,当需要进行上述操作时,处理器51读取所述程序指令,并根据所述程序指令执行图3所示方法中的部分或全部步骤。本发明上述实施例中装置在从多归TES收到第一组播报文的时候,通过判断所述第一组播报文的入端口不是所述组播报文中携带的VNID的DF时,不向本地端口转发所述第一组播报文,避免了所述多归TES环回收到自身发出的第一组播报文,并且,通过扩展原有的NVO3头,利用原有的LAGID,可以避免IP地址的浪费,提高转发效率。本发明上述各实施例基于同一发明构思,因此,各实施例中的同一术语具有相同的含义,可以互相引用。本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1