专利名称:一种快速接入组播用户的方法
技术领域:
本发明属于组播转发技术领域,特别涉及一种用于包括主控和多个线卡的 分布式系统中快速接入组播用户的方法。
背景技术:
因特网组管理协议(Internet Group Management Protocol, IGMP )负责所 连网络组成员关系的收集和维护。IGMP作为基本的信令机制,通知子网中的 路由器某个主机渴望成为某个组播组的成员,在主机和组播路由器之间建立并 维护这些组成员关系。当一个组播主机成员希望加入指定的组播组并且期望接 收组播流量时,就发送IGMP消息以通知本地的组播路由器。组播路由器通过 IGMP获得主机的信息,并根据获得的信息建立和维护组播成员关系表。
对于以太网路由交换机来说,接收到从某网络设备下发的组播数据流,会 向3层出"l妄口所在虚拟局域网(vlan)转发,直"l妻在vlan内洪泛。为了有效的 控制组播流量在vlan内扩散,引入了组播窃听(Igmp snooping)技术。Igmp sno叩ing是交换机二层功能的一项特性,可以限制IP组播流量的转发。IGMP 协议运行在网络层,而IGMP Snooping运行在链路层。Igmp Snooping对主机 和路由器之间的IGMP协议通信进行监听,使交换机在转发组播数据包前学习 到哪些端口属于组播成员,可以得到组播转发。这样,组播包只会按照组播成 员关系表转发到这些成员端口,而不是所有端口,从而限制交换机上组播包扩 散,避免不必要的网络带宽浪费,提高交换机的利用率。
目前,组播处理方式有两种分布式处理一在线卡(又称为堆叠设备)上 窃听到用户加入才艮文(IGMP加入消息)后,首先在线卡上处理并形成表项, 将表项直接写入到本线卡的组播成员关系表中,然后再由线卡将表项同步到主 控(又称为主设备)中,主控再将该表项同步到其他线卡中;集中式处理一线 卡窃听到IGMP报文后,将该IGMP报文发送到主控,由主控形成表项并同步 到线卡,线卡再将表项写入到各自的组播成员关系表中。分布式处理的好处是:
降低了主控的负担,并且可以大大的缩短用户的点播时间,提升用户接入速度。
下面结合一个基本实例,介绍igmp snooping用户加入基本功能。图1为 分布式系统的组网示意闺。如图l所示,上游为组播路由器,中间设备为以太 网路由交换机(包括主控和线卡1、线卡2),用户端为主机。主机1和主2 在同一个网4殳,与线卡1相连端口分别为端口 a、 b,而端口a、 b、 c、 d都属 于vlan 100。
主机1期望接收组224.1.1.1的组播数据流,首先会发送igmp report (igmp 加入)报文到组播路由器,这个时候线卡1会监听到主机1发送了组224丄1.1 的组加入消息vlan 100,端口号为a,线卡1分配一个索引(index )给vlan 100 内的组224丄U,并创建组播成员关系表,并将表项通过主控同步到线卡2 的组播成员关系表中。
线卡1在端口 c上接收组^番组地址为224.1.1.1的组4番数据流,此时主机1 便可正常接收流量了 。当主机2也请求接收vlan 100内的组224.1.1.1的流量 时,同样会发送igmp report报文,线卡1从端口 b窃听到报文,;险查组播成 员关系表,得知已经有vlan 100内的组224丄1.1的组用户存在,此时只需将 端口b添加到组播成员关系表的出接口位图中,如此,主机2也可收到组播流 量。
从上述描述中可以得知,当用户添加时,线卡会分配索引(组播转发索引) 给vlan的组。其中,索引的作用简单描述为在某一个线卡上组播数据流来 了,根据组播的MAC地址+vlanid(vlan标识)查组播成员关系表,查到以后, 在此线卡里按照出口的端口位图来转发;但是其他线卡也有出口表,也要需要 进行组播转发,这时到其他线卡带的是组4番转发索引。組播流到达其他线卡后, 直接按照组播转发索引来查组播成员关系表,而不是按照MAC地址+vlan id 来查表了。
索引的计算需要满足发生沖突的概率尽量小,所以需要选取较好的算法。 计算索引时, 一般选取组播组地址和vlanid做为关键字来进行hash运算,如 果计算出来的索引在空闲队列(未被使用),则分配给该组播组使用;如果计 算出来的索引已经被使用,则需要采用其他方式分配索引。
当 一个机架上的多个线卡容量极限不同,用户在其中 一个线卡上加入后会
有什么现象呢?以一个igmp snooping用户接入的例子来"说明。
继续参照图1,以太网路由交换机上有2种线卡,线卡1的组播容量为 1024,线卡2的组4番容量为256,路由交换机上跑igmp snooping业务。
线卡1从端口 1窃听到主机1发送的igmp report报文,此时,线卡1根 据igmp report报文中携带的igmp信息判断为请求加入报文vlan id为100, 组地址为224丄1.1,然后根据hash算法计算出相应索引为500,形成组播成员 关系表项(index 500, mac 01005e010101 , vlan 100),并将此表项通过主控同 步到线卡2的组播成员关系表中去,不同的是,线卡l还会将端口 l添加到线 卡1的组成员关系表中,而线卡2上此时没有用户加入所以组播成员关系表的 出口位图为空。
由于线卡2容量仅为线卡1的1/4,根据上面描述的索引计算方法可知, 索引分配与线卡容量相关,而hash算法是固定的,这样会出现一种现象线 卡1上根据自身容量算出来的索引在线卡2容量范围之外,所以线卡1分配的 索引同步到线卡2时会导致同步不成功,线卡2上无法形成相应表项,此为索 引冲突的表现之一。
线卡2从端口 d接收到vlan 100的组地址为224.1.1.1的组播数据流时, 流量应该通过索引查找到线卡1的组播成员关系表,将流量直接转发到线卡1 的端口 l上。但是,由于线卡2上没有相应的组播成员关系表项,所以转发失 败。用户需要再次加入乃至多次加入并结合当前线卡上容量情况,才可能在加 入后正确纟妄收流量。
因此,需要通过一种方式来回避上述问题,以提高用户接入速率。
发明内容
本发明所要解决的技术问题是提供一种快速接入组播用户的方法,在组播 业务采取分布式处理时,更合理的创建线卡上组播成员关系表,防止具有不同
组播容量的各种线卡共机架跑组播业务时,由于组播转发索引沖突引起的组播 流量转发失败或冗余现象,使组播用户能够快速接入。 为解决上述技术问题,本发明提供技术方案如下
一种快速接入组播用户的方法,用于包括主控和多个线卡的分布式系统 中,包括如下步骤
在主控和每个线卡中建立组播容量对比表,所述组播容量对比表的每个表
项包括线卡标识、线卡的组播容量值和组播容量是否可用标志;
线卡窃听到用户发送的IGMP加入消息,且确定需要在本线卡的组播成员
关系表中增加表项时,从本线卡的组播容量对比表中获取可用的最小组播容量
值,根据所述可用的最小组播容量值以及用户请求加入的组播組地址、VLAN
标识获取组播转发索引;
所述窃听到IGMP加入消息的线卡将所述组播转发索引、组播组地址、
VLAN标识和接收所述IGMP加入消息的端口信息添加到本线卡的组播成员
关系表中,并将所述组播转发索引、组播组地址、VLAN标识通过主控同步到
其他线卡的组播成员关系表中。
上述的方法,其中,所述建立组播容量对比表包括各线卡发送包括线卡
标识、线卡的组播容量值和组播容量是否可用标志的消息到主控,主控根据接
收到的消息建立组播容量对比表,并将建立的组播容量对比表信息发送到各线卡。
上述的方法,其中,所述获取组播转发索引包括将组播组地址和VLAN 标识作为关键字,并依照所述可用的最小组播容量值,用hash算法计算组播 转发索引。
上述的方法,其中,还包括具有可用的最小组播容量值的线卡达到容量 范围时,更新其组播容量对比表中的组播容量是否可用标志,并将该更新信息 通过主控同步到其他线卡的组播容量对比表中。
上述的方法,其中,各线卡定时发送包括线卡标识、线卡的组播容量值和 组播容量是否可用标志的消息到主控;主控根据接收到的消息建立或者更新组 播容量对比表,并将建立或更新的组播容量对比表信息发送到各线卡。
上述的方法,其中,还包括主控在定时时间内没有接收到线卡发送的消 息,确定线卡离线,则删除组播容量对比表中该离线线卡的相关信息,并将更 新的组播容量对比表信息发送到其他线卡。
上述的方法,其中,还包括线卡上线后,发送包括线卡标识、线卡的组 播容量值和组播容量是否可用标志的消息到主控,主控根据接收到的消息更新 组播容量对比表,并将更新的组播容量对比表信息发送到各线卡。
采用本发明的方法后,在组播业务采取分布式处理时,能够给线卡上用户 分配更合理的组播转发索引,緩解具有不同组播容量的各种线卡共机架跑组播 业务时,由于索引冲突引起的组播流量转发失败或冗余现象,使组播用户能够 快速接入,提升交换机的性能。
图1为分布式系统的组网示意图2为本发明实施例的快速接入组播用户的方法流程图。
具体实施例方式
本发明的关键在于,在主控(主设备)和线卡(堆叠设备)间互相传送携 带组播容量值的消息,从而实现在主控和线卡上各维护一张组播容量对比表, 使具有组播容量各异的线卡共机架跑组播业务时,能够根据线卡上组播容量 对比表信息通过hash算法更合理分配组播转发索引,避免由于组播转发索引 冲突引起的组播流量转发失败或冗余,造成组播用户不能及时接入的问题。
参照图l和图2,本发明实施例的快速接入组播用户的方法,用于包括主 控和多个线卡的分布式系统中,所述方法主要包括如下步骤
步骤201:在主控和每个线卡中建立组播容量对比表;
通过添加线卡到主控和主控到线卡的消息(消息内携带本地组播容量对比 表信息),"f吏每个线卡知道机架上各线卡组播容量信息,同时在每个线卡和主 控都维护一张组播容量对比表,所述组播容量对比表的每个表项包括线卡标 识,线卡的组播容量值,組播容量是否可用标志flag (flag可以为y或n, y 代表相应的组播容量值可以用于hash算法来计算索引,n代表相应的组播容量 值不能再用于hash算法来计算索引)。具体地,各线卡发送包括线卡标识、线 卡的组播容量值和flag的消息到主控,主控根据接收到的消息建立组播容量对 比表,并将建立的组播容量对比表信息发送到各线卡。
为了使消息能更准确的在各个线卡和主控间传送,可以通过添加线卡到主 控和主控到线卡的定时同步消息来解决,保证消息不会因为系统忙碌而丢失, 提供安全保证。具体地,各线卡定时发送包括线卡标识、线卡的组播容量值和 组播容量是否可用标志的消息到主控;主控根据接收到的消息建立或者更新组 播容量对比表,并将建立或更新的组播容量对比表信息发送到各线卡。
以图1中的以太网路由交换机为例,线卡1的组播容量为1024,线卡2 的组播容量为256,则在主控、线卡l、线卡2中建立组播容量对比表,初始 时,该对比表中包括有两个表项(线卡l, 1024, y),(线卡2, 256, y)。
步骤202:线卡窃听到用户发送的IGMP加入消息,且确定需要在本线卡 的组播成员关系表中增加表项时,从本线卡的组播容量对比表中获取可用的最 小组播容量值,根据所述可用的最小组播容量值以及用户请求加入的组播组地 址、VLAN标识获取组播转发索? 1;
用户接入时,例如,线卡1从端口 1窃听到主机1发送的igmp report报 文,线卡1根据igmp report报文中携带的igmp信息判断为请求加入报文vlan id为100,组播组地址为224.1.1.1。此时,线卡1的组播成员关系表中还没有 vlan 100内的组224.1.1.1的表项,且线卡1的组播容量尚未用尽,则根据hash 算法计算出相应的索引,并在组播成员关系表中增加相应表项。
具体地,线卡1首先从组播容量对比表中查询到当前可用的最小组播容量 值为256,则将组播组地址和VLAN标识作为关键字,并依照所述可用的最小 组播容量值256,用hash算法计算索引,判断计算得到的索引是否已经被使用, 若是,将hash表的空闲链的链首对应的索引作为组播转发索引;否则,将所 述计算得到的索引作为组播转发索引。由于在hash运算时,引入了最小组播 容量值参数,得到的索引就一定在当前可用的最小组^"容量值范围之内,如此, 能够尽量避免索引的冲突。
步骤203:所述窃听到IGMP加入消息的线卡将所述组播转发索引、组播 組地址、VLAN标识和4妄收所述IGMP加入消息的端口信息添加到本线卡的组 播成员关系表中,并将所述组播转发索引、组播组地址、VLAN标识通过主控 同步到其他线卡的组播成员关系表中;
假设步骤202中得到的索引值为200,则在线卡1中形成组播成员关系表 项(index200, mac 01005e010101 , vlan 100,端口 1),在线卡2中形成纽i番 成员关系表项(index 200, mac 01005e010101, vlan 100)。
步骤204:具有可用的最小组播容量值的线卡达到容量范围时,更新其组 播容量对比表中的组播容量是否可用标志,并将该更新信息通过主控同步到其 他线卡的组播容量对比表中。
用户不断从线卡1或线卡2上加入,每加入一个用户,就用掉一个索引值, 当加入的用户数达到256时,线卡2的组播容量达到极限。此时,线卡2将组 播容量对比表中的表项(线卡2, 256, y)更新为(线卡2, 256, n),线卡2 上不再允许用户加入,并将表项(线卡2, 256, n)通过主控同步到线卡l中。
线卡1上再有用户加入时,线卡1首先从组播容量对比表中查询到当前可 用的最小组播容量值为1024,并按照步骤202中的方法计算索引,此时,得 到的索引在当前最小组播容量1024范围之内。
需要说明的是,在线卡2的容量用尽时,线卡l将新生成的表项同步到线 卡2时也会失败。但是,采用本发明的方法至少可以避免在线卡2的容量没用 尽时,线卡1计算出的索引无法同步到线卡2上的现象,尽量避免了索引的沖
下面举例说明本发明在特定情况下的详细实施方法。 情况l:机架重启
当机架上线卡复位后主动发送消息(线卡标识,组播容量值,flag: y)给 主控。主控在确认收到各个线卡发来的消息后,建立一张组播容量对比表,再 将对比表的内容封装在消息中发给各个线卡,线卡收到主控发送的此类消息后 保存下来,将此信息收集在自己的组播容量对比表内,用于hash算法使用。 线卡上有用户请求接入时,首先从组播容量对比表中获取可用的最小组播容量 值,依照当前最小组播容量值来计算索引,若最小容量线卡上达到满用户,那 么此线卡不再允许添加,此时自身将对比表中此容量值flag置为n,同时发送 消息给主控,主控通知其他各个线卡更新对比表。若其他线卡还需添加新用户, 可以再根据更新后的对比表查询次小组播容量值用于hash算法,以此类推。
情况2:机架上某线卡离线
主控在定时时间内没有接收到线卡发送的消息,确定线卡离线,根据线卡 标识匹配组播容量对比表,删除此线卡的相关信息,再依照最新的组播容量对 比表,将更新过的内容封装在消息中发送给各个线卡。
若拔走的线卡组播容量值就是整机架中容量最小的,线卡上已经分配一哈组 的索引不再变化,新加入用户时,需根据更新后组播容量对比表获取可用的最 小容量值用于hash计算分配索引给组。具有当前最小组播容量的线卡达到容
量范围后则不再允许添加,此时自身将对比表中此容量值flag至为n,同时发 送消息给主控,主控通知其他各个线卡更新对比表。若其他线卡还需添加新用 户,可以再根据更新后的对比表查询次小组播容量值用于hash算法,以此类推。
若拔走的线卡组播容量值非整机架中容量最小的,线卡上已经分配给组的 索引不再变化。
情况3:机架上某线卡上线
当线卡复位后会主动发送消息(包含线卡标识,组播容量值,flag: y)给 主控,主控收到新的消息后,查看消息中线卡标识字段,如果组播容量对比表 中没有该线卡标识,则主动刷新组播容量对比表,再发送消息给各个线卡,更 新本地表信息。
若插入的线卡容量值小于当前最小容量值,线卡上已经分配给组的索引不 再变化,新加入用户时,需根据更新后的组播容量对比表获取可用的最小容量 值用于hash计算分配索引给组。对于此块线卡,自身组4番容量为最小的,所 以若计算的索引为空闲队列值则直接分配给组,若再也无法计算出属于空闲队 列的索引分配给组,此时已经达到此线卡满用户状态,则不再允许添加,此时 自身将对比表中此容量值flag至为n,同时发送消息给主控,主控通知其他各 个线卡更新对比表。若其他线卡还需添加新用户,可以再根据更新后的对比表 查询次小组播容量值用于hash算法,以此类推。
若插入的线卡容量值大于当前最小容量值,线卡上已经分配给组的索引不 再变化。
由以上述技术方案可见,通过添加线卡到主控和主控到线卡的消息,并在 各个主控和线卡上维护一张组播容量对比表(线卡标识,组播容量值,flag), 通过选择合理的容量值用于hash算法,可以防止由于组播容量值各异的线卡 共机架跑组播引起的索引冲突。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情
这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
例如,本发明中交换设备仅以三层交换机为例,本发明适用于任何以太网
设备,且适用于多种不同组播容量的线卡共机架跑组播业务的情况。
另外,本发明没有局限于某种特定的消息,也不局限于维护的对比表内某 些特定属性。只要线卡发送消息给主控使得主控和每块线卡都维护一张组^番容
量对比表,且线卡上根据此对比表信息能够实时获取到最小容量值并用于hash 计算,通过这种方法促进组播用户快速接入,那么就属于本发明保护范围之内。
权利要求
1.一种快速接入组播用户的方法,用于包括主控和多个线卡的分布式系统中,其特征在于,包括如下步骤在主控和每个线卡中建立组播容量对比表,所述组播容量对比表的每个表项包括线卡标识、线卡的组播容量值和组播容量是否可用标志;线卡窃听到用户发送的IGMP加入消息,且确定需要在本线卡的组播成员关系表中增加表项时,从本线卡的组播容量对比表中获取可用的最小组播容量值,根据所述可用的最小组播容量值以及用户请求加入的组播组地址、VLAN标识获取组播转发索引;所述窃听到IGMP加入消息的线卡将所述组播转发索引、组播组地址、VLAN标识和接收所述IGMP加入消息的端口信息添加到本线卡的组播成员关系表中,并将所述组播转发索引、组播组地址、VLAN标识通过主控同步到其他线卡的组播成员关系表中。
2. 如权利要求1所述的方法,其特征在于所述建立组播容量对比表包括各线卡发送包括线卡标识、线卡的组播容 量值和组播容量是否可用标志的消息到主控,主控根据接收到的消息建立组4番 容量对比表,并将建立的组播容量对比表信息发送到各线卡。
3. 如权利要求l所述的方法,其特征在于所述获取组播转发索引包括将组播组地址和VLAN标识作为关键字, 并依照所述可用的最小组播容量值,用hash算法计算组播转发索引。
4. 如权利要求3所述的方法,其特征在于,还包括具有可用的最小组播容量值的线卡达到容量范围时,更新其组播容量对比 表中的组播容量是否可用标志,并将该更新信息通过主控同步到其他线卡的组 播容量对比表中。
5. 如权利要求4所述的方法,其特征在于各线卡定时发送包括线卡标识、线卡的组播容量值和组播容量是否可用标 志的消息到主控;主控根据接收到的消息建立或者更新组播容量对比表,并将建立或更新的 組播容量对比表信息发送到各线卡。
6. 如权利要求5所述的方法,其特征在于,还包括 主控在定时时间内没有接收到线卡发送的消息,确定线卡离线,则删除组播容量对比表中该离线线卡的相关信息,并将更新的组播容量对比表信息发送 到其他线卡。
7. 如权利要求6所述的方法,其特征在于,还包括线卡上线后,发送包括线卡标识、线卡的组播容量值和组播容量是否可用 标志的消息到主控,主控根据接收到的消息更新组播容量对比表,并将更新的 组播容量对比表信息发送到各线卡。
全文摘要
本发明提供一种快速接入组播用户的方法,包括在主控和每个线卡中建立组播容量对比表;线卡窃听到用户发送的IGMP加入消息时,从本线卡的组播容量对比表中获取可用的最小组播容量值,根据所述可用的最小组播容量值以及用户请求加入的组播组地址、VLAN标识获取组播转发索引;所述线卡将所述组播转发索引、组播组地址、VLAN标识和端口信息添加到本线卡的组播成员关系表中,并将所述组播转发索引、组播组地址、VLAN标识通过主控同步到其他线卡的组播成员关系表中。依照本发明,能够更合理的创建线卡上组播成员关系表,防止具有不同组播容量的各种线卡共机架跑组播业务时,由于组播转发索引冲突引起的组播流量转发失败或冗余现象,使组播用户能够快速接入。
文档编号H04L12/18GK101364889SQ200810222889
公开日2009年2月11日 申请日期2008年9月24日 优先权日2008年9月24日
发明者鸾 王 申请人:中兴通讯股份有限公司