发明内容
本发明实施例提供了一种组播报文转发方法及设备,用以在VPLS网络中,减少PE设备上的组播转发相关表项所占用的硬件资源。
为此,本发明实施例采用如下技术方案:
一种组播业报文转发方法,应用于虚拟专用局域网服务VPLS网络,所述方法包括:
在运营商边界PE设备上配置一个使能未知组播丢弃Drop-unknown功能的VSI服务实例,根据所述使能Drop-unknown功能的VSI服务实例生成对应的丢弃dummy组播表项,并将需要使能Drop-unknown功能的其它VSI服务实例与所述使能Drop-unknown功能的VSI服务实例建立关联关系;
所述PE设备接收组播报文后,若未匹配到对应的组播转发表项,则查询所述关联关系,若查询到所述组播报文的接收端口所属的VSI服务实例与所述使能Drop-unknown功能的VSI服务实例关联,则根据所述使能Drop-unknown功能的VSI服务实例对应的dummy组播表项,丢弃所述组播报文。
一种PE设备,应用于虚拟专用局域网服务VPLS,包括:
配置模块,用于在运营商边界PE设备上配置一个使能未知组播丢弃Drop-unknown功能的VSI服务实例,根据所述使能Drop-unknown功能的VSI服务实例生成对应的丢弃dummy组播表项,并将需要使能Drop-unknown功能的其它VSI服务实例与所述使能Drop-unknown功能的VSI服务实例建立关联关系;
组播转发模块,用于在接收组播报文后,当未匹配到对应的组播转发表项时,查询所述关联关系,当查询到所述组播报文的接收端口所属的VSI服务实例与所述使能Drop-unknown功能的VSI服务实例关联时,根据所述使能Drop-unknown功能的VSI服务实例对应的dummy组播表项,丢弃所述组播报文。
与现有技术相比,本发明的上述实施例具有以下有益技术效果:
本发明实施例提供的VPLS组播业务处理方案,通过在PE设备上配置一个使能未知组播丢弃Drop-unknown功能的VSI服务实例,生成对应的dummy组播表项,并将需要使能Drop-unknown功能的其它VSI服务实例与使能Drop-unknown功能的VSI服务实例建立关联关系;PE设备接收组播报文后,若未匹配到对应的组播转发表项,且查询到所述组播报文的接收端口所属的VSI服务实例与所述使能Drop-unknown功能的VSI服务实例关联,则根据所述使能Drop-unknown功能的VSI服务实例对应的dummy组播表项,丢弃所述组播报文。本发明实施例只占用一条表项硬件资源,解决了VPLS组播应用中使能Drop-unknown功能占用较多硬件资源的问题,并简化了VSI服务实例的配置,在需要为多个VSI服务实例使能Drop-unknown功能的情况下,能够节约大量的表项硬件资源。
具体实施方式
针对现有技术存在的上述问题,本发明实施例提供了一种应用于VPLS网络的组播报文转发方案,用以在VPLS网络中,减少PE设备上的组播转发相关表项所占用的硬件资源。
下面结合附图对本发明实施例进行详细描述。
如图1所示,VPLS组网通常包括:PE(ProviderEdge,运营商边缘)设备和P(Provider)设备,PE设备与CE(CustomEdge,用户边缘)设备相连,实现报文从私网到公网隧道,并从公网隧道到私网的映射与转发;P设备为运营商网络中不连接任何CE设备的网络设备。
为支持组播业务,PE设备上运行有IGMPSnooping(InternetGroupManagementProtocol,互联网组管理协议窥探)。IGMP协议是互联网协议家族中的一个组播协议,用于在IP主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。运行IGMPSnooping的PE设备通过对收到的IGMP报文进行分析,为接收IGMP报文的端口和IGMP报文的组播MAC(MediaAccessControl,物理地址)地址建立映射关系,生成组播转发表项,并根据组播转发表转发组播报文。
PE设备上配置有一个或多个VSI服务实例,通过自动发现VSI服务实例的对端PE设备,并通过VSI服务实例对从CE设备接收到的报文进行分类匹配,从而将具备不同特征的组播报文通过不同的PW进行转发。
本发明实施例中,无需为每个需要使能Drop-unknown功能的VSI服务实例生成对应的dummy组播表项,而是配置一个使能Drop-unknown功能的VSI服务实例(为方便描述,以下将该VSI服务实例称为公用VSI服务实例),生成该公用VSI服务实例对应的dummy组播表项,并将其它需要使能Drop-unknown功能的VSI服务实例与该公用VSI服务实例关联。
公用VSI服务实例的配置流程如图2所示,包括如下步骤:
步骤201,在PE设备上配置一个VSI服务实例,为该VSI服务实例使能Drop-unknown功能,并在PE设备上的硬件表中生成一条dummy组播表项,该VSI服务实例即为公用VSI服务实例,标识为VSI-Public。
其中,该条dummy组播表项为未知组播防攻击表项,可以包括:公用VSI服务实例的标识(此处为VSI-Public)、组播组(包括组播MAC地址和/或组播IP地址,在本发明实施例中,值为全0,表示全部的组播报文都能够命中本dummy表项)、出端口(值为空)。
步骤202,将需要使能Drop-unknown功能的其它VSI服务实例与该公用VSI服务实例关联。
具体的,可通过将公用VSI服务实例的标识(此处为VSI-Public)与其它VSI服务实例的标识建立映射关系表项,并下发到PE设备的硬件表中,从而实现将需要使能Drop-unknown功能的VSI服务实例与公用VSI服务实例关联。这种关联关系可以表现为表结构或者集合形式,本发明实施例对此不做限制。
参见图3所示,本发明实施例提供的组播报文转发流程包括以下步骤:
步骤301,PE设备接收组播报文。
步骤302,PE设备查询对应的组播转发表项,若未查询到,则执行步骤303;否则,执行步骤306。
具体的,PE设备根据接收到的组播报文携带的组播MAC地址和/或组播组地址,查询对应的组播转发表项,若未查询到与该组播MAC地址对应的组播转发表项,说明该组播报文为未知组播报文,则执行步骤303;若查询到与该组播MAC地址对应的表项,说明该组播报文为已知组播报文,则执行步骤306。
步骤303,PE设备根据组播报文接收端口所属的VSI服务实例,查询关联关系,若查询到该VSI服务实例与公用VSI服务实例关联,则执行步骤304;否则执行步骤305。
具体的,由于已在PE设备的端口上配置了VSI服务实例,因此,当PE设备的端口接收到组播报文后,PE设备即可获知组播报文的接收端口属于哪个VSI服务实例。
PE设备根据组播报文接收端口所属的VSI服务实例,查询VSI服务实例与公用VSI服务实例的关联关系,若查询到该VIS服务实例与公用VSI之间存在关联,则执行步骤304;否则,则执行步骤305。
步骤304,PE设备根据公用VSI服务实例对应的dummy组播表项,丢弃接收到的组播报文。
具体的,若PE设备查询到该组播报文的接收端口所属的VSI服务实例与公用VSI服务实例关联,说明该组播报文命中公用VSI服务实例的dummy组播表项,则PE设备根据该dummy组播表项对组播报文进行处理。
步骤305,PE设备广播该组播报文,或者,将接收到的组播报文上送PE设备的CPU处理。
具体的,若PE设备未查询到该组播报文的接收端口所属的VSI服务实例与公用VSI服务实例之间的关联关系,说明该VSI服务实例未使能Drop-unknown功能,PE设备可以按照现有方式,广播该组播报文,或者,将该组播报文上送本设备CPU处理。
步骤306,PE设备根据查询到的组播转发表项转发该组播报文。
具体的,若PE设备在组播转发表中,查询到与组播MAC地址和/或组播组地址对应的表项,则按照已知组播报文的转发方式,根据查询到的组播转发表项转发该组播报文。
通过上述流程可以看出,由于公用VSI服务实例使能了Drop-unknown功能,将需要使能Drop-unknown功能的VSI服务实例与公用VSI服务实例关联之后,需要使能Drop-unknown功能的VSI服务实例也相应使能了Drop-unknown功能,但是不会生成对应的dummy组播表项。PE设备接收到组播报文后,若未查询到对应的组播转发表项,且组播报文的接收端口所属的VSI服务实例与已使能Drop-unknown功能的公用VSI服务实例的关联,则根据该dummy组播表项丢弃该组播报文,在存在多个需要使能Drop-unknown功能的VSI服务实例的情况下,能够节约大量的表项硬件资源,并简化了VSI服务实例的配置。进一步的,为报文的正常转发提供保障,提高VPLS组播业务处理的可靠性。
例如,若当前PE设备硬件组播表项规格为2K条(其中包括组播转发表项和dummy组播表项),按照传统的VSI服务实例配置方案,分别为1K个VSI服务实例使能Drop-unknown功能,会生成1K条dummy组播表项,由此,组播转发表项规格即为1K。而根据本发明实施例的VSI服务实例配置方案配置VSI服务实例后,仅生成1条dummy组播表项(即与公用的VSI服务实例对应的dummy组播表项),组播转发表项规格可以提高至2K-1。进一步的,根据本发明实施例提供的VPLS组播业务处理方案处理组播报文,能够为报文的正常转发提供保障,提高了VPLS组播业务处理的可靠性。
以下以一具体场景为例,详细说明本发明实施的具体实现过程。
在PE设备上配置3个VSI,其中,VSI0为公用VSI,使能Drop-unknown功能,VSI1和VSI2用于组播转发,VSI1需要使能Drop-unknown功能,VSI2不需要使能Drop-unknown功能。VSI1配置在端口1上,VSI配置在端口2上,VSI0配置在系统视图下,各VSI的配置信息分别如下所示:
VSI0配置在系统视图下:
igmp-snoopingenable
igmp-snoopingdrop-unknown
igmp-snoopingbindingvsi1
VSI1配置在端口1视图下:
l2bindingvsi1
VSI2配置在端口2视图下:
l2bindingvsi2
VIS0使能了Drop-unknown功能之后,在PE的硬件表项中下发一条对应的dummy组播表项,该dummy组播表项的内容可如表1所示:
表1
VSI标识 |
组播组 |
出端口 |
VSI0 |
(0.0.0.0) |
NULL |
其中,组播组字段可以包括组播MAC和/或组播IP,在本发明实施例中,值为(0.0.0.0),表明dummy组播表项包含全部组播报文(即,未命中组播转发表项的全部未知组播报文)。出端口为空,表明命中dummy表项的组播报文没有下游出端口。
将VSI1与VSI0关联后,利用表2记录公用的VSI服务实例和其他需要使能Drop-unknown功能的VSI服务实例的关联关系,并下发到PE设备的硬件表中,表2如下所示:
表2
公用的VSI服务实例标识 |
关联的VSI服务实例标识 |
VSI0 |
VSI1 |
VSI0 |
…… |
VSI0 |
VSIn |
若PE设备的端口1接收到组播报文,PE设备解析出该组播报文的组播MAC地址和/或组播组MAC地址,根据该组播MAC地址和/或组播组MAC地址未查询到对应的组播转发表项,则根据端口1所属的VSI1查询表2,查询到VSI1与VSI0之间的关联关系,则根据表1丢弃接收到的组播报文。
若PE设备的端口2接收到组播报文,PE设备解析出该组播报文的组播MAC地址和/或组播组MAC地址,根据该组播MAC地址和/或组播组MAC地址未查询到对应的组播转发表项,则根据端口2所属的VSI2查询表2,未查询到VSI2与VSI0的关联关系,则PE设备广播该组播报文,或者,将接收到的组播报文上送PE设备的CPU处理。
基于相同的技术构思,本发明实施例还提供了一种PE设备,如图4所示,包括:
配置模块41,用于配置一个使能未知组播丢弃Drop-unknown功能的VSI服务实例,根据所述使能Drop-unknown功能的VSI服务实例生成对应的丢弃dummy组播表项,并将需要使能Drop-unknown功能的其它VSI服务实例与所述使能Drop-unknown功能的VSI服务实例建立关联关系。
组播转发模块42,用于在接收组播报文后,当未匹配到对应的组播转发表项时,查询所述关联关系,当查询到所述组播报文的接收端口所属的VSI服务实例与所述使能Drop-unknown功能的VSI服务实例关联时,根据所述使能Drop-unknown功能的VSI服务实例对应的dummy组播表项,丢弃所述组播报文。
进一步的,组播转发模块42还用于,当未查询到所述组播报文的接收端口所属的VSI服务实例与所述使能Drop-unknown功能的VSI服务实例关联时,广播所述组播报文,或者,将所述组播报文上送CPU处理。
组播转发模块42还用于,在接收组播报文后,当匹配到对应的组播转发表项时,根据匹配到的组播转发表项转发所述组播报文。
具体的,配置模块41具体用于,建立所述使能Drop-unknown功能的VSI服务实例的标识与需要使能Drop-unknown功能的其它VSI服务实例的标识之间的关联关系,并将所述关联关系记录到本设备的硬件表中。
组播转发模块42具体用于,根据所述组播报文的接收端口所属的VSI服务实例的标识,查询所述关联关系。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台客户端设备(可以是手机,个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。