一种组播报文传输方法和PE设备与流程

文档序号:11990858阅读:199来源:国知局
一种组播报文传输方法和PE设备与流程
本发明涉及通信技术领域,尤其涉及一种组播报文传输方法和PE设备。

背景技术:
IP组播(Multicast)技术(以下简称组播技术)是一种与单播(Unicast)和广播(Broadcast)并列的通信方式,组播技术能够有效地解决单点发送、多点接收的问题,从而实现了网络中点到多点的高效数据传送,能够节约大量网络带宽,降低网络负载。其中,VPLS(VirtualPrivateLANService,虚拟专用局域网服务)是在MPLS(MultipleprotocolLabelSwitching,多协议标签交换)或骨干网上提供的一种点到多点的L2VPN(Layer2VirtualPrivateNetwork,二层虚拟专用网)业务。服务提供商通过在骨干网上为一个用户网络模拟一台连接多个异地站点的虚拟交换机来为用户网络提供VPLS服务,骨干网对于用户网络的站点来说是透明的,用户网络的各个站点就像工作在一个局域网中一样。在VPLS组网中,用户网络中分布于不同地理位置的多个站点(site)通过VPLS技术连接起来,同时在PE上设置为VPLS实例提供二层交换服务的虚拟机实例VSI,从而实现VPLS服务,其中每个VSI对应一个VPLS实例,且VSI之间是相互独立的。如图1所示,为现有技术中一种典型VPLS组网的架构示意图,在该VPLS组网中,与PE2相连的多个属于不同VPN(VirtualPrivateNetwork,虚拟专用网)的站点(site)都需要组播源的信息时,现有解决方式为:PE2根据不同VPN建立不同的VSI,如对应VPN1创建VSI1、VPN2创建VSI2、VPN3创建VSI3、VPN4创建VSI4。同时在PE1上创建相应的VSI,并将组播源分别加入到这些VSI中,在每个VSI中维护独立的组播转发表项。当组播源发报文时会根据不同的VSI发送报文,这些报文的内容是相同的,即当PE2中存在N个VSI需要共用该组播源时,该组播源将发送N份相同的报文到PE1,继而PE1与PE2之间的隧道会承载N份相同的流量。例如,图1中属于不同站点的Host(主机)A、HostB、HostD和HostE都需要组播源Source的信息时,这些Host会在各自的VSI中向组播源注册,组播源发送信息时会将信息复制成4份分别在每个VSI中发送。可以看出,现有VPLS组网中,多个VSI需要同一组播源的组播流时,每个VSI内均需要注册组播源,组播源需要在每个VSI内复制组播流进行组播传输,使得组播占用的网络带宽较大,浪费网络带宽资源。

技术实现要素:
本发明实施例提供了一种组播报文传输方法和PE设备,可克服现有VPLS组网中向多个VSI进行组播占用带宽资源较大的问题。为了达到上述目的,本发明实施例提供一种组播报文传输方法,包括:服务提供商网络边缘PE设备接收第一虚拟交换实例VSI中的第一主机发送的请求加入组播源的组播请求报文;所述PE设备根据所述组播请求报文确定所述第一主机请求加入的组播源,并在所述PE设备中查询得到与所述组播源对应的VSI关联体时,确定所述第一VSI是否是所述VSI关联体中的成员,所述VSI关联体包括多个VSI成员;当所述第一VSI是所述VSI关联体中的成员时,所述PE设备在所述VSI关联体内,查询所述VSI关联体内是否有VSI成员注册所述组播源并生成有组播转发表项,是则在所述VSI关联体内的关联表中为接收到所述组播请求报文的端口或链路设置标志位,以便所述PE设备将接收到的所述组播源发送的组播报文通过设置有所述标志位的端口或链路转发到所述第一主机,所述标志位用于表明端口或链路连接的主机需要接收所述组播源发送的组播报文,所述关联表用于记录设置有标志位的端口或链路。其中,在所述当所述第一VSI是所述VSI关联体中的成员时,所述PE设备在所述VSI关联体内,查询所述VSI关联体内是否有VSI成员注册所述组播源并生成有组播转发表项之前,还包括:当所述第一VSI不是所述VSI关联体中的成员时,将所述第一VSI加入所述VSI关联体。其中,所述方法还包括:若所述PE设备在所述组播源对应的VSI关联体内,未查询到有VSI成员注册所述组播源并生成有组播转发表项时,在所述第一VSI内,根据所述组播请求报文注册所述组播源并生成对应所述第一主机的组播转发表项,以便所述PE设备将接收到的所述组播源发送的组播报文基于对应所述第一主机的组播转发表项转发至所述第一主机,并在所述VSI关联体内将所述第一VSI标识为注册所述组播源。其中,所述方法还包括:当所述PE设备接收到所述组播源在注册组播源的VSI成员中发送的组播报文时,将所述组播报文通过所述注册组播源的VSI成员中的组播转发表项,以及所述组播源对应的VSI关联体内的关联表中设置有标志位的端口或链路发送到对应的主机。其中,所述方法还包括:当所述PE设备接收到所述第一主机发送的请求退出所述组播源的请求报文时,确定所述第一VSI是否是所述VSI关联体中注册所述组播源的VSI成员;若所述第一VSI是所述VSI关联体中注册所述组播源的VSI成员,且所述VSI关联体中的所述第一VSI中不存在设置有标志位且与其他主机连接的端口或链路时,判断所述VSI关联体的其他VSI成员的一VSI成员中是否存在设置有标志位且与所述一VSI成员中的一主机连接的端口或链路,是则所述PE设备删除所述组播转发表项以及与所述一主机连接的端口或链路设置的标志位,并在所述一VSI成员中生成对应所述一主机的组播转发表项,并在所述VSI关联体内将所述一VSI成员标识为注册所述组播源,否则,删除所述VSI关联体中的组播转发表项;若所述第一VSI是所述VSI关联体中注册所述组播源的VSI成员,且所述VSI关联体中的所述第一VSI中存在设置有标志位且与一主机连接的端口或链路时,在所述第一VSI中删除所述组播转发表项以及与所述第一VSI中的所述一主机连接的端口或链路设置的标志位,并生成对应于所述第一VSI中的所述一主机的组播转发表项;若所述第一VSI不是所述VSI关联体中注册所述组播源的VSI成员,删除与所述第一主机连接的端口或链路设置的标志位。本发明实施例还提供了一种PE设备,包括:接收模块,用于接收第一虚拟交换实例VSI中的第一主机发送的请求加入组播源的组播请求报文;查询模块,用于根据所述组播请求报文确定所述第一主机请求加入的组播源,并在所述PE设备中查询得到与所述组播源对应的VSI关联体时,确定所述第一VSI是否是所述VSI关联体中的成员,所述VSI关联体包括多个VSI成员;处理模块,用于当所述第一VSI是所述VSI关联体中的成员时,在所述VSI关联体内,查询所述VSI关联体内是否有VSI成员注册所述组播源并生成有组播转发表项,是则在所述VSI关联体内的关联表中为接收到所述组播请求报文的端口或链路设置标志位,以便所述PE设备将接收到的所述组播源发送的组播报文通过设置有所述标志位的端口或链路转发到所述第一主机,所述标志位用于表明端口或链路连接的主机需要接收所述组播源发送的组播报文,所述关联表用于记录设置有标志位的端口或链路。其中,所述处理模块,在所述当所述第一VSI是所述VSI关联体中的成员时,所述PE设备在所述VSI关联体内,查询所述VSI关联体内是否有VSI成员注册所述组播源并生成有组播转发表项之前,还用于当所述第一VSI不是所述VSI关联体中的成员时,将所述第一VSI加入所述VSI关联体。其中,所述处理模块,还用于若所述PE设备在所述组播源对应的VSI关联体内,未查询到有VSI成员注册所述组播源并生成有组播转发表项时,在所述第一VSI内,根据所述组播请求报文注册所述组播源并生成对应所述第一主机的组播转发表项,以便所述PE设备将接收到的所述组播源发送的组播报文基于对应所述第一主机的组播转发表项转发至所述第一主机,并在所述VSI关联体内将所述第一VSI标识为注册所述组播源。其中,所述PE设备还包括:发送模块,用于当所述PE设备接收到所述组播源在注册组播源的VSI成员中发送的组播报文时,将所述组播报文通过所述注册组播源的VSI成员中的组播转发表项,以及所述组播源对应的VSI关联体内的关联表中设置有标志位的端口或链路发送到对应的主机。其中,所述PE设备还包括:判定模块,用于当所述PE设备接收到所述第一主机发送的请求退出所述组播源的请求报文时,确定所述第一VSI是否是所述VSI关联体中注册所述组播源的VSI成员;退出处理模块,用于若所述第一VSI是所述VSI关联体中注册所述组播源的VSI成员,且所述VSI关联体中的所述第一VSI中不存在设置有标志位且与其他主机连接的端口或链路时,判断所述VSI关联体的其他VSI成员的一VSI成员中是否存在设置有标志位且与所述一VSI成员中的一主机连接的端口或链路,是则所述PE设备删除所述组播转发表项以及与所述一主机连接的端口或链路设置的标志位,并在所述一VSI成员中生成对应所述一主机的组播转发表项,并在所述VSI关联体内将所述一VSI成员标识为注册所述组播源,否则,删除所述VSI关联体中的组播转发表项;所述退出处理模块,还用于若所述第一VSI是所述VSI关联体中注册所述组播源的VSI成员,且所述VSI关联体中的所述第一VSI中存在设置有标志位且与一主机连接的端口或链路时,在所述第一VSI中删除所述组播转发表项以及与所述第一VSI中的所述一主机连接的端口或链路设置的标志位,并生成对应于所述第一VSI中的所述一主机的组播转发表项;所述退出处理模块,还用于若所述第一VSI不是所述VSI关联体中注册所述组播源的VSI成员,删除与所述第一主机连接的端口或链路设置的标志位。本发明上述实施例中,PE设备接收到第一VSI中的第一主机发送的请求加入组播源的组播请求报文后,根据该组播请求报文确定该第一主机请求加入的组播源,并在PE设备中查询得到与该组播源对应的VSI关联体时,确定该第一VSI是否是该VSI关联体中的成员;当该第一VSI是该VSI关联体中的成员,PE设备在VSI关联体内,查询该VSI关联体内是否有VSI成员注册该组播源并生成有组播转发表项,是则在该VSI关联体内的关联表中为接收到该组播请求报文的端口或链路设置标志位,以便PE设备将接收到的该组播源发送的组播报文通过设置有该标志位的端口或链路转发到该第一主机,这样,VSI关联体中的VSI成员需要获取组播源的组播报文时,只需要一个VSI成员注册组播报文即可获取组播报文,从而有效降低了组播占用的带宽,提高了网络带宽资源的利用率。附图说明图1为现有技术中一种典型VPLS组网的架构示意图;图2为本发明实施例一提供的一种组播报文传输方法的流程示意图;图3为本发明实施例二提供的一种组播报文传输方法的流程示意图;图4为本发明实施例三提供的一种组播报文传输方法的流程示意图;图5为本发明实施例四提供的一种组播报文传输方法的流程示意图;图6为本发明实施例五提供的一种组播报文传输方法中主机退出组播源的流程示意图;图7为本发明实施例六提供的一种PE设备的结构示意图;图8为本发明实施例七提供的一种PE设备的结构示意图;图9为本发明实施例八提供的一种PE设备的结构示意图。具体实施方式针对上述现有技术中存在的问题,本发明实施例提供了一种组播报文传输的技术方案,可以克服现有VPLS组网中多个VSI同时获取组播源的组播报文时,组播占用带宽资源较大的问题。下面将结合本发明的实施例中的附图,对本发明的实施例中的技术方案进行清楚、完整的描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明的实施例保护的范围。实施例一本实施例可应用于L2VPN网络中,其中的PE设备上建立有针对不同VPN的VSI,PE设备可基于本实施例方法对各VSI中的用户站点的主机发送的组播请求进行处理,具体地,如图2所示,为本发明实施例提供的一种组播报文传输方法的流程示意图,可以包括以下步骤:步骤201、PE设备接收第一VSI中的第一主机发送的请求加入组播源的组播请求报文。具体地,当第一VSI中的用户站点内第一主机需要接收某个组播源发送的组播报文时,该第一主机可在第一VSI中向与用户站点连接的PE设备发送请求加入该组播源的组播请求报文,该组播请求报文中可以携带有第一主机请求加入的组播源的标识信息。步骤202、PE设备根据该组播请求报文确定该第一主机请求加入的组播源,并在PE设备中查询得到与该组播源对应的VSI关联体时,确定该第一主机是否是VSI关联体中的成员。其中,该VSI关联体包括多个VSI成员。具体地,在本发明实施例中,可预先在与用户站点连接的PE设备中创建VSI关联体,该VSI关联体与组播源一一对应;VSI关联体中的成员VSI均有可能需要该VSI关联体对应的组播源的组播报文。本实施例中,PE设备接收到第一主机发送的请求加入组播源的组播请求报文后,可以根据接收到该组播请求报文的端口确定第一主机所归属的VSI,并可以根据该组播请求报文中携带的组播源的标识信息确定对应的组播源,从而,在PE设备中查询得到与该组播源对应的VSI关联体。步骤203、当该第一VSI是VSI关联体中的成员时,PE设备在该VSI关联体内,查询该VSI关联体内是否有VSI成员注册该组播源并生成有组播转发表项,是则在该VSI关联体内的关联表中为接收到该组播请求报文的端口或链路设置标志位。其中,VSI关联体内的关联表用于记录设置有标志位的端口或链路。具体地,在本发明实施例中,对于一个VSI关联体,仅需要对第一个请求加入组播源的主机所归属的VSI成员注册组播源,并生成对应该主机的组播转发表项,而该VSI成员中其余主机,或其他VSI成员中主机请求加入组播源时,仅需要在连接该主机的端口或链路设置标志位。因此,当第一VSI是VSI关联体中的成员,且已有VSI成员注册组播源,那么PE设备就可以将该第一VSI中与第一主机连接的端口或链路设置标志位,当PE接收到组播源接收到组播源发送的组播报文时,就可以直接通过该设置标志位的端口或链路发送至第一主机。例如,假设PE通过port1连接主机1,PE与主机1之间的链路为AC(AttachmentCircuit,接入电路)1,若PE从port1接收到主机1发送的请求加入组播源的组播请求报文,且确定主机1不是第一个请求加入该组播源的主机,则PE在该组播源对应的VSI关联体内的关联表中为port1或AC1设置标志位。其中,当PE接收到主机发送的请求加入组播源的组播请求报文,且确定该主机为第一个请求加入该组播源的主机时,PE根据现有组播注册流程对该主机所归属的VSI注册组播源;当PE接收到主机发送的请求加入组播源的组播请求报文,且确定该主机不是第一个请求加入该组播源的主机时,PE不再将该组播请求报文转发给组播源,而是代理组播源向该主机返回应答报文,以通知该主机已加入组播源。相应地,PE设备接收到第一VSI中的第一主机的组播请求报文并查询到该组播源对应的VSI关联体,且确定第一VSI是VSI关联体中的VSI成员后,进一步查询该VSI关联体中是否已有VSI成员注册该组播源并生成组播转发表项。若PE设备在该VSI关联体内,查询得到该VSI关联体内已有VSI成员注册该组播源并生成有组播转发表项时,在该VSI关联体内的关联表中为接收到该组播请求报文的端口或链路设置标志位,以便PE设备将接收到的该组播源发送的组播报文通过设置有该标志位的端口或链路转发到该第一主机。其中,该标志位用于表明端口或链路连接的主机需要接收该组播源发送的组播报文,这样,PE设备在已注册组播源的VSI中接收到组播报文后,即可查询VSI关联体中的其他VSI成员中是否有端口或链路设置有标志位,并将组播报文复制后通过设置有标志位的端口或链路发送到相应的主机,其具体实现流程可以为:PE设备根据VSI关联体内设置的标志位确定需要组播报文的VSI,并将组播报文复制后发送到该需要组播报文的VSI,由该VSI根据设置有标志位的端口或链路对该组播报文进行复制,并将复制后的报文通过设置有标志位的端口或链路发送到相应的主机。例如,VSI1为注册组播源的VSI,且VSI2中的port1和port2,以及VSI3中的port3、port4和port5设置有标志位,PE设备在VSI1内接收到组播报文后,对该组播报文进行复制,并分别发送到VSI2和VSI3,VSI2接收到该组播报文后,将该组播报文复制为2份,并分别通过port1和port2发送到相应的主机,VSI3接收到该组播报文后,将该组播报文复制为3份,并分别通过port3、port4和port5发送到相应的主机。本领域技术人员可以理解,当PE设备在为与第一主机连接的端口或链路上设置标志位后,会向第一主机返回一响应消息,通知第一主机注册组播源成功,这样,第一主机就可以准备接收组播源发送的组播报文。本领域技术人员可以理解,上述的VSI关联体中的关联表,具体可以是在VSI关联建立时创建的用于记录设置有标志位的端口或链路的表,或者,也可以是有端口或链路设置标志位时临时创建的表,在此不做特别限制。通过以上描述可以看出,在本发明实施例提供的技术方案中,PE设备接收到第一VSI中的第一主机发送的请求加入组播源的组播请求报文后,根据该组播请求报文确定该第一主机请求加入的组播源,并在PE设备中查询得到与该组播源对应的VSI关联体时,确定该第一VSI是否是该VSI关联体中的成员;当该第一VSI是该VSI关联体中的成员,PE设备在关联体内,查询该VSI关联体内是否有VSI成员注册该组播源并生成有组播转发表项,是则在该VSI关联体内的关联表中为接收到该组播请求报文的端口或链路设置标志位,以便PE设备将接收到的该组播源发送的组播报文通过设置有该标志位的端口或链路转发到该第一主机,这样,在多个VSI需要共同获取同一组播源的组播报文时,只需要一个VSI注册到组播源即可,组播源在下发组播报文时,只需要在已注册的VSI中下发一份组播报文,而不需要在每个VSI中均需要下发组播报文,降低了组播占用的带宽,提高了网络带宽资源的利用率。实施例二如图3所示,为本发明实施例提供的另一种组播报文传输方法的流程示意图,可以包括以下步骤:步骤301、PE设备接收第一VSI中的第一主机发送的请求加入组播源的组播请求报文。具体地,当第一VSI中用户站点内的第一主机需要接收某个组播源发送的组播报文时,该第一主机在该第一VSI中向与用户站点连接的PE设备发送请求加入该组播源的组播请求报文,该组播请求报文中可以携带有第一主机请求加入的组播源的标识信息。步骤302、PE设备根据该组播请求报文确定该第一主机请求加入的组播源,并在PE设备中查询是否存在与该组播源对应的VSI关联体,是则执行步骤303,否则执行步骤306。其中,该VSI关联体包括多个VSI成员。具体地,PE设备接收到第一主机发送的请求加入组播源的组播请求报文后,可以根据接收到该组播请求报文的端口确定第一主机所归属的VSI,并可以根据该组播请求报文中携带的组播源的标识信息确定对应的组播源,从而,在PE设备中查询与该组播源对应的VSI关联体。实际应用中,若PE设备中不存在组播源对应的VSI关联体时,可按现有技术方式,在第一VSI中注册组播源,并在第一VSI中生成组播转发表,以在第一VSI中实现组播报文的传输,其具体实现在此不再赘述。或者,PE设备也可根据需要实时创建VSI关联体,对此本实施例不做限制。步骤303、PE设备确定该第一VSI是否是VSI关联体中的VSI成员。若确定为是,则转至步骤305;否则,转至步骤304。具体地,在本发明实施例中,VSI关联体中可以动态加入VSI成员。相应地,PE设备查询到第一主机请求加入的组播源对应的VSI关联体后,需要确定该第一主机所归属的第一VSI是否是该VSI关联体中的VSI成员,并当第一VSI不是该VSI关联体中的VSI成员时,可以将第一VSI加入该VSI关联体。步骤304、PE设备将所述第一VSI加入所述VSI关联体,执行步骤305;步骤305、PE设备在该VSI关联体内,查询得到该VSI关联体内已有VSI成员注册该组播源并生成有组播转发表项时,在该VSI关联体内的关联表中为接收到该组播请求报文的端口或链路设置标志位。具体地,在本发明实施例中,对于一个VSI关联体,仅需要对第一个请求加入组播源的主机所归属的VSI成员注册组播源,并生成对应该主机的组播转发表项,而该VSI成员中其余主机,或其他VSI成员中主机请求加入组播源时,仅需要为连接该主机的端口或链路设置标志位。相应地,PE设备查询到该组播源对应的VSI关联体后,进一步查询该VSI关联体中是否已有VSI成员注册该组播源并生成组播转发表项。若PE设备在该VSI关联体内,查询得到该VSI关联体内已有VSI成员注册该组播源并生成有组播转发表项时,在该VSI关联体内的关联表中为接收到该组播请求报文的端口或链路设置标志位,以便PE设备将接收到的该组播源发送的组播报文通过设置有该标志位的端口或链路转发到该第一主机。其中,该标志位用于表明端口或链路连接的主机需要接收该组播源发送的组播报文。其中PE设备对组播源发送的组播报文的具体处理过程与实施例一相同,在此不再赘述。步骤306、PE设备在第一VSI中,向组播源发送第一主机发送的组播请求请求报文,以注册组播源。本实施例中,当PE设备中不存在与第一主机请求的组播源对应的VSI关联体时,可按照现有VSI中的主机请求组播源的方式进行处理。具体地,第一主机注册组播源的方式和过程,与现有组播源注册过程相同或类似,在此不再赘述。这样,组播源就可以在第一VSI中为第一主机发送组播报文,组播报文的下发过程与现有技术相同或类似,在此不再赘述。本实施例中,当PE设备中存在对应于组播源的VSI关联体时,若有其它VSI需要注册该组播源时,可将其动态加入VSI关联体,避免VSI单独注册组播源带来的带宽浪费。本领域技术人员可以理解,PE上设置的VSI关联体中的VSI成员也可以是固定的,即VSI关联体不可动态加入VSI成员,在这种情况下,当PE设备接收到第一主机发送的请求加入组播源的组播请求报文,且确定第一主机所归属的第一VSI不是该组播源对应的VSI关联体的VSI成员时,PE设备可按照现有组播加入流程进行处理,在此不再赘述。实施例三如图4所示,为本发明实施例提供的另一种组播报文传输方法的流程示意图,可以包括以下步骤:步骤401、PE设备接收第一VSI中的第一主机发送的请求加入组播源的组播请求报文。具体地,当第一VSI中用户站点内的第一主机需要接收某个组播源发送的组播报文时,该第一主机可在第一VSI中向与用户站点连接的PE设备发送请求加入该组播源的组播请求报文,该组播请求报文中可以携带有第一主机请求加入的组播源的标识信息。步骤402、PE设备根据该组播请求报文确定该第一主机请求加入的组播源,并在PE设备中查询是否存在与该组播源对应的VSI关联体,是则执行步骤403,否则执行步骤408。其中,该VSI关联体包括多个VSI成员。具体地,PE设备接收到第一主机发送的请求加入组播源的组播请求报文后,可以根据接收到该组播请求报文的端口确定第一主机所归属的VSI,并可以根据该组播请求报文中携带的组播源的标识信息确定对应的组播源,从而,在PE设备中查询与该组播源对应的VSI关联体。步骤403、PE设备确定该第一VSI是否是VSI关联体中的VSI成员。若确定为是,则转至步骤405;否则,转至步骤404。具体地,在本发明实施例中,VSI关联体中可以动态加入VSI成员。相应地,PE设备查询到第一主机请求加入的组播源对应的VSI关联体后,需要确定该第一主机所归属的第一VSI是否是该VSI关联体中的VSI成员,并当第一VSI不是该VSI关联体中的VSI成员时,可以将第一VSI加入该VSI关联体。步骤404、PE设备将第一VSI加入该VSI关联体。转至步骤405。步骤405、PE设备在该组播源对应的VSI关联体内查询是否已有VSI成员注册该组播源并生成有组播转发表项。若是,则转至步骤406;否则,转至步骤407。具体地,在本发明实施例中,对于一个VSI关联体,仅需要对第一个请求加入组播源的主机所归属的VSI成员注册组播源,并生成对应该主机的组播转发表项,而该VSI成员中其余主机,或其他VSI成员中主机请求加入组播源时,仅需要为连接该主机的端口或链路设置标志位。相应地,PE设备查询到该组播源对应的VSI关联体后,且确定第一VSI是该VSI关联体的VSI成员,或将第一VSI加入到该VSI关联体后,需要进一步查询该VSI关联体中是否已有VSI成员注册该组播源并生成组播转发表项。步骤406、PE设备在该VSI关联体内的关联表中为接收到组播请求报文的端口或链路设置标志位。具体地,当PE设备在该VSI关联体内查询到已有VSI成员注册该组播源并生成组播转发表项,则不需要将第一VSI注册组播源,并生成对应第一主机的组播转发表项,而只需要在VSI关联体内的关联表中为接收到组播请求报文的端口或链路(即连接第一主机的端口或链路)设置标志位,以便PE设备将接收到的该组播源发送的组播报文通过设置有该标志位的端口或链路转发到该第一主机。步骤407、PE设备在第一VSI内,根据组播请求报文注册该组播源并生成对应第一主机的组播转发表项,并在该VSI关联体内将该第一VSI标识为已注册该组播源。具体地,当PE设备在该VSI关联体内未查询到已有VSI成员注册该组播源并生成组播转发表项时,则确定第一主机为第一个请求加入组播源的主机。从而,需要将第一VSI注册组播源,在第一VSI内生成对应第一主机的组播转发表项。其中,PE设备需要在VSI关联体内将第一VSI标识为已注册该组播源,以便PE设备将接收到的该组播源发送的组播报文基于对应第一主机的组播转发表项转发到第一主机。步骤408、PE设备在第一VSI中,向组播源发送第一主机发送的组播请求请求报文,以注册组播源。实施例四如图5所示,为本发明实施例提供的另一种组播报文传输方法的流程示意图,可以包括以下步骤:步骤501、PE设备接收第一VSI中的第一主机发送的请求加入组播源的组播请求报文。具体地,当第一VSI中用户站点内的第一主机需要接收某个组播源发送的组播报文时,该第一主机向与用户站点连接的PE设备发送请求加入该组播源的组播请求报文,该组播请求报文中可以携带有第一主机请求加入的组播源的标识信息。步骤502、PE设备根据该组播请求报文确定该第一主机请求加入的组播源,并在PE设备中查询是否存在与该组播源对应的VSI关联体,是则执行步骤503,否则执行步骤507。其中,该VSI关联体包括多个VSI成员。具体地,PE设备接收到第一主机发送的请求加入组播源的组播请求报文后,可以根据接收到该组播请求报文的端口确定第一主机所归属的VSI,并可以根据该组播请求报文中携带的组播源的标识信息确定对应的组播源,从而,在PE设备中查询与该组播源对应的VSI关联体。步骤503、PE设备确定该第一VSI是否是VSI关联体中的VSI成员。若确定为是,则转至步骤505;否则,转至步骤504。步骤504、PE设备将所述第一VSI加入所述VSI关联体,执行步骤505;步骤505、PE设备在该VSI关联体内,查询得到该VSI关联体内已有VSI成员注册该组播源并生成有组播转发表项时,在该VSI关联体内的关联表中为接收到该组播请求报文的端口或链路设置标志位。具体地,在本发明实施例中,对于一个VSI关联体,仅需要对第一个请求加入组播源的主机所归属的VSI成员注册组播源,并生成对应该主机的组播转发表项,而该VSI成员中其余主机,或其他VSI成员中主机请求加入组播源时,仅需要在连接该主机的端口或链路设置标志位。相应地,PE设备查询到该组播源对应的VSI关联体后,进一步查询该VSI关联体中是否已有VSI成员注册该组播源并生成组播转发表项。若PE设备在该VSI关联体内,查询得到该VSI关联体内已有VSI成员注册该组播源并生成有组播转发表项时,在该VSI关联体内为接收到该组播请求报文的端口或链路设置标志位,以便PE设备将接收到的该组播源发送的组播报文通过设置有该标志位的端口或链路转发到该第一主机。其中,该标志位用于表明端口或链路连接的主机需要接收该组播源发送的组播报文。相应地,若PE设备在VSI关联体中未查询到有注册到组播源的VSI成员时,则可在第一VSI中按照第一主机发送的组播请求报文,注册组播源,并可在VSI关联体中将第一VSI标识为已注册组播源。步骤506、当PE设备接收到该组播源在已注册组播源的VSI成员中发送的组播报文时,将该组播报文通过该已注册组播源的VSI成员中的组播转发表项,以及组播源对应的VSI关联体内的关联表中设置有标志位的端口或链路发送到对应的主机。具体地,当组播源需要发送组播报文时,需要查询确定注册该组播源的VSI,并向该注册组播源的VSI成员发送组播报文。PE设备接收到组播源在已注册组播源的VSI成员中发送的组播报文时,需要在该已注册组播源的VSI成员查询组播转发表项,并查询该组播源对应的VSI关联体内设置有标志位的端口或链路,从而根据该组播转发表项,以及组播源对应的VSI关联体内设置有标志位的端口或链路发送到对应的主机。步骤507、PE设备在第一VSI中,向组播源发送第一主机发送的组播请求请求报文,以注册组播源。由于在本发明实施例提供的技术方案中,对于一个VSI关联体,仅需要对第一个请求加入组播源的主机所归属的VSI注册组播源,而组播源发送组播报文时,只需要向注册组播源的VSI成员发送组播报文,因此,本发明实施例提供的技术方案中,减少了组播源发送给PE设备的组播报文的数量,克服了现有VPLS组网中组播占用带宽资源较大的问题。实施例五在上述各实施例的基础上,PE设备还可对第一主机发送的退出组播源的请求报文进行处理,具体地,如图6所示,为本发明实施例提供的另一种组播报文传输方法中主机退出组播源的流程示意图,可以包括以下步骤:步骤601、当PE设备接收到第一主机发送的请求退出组播源的请求报文时,确定第一VSI是否是该VSI关联体中已注册该组播源的VSI成员。是则转至步骤602;否则,转至步骤607。步骤602、PE设备确定VSI关联体中的第一VSI中是否存在设置有标志位且与其他主机连接的端口或链路。是则转至步骤606;否则,转至步骤603。步骤603、PE设备判断VSI关联体的其他VSI成员的一VSI成员中是否存在设置有标志位且与该一VSI成员中的一主机连接的端口或链路。是则转至步骤604;否则,转至步骤605。步骤604、PE设备删除该组播转发表项以及与该一主机连接的端口或链路设置的标志位,并在该一VSI成员中生成对应该一主机的组播转发表项,并在该VSI关联体内将该一VSI成员标识为已注册该组播源。步骤605、PE设备删除该VSI关联体中的组播转发表项。步骤606、PE设备在第一VSI中删除该组播转发表项以及与第一VSI中的该一主机连接的端口或链路设置的标志位,并生成对应于第一VSI中的该一主机的组播转发表项。步骤607、PE设备删除第一主机连接的端口或链路设置的标志位。具体地,当用户站点内第一主机不需要接收某个组播源发送的组播报文时,该第一主机可以向与用户站点连接的PE设备发送请求退出该组播源的请求报文,该请求报文中可以携带有第一主机请求退出的组播源的标识信息。由于在本发明实施例提供的技术方案中,对于一个VSI关联体,仅有一个VSI成员注册了组播源,且只在该VSI成员内生成对应某一个主机的组播转发表项。因此,为了避免因组播转发表项对应的主机退出而导致后续组播报文发送失败,在本发明实施例提供的技术方案中,PE设备接收到第一主机发送的请求退出组播源的请求报文时,需要确定第一主机所归属的第一VSI是否是组播源对应的VSI关联体中已注册组播源的VSI成员。若第一VSI是该VSI关联体中已注册该组播源的VSI成员,则PE设备需要进一步判断VSI关联体中的第一VSI中是否存在设置有标志位且与其他主机连接的端口或链路(即第一VSI中是否还存在其他主机需要接收组播源发送的组播报文)。若第一VSI是该VSI关联体中已注册该组播源的VSI成员,且VSI关联体中的第一VSI中不存在设置有标志位且与其他主机连接的端口或链路(即第一VSI中不存在其他主机需要接收组播源发送的组播报文),显然,在该情况下,第一主机是组播转发表项对应的主机。此时,PE设备需要进一步确定VSI关联体中的其他成员中的一VSI成员中是否存在设置有标志位且与该一VSI成员中的一主机连接的端口或链路(即VSI关联体中是否存在其他需要接收组播源发送的组播报文的主机),若不存在(即VSI关联体中不存在其他需要接收组播源发送的组播报文的主机,第一主机是VSI关联体内唯一需要接收组播源发送的组播报文的主机),则删除VSI关联体中的组播转发表项;若存在(即VSI关联体中存在其他需要接收组播源发送的组播报文的主机),则为了保证该组播源后续发送的组播报文的正常传输,PE设备需要重新选择VSI成员注册该组播源(以PE设备选择该一VSI成员注册该组播源,并生成对应该一主机的组播转发表项为例),因而,PE设备可以删除第一主机对应的组播转发表项以及与该一主机连接的端口或链路设置的标志位,并在该一VSI成员中生成对应该一主机的组播转发表项,并在该VSI关联体内将该一VSI成员标识为已注册该组播源。若第一VSI是该VSI关联体中已注册该组播源的VSI成员,且VSI关联体中的第一VSI中存在设置有标志位且与其他主机连接的端口或链路(即第一VSI中存在其他主机需要接收组播源发送的组播报文),PE设备在第一VSI中删除组播转发表项以及该第一VSI中的该一主机连接的端口或链路设置的标志位,并生成对应于该第一VSI中的该一主机的组播转发表项。若第一VSI不是该VSI关联体中已注册组播源的VSI成员,显然,在该情况下,第一主机不是组播转发表项对应的主机,此时,PE设备可以删除该第一主机连接的端口或链路设置的标志位。为了更好地理解本发明实施例提供的技术方案,下面结合具体的应用场景对本发明实施例提供的技术方案进行更加详细的描述。以图1所示的场景为例,在该实施例中,假设site1、site2、site3和site4分别是某公司不同的部门,各部门之间需要实现信息的相互隔离,但同时均需要来自某公共部门的信息,因此,每个site之间需要使用VPN相互隔离。在PE2上为每个站点建立对应的VSI(即siteN对应VSIN,N=1、2、3、4),且各站点都需要组播源Source的信息。具体的,在该实施例中,需要在PE2上创建一个VSI关联体,其中的成员VSI包括VSI1~VSI4,在VSI下面配置使能加入VSI关联体的配置,即命令行unionIDINTEGER<1-4048>,具体如下所示:[vsi-vpn1]union1当VSI1加入VSI关联体之后,通过displayunion查看目前有多少VSI加入该VSI关联体,具体如下所示:displayunionvsiname:VPN1soonpinggroup:NUNIONnumber:1igmp-snooping:N其中,vsiname是加入关联体的VSI的名字;snoopinggroup表示这个VSI内是否已经学习到组播转发表项,Y表示已经学习到组播转发表项,N表示未学习到组播转发表项,一个VSI关联体内只需要一个VSI学习到组播表即可;UNIONnumber是VSI关联体的编号;igmp-soonping表示该VSI是否已经发送加入组播组的请求,因为就算一个VSI已经加入VSI关联体,但是该VSI未发送加入组播组请求(即该VSI中的主机均未发送请求加入组播组的请求报文)时,说明该VSI未请求组播流量,此时无需发送组播流量给该VSI,只有当该VSI发送了加入组播组请求的时候,才需转发组播流量给该VSI。当VSI1中的HostA发送请求加入组播组的请求消息时,PE2上会解析出这个加入组播组的请求,首先确认该VSI1是否加入VSI关联体,如果没有加入VSI关联体,则按照现有组播组加入流程进行处理。如果VSI1加入了VSI关联体,则PE2遍历VSI关联体内所有成员VSI,按如下几种情况处理:a、如果HostA是第一个发送请求加入组播组的请求消息的主机,则根据现有组播组加入流程进行处理,VSI1会形成igmp-snooping组播表项,并且将VSI1的snoopingGroup置1,VSI1的igmp-snooping的表项如下所示:b、如果HostA不是第一个发送请求加入组播组的请求消息的主机(VSI关联体内已有成员VSI:VSI2,并且已经形成了组播转发表项),则PE2代理组播源发送加入组播组的响应消息给HostA,通知HostA已经加入该组播组。在该情况下,当组播源发送组播报文给VSI2时,PE2直接复制一份组播报文发送给HostA。其具体实现,可以将HostA所在的VSI1标识为需要获取组播流量,同时将与HostA对应的端口或链路设置标志位,以便PE2将组播报文通过该设置标志位的端口或链路转发至HostA。当HostA请求退出组播组时,需要分如下几种情况处理:a.VSI1未学习到组播转发表项(即HostA不是组播转发表项对应的主机),则直接将VSI1的UNIONnumber置为NONE,即VSI中的HostA不再需要获取组播源的组播报文;b、VSI1学习到组播转发表项(即HostA是组播转发表项对应的主机),若VSI关联体中还存在其他VSI成员中有组播报文的接收者(假设包括HostB和HostD),则PE2删除该VSI1中的组播转发表项,并从HostB和HostD中hash出一个主机(如HostB),向组播源注册,在VSI2中生成相应的组播转发表项;若关联体中不存在其他成员VSI中有组播报文的接收者,则PE2直接删除该组播转发表项。其具体实现可以是:若VSI1是VSI关联体中已注册组播源的VSI成员,则进一步判断VSI关联体中的其他VSI成员的一VSI成员中是否存在设置有标志位且与一VSI成员中的一主机连接的端口或链路,是(假设VSI2中与VSI2中与HostB连接的端口设置有标志位)则删除VSI1中的组播转发表项以及VSI2中与HostB连接的端口设置的标志位,并在VSI2中生成对应HostB的组播转发表项,并在VSI关联体中将VSI2标识为已注册组播源,否则,删除VSI关联体中的组播转发表项;其中,当其他VSI成员中存在多个设置有标志位且与该VSI成员中的主机(如VSI2中的HostB、HostC,以及VSI3中的HostD)连接的端口或链路时,可以从HostB、HostC和HostD中hash(哈希)出一个主机(如HostC),删除VSI1中的组播转发表项以及VSI中与HostC连接的端口设置的标志位,并在VSI2中生成对应HostC的组播转发表项,并在VSI关联体中将VSI2标识为已注册组播源。若VSI1不是VSI关联体中已注册组播源的VSI成员,删除与HostA连接的端口或链路设置的标志位。通过以上描述可以看出,在本发明实施例提供的技术方案中,PE设备接收到第一VSI中的第一主机发送的请求加入组播源的组播请求报文后,根据该组播请求报文确定该第一主机请求加入的组播源,并在PE设备中查询得到与该组播源对应的VSI关联体时,确定该第一VSI是否时该VSI关联体中的成员;当该第一VSI是该VSI关联体中的成员,PE设备在VSI关联体内,查询该VSI关联体内是否有VSI成员注册该组播源并生成有组播转发表项,是则在该VSI关联体内的关联体中为接收到该组播请求报文的端口或链路设置标志位,以便PE设备将接收到的该组播源发送的组播报文通过设置有该标志位的端口或链路转发到该第一主机,降低了组播占用的带宽,提高了网络带宽资源的利用率。本领域技术人员可以理解,由于同一VSI,以及不同VSI中的各站点可能分布于不同的位置,因此,上述的PE设备可以是与VSI中的用户站点直接连接的PE设备,或者也可以是通过其它PE设备连接的PE设备,不管是哪种连接的PE设备,均可按照上述方法对VSI中的主机发送的请求报文进行处理,只是在通过其它PE设备与主机连接时,需要依靠PE设备之间的交互来完成,其具体实现与现有网络处理方式相同或类似,在此不再赘述。基于上述方法实施例相同的技术构思,本发明实施例还提供了一种PE设备,可以应用于上述方法实施例中。实施例六如图7所示,为本发明实施例提供的一种PE设备的结构示意图,该PE设备包括:接收模块71,用于接收第一VSI中的第一主机发送的请求加入组播源的组播请求报文;查询模块72,用于根据所述组播请求报文确定所述第一主机请求加入的组播源,并在所述PE设备中查询得到与所述组播源对应的VSI关联体时,确定所述第一VSI是否是所述VSI关联体中的成员,所述VSI关联体包括多个VSI成员;处理模块73,用于当所述第一VSI是所述VSI关联体中的成员时,在所述VSI关联体内,查询得到所述VSI关联体内是否有VSI成员注册所述组播源并生成有组播转发表项,是则在所述VSI关联体内的关联表中为接收到所述组播请求报文的端口或链路设置标志位,以便所述PE设备将接收到的所述组播源发送的组播报文通过设置有所述标志位的端口或链路转发到所述第一主机,所述标志位用于表明端口或链路连接的主机需要接收所述组播源发送的组播报文,所述关联表用于记录设置有标志位的端口或链路。本实施例提供的PE设备可对VSI中的主机发送的组播请求进行处理,其具体实现可参见上述本发明方法实施例的说明,在此不再赘述。上述图7所示的实施例中,优选地,所述处理模块73,在所述当所述第一VSI是所述VSI关联体中的成员时,所述PE设备在所述VSI关联体内,查询所述VSI关联体内是否有VSI成员注册所述组播源并生成有组播转发表项之前,还可用于当所述第一VSI不是所述VSI关联体中的成员时,将所述第一VSI加入所述VSI关联体。上述图7所示的实施例中,优选地,所述处理模块73,还可用于若所述PE设备在所述组播源对应的VSI关联体内,未查询到有VSI成员注册所述组播源并生成有组播转发表项时,在所述第一VSI内,根据所述组播请求报文注册所述组播源并生成对应所述第一主机的组播转发表项,以便所述PE设备将接收到的所述组播源发送的组播报文基于对应所述第一主机的组播转发表项转发至所述第一主机,并在所述VSI关联体内将所述第一VSI标识为已注册所述组播源。实施例七如图8所示,为本发明实施例提供的另一种PE设备的结构示意图,该PE设备包括:接收模块81,用于接收第一VSI中的第一主机发送的请求加入组播源的组播请求报文;查询模块82,用于根据所述组播请求报文确定所述第一主机请求加入的组播源,并在所述PE设备中查询得到与所述组播源对应的VSI关联体时,确定所述第一VSI是否是所述VSI关联体中的成员,所述VSI关联体包括多个VSI成员;处理模块83,用于当所述第一VSI是所述VSI关联体中的成员时,在所述VSI关联体内,查询得到所述VSI关联体内是否有VSI成员注册所述组播源并生成有组播转发表项,是则在所述VSI关联体内的关联表中为接收到所述组播请求报文的端口或链路设置标志位,以便所述PE设备将接收到的所述组播源发送的组播报文通过设置有所述标志位的端口或链路转发到所述第一主机,所述标志位用于表明端口或链路连接的主机需要接收所述组播源发送的组播报文,所述关联表用于记录设置有标志位的端口或链路;发送模块84,用于当所述PE设备接收到所述组播源在注册组播源的VSI成员中发送的组播报文时,将所述组播报文通过所述注册组播源的VSI成员中的组播转发表项,以及所述组播源对应的VSI关联体内的关联表中设置有标志位的端口或链路发送到对应的主机。实施例八如图9所示,为本发明实施例提供的另一种PE设备的结构示意图,该PE设备包括:接收模块91,用于接收第一VSI中的第一主机发送的请求加入组播源的组播请求报文;查询模块92,用于根据所述组播请求报文确定所述第一主机请求加入的组播源,并在所述PE设备中查询得到与所述组播源对应的VSI关联体时,确定所述第一VSI是否是所述VSI关联体中的成员,所述VSI关联体包括多个VSI成员;处理模块93,用于当所述第一VSI是所述VSI关联体中的成员时,在所述VSI关联体内,查询所述VSI关联体内是否有VSI成员注册所述组播源并生成有组播转发表项,是则在所述VSI关联体内的关联表中为接收到所述组播请求报文的端口或链路设置标志位,以便所述PE设备将接收到的所述组播源发送的组播报文通过设置有所述标志位的端口或链路转发到所述第一主机,所述标志位用于表明端口或链路连接的主机需要接收所述组播源发送的组播报文,所述关联表用于记录设置有标志位的端口或链路;判定模块94,用于当所述PE设备接收到所述第一主机发送的请求退出所述组播源的请求报文时,确定所述第一VSI是否是所述VSI关联体中注册所述组播源的VSI成员;退出处理模块95,用于若所述第一VSI是所述VSI关联体中注册所述组播源的VSI成员,且所述VSI关联体的所述第一VSI中不存在设置有标志位且与其他主机连接端口或链路时,判断所述VSI关联体的其他VSI成员的一VSI成员中是否存在设置有标志位且与所述一VSI成员中的一主机连接的端口或链路,是则所述PE设备删除所述组播转发表项以及与所述一主机连接的端口或链路设置的标志位,并在所述一VSI成员中生成对应所述一主机的组播转发表项,并在所述VSI关联体内将所述一VSI成员标识为注册所述组播源,否则,删除所述VSI关联体中的组播转发表项;所述退出处理模块95,还用于若所述第一VSI是所述VSI关联体中注册所述组播源的VSI成员,且所述VSI关联体中的所述第一VSI中存在设置有标志位且与一主机连接的端口或链路时,在所述第一VSI中删除所述组播转发表项以及与所述第一VSI中的所述一主机连接的端口或链路设置的标志位,并生成对应于所述第一VSI中的所述一主机的组播转发表项;所述退出处理模块95,还用于若所述第一VSI不是所述VSI关联体中注册所述组播源的VSI成员,删除与所述第一主机连接的端口或链路设置的标志位。其中,本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端设备(可以是手机,个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1