一种组播报文的转发方法及装置的制造方法

xiaoxiao2020-10-23  7

一种组播报文的转发方法及装置的制造方法
【技术领域】
[0001]本发明涉及通信领域中的数据转发技术,尤其涉及一种组播报文的转发方法及装置。
【背景技术】
[0002]随着互联网、云计算、互联网协议(IP, Internet Protocol)组播的快速发展,高清视频,实况在线视频等越来越多的组播新型应用业务已经逐渐渗透到各个领域中。而组播数据流的转发依靠协议层面和转发层面的共同作用才能完成,在基于组播数据流驱动的组播协议网络中,通常需要将组播报文上送至CPU进行处理,但是在实际组网和测试过程中,往往会有批量用户和组播数据流同时作用。在这种场景下,中央处理器(CPU,CentralProcessing Unit)处理组播报文的效率显得至关重要,否则就会成为转发组播报文的瓶颈。所以,怎样提高CPU处理组播数据流的效率是非常有意义的。
[0003]在现有很多方法中,大部分都只是解决未知组播源攻击CPU,来提高CPU处理组播报文效率的问题,并没有考虑到所有可能存在的组播报文需要上送时,对CPU造成冲击的场景;另外,现有的方法中,多数是从软件的角度去处理,而软件处理方法是在CPU收到组播数据包后才开始进行处理,并不能从源头上切断组播数据的重复上送,所以也会增加CPU的负担,造成CPU资源的浪费,存在一定的缺陷,影响业务质量。

【发明内容】

[0004]为解决现有技术中存在的问题,在本发明的实施例中提供一种组播报文的转发方法及装置。
[0005]本发明的技术方案是这样实现的:
[0006]本发明提供了一种组播报文的转发方法,该方法包括:
[0007]转发芯片接收组播报文,确定所述组播报文为已知组播报文后,将已知组播报文上送至中央处理器CPU并删除组播转发表出接口的CPU 口,按照接收的组播路由表更新组播转发表和组播状态表,根据更新后的组播状态表确定组播转发表收敛为稳定状态。
[0008]上述方案中,所述将已知组播报文上送至中央处理器CPU为:根据组播状态表中组播转发表的优先级将已知组播报文上送至CPU。
[0009]上述方案中,所述按照接收的组播路由表更新组播转发表和组播状态表为:按照所述组播路由表更新组播转发表中的源互联网协议(SIP, Source Internet Protocol)地址字段、和/或目的互联网协议(DIP,Destinat1n Internet Protocol)地址字段、和/或入虚拟局域网(VLAN, Virtual Local Area Network)字段、和/或出接口字段,并将组播状态表中的状态字段由表示组播转发表未收敛为稳定状态的值更新为表示组播转发表收敛为稳定状态的值,将组播状态表中的命中标志字段由表示在上送周期内组播报文未成功上送的值更新为表示在上送周期内组播报文已经成功上送的值。
[0010]上述方案中,该方法还包括:在更新组播转发表和组播状态表之前,遍历组播状态表中组播转发表优先级Pr1rity字段的值,在小于所述Pr1rity的值个定时器周期内,对组播状态表不进行任何操作,在第Pr1rity的值个定时器周期再对组播状态表执行更新操作。
[0011]上述方案中,该方法还包括:在第Pr1rity的值个定时器周期结束时,检测出组播状态表中的状态字段的值表示组播转发表未收敛为稳定状态,则将删除的CPU 口重新添加到组播转发表出接口中。
[0012]上述方案中,该方法还包括:当转发芯片接收到的组播报文为未知组播报文时,根据组播协议解析规则对未知组播报文的组播信息进行解析,将解析后的组播信息写入临时组播转发表,并写临时组播状态表中的字段,上送所述未知组播报文至CPU。
[0013]上述方案中,该方法还包括:转发芯片根据CPU中各组播协议驱动器下发的组播路由表更新临时组播转发表中的字段和临时组播状态表中的字段,根据更新后的临时组播状态表确定临时组播转发表收敛为稳定状态。
[0014]上述方案中,该方法还包括:所述临时组播状态表包括组播转发表优先级Pr1rity字段,转发芯片在所述Pr1rity的值个定时器周期内没有接收到组播路由表,贝Ij在第Pr1rity的值个定时器周期结束时,检测出临时组播状态表中的状态字段的值表示临时组播转发表未收敛为稳定状态,删除临时组播转发表和临时组播状态表。
[0015]本发明还提供了一种组播报文的转发装置,该转发芯片包括:接收模块、确定模块、发送模块、删除模块、更新模块;其中,
[0016]所述接收模块,用于接收组播报文及组播路由表;
[0017]所述确定模块,用于确定组播所述组播报文为已知组播报文,并根据更新后的组播状态表确定组播转发表收敛为稳定状态;
[0018]所述发送模块,用于将已知组播报文上送至CPU ;
[0019]所述删除模块,用于删除组播转发表出接口的CPU 口 ;
[0020]所述更新模块,用于按照接收的组播路由表更新组播转发表和组播状态表。
[0021]上述方案中,所述发送模块,具体用于根据组播装态表中组播转发表的优先级将已知组播报文上送至CPU。
[0022]上述方案中,所述更新模块,具体用于按照所述组播路由表更新组播转发表中的SIP地址字段、和/或DIP地址字段、和/或入VLAN字段、和/或出接口字段,并将组播状态表中的状态字段由表示组播转发表未收敛为稳定状态的值更新为表示组播转发表收敛为稳定状态的值,将组播状态表中的命中标志字段由表示在上送周期内组播报文未成功上送的值更新为表示在上送周期内组播报文已经成功上送的值。
[0023]上述方案中,所述更新模块,还用于在更新组播转发表和组播状态表之前,遍历组播状态表中组播转发表优先级Pr1rity字段的值,在小于所述Pr1rity的值个定时器周期内,对组播状态表不进行任何操作,在第Pr1rity的值个定时器周期再对组播状态表执行更新操作。
[0024]上述方案中,该装置还包括:添加模块,用于在第Pr1rity的值个定时器周期结束时,检测出组播状态表中的状态字段的值表示组播转发表未收敛为稳定状态,则将删除的CPU 口重新添加到组播转发表出接口中。
[0025]上述方案中,该装置还包括创建模块,用于根据组播协议解析规则对未知组播报文的组播信息进行解析,将解析后的组播信息写入临时组播转发表,并写临时组播状态表中的字段;
[0026]所述发送模块,还用于上送所述未知组播报文至CPU ;
[0027]所述确定模块,还用于当确定接收到的组播报文为未知组播报文时,通知创建模块,并根据更新后的临时组播状态表确定临时组播转发表收敛为稳定状态;
[0028]所述更新模块,还用于根据CPU中各组播协议驱动器下发的组播路由表更新临时组播转发表中的字段和临时组播状态表中的字段。
[0029]上述方案中,所述临时组播状态表包括组播转发表优先级Pr1rity字段;所述删除模块,还用于在第Pr1rity的值个定时器周期结束时,检测出临时组播状态表中的状态字段的值表示临时组播转发表未收敛为稳定状态,删除临时组播转发表和临时组播状态表。
[0030]本发明实施例提供的一种组播报文的转发方法及装置,接收组播报文,确定所述组播报文为已知组播报文后,将已知组播报文上送至CPU并删除组播转发表出接口的CPU口,按照接收的组播路由表更新组播转发表和组播状态表,根据更新后的组播状态表确定组播转发表收敛为稳定状态;如此,能够在保护CPU的前提下,更全面的提高CPU处理组播报文的效率,进而加快组播协议层面的下发路由效率,及时转发组播报文。
【附图说明】
[0031]图1为现有技术中转发组播报文的方法流程示意图;
[0032]图2为本发明实施例一提供的一种组播报文的转发方法的流程示意图;
[0033]图3为本发明实施例二提供的一种组播报文的转发方法的流程示意图;
[0034]图4为本发明实施例三提供的一种组播报文的转发装置的结构示意图。
【具体实施方式】
[0035]为了更好的理解本发明的技术方案,本发明先介绍现有技术中组播报文上送至CPU并进行处理的方法,如图1所示,该方法主要包括以下几个步骤:
[0036]步骤101,接收组播报文;
[0037]步骤102,判断所述组播报文是否存在组播转发表;如果是,则执行步骤103 ;如果否,则执行步骤104;
[0038]本步骤中,当所述CPU接收到组播报文时,根据组播数据帧的目的组播地址查找所述组播报文是否存在组播转发表。
[0039]步骤103,根据接收到的带有上送标记的组播路由表对已知组播报文进行转发,流程结束;
[00 40]本步骤中,当查找到组播报文存在组播转发表时,确定所述组播报文为已知组播报文;这里,稀疏模式独立组播协议(PIMSM, Protocol Independent Multicast SparseMode)驱动器下发组播路由表,此时,组播协议驱动器按照当前的组播协议状态判断该条路由在转发组播报文的同时是否需要附带上送标记,如果需要,则根据带有上送标记的组播路由表转发组播报文。例如,若当前的组播协议正处于最短路径树(SPT,Shortest PathTree)的熟切换过程中,那么接收到的组播路由会带有NS标记,表示此时在需要转发组播报文的同时还需要将报文上送给CPU,直至组播报文上送成功,才会删除组播路由表的上送标记O
[0041]步骤104,根据接收到的组播路由表对未知组播报文进行转发,流程结束;
[0042]本步骤中,当组播报文不存在组播转发表时,确定所述组播报文为未知组播报文;这里,根据对应的组播协议驱动器下发的组播路由表转发未知组播报文。
[0043]可见,现有技术虽然也可以实现对组播报文的处理及转发,但是在实际组网和测试过程中,往往会存在大批量的组播数据流同时上送和重复上送的情况,对CPU造成了很大的冲击,严重降低了 CPU的处理组播报文的效率和CPU资源利用率。
[0044]在本发明的实施例中,转发芯片接收组播报文,确定所述组播报文为已知组播报文后,将已知组播报文上送至CPU并删除组播转发表出接口的CPU 口,按照接收的组播路由表更新组播转发表和组播状态表,根据更新后的组播状态表确定组播转发表收敛为稳定状态,转发过程完成。
[0045]下面结合附图及具体实施例对本发明的技术方案做进一步的详细说明。
[0046]实施例一
[0047]本发明实施例提供一种组播报文的转发方法,如图2所示,该方法主要包括以下几个步骤:
[0048]步骤201,转发芯片接收组播报文,确定所述组播报文为已知组播报文;
[0049]本步骤中,转发芯片按照组播报文的SIP地址、DIP地址、入VLAN等信息查找接收到的组播报文是否存在组播转发表;当所述组播报文存在组播转发表时,确定组播报文为已知组播报文;
[0050]本步骤还包括:当所述组播报文不存在组播转发表时,确定组播报文为未知组播报文。
[0051]步骤202,转发芯片将已知组播报文上送至CPU并删除组播转发表出接口的CPUΠ ;
[0052]本步骤中,当已知组播报文需要上送至CPU进行处理时,转发芯片按照组播状态表中对应的组播转发表的优先级将已知组播报文上送至CPU并删除组播转发表出接口的CPU 口,并写组播状态表中的状态字段为表示组播转发表未收敛为稳定状态的值,写组播状态表中的命中标志为表示在上送周期内组播报文未成功上送的值;当已知组播报文不需要上送至CPU进行处理时,转发芯片根据组播转发表正常转发已知组播报文;
[0053]所述组播状态表中的字段包括:状态State、组播转发表优先级Pr1rity、命中标志Hit等信息;具体的,所述State具有O和I两种状态,O表不组播转发表收敛为稳定状态,I表示组播转发表未收敛为稳定状态;所述Pr1rity用于表示组播转发表优先级,所述Pr1rity值越小,则组播转发表的优先级越高;所述Pr1rity还用于计算组播报文的上送周期;
[0054]其中,上送周期=定时器周期^Pr1rity ;
[0055]所述Hit具有O和I两种状态,I表示在上送周期内组播报文已经成功上送,O表示在上送周期内组播报文未成功上送;本文根据组播协议中设定的组播转发表的老化周期、源注册报文周期等参数设定定时器周期,针对组播业务将定时器周期设置为200ms。
[0056]本步骤还包括:当转发芯片接收到的组播报文为未知组播报文时,根据组播协议解析规则对未知组播报文的SIP地址、DIP地址和入VLAN等组播信息进行解析,将解析后的组播信息写入临时组播转发表,并写临时组播状态表中的字段,上送所述未知组播报文至 CPU ;
[0057]这里,CPU会根据组播协议PIMSM将未知组播报文分配至对应的组播协议驱动器,组播协议驱动器根据组播协议解析规则解析未知组播报文的组播信息,根据解析出的组播信息计算相应的组播路由,向转发芯片和CPU下发组播路由表;其中,所述组播协议解析规则包括:组播数据格式、组播数据长度、组播数据名称等信息。
[0058]所述临时组播转发表中的字段包括:组播报文的SIP地址、DIP地址、入VLAN、NULL等信息;所述NULL指组播转发表的出接口为空,即转发芯片不需要向任何端口转发该条未知组播报文。
[0059]所述临时组播状态表中的字段与上文所述组播状态表中的字段一致。
[0060]步骤203,转发芯片按照接收的组播路由表更新组播转发表和组播状态表,根据更新后的组播状态表确定组播转发表收敛为稳定状态;
[0061]本步骤中,转发芯片接收组播协议驱动器下发的组播路由表,按照所述组播路由表更新组播转发表中的SIP地址字段、和/或DIP地址字段、和/或入VLAN字段、和/或出接口字段,并将组播状态表中的状态字段由表示组播转发表未收敛为稳定状态的值更新为表示组播转发表收敛为稳定状态的值,将组播状态表中的命中标志字段由表示在上送周期内组播报文未成功上送的值更新为表示在上送周期内组播报文已经成功上送的值;
[0062]在更新组播转发表和组播状态表之前,还可以遍历组播状态表中Pr1rity字段的值,判断是否在当前的定时器周期内对组播状态表执行更新操作;例如,如果所述组播状态表中Pr1rity的值为大于或等于2的整数时,那么在小于所述Pr1rity的值个定时器周期内,对组播状态表不进行任何操作,在第Pr1rity的值个定时器周期再对组播状态表执行更新操作。
[0063]所述组播状态表用于记录组播转发表中组播路由的状态,组播状态表与组播转发表共用同一个索引值。
[0064]此外,若转发芯片在所述Pr1rity的值个定时器周期内没有接收到组播路由表,那么,在第Pr1rity的值个定时器周期结束时,检测出组播状态表中的State值表示组播转发表未收敛为稳定状态,则将删除的CPU 口重新添加到组播转发表出接口中,以使已知组播报文能够继续上送给CPU进行处理。在正常情况下,已知组播报文上送后能够被及时处理,组播转发表能够较快达到稳定状态,组播报文能够及时成功上送;但是,如果CPU业务繁忙,没有及时处理组播报文,出现丢包的情况时,转发芯片还将在下一个定时器周期内将该条已知组播报文重复上送至CPU,直至上送成功。
[0065]本步骤还包括:当转发芯片接收的为未知组播报文时,转发芯片根据CPU中各组播协议驱动器下发的组播路由表更新临时组播转发表中的字段和临时组播状态表中的字段,根据更新后的临时组播状态表确定临时组播转发表收敛为稳定状态,确定上送组播报文过程完成;
[0066]另外,若转发芯片在所述Pr1rity的值个定时器周期内没有接收到组播路由表,那么,在第Pr1rity的值个定时器周期结束时,检测出临时组播状态表中的State值表示临时组播转发表未收敛为稳定状态,则删除临时组播转发表和临时组播状态表。例如,在第一个预设的定时器周期内,临时组播状态表中的State值为1,Pr1rity值为2,Hit值为O ;在下一个定时器周期到来时,若State和Hit的值保持不变,那么,转发芯片则将对应的临时组播转发表和临时组播状态表同时删除,以保证后续的未知组播报文可以继续上送至CPU。
[0067]本实施例中,在转发芯片中增加组播状态表,通过组播状态表来反馈组播转发表中的组播路由状态,通过组播路由状态灵活控制组播数据流的转发,避免了同组组播报文重复上送的场景,有效的解决了所有可能出现的组播源攻击CPU的问题,提高了 CPU处理组播报文的效率及自身的资源利用率。
[0068]实施例二
[0069]相应于实施例一,本发明还提供一种组播报文的转发方法,该方法是为了在数据库中验证组播状态表的可实现性;这里,数据库表中的一条记录相当于转发芯片中的一条表项,所述转发芯片中的一条表项为:转发芯片对组播转发表和组播状态表执行一次操作的综合。如图3所示,该方法主要包括以下几个步骤:
[0070]步骤301,建立数据库表;
[0071]本步骤中,在转发芯片接收组播报文之前,各组播协议驱动器初始化完成时建立数据库表mc_route,所述数据库表主要包括:组播源(Source)地址、组播组(Group)地址、入VLAN、出接口列表索引值(Ipmc index)、组播路由状态(route State)、组播转发表优先级(Pr1rity),命中标志(Hit)等组播信息。< br>[0072]步骤302,转发芯片接收组播报文,确定所述组播报文为已知组播报文;
[0073]本步骤中,转发芯片根据数据库表中的组播源地址、组播组地址及入VLAN等信息查找接收到的组播报文是否存在组播转发表;当所述组播报文存在组播转发表时,确定组播报文为已知组播报文;
[0074]本步骤中还包括,当所述组播报文不存在组播转发表时,确定组播报文为未知组播报文。
[0075]步骤303,转发芯片将已知组播报文上送至CPU并删除组播转发表出接口的CPUΠ ;
[0076]本步骤中,当已知组播报文需要上送至CPU进行处理时,转发芯片按照数据库表中的组播转发表优先级将已知组播报文上送至CPU并删除组播转发表出接口的CPU 口,并写组播状态表中的状态字段为表示组播转发表未收敛为稳定状态的值,写组播状态表中的命中标志为表示在上送周期内组播报文未成功上送的值;这里,同时在数据库中写入一条对应的记录,即在数据库表中写入表示组播路由状态未收敛为稳定状态的值、表示在上送周期内组播报文未成功上送的值;当已知组播报文不需要上送至CPU进行处理时,转发芯片根据组播转发表正常转发已知组播报文;
[0077]所述组播状态表中的字段包括:状态State、组播转发表优先级Pr1rity、命中标志Hit等信息;具体的,所述State具有O和I两种状态,O表不组播转发表收敛为稳定状态,I表示组播转发表未收敛为稳定状态;
[0078]同样的,数据库表中的组播路由状态与组播状态表中的State相对应,所述组播路由状态也具有O和I两种状态,O表组播转发表收敛为稳定状态,I表组播转发表未收敛为稳定状态;
[0079]所述Pr1rity用于表示组播转发表优先级,所述Pr1rity值越小,则组播转发表的优先级越高;所述Pr1rity还用于计算组播报文的上送周期;
[0080]其中,上送周期=定时器周期^Pr1rity ;
[0081 ] 所述Hit具有O和I两种状态,I表示在上送周期内组播报文已经成功上送,O表示在上送周期内组播报文未成功上送;本文根据组播协议中设定的组播转发表的老化周期、源注册报文周期等参数设定定时器周期,针对组播业务将定时器周期设置为200ms。
[0082]本步骤还包括:当转发芯片接收到的组播报文为未知组播报文时,根据组播协议解析规则对未知组播报文的SIP地址、DIP地址和入VLAN等组播信息进行解析,将解析后的组播信息写入临时组播转发表,并写临时组播状态表中的字段,上送所述未知组播报文至CPU ;同时在数据库表中写入一条对应的记录,即根据临时组播状态表中的字段在数据库中写对应的组播路由状态。
[0083]这里,CPU根据组播协议PIMSM将未知组播报文数据包分配至对应的组播协议驱动器,组播协议驱动器根据组播协议规则解析未知组播报文的组播信息,根据解析出的组播信息计算相应的组播路由;向转发芯片和CPU下发组播路由表;其中,所述组播协议解析规则包括:组播数据格式、组播数据长度、组播数据名称等信息。
[0084]所述临时组播转发表中的字段包括:组播报文SIP地址、DIP地址、入VLAN、NULL等信息;所述NULL指组播转发表的出接口为空,即转发芯片不需要向任何端口转发该条未知组播报文。
[0085]所述临时组播状态表中的字段与上文所述组播状态表中的字段一致。
[0086]步骤304,转发芯片按照接收的组播路由表更新组播转发表和组播状态表,同时更新数据库表中的记录,并根据更新后的组播路由状态确定组播转发表收敛为稳定状态;
[0087]本步骤中,转发芯片接收组播协议驱动器下发的组播路由表,按照所述组播路由表更新组播转发表中的SIP地址字段、和/或DIP地址字段、和/或入VLAN字段、和/或出接口字段,并将组播状态表中的状态字段由表示组播转发表未收敛为稳定状态的值更新为表示组播转发表收敛为稳定状态的值,将组播状态表中的命中标志字段由表示在上送周期内组播报文未成功上送的值更新为表示在上送周期内组播报文已经成功上送的值;
[0088]这里,在转发芯片更新组播转发表和组播状态表的同时还更新数据库表中各条记录,按照所述组播路由表更新数据库表中的组播路由状态、命中标志Hit,并将数据库表中的组播路由状态字段表示组播转发表未收敛为稳定状态的值更新为表示组播转发表收敛为稳定状态的值,将组播状态表中的命中标志字段由表示在上送周期内组播报文未成功上送的值更新为表示在上送周期内组播报文已经成功上送的值。
[0089]在更新数据库表中的各条记录之前,还可以遍历数据库表中的Pr1rity字段的值,判断是否在当前的定时器周期内对数据库表执行更新操作;具体的,例如,如果所述数据库表中Pr1rity的值为大于或等于2的整数时,那么在小于所述Pr1rity的值个定时周期内,对数据库表不进行任何操作,在第Pr1rity的值个定时器周期再对数据库表执行更新操作。
[0090]此外,若转发芯片在所述Pr1rity的值个定时器周期内没有接收到组播路由表,那么,在第Pr1rity的值个定时器周期结束时,检测出组播路由状态为未收敛为稳定状态,则将删除的CPU 口重新添加到组播转发表出接口中,以使已知组播报文能够继续上送给CPU进行处理。在正常情况下,已知组播报文上送后能够被及时处理,组播转发表能够较快达到稳定状态;但是,如果CPU业务繁忙,没有及时处理组播报文,出现丢包的情况时,转发芯片还将在下一个定时器周期内将该条已知组播报文重复上送至CPU,直至上送成功。
[0091]本步骤还包括:当转发芯片接收的为未知组播报文时,转发芯片根据CPU中组播协议驱动器下发的组播路由表更新时组播转发表中的字段和临时组播状态表中的字段,同时更新数据库表中对应的记录,根据更新后的临时组播状态表确定临时组播转发表收敛为稳定状态,确定上送组播报文过程完成;
[0092]另外,当转发芯片在所述Pr1rity的值个定时器周期内没有收到组播路由表,那么,在数据库表的第Pr1rity的值个定时器周期结束时,检测出临时组播状态表中的State值表示临时组播转发表未收敛为稳定状态,则删除临时组播转发表和临时组播状态表,以保证后续的未知组播报文可以继续上送至CPU。
[0093]本发明中的实施例应用范围比较广泛,不仅适用于互联网版本协议6 (IPv6,Internet Protocol vers1n6),互联网版本协议 4 (IPv4, Internet Protocol vers1n4)中的组播报文转发,还适用于二、三层交换设备、路由设备及各种支持组播业务通信设备中的组播报文转发;本发明能够在组播流正常转发的基础上,有效的保护CPU不被攻击,以使CPU处理组播报文的效率得到有效提高。
[0094]实施例三
[0095]为了实现上述方法,本发明还提供了一种组播报文的转发装置,该装置一般集成在转发芯片上,如图4所示,该装置包括:接收模块41、确定模块42、发送模块43、删除模块44、更新模块45 ;其中,
[0096]所述接收模块41,可以由转发芯片的接收器实现,用于接收组播报文及组播路由表;
[0097]所述确定模块42,可以由转发芯片的处理器实现,用于确定组播报文为已知组播报文,并根据更新后的组播状态表确定组播转发表收敛为稳定状态;具体的,所述确定模块42查找出组播报文存在组播转发表时,确定组播报文为已知组播报文;查找出组播报文不存在组播转发表时,确定组播报文为未知组播报文;
[0098]所述发送模块43,可以由转发芯片的发送器实现,用于将已知组播报文上送至CPU ;
[0099]具体的,所述发送模块43根据组播状态表中的组播转发表的优先级将组播报文上送至CPU ;
[0100]所述删除模块44,可以由转发芯片的处理器实现,用于删除组播转发表出接口的CPU 口 ;具体的,当所述发送模块43将已知组播报文上送至CPU后,所述删除模块44,删除组播转发表出接口的CPU 口 ;
[0101]所述更新模块45,位于转发芯片的处理器中,用于按照接收的组播路由表更新组播转发表和组播状态表;具体的,所述更新模块45按照所述组播路由表更新组播转发表中的SIP地址字段、和/或DIP地址字段、和/或入VLAN字段、和/或出接口字段,并将组播状态表中的状态字段由表示组播转发表未收敛为稳定状态的值更新为表示组播转发表收敛为稳定状态的值,将组播状态表中的命中标志字段由表示在上送周期内组播报文未成功上送的值更新为表示在上送周期内组播报文已经成功上送的值。其中,所述组播转发表中的字段包括:组播报文的SIP地址、DIP地址、入VLAN等信息;所述组播状态表中的字段包括:状态值State、组播转发表优先级Pr1rity、命中标 志Hit等信息;具体的,所述State具有O和I两种状态,O表组播转发表收敛为稳定状态,I表组播转发表未收敛为稳定状态;所述Pr1rity用于表示组播转发表优先级,所述Pr1rity值越小,则组播转发表的优先级越高;所述Pr1rity还用于计算组播报文的上送周期;
[0102]其中,上送周期=定时器周期^Pr1rity ;
[0103]所述Hit具有O和I两种状态,I表示在上送周期内组播报文已经成功上送,O表示在上送周期内组播报文未成功上送;本文根据组播协议中设定的组播转发表的老化周期、源注册报文周期等参数设定定时器周期,针对组播业务将定时器周期设置为200ms ;
[0104]所述组播状态表用于记录组播转发表中组播路由的状态,组播状态表与组播转发表共用同一个索引值。
[0105]在更新组播转发表和组播状态表之前,所述更新模块45还可以遍历组播状态表中Pr1rity字段的值,在小于所述Pr1rity的值个定时器周期内,对组播状态表不进行任何操作,在第Pr1rity的值个定时器周期再对组播状态表执行更新操作。
[0106]该装置还包括:添加模块46,可以由转发芯片的处理器实现,用于在第Pr1rity的值个定时器周期结束时,检测出组播状态表中的状态字段的值表示组播转发表未收敛为稳定状态,则将删除的CPU 口重新添加到组播转发表出接口中。
[0107]此外,该装置还包括:创建模块47,可以由转发芯片的处理器实现,用于根据组播协议解析规则对未知组播报文的组播信息进行解析,将解析后的组播信息写入临时组播转发表,并写临时组播状态表中的字段;
[0108]这样,所述发送模块43上送所述未知组播报文至CPU ;
[0109]相应的,所述确定模块42在确定接收到的组播报文为未知组播报文时,通知创建模块47,并根据更新后的临时组播状态表确定临时组播转发表收敛为稳定状态;
[0110]所述更新模块45根据CPU中各组播协议驱动器下发的组播路由表更新临时组播转发表中的字段和临时组播状态表中的字段。
[0111]这里,所述临时组播状态表也包括组播转发表优先级Pr1rity字段;
[0112]所述删除模块44在第Pr1rity的值个定时器周期结束时,检测出临时组播状态表中的状态字段的值表不临时组播转发表未收敛为稳定状态,删除临时组播转发表和临时组播状态表。
[0113]以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
【主权项】
1.一种组播报文的转发方法,其特征在于,该方法包括: 转发芯片接收组播报文,确定所述组播报文为已知组播报文后,将已知组播报文上送至中央处理器(CPU)并删除组播转发表出接口的CPU 口,按照接收的组播路由表更新组播转发表和组播状态表,根据更新后的组播状态表确定组播转发表收敛为稳定状态。2.根据权利要求1所述的转发方法,其特征在于,所述将已知组播报文上送至中央处理器CPU为:根据组播状态表中组播转发表的优先级将已知组播报文上送至CPU。3.根据权利要求1所述的转发方法,其特征在于,所述按照接收的组播路由表更新组播转发表和组播状态表为:按照所述组播路由表更新组播转发表中的SIP地址字段、和/或DIP地址字段、和/或入VLAN字段、和/或出接口字段,并将组播状态表中的状态字段由表示组播转发表未收敛为稳定状态的值更新为表示组播转发表收敛为稳定状态的值,将组播状态表中的命中标志字段由表示在上送周期内组播报文未成功上送的值更新为表示在上送周期内组播报文已经成功上送的值。4.根据权利要求3所述的转发方法,其特征在于,该方法还包括: 在更新组播转发表和组播状态表之前,遍历组播状态表中组播转发表优先级Pr1rity字段的值,在小于所述Pr1rity的值个定时器周期内,对组播状态表不进行任何操作,在第Pr1rity的值个定时器周期再对组播状态表执行更新操作。5.根据权利要4所述的转发方法,其特征在于,该方法还包括: 在第Pr1rity的值个定时器周期结束时,检测出组播状态表中的状态字段的值表示组播转发表未收敛为稳定状态,则将删除的CPU 口重新添加到组播转发表出接口中。6.根据权利要求1所述的转发方法,其特征在于,该方法还包括: 当转发芯片接收到的组播报文为未知组播报文时,根据组播协议解析规则对未知组播报文的组播信息进行解析,将解析后的组播信息写入临时组播转发表,并写临时组播状态表中的字段,上送所述未知组播报文至CPU。7.根据权利要求6所述的转发方法,其特征在于,该方法还包括:转发芯片根据CPU中各组播协议驱动器下发的组播路由表更新临时组播转发表中的字段和临时组播状态表中的字段,根据更新后的临时组播状态表确定临时组播转发表收敛为稳定状态。8.根据权利要求7所述的转发方法,其特征在于,该方法还包括: 所述临时组播状态表包括组播转发表优先级Pr1rity字段,转发芯片在所述Pr1rity的值个定时器周期内没有接收到组播路由表,贝U在第Pr1rity的值个定时器周期结束时,检测出临时组播状态表中的状态字段的值表示临时组播转发表未收敛为稳定状态,删除临时组播转发表和临时组播状态表。9.一种组播报文的转发装置,其特征在于,该转发芯片包括:接收模块、确定模块、发送模块、删除模块、更新模块;其中, 所述接收模块,用于接收组播报文及组播路由表; 所述确定模块,用于确定组播所述组播报文为已知组播报文,并根据更新后的组播状态表确定组播转发表收敛为稳定状态; 所述发送模块,用于将已知组播报文上送至CPU ; 所述删除模块,用于删除组播转发表出接口的CPU 口 ; 所述更新模块,用于按照接收的组播路由表更新组播转发表和组播状态表。10.根据权利要求9所述的转发装置,其特征在于,所述发送模块,具体用于根据组播装态表中组播转发表的优先级将已知组播报文上送至CPU。11.根据权利要求9所述的转发装置,其特征在于,所述更新模块,具体用于按照所述组播路由表更新组播转发表中的SIP地址字段、和/或DIP地址字段、和/或入VLAN字段、和/或出接口字段,并将组播状态表中的状态字段由表示组播转发表未收敛为稳定状态的值更新为表示组播转发表收敛为稳定状态的值,将组播状态表中的命中标志字段由表示在上送周期内组播报文未成功上送的值更新为表示在上送周期内组播报文已经成功上送的值。12.根据权利要求11所述的转发装置,其特征在于,所述更新模块,还用于在更新组播转发表和组播状态表之前,遍历组播状态表中组播转发表优先级Pr1rity字段的值,在小于所述Pr1rity的值个定时器周期内,对组播状态表不进行任何操作,在第Pr1rity的值个定时器周期再对组播状态表执行更新操作。13.根据权利要求12所述的转发装置,其特征在于,该装置还包括:添加模块,用于在第Pr1rity的值个定时器周期结束时,检测出组播状态表中的状态字段的值表示组播转发表未收敛为稳定状态,则将删除的CPU 口重新添加到组播转发表出接口中。14.根据权利要求9所述的转发装置,其特征在于,该装置还包括创建模块,用于根据组播协议解析规则对未知组播报文的组播信息进行解析,将解析后的组播信息写入临时组播转发表,并写临时组播状态表中的字段; 所述发送模块,还用于上送所述未知组播报文至CPU ; 所述确定模块,还用于当确定接收到的组播报文为未知组播报文时,通知创建模块,并根据更新后的临时组播状态表确定临时组播转发表收敛为稳定状态; 所述更新模块,还用于根据CPU中各组播协议驱动器下发的组播路由表更新临时组播转发表中的字段和临时组播状态表中的字段。15.根据权利要求14所述的转发装置,其特征在于,所述临时组播状态表包括组播转发表优先级Pr1rity字段; 所述删除模块,还用于在第Pr1rity的值个定时器周期结束时,检测出临时组播状态表中的状态字段的值表不临时组播转发表未收敛为稳定状态,删除临时组播转发表和临时组播状态表。
【专利摘要】本发明提供了一种组播报文的转发方法,转发芯片接收组播报文,确定所述组播报文为已知组播报文后,将已知组播报文上送至中央处理器(CPU)并删除组播转发表出接口的CPU口,按照接收的组播路由表更新组播转发表和组播状态表,根据更新后的组播状态表确定组播转发表收敛为稳定状态;本发明同时还提供了一种组播报文的转发装置。
【IPC分类】H04L12/741, H04L12/761
【公开号】CN104901891
【申请号】CN201410084417
【发明人】杨柳
【申请人】中兴通讯股份有限公司
【公开日】2015年9月9日
【申请日】2014年3月7日
【公告号】WO2015131486A1

最新回复(0)