一种组播转发方法、装置及VTEP与流程

文档序号:15358046发布日期:2018-09-05 00:15阅读:210来源:国知局

本发明涉及网络通信技术领域,尤其涉及一种组播转发方法、装置及vtep。



背景技术:

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

为了提升evpn组网中接入侧的可靠性,用户主机通常多归属接入evpn组网,如图1所示,主机1通过交换设备lsw同时接入evpn组网中的2个vtep(vxlantunnelendpoint,vxlan隧道端点),分别为vtep1和vtep2。

将vtep1上连接主机1的ac(attachmentcircuit,接入电路)口,记为ac1,vtep2上连接主机1的ac口,记为ac2;并选举ac1为df(designatedforwarder,指定转发者)口,ac2为bdf(backupdf,备份df)口。

若主机1有组播需求,则发送组播组加入报文。若该组播组加入报文通过lsw哈希到vtep2上,则vtep2本地生成出接口为ac2的组播转发表项,同时,向vtep1发送路由同步消息,vtep1根据该路由同步消息生成出接口为ac1的组播转发表项。

同时,由于ac1为df口,vtep1需要向vtep2和vtep3发送组播路由消息,vtep2接收到组播路由消息后,生成出接口指向vtep1的vxlan隧道的组播转发表项。

若vtep2下的组播源2发送组播数据报文,vtep2基于出接口为ac2的组播转发表项将组播数据报文转发给主机1;同时,由于vtep2上存在出接口为指向vtep1的vxlan隧道的组播转发表项,因此,通过该vxlan隧道向vtep1转发组播数据报文,但vtep1上并无需要接收该组播数据报文的单挂主机,因此,造成vtep1与vtep2之间的网络资源浪费。



技术实现要素:

本发明为了解决多归属接入的vtep之间存在网络资源浪费的问题,提出一种组播转发方法、装置及vtep,用以节约多归属接入的vtep之间的网络资源。

为实现上述发明目的,本发明提供了如下技术方案:

第一方面,本发明提供一种组播转发方法,应用于evpn中的第一vtep,所述evpn还包括第二vtep,第一主机多归属接入所述第一vtep和所述第二vtep,所述第二vtep上连接所述第一主机的ac口为df口,所述方法包括:

接收所述第二vtep发送的组播路由消息,所述组播路由消息中携带用于表示所述第二vtep是否连接有第二主机的标识,其中,所述第二主机为单挂接入所述第二vtep且已加入所述第一主机请求的组播组的设备;

基于所述标识确定所述第二vtep是否连接有所述第二主机;

若所述第二vtep没有连接所述第二主机,则禁止生成隧道组播转发表项,所述隧道组播转发表项用于记录所述组播组的地址与指向所述第二vtep的vxlan隧道的对应关系,以使所述第一vtep无法通过所述vxlan隧道向所述第二vtep转发发往所述组播组的组播数据报文。

第二方面,本发明还提供一种组播转发装置,应用于evpn中的第一vtep,所述evpn还包括第二vtep,第一主机多归属接入所述第一vtep和所述第二vtep,所述第二vtep上连接所述第一主机的ac口为df口,所述装置包括:

接收单元,用于接收所述第二vtep发送的组播路由消息,所述组播路由消息中携带用于表示所述第二vtep是否连接有第二主机的标识,其中,所述第二主机为单挂接入所述第二vtep且已加入所述第一主机请求的组播组的设备;

确定单元,用于基于所述标识确定所述第二vtep是否连接有所述第二主机;

生成单元,用于若所述第二vtep没有连接所述第二主机,则禁止生成隧道组播转发表项,所述隧道组播转发表项用于记录所述组播组的地址与指向所述第二vtep的vxlan隧道的对应关系,以使所述第一vtep无法通过所述vxlan隧道向所述第二vtep转发发往所述组播组的组播数据报文。

第三方面,本发明还提供一种vtep,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器被所述机器可执行指令促使:实现上述组播转发方法。

第四方面,本发明还提供一种机器可读存储介质,所述机器可读存储介质内存储有机器可执行指令,所述机器可执行指令被处理器执行时实现上述组播转发方法。

由以上描述可以看出,本发明中,第一vtep接收到第二vtep发送的组播路由消息后,根据组播路由消息中携带的标识,确定第二vtep是否连接有单挂接入且已加入当前第一主机请求的组播组的第二主机,若第二vtep没有连接第二主机,则不生成出接口指向第二vtep的vxlan隧道的组播转发表项,从而使第一vtep无法通过该vxlan隧道向第二vtep转发组播数据报文,达到节约第一vtep和第二vtep之间的网络资源的目的。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例示出的一种典型的多归属接入evpn组网示意图;

图2是本发明实施例示出的一种组播转发方法流程图;

图3是本发明实施例示出的步骤202的实现流程图;

图4是本发明实施例示出的vtep1连接有单挂主机的多归属evpn组网示意图;

图5是本发明实施例示出的一种vtep的硬件结构示意图;

图6是本发明实施例示出的一种组播转发逻辑的结构示意图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。

在本发明使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本发明可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本发明范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

首先,简单介绍一下多归属接入evpn组网涉及到的一些概念:

vtep:evpn的边缘设备;

ac:在vtep上,与vsi(virtualswitchinstance,虚拟交换实例)关联的三层接口或以太网服务实例(serviceinstance)称为ac;

es(ethernetsegment,以太网段):用户主机连接到不同vtep的多条以太网链路称为es,通过esi(ethernetsegmentidentifier,以太网段标识)唯一标识;

df:当用户主机接入不同vtep时,为了避免bum(broadcast&unknown-unicast&multicast,广播、未知单播、组播)流量存在环路和多份的问题,从不同vtep上具有相同esi的ac口中选举一个ac口作为df口,负责向用户主机转发由其它vtep转发过来的bum流量;

bdf:具有相同esi的ac口中,除了df口之外的ac口称为bdf口,禁止向用户主机转发由其它vtep转发过来的bum流量。

参见图1,为典型的多归属接入evpn组网示意图。其中,主机1通过交换设备lsw多归属接入vtep1和vtep2,vtep1上连接主机1的ac口为ac1,vtep2上连接主机1的ac口为ac2,ac1和ac2配置相同的esi,记为esi_1,并选举ac1为df口,ac2为bdf口。

这里,可将vtep1和vtep2称为多归属vtep;vtep3为非多归属vtep;rr为路由反射器,负责转发vtep发送的路由消息。

如图1所示,主机1发送组播组加入报文,若报文通过lsw哈希到vtep2,则在vtep2上生成组播转发表项,参见表1,为vtep2上生成的组播转发表项示例。

表1

其中,g_mac为主机1请求加入的组播组的地址;ac2为vtep2上接收主机1发送的组播组加入报文的ac口。

vtep2发送路由同步消息,用于在具有相同esi的vtep之间同步与多归属接入主机相关的转发表项,该路由同步消息中携带主机1请求加入的组播组的地址(g_mac)以及ac2的esi(esi_1)。

vtep1接收到路由同步消息后,确定本地存在具有相同esi(esi_1)的ac口(ac1),则根据路由同步消息中携带的组播组地址(g_mac)以及本地的ac口(ac1),生成组播转发表项,如表2所示。

表2

由于ac1为df口,因此,vtep1发送组播路由消息,用于通知其它vtep生成出接口指向vtep1的vxlan隧道的组播转发表项,该组播路由消息中携带主机1请求加入的组播组的地址(g_mac)。

vtep2接收到组播路由消息后,查询本地存在g_mac的组播转发表项(如表1),则将指向vtep1的vxlan隧道(vtep1与vtep2之间的vxlan隧道,记为tunnel_1)添加到g_mac的组播转发表项的出接口中,如表3所示。

表3

同理,vtep3接收到组播路由消息后,生成组播转发表项,如表4所示。

表4

其中,tunnel_2为vtep1与vtep3之间的vxlan隧道。

组播源1发送的组播组地址为g_mac的组播数据报文(记为g_packet1)首先到达vtep3,vtep3基于表4所示组播转发表项将g_packet1转发给vtep1,vtep1再基于表2所示组播转发表项将g_packet1转发给主机1。

组播源2发送的组播组地址为g_mac的组播数据报文(记为g_packet2)首先到达vtep2,参见表3,g_mac对应的出接口有两个,分别为ac2和tunnel_1,则vtep2通过ac2将g_packet2转发给主机1,通过tunnel_1将g_packet2转发给vtep1,但vtep1上并不存在加入g_mac的单挂主机,因此,造成vtep1与vtep2之间的网络资源浪费。

针对上述问题,本发明提出一种组播转发方法,该方法中,第一vtep根据第二vtep发送的组播路由消息中携带的标识,确定第二vtep是否连接有单挂接入且已加入当前第一主机请求的组播组的第二主机,若第二vtep没有连接第二主机,则禁止生成出接口指向第二vtep的vxlan隧道的组播转发表项,从而使第一vtep无法向第二vtep发送组播数据报文,达到节约第一vtep和第二vtep之间网络资源的目的。

为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述:

参见图2,为本发明示出的一种组播转发方法的流程图,该流程应用于evpn中的第一vtep,该evpn还包括第二vtep,第一vtep和第二vtep为第一主机多归属接入的vtep,其中,第一vtep上连接第一主机的ac口为bdf口,第二vtep上连接第一主机的ac口为df口。

这里,第一vtep、第二vtep、第一主机只是为便于区分而进行的命名,并非用于限定。

如图2所示,该流程可包括以下步骤:

步骤201,接收第二vtep发送的组播路由消息。

当第一主机有组播需求时,发送组播组加入报文,该组播组加入报文中携带第一主机请求加入的组播组的地址。

接收到组播组加入报文的vtep(第一vtep或第二vtep)生成出接口为连接第一主机的ac口的组播转发表项,同时,向第一主机多归属接入的对端vtep发送路由同步消息,以同步该组播转发表项。

对端vtep基于路由同步消息,生成出接口为连接第一主机的本地ac口的组播转发表项。

至此,完成第一vtep和第二vtep之间的出接口为ac口的组播转发表项的同步。该同步过程为现有技术,在此不对具体实现细节作过多介绍。

在完成上述出接口为ac口的组播转发表项同步后,具有df口的第二vtep发送组播路由消息,用于通告其它vtep生成出接口指向第二vtep的vxlan隧道的组播转发表项,以使其它vtep在接收到组播数据报文时向第二vtep转发,再由第二vtep通过df口(第二vtep上连接第一主机的ac口)转发给第一主机。

本发明中,第二vtep发送的组播路由消息中携带用于表示第二vtep是否连接有第二主机的标识,其中,第二主机为单挂接入第二vtep且已加入第一主机请求的组播组的设备。之所以称为第二主机,只是为便于描述而进行的命名,并非用于限定。

在具体实现时,标识可携带在组播路由消息的flag字段,比如,利用flag字段中的一个保留(reserved)位携带标识。

步骤202,基于标识确定第二vtep是否连接有第二主机。

本步骤确定第二vtep是否连接有第二主机的过程,可参见下文图3所示流程示出的一种实现方式,这里暂不赘述。

步骤203,若第二vtep没有连接第二主机,则禁止生成隧道组播转发表项。

这里,隧道组播转发表项用于记录第一主机请求加入的组播组的地址与指向第二vtep的vxlan隧道的对应关系,即隧道组播转发表项的出接口为指向第二vtep的vxlan隧道。之所以称为隧道组播转发表项,只是为便于描述而进行的命名,并非用于限定。

由于步骤203没有生成上述隧道组播转发表项,因此,第一vtep无法通过指向第二vtep的vxlan隧道,向第二vtep转发对应组播组的组播数据报文。

步骤204,若第二vtep连接有第二主机,则生成隧道组播转发表项。

第一vtep通过指向第二vtep的vxlan隧道,向第二vtep转发对应组播组的组播数据报文,则第二vtep连接的第二主机可接收到组播数据报文。

至此,完成图2所示流程。

通过图2所示流程可以看出,在本发明中,第一vtep根据第二vtep发送的组播路由消息中携带的标识,可确定第二vtep是否连接有单挂接入且已加入当前第一主机请求的组播组的第二主机,若第二vtep没有连接第二主机,则不生成指向第二vtep的组播转发表项,因此,不会向第二vtep转发组播数据报文,从而达到节约第一vtep与第二vtep之间的网络资源的目的。

下面对步骤202确定第二vtep是否连接有第二主机进行具体描述:

参见图3,为本发明提供的步骤202的实现流程图。如图3所示,该流程可包括以下步骤:

步骤301,获取组播路由消息中携带的标识。

步骤302,若标识为第一值,确定第二vtep没有连接第二主机。

步骤303,若标识为第二值,确定第二vtep连接有第二主机。

其中,第一值不等于第二值。比如,第一值为0,第二值为1。

至此,完成图3所示流程。

通过图3所示流程具体实现了如何确定第二vtep是否连接有第二主机。

下面通过具体实施例对本发明提供的方法进行描述:

实施例一:

参见图1,为vtep1没有连接单挂主机的多归属evpn组网示意图。

图1中,主机1通过lsw多归属接入vtep1和vtep2,vtep1上连接主机1的ac口为ac1,vtep2上连接主机1的ac口为ac2,ac1和ac2被配置的esi均为esi_1,并选举ac1为df口,ac2为bdf口。

主机1发送组播组加入报文,组播组加入报文中携带主机1请求加入的组播组的地址(记为g_mac),报文通过lsw哈希到vtep2。

vtep2根据组播组地址(g_mac)以及接收该组播组加入报文的ac口(ac2)生成组播转发表项,如前述表1所示。

vtep2发送路由同步消息,该路由同步消息中携带组播组地址(g_mac)以及ac2的esi(esi_1)。

vtep1接收到路由同步消息后,确定本地存在具有相同esi(esi_1)的ac口(ac1),则根据路由同步消息中携带的组播组地址(g_mac)以及本地的ac口(ac1),生成组播转发表项,如前述表2所示。

由于ac1为df口,因此,vtep1发送组播路由消息,该组播路由消息中携带组播组地址(g_mac)以及用于表示vtep1是否连接有单挂主机的标识,如图1所示,vtep1下无单挂主机,因此,该标识为0。

vtep2从接收到的组播路由消息中获取的标识为0,因此,确定vtep1没有连接单挂主机,则不会生成出接口指向vtep1的vxlan隧道(tunnel_1)的组播转发表项。vtep2上的组播转发表项仍如表2所示。

组播源2发送的组播组地址为g_mac的组播数据报文(g_packet2),首先到达vtep2,通过表2所示的出接口(ac2)将g_packet2转发给主机1。由于不存在出接口为tunnel_1的组播转发表项,因此,vtep2不会通过tunnel_1向vtep1转发组播数据报文,避免了vtep1与vtep2之间的网络资源浪费。

至此,完成本具体实施例的描述。

实施例二:

参见图4,为vtep1连接有单挂主机的多归属evpn组网示意图。

图4中,主机2为单挂接入vtep1的主机,vtep1上连接主机2的ac口为ac3。

主机2发送组播组加入报文(组播组地址为g_mac),vtep1根据组播组地址(g_mac)以及接收该组播组加入报文的ac口(ac3),生成如表5所示组播转发表项。

表5

vtep1向vtep2、vtep3同步组播转发表项,vtep2根据组播组地址(g_mac)以及vtep2与vtep1之间的隧道(tunnel_1),生成如表6所示组播转发表项。

表6

当主机1发送组播组加入报文(组播组地址为g_mac)时,报文通过lsw哈希到vtep2。

vtep2根据组播组地址(g_mac)确定本地存在g_mac对应的组播转发表项,则将接收组播组加入报文的ac口(ac2)添加到该组播转发表项的出接口中,如表7所示。

表7

vtep2发送路由同步消息,该路由同步消息中携带组播组地址(g_mac)以及ac2的esi(esi_1)。

vtep1接收到路由同步消息后,确定本地存在具有相同esi(esi_1)的ac口(ac1),则将ac1添加到g_mac对应的组播转发表项中,如表8所示。

表8

由于ac1为df口,因此,vtep1发送组播路由消息,该组播路由消息中携带组播组地址(g_mac)以及用于表示vtep1是否连接有单挂主机的标识。由于vtep1连接有单挂主机(主机2),对应ac口为ac3,因此,设置标识为1。

vtep2从接收到的组播路由消息中获取到标识为1,因此,确定vtep1连接有单挂主机,查询表7,已存在出接口为指向vtep1的vxlan隧道(tunnel_1)的组播转发表项。

组播源2发送组播组地址为g_mac的组播数据报文(g_packet2),该报文首先到达vtep2,vtep2查询表7,确定存在两个出接口,分别为ac2和tunnel_1,则通过ac2将g_packet2转发给主机1;通过tunnel_1将g_packet2转发给vtep1,vtep1再通过ac3转发给主机2。

至此,完成本具体实施例的描述。

参见图5,为本发明提供的一种vtep的硬件结构示意图。该vtep可包括处理器501、存储有机器可执行指令的机器可读存储介质502。处理器501与机器可读存储介质502可经由系统总线503通信。并且,通过读取并执行机器可读存储介质502中与组播转发逻辑对应的机器可执行指令,处理器501可执行上文描述的组播转发方法。

本文提到的机器可读存储介质502可以是任何电子、磁性、光学或其他物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,所述机器可读存储介质502可以包括如下至少一个种存储介质:易失存储器、非易失性存储器、其它类型存储介质。其中,易失性存储器可为ram(randomaccessmemory,随机存取存储器),非易失性存储器可为闪存、存储驱动器(如硬盘驱动器)、固态硬盘、存储盘(如光盘、dvd等)。

参见图6,从功能上划分,上述组播转发逻辑可以包括接收单元601、确定单元602以及生成单元603,其中:

接收单元601,用于接收所述第二vtep发送的组播路由消息,所述组播路由消息中携带用于表示所述第二vtep是否连接有第二主机的标识,其中,所述第二主机为单挂接入所述第二vtep且已加入所述第一主机请求的组播组的设备;

确定单元602,用于基于所述标识确定所述第二vtep是否连接有所述第二主机;

生成单元603,用于若所述第二vtep没有连接所述第二主机,则禁止生成隧道组播转发表项,所述隧道组播转发表项用于记录所述组播组的地址与指向所述第二vtep的vxlan隧道的对应关系,以使所述第一vtep无法通过所述vxlan隧道向所述第二vtep转发发往所述组播组的组播数据报文。

作为一个实施例,所述生成单元603,还用于若所述第二vtep连接有所述第二主机,则生成所述隧道组播转发表项,以使所述第一vtep通过所述vxlan隧道向所述第二vtep转发发往所述组播组的组播数据报文。

作为一个实施例,所述确定单元602,具体用于若所述标识为第一值,确定所述第二vtep没有连接所述第二主机;若所述标识为第二值,确定所述第二vtep连接有所述第二主机;其中,所述第一值不等于所述第二值。

作为一个实施例,所述标识携带在所述组播路由消息的标志flag字段中。

至此,完成图5所示vtep的描述。

本发明还提供一种包括机器可执行指令的机器可读存储介质,例如图5中的机器可读存储介质502,所述机器可执行指令可由接入设备中的处理器501执行,以实现以上描述的组播转发方法。

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

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