背景技术
在网络传输过程中,IP组播(将相同的信息包同时传送给多个目的地)比单播(向每个目的地单独发送一份)的效率高得多。如果网络中没有某种类型组播控制,网络将会把组播作为广播处理,这意味着目的地网络上的所有主机都必须处理发送给该网络的所有组播。在组播应用类型较多的环境中,这可能需要能够抢夺网络上所有主机CPU周期的性能,极大的影响网络的传输性能。
IGMP snooping和MLD snooping技术就是为了解决二层设备在端口上过滤该端口不需要的组播数据包,防止组播包泛滥,节省端口有效带宽问题而产生的技术。
IPv4组播侦听的技术被称为IGMP Snooping,是一个用于组播组的管理和控制的技术。它使用IGMP报文。IGMP协议运行在网络层,而IGMP Snooping运行在链路层。如图1所示,IGMP Snooping允许交换机监听主机和路由器之间的IGMP会话。当交换机监听到主机发往某个组的IGMP report,交换机将主机的端口数加入到这个组的转发列表中,同样,当交换机收听到IGMP leave消息,它就将主机的端口从转发表中删除。如果一段时间内没有成员的报告,交换机将端口从组中删除。当IGMP Snooping启动之后,组播路由器周期地向所有VLAN发送IGMP查询报文,VLAN下的主机响应查询报文,发送加入或报告报文,因此这个主机所在端口被加入到组播转发表中,关键字是VLAN和组播MAC地址,当有组播数据时,直接根据组播转发表进行相应的转发,并不是向所有端口转发,因此有效地节省了交换机的带宽。
MlD snooping的基本工作原理与IGMP snooping相同,差别只在于MLD Snooping是侦听IPv6的组播包。而所谓MLD snooping,是指ONU设备通过侦听STB(机顶盒)与路由器之间的IPv6组播协议消息(MLD协议)交互,可以确定连接在自己某端口的STB当前加入的组播组,从而只转发该STB需要的组播组数据,过滤掉其余不需要的组播组数据的功能。
为了在无源光网络(EPON)中实现EPON的MID snooping功能,EPON除了要为每一个点到点的逻辑链路指定一个LLID(Logical Link ID)外,EPON中还要定义一个通用的广播LLID。OLT对于下行数据包,如果是单播包,就在地址表中查找对应的LLID,将对应的LLID值插入到数据包中。如果这个包是一个广播包,那么就使用一个通用的广播LLID值。而ONU在接收到下行包后,要将不属于自己的数据包过滤掉。当有一个新的下行包到达时,如果该包是单播包,且LLID与ONU的LLID相匹配,就接收这个包,否则就丢弃这个包;如果该包是广播包,且LLID为通用的广播LLID,就接收这个包。
如图2所示,ONU的下行端口为FE口,,由于IPv6还属于新兴技术,大多数EPON Switch芯片上还无法实现MLD snooping功能。因此也无法对不属于本ONU下属终端的组播进行过滤,而EPON口的数据速率达到1G,下行的数据口只有FE,就很容易在此导致端口拥塞。
实用新型内容
本实用新型的目的在于提供一种在现有EPON网络中实现MLD Snooping的装置。通过在ONU侧实现MLD Snooping功能,可以允许IPv6的组播数据在ONU侧被过滤,使得ONU设备可直接输出100M的FE接口,从而节省了网络带宽。该装置在没有组播snooping功能的二层交换设备中,对从某端口收到的组播数据包(该数据包的目的MAC地址为一个组播MAC地址)的处理与对广播包的处理相同,即将组播数据包向除源端口外的所有端口拷贝转发。而组播snooping功能,使得交换机可以通过在设备中建立的组播地址与端口的映射表,决定是否向某个端口转发组播数据包,从而实现端口上的组播数据包过滤。
作为实现本实用新型目的的一种在EPON网络上实现MLD Snooping的装置,其特征在于,该装置包括:
一支持VLAN功能的交换芯片(VLAN Switch),该支持VLAN功能的交换芯片与用户端STB的上行端口连接,接收用户端发送MLD报告消息,并给这些数据包打上特定VLAN标志;
一包含内嵌CPU和数据分类过滤模块的ONU芯片,该ONU芯片的API具有针对特定VLAN上行或下行的所有数据包进行抓包的特性;所述数据分类过滤模块接收来自支持VLAN功能的交换芯片发送过来的被打上特定VLAN标签的数据包,并从数据通道送至上行PON口,同时拷贝一份后送至ONU内嵌CPU,内嵌CPU收到这些数据包后,应用软件来分析其中的MLD报告消息,再进行处理生成一张组播过滤地址表;所述ONU芯片的API给所述数据分类过滤模块发控制指令,当下行的数据经过数据分类过滤模块时,数据分类过滤模块根据组播地址表完成对非本ONU的组播数据过滤。
本实用新型所述的ONU芯片为PAS6201,其内嵌有1个ARM922T的CPU内核,1个Switch内核。
本实用新型是基于IPv6中只有广播流走IPv6组播协议的现状,根据QoS原则,将IPTV业务节点(也就是STB)放到特定的某一个VLAN,而IPTV业务只有少量的上行数据流,这就意味着只有一个VLAN需要进行较少数量的上行数据包抓包。同时,利用Passave芯片的API(Application Programming Interface应用编程接口)接口可以针对特定VLAN上行或下行的所有数据包进行抓包的特性,通过对ONU芯片PAS6201(EPON光网络单元芯片)上的API,进行二次开发。通过这些API接口,来控制其ONU芯片的某些行为,并达到实现MLD snooping功能的目的。
具体实施方式
为使本实用新型实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体实施例,进一步阐述本实用新型。
参看图3,一种在EPON网络上实现MLD Snooping的装置,该装置包括:
支持VLAN功能的交换芯片(VLAN Switch),该支持VLAN功能的交换芯片与用户端STB的上行端口连接,接收用户端发送MLD报告消息,并给这些数据包打上特定VLAN标志;
包含内嵌CPU和数据分类过滤模块的ONU芯片,该ONU芯片的API具有针对特定VLAN上行或下行的所有数据包进行抓包的特性;所述数据分类过滤模块接收来自支持VLAN功能的交换芯片发送过来的被打上特定VLAN标签的数据包,并从数据通道送至上行PON口,同时拷贝一份后送至ONU内嵌CPU,内嵌CPU收到这些数据包后,应用软件来分析其中的MLD报告消息,再进行处理生成一张组播过滤地址表;所述ONU芯片的API给所述数据分类过滤模块发控制指令,当下行的数据经过数据分类过滤模块时,数据分类过滤模块根据组播地址表完成对非本ONU的组播数据过滤。ONU芯片为PAS6201,其内嵌有1个ARM922T的CPU内核,1个Switch内核。
本实用新型是基于IPv6只有广播流走IPv6组播协议的现状,根据QoS原则,将IPTV业务节点(也就是STB)放到特定的某一个VLAN,而IPTV业务只有少量的上行数据流,这就意味着只有一个VLAN需要进行较少数量的上行数据包抓包。同时,利用Passave芯片的API(Application Programming Interface应用编程接口)接口可以针对特定VLAN上行或下行的所有数据包进行抓包的特性,通过对ONU芯片PAS6201(EPON光网络单元芯片)上的API,进行二次开发。通过这些API接口,来控制其ONU芯片的某些行为,并达到实现MLD snooping功能的目的。
下面通过对MLDS实现详细功能的描述来进一步说明本发明。
1、初始化时,禁止视频组播数据从ONU芯片的UNI口流出
为了达到过滤视频组播数据流的目的,芯片ONU初始化时,应该禁止视频IPv6的组播数据从UNI口(用户网络接口)流出。
可以通过调用API:
PASONU_ip_multicast_enable(
PASONU_direction_t direction,
BOOLEAN enable
);
禁止下行的IPv6组播数据通过到UNI端口。
但是,不应该禁止出于管理目的而发往UNI侧的组播数据,例如路由器发往Host的地址分配协议报文等。
2、初始化时,设置特定VLAN的上行数据能够被ONU的CPU捕获
为了能够捕获STB发往路由器的MLD协议包,需要将STB的上行端口设置在某个VLAN中。这样通过芯片ONU初始化时,设置此VLAN的上行数据即从数据通道流到EPON口,又能流向PAS6201的CPU内核。从而被CPU捕获。
可以利用PAS6201提供的用于设置进行数据通道过滤的API来实现:
PASONU_CLASSIFIER_add_filter(PASONU_direction_t direction,
PASONU_frame_qualifier_t qualifier,
INT16U value,
PASONU_forwarding_action_t action,
PASONU_flow_desc_t fd);
指定direction为上行,qualifier为按照VLAN进行过滤,value为需要过滤的VLAN ID,action为允许数据能够向PAS6201的CPU复制,即数据转发模式设为PASONU_PASS_BOTH。
3、初始化时,设置特定的MLD Query组播报文数据能够被ONU的CPU捕获
为了能够实现Snooping功能,芯片ONU的CPU应该捕获路由器发给HOST(主机)的MLD Query消息。因此芯片ONU初始化时,需要根据目的MAC地址,设置捕获MLD snooping报文的组播组数据。
可以通过调用PASONU_CLASSIFIER_add_DA_filter,将下行数据链路中DA为33-33-00-00-00-01的数据转发模式设为PASONU_PASS_BOTH。这样运行在CPU上我们的应用程序MLD_APP可以获取到路由器发送的MLD Query通用查询协议包。
4、能够根据捕获的VLAN上行报文,建立组播过滤表
STB上行的VLAN报文,不全是MLD的Report、Done协议报文。因此MLDS模块需要分析所有STB上行的VLAN报文,根据MLD协议规定,找出其中的Report、Done协议报文。之后,根据报文中加入或离开某个组播组的请求,建立一张组播过滤表。该表的每一条记录表示STB目前加入的组播组。
5、能够根据组播过滤表,进行IPv6组播数据的过滤
MLDS模块应该根据组播过滤表,向PAS6201设置基于目的MAC地址的ACL(访问控制),即允许在组播过滤表中有记录的组播数据,能够流向UNI接口;
可以通过调用API:
PASONU_CLASSIFIER_add_DA_filter(GENERAL_mac_address_t*address,
PASONU_forwarding_action_t action,
PASONU_flow_desc_t fd),
将下行数据链路中指定DA为组播过滤表中组播组的数据转发模式设为PASONU_PASS_DATAPATH,允许该组播目的地址的IPv6组播数据通过。
6、能够根据查询情况,动态维护组播过滤表
MLDS模块应该根据捕获到的路由器发向HOST的MLD Query消息,来启动定时机制,判断在规定时间内是否收到STB返回的MLD Report应答。若收不到,则认为ONU的UNI端口下面已没有该组播组成员,因此需要动态更新组播过滤表。
以上显示和描述了本实用新型的基本原理和主要特征和本实用新型的优点。本行业的技术人员应该了解,本实用新型不受上述实施例的限制,上述实施例和说明书中描述的只是说明本实用新型的原理,在不脱离本实用新型精神和范围的前提下本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本实用新型要求保护范围由所附的权利要求书及其等效物界定。