一种提高组播信息传输带宽利用率的方法及其装置
技术领域
本发明涉及通信设备的组播信息传输,尤其涉及一种提高组播信息传输带宽利用率的方法及其装置。
背景技术
现有的通信设备包括交换模块和业务模块,其中交换模块是指在通信设备上,用于交换流量,担当数据流转发的装置;业务模块是指在通信设备上,用于业务处理的装置,其采用分布式架构。各业务模块之间的数据流通过交换模块中转。而组播是通信设备之间进行数据流通的常用业务方式,组播是由一个发送者向多个接收者传送信息的通信业务。目前的通信设备,一般支持多个组播组,组播组表示有兴趣利用组播业务接收信息的一组成员。组播路由表安装在交换模块上,用于动态记录各个组播组中业务模块成员的信息,并作为组播组数据流通中转的依据。参见图1,组播业务在分布式通信设备上的转发过程为:对于一个组播组而言,信息由某一业务模块发送,经交换模块,并按照交换模块上相应组播路由表中的信息,按需地发送至目的的业务模块,最终信息从多个业务模块发送出去。组播路由表中的第一组播组表示交换模块需要将信息发送给业务模块1、业务模块3、业务模块4,…,以及其他业务模块;组播路由表中的第二组播组表示交换模块需要将信息发送给业务模块4,…,以及业务模块K。而业务模块1和业务模块2也分别通过交换模块发送信息。
通常通信设备能够支持的组播业务的规格M会比较大,而交换模块上组播路由表的硬件资源的规格N会比较小,二者之比称之为收敛比R(R=┌(M/N)┐),收敛比R通常可达几到几十。
针对这种情况,通常采用多个组播组共用组播路由表硬件资源的方案。首先,在交换模块上申请足够的内存,确保能够记录全部规格M的组播组的成员信息。其次,组播组数量M不超过规格N时,每个组播组各自独用一项硬件资源;当组播组数量M超过规格N时,用组播组序号除以规格N取余数,余数相等的这些组播组共用一项硬件资源。此时,需要对共用的组播组成员取并集来设置硬件资源。这样做能够确保所有的组播信息能够顺利地通过交换模块,去往可能为组播组成员的各个业务模块。同时有可能发生的是:某业务模块不是某组播组成员却收到了该组播组的信息,那么多余的组播信息就在业务模块的出通道进行过滤。
参看图2,此时组播组的数量已经大于N,那么第1项硬件资源就要被序号为1、N+1、2N+1…的组播组所共用,硬件资源中需要包含所共用的组播组所有成员的并集。当组播信息通过交换模块到达业务模块的出通道时,若该业务模块不是该组播信息对应的组播组的成员,那么该业务模块将此组播信息过滤。在图2中,业务模块K将第1个组播组的信息过滤,业务模块1、4将第N+1个组播组的信息过滤。
但是采用现有的多个组播组共用组播路由表硬件资源的方案,交换模块去往业务模块1、4、K的通信通道上,均含有不必要的组播流量。若序号为1、N+1的两个组播组的组播流量之比为1:1,那么对于交换模块去往业务模块1、4、K的通信通道,其带宽利用率仅为50%。当组播流量较大时,这些地方容易造成组播信息的拥塞,是组播通信的瓶颈。
并且,在实际的通信设备中,当收敛比R较大,组播业务的组播组数量较多时,组播性能下降得非常厉害,严重影响组播信息的通信质量。
发明内容
有鉴于此,本发明提供一种提高组播信息传输带宽利用率的方法及其装置。本发明可以提高通信设备的组播信息传输带宽利用率,从而提高组播信息的通信质量。
本发明提供一种提高组播信息传输带宽利用率的方法,应用于网络设备上,网络设备包括业务模块和交换模块。业务模块通过交换模块进行数据流通,网络设备支持组播组的业务规格为M,组播组m表示第m个组播组,m≤M;业务模块的总数为K,业务模块k表示第k个业务模块,k≤K,业务模块k’表示第k’个业务模块,k’≤K;交换模块中组播路由表硬件资源的规格为N;M、N和K均为自然数。
每个组播组具有一组播组节点;每个组播路由表硬件资源具有一资源节点;M个组播组节点挂在N个资源节点上。
该方法包括如下步骤:
信息变更步骤,如果组播组m的成员业务模块的数量由k变成k’,更新组播组m的成员位图,将组播组m节点从原资源节点上摘除以及判断组播组m的原成员业务模块的数量k是否为0。
最优匹配步骤,比较组播组m的新的成员位图与各资源节点的成员位图,将组播组m的节点添加在最优匹配的资源节点下。
资源更新步骤,如组播组m的原成员业务模块的数量k不为0,更新组播组m所在的新资源节点信息和组播组m的原资源节点信息,更新组播路由表硬件资源的使用情况;如组播组m的原成员业务模块的数量k为0,更新组播组m所在的新资源节点信息,更新组播路由表硬件资源的使用情况。
进一步地,N个资源节点分别放入第0至第K号资源池中,第k号资源池中的每个资源节点所具有的成员业务模块的数量为k,k≤K。
最优匹配步骤为:遍历第k’号资源池的各资源节点,将组播组m节点的新的成员位图与各资源节点的成员位图相比较,若找到与组播组m节点的新的成员位图完全相同的资源节点的成员位图,则将组播组m节点挂在找到的资源节点下,执行资源更新步骤。
进一步地,若没有找到与组播组m节点的新的成员位图完全相同的资源节点的成员位图,如第0号资源池中有闲置资源节点,则将组播组m节点挂在第0号资源池的第一个资源节点下,执行资源更新步骤。
进一步地,如第0号资源池中没有闲置资源,将组播组m节点的新的成员位图与各资源节点的成员位图相比较,如发现差异度等于最佳匹配值的资源节点的成员位图,则将组播组m节点挂在发现的资源节点下,执行资源更新步骤。
进一步地,将组播组m的节点的新的成员位图与各资源节点的成员位图相比较是以第k’号资源池为对称轴,按照逐一向两侧遍历各个资源池中是否存在与组播组m节点的新的成员位图差异度等于最佳匹配值的资源节点的成员位图。
进一步地,最优匹配步骤进一步包括:如没有发现差异度等于最佳匹配值的资源节点的成员位图,则将组播组m节点挂在成员位图与组播组m节点的新的成员位图差异度最小的资源节点下,执行资源更新步骤。
进一步地,资源更新步骤中的更新资源节点信息包括:资源节点下有组播组节点添加或摘除时,重新计算资源节点的成员位图和成员业务模块的数量,并将资源节点移入和现有成员业务模块的数量对应的资源池。
进一步地,如需要移入的资源节点成员位图与所要移入的资源池中原有的资源节点成员位图完全匹配,则将需要移入的资源节点下挂的所有组播组节点摘除,全部挂到移入的资源池中原有的位图完全匹配的资源节点上,更新原有的位图完全匹配的资源节点的下挂组播组节点数量,将需要移入的资源节点放置到第0号资源池。
本发明还提供一种提高组播信息传输带宽利用率的装置,应用于网络设备上,网络设备包括业务模块和交换模块。业务模块通过交换模块进行数据流通,网络设备支持组播组的业务规格为M,组播组m表示第m个组播组,m≤M;业务模块的总数为K,业务模块k表示第k个业务模块,k≤K,业务模块k’表示第k’个业务模块,k’≤K;交换模块中组播路由表硬件资源的规格为N;M、N和K均为自然数。
每个组播组具有一组播组节点;每个组播路由表硬件资源具有一资源节点;M个组播组节点挂在N个资源节点上。
该装置包括:
信息变更单元,用于如组播组m的成员业务模块的数量由k变成k’,更新组播组m的成员位图,将组播组m节点从原资源节点上摘除以及判断组播组m的原成员业务模块的数量k是否为0。
最优匹配单元,用于比较组播组m的新的成员位图与各资源节点的成员位图,将组播组m的节点添加在最优匹配的资源节点下。
资源更新单元,用于如组播组m的原成员业务模块的数量k不为0,更新组播组m所在的新资源节点信息和组播组m的原资源节点信息,更新组播路由表硬件资源的使用情况;如组播组m的原成员业务模块的数量k为0,更新组播组m所在的新资源节点信息,更新组播路由表硬件资源的使用情况。
进一步地,N个资源节点分别放入第0至第K号资源池中,第k号资源池中的每个资源节点所具有的成员业务模块的数量为k,k≤K。
最优匹配单元包括:
遍历子单元,遍历第k’号资源池的各资源节点,将组播组m节点的新的成员位图与各资源节点的成员位图相比较。
匹配子单元,若找到与组播组m节点的新的成员位图完全相同的资源节点的成员位图,则将组播组m节点挂在找到的资源节点下,执行资源更新单元。
进一步地,匹配子单元进一步包括:若没有找到与组播组m节点的新的成员位图完全相同的资源节点的成员位图,如第0号资源池中有闲置资源节点,则将组播组m节点挂在第0号资源池的第一个资源节点下,执行资源更新步骤。
进一步地,匹配子单元进一步包括:如第0号资源池中没有闲置资源,将组播组m节点的新的成员位图与各资源节点的成员位图相比较,如发现差异度等于最佳匹配值的资源节点的成员位图,则将组播组m节点挂在发现的资源节点下,执行资源更新步骤。
进一步地,将组播组m的节点的新的成员位图与各资源节点的成员位图相比较是以第k’号资源池为对称轴,按照逐一向两侧遍历各个资源池中是否存在与组播组m节点的新的成员位图差异度等于最佳匹配值的资源节点的成员位图。
进一步地,匹配子单元进一步包括:如没有发现差异度等于最佳匹配值的资源节点的成员位图,则将组播组m节点挂在成员位图与组播组m节点的新的成员位图差异度最小的资源节点下,执行资源更新步骤。
进一步地,资源更新单元中的更新资源节点信息包括:资源节点下有组播组节点添加或摘除时,重新计算资源节点的成员位图和成员业务模块的数量,并将资源节点移入和现有成员业务模块的数量对应的资源池。
进一步地,如需要移入的资源节点成员位图与所要移入的资源池中原有的资源节点成员位图完全匹配,则将需要移入的资源节点下挂的所有组播组节点摘除,全部挂到移入的资源池中原有的位图完全匹配的资源节点上,更新原有的位图完全匹配的资源节点的下挂组播组节点数量,将需要移入的资源节点放置到第0号资源池。
由于本发明不同于现有技术的固定的若干组播组共用同一组播路由表硬件资源的方法,而是可以动态的调整共用同一组播路由表硬件资源的组播组,并且令差异程度小的组播组共用组播路由表的硬件资源。从而可为通信设备的组播信息传输带宽利用率方面带来显著的提升。特别是当通信设备的组播组业务很多,组播组间差异越大,采用现有技术需要在出通道过滤掉的信息越多,带宽的浪费也是越多。而采用本发明则能够达到理想的效果。
附图说明
图1是现有的组播业务转发流程示意图;
图2是现有的共用组播组硬件资源的组播业务转发流程示意图;
图3是组播组节点数据结构图;
图4是资源节点数据结构图;
图5是初始化时的资源池、资源节点、空闲组播组池、组播组节点的组织结构;
图6是任意时刻的资源池、资源节点、空闲组播组池、组播组节点的组织结构;
图7本发明提高组播信息传输带宽利用率的方法流程图;
图8是本发明提高组播信息传输带宽利用率的装置结构图。
具体实施方式
为了实现本发明目的,本发明改变现有技术的固定的若干组播组共用同一组播路由表硬件资源的方法,而是可以动态的调整共用同一组播路由表硬件资源的组播组,并且令差异程度小的组播组共用组播路由表的硬件资源。本发明采用的以动态的、组播组成员相似度高的若干组播组共用同一组播路由表硬件资源的方案,可以提高通信设备的组播信息传输带宽利用率,从而提高组播信息的通信质量。
具体地,业务模块是接口板,而交换模块是交换网板。
本实施例提供一种提高组播信息传输带宽利用率的方法,应用于网络设备上,网络设备包括业务模块和交换模块。业务模块通过交换模块进行数据流通,网络设备支持组播组的业务规格为M,组播组m表示第m个组播组,m≤M;业务模块的总数为K,业务模块k表示第k个业务模块,k≤K,业务模块k’表示第k’个业务模块,k’≤K;交换模块中组播路由表硬件资源的规格为N;M、N和K均为自然数。
每个组播组具有一包含组播组业务信息的组播组节点。
参见图3所示,组播组节点采用单向线性链表的数据结构进行管理。其中每个组播组节点链表用于链表操作。
每个硬件资源具有一包含组播路由表硬件资源信息的资源节点。M个组播组节点挂在N个资源节点下。资源节点采用单向线性链表的数据结构进行管理。
参见图4所示,每个资源节点链表用于本资源节点的链表操作。组播组链表头下挂若干组播组节点,这些组播组共用同一硬件资源。组播组节点数即为共用本硬件资源的组播组数。
N个资源节点分别放入第0至第K号资源池中。第k号资源池中的每个资源节点所具有的成员业务模块的数量为k,k≤K。
本实施例将成员业务模块的数量相同的资源节点放在同一个资源池中,以方便管理硬件资源、实现算法。资源池共K+1个,没有成员业务模块的资源节点都放在第0号资源池中,有1个成员业务模块的资源节点都放在第1号池中,……,有K个成员业务模块的资源节点都放在第K号池中。通过资源池的方式管理资源节点也可以节省后继步骤中遍历资源节点的时间。
记录组播组节点及资源节点的成员信息,并将成员信息采用位图的管理方式进行管理则构成了成员位图。成员位图中的每一位表示一个目标业务模块。比如,对于位图的第k位来说,如果置位则表示业务模块k是成员,如果不置位则表示业务模块k不是成员。资源节点的成员位图是该资源节点下挂所有组播组节点的成员位图的并集。资源节点的成员位图,可以按照该资源节点下挂的所有组播组节点的成员位图通过“按位或”计算得到。不同的两个组播组节点之间或者资源节点之间,以及组播组节点和资源节点之间的成员位图的差异度,等于这两个成员位图“按位异或”操作后置位的位数。
本实施例将没有成员的组播组节点放置在空闲组播组池。空闲组播组池就是一个链表头,下挂若干组播组节点,这些组播组节点的成员业务模块的数量均为0。
由于组播组接收到的命令包括四种情况:申请、释放、增加成员业务模块以及删除成员业务模块。申请命令是将组播组节点从空闲组播组池中移入第0号资源池中的第一个资源节点下。释放命令是将组播组节点从资源池中移入空闲组播组池中。增加成员业务模块以及删除成员业务模块为改变组播组节点的成员位图,组播组的成员业务模块的数量增加或者减少。
参见图5,初始化时的资源池、资源节点、空闲组播组池、组播组节点的组织结构,资源池共K+1个,从第0号资源池到第K号资源池,没有成员的资源节点都放在0号池中。将没有成员的组播组节点放置在空闲组播组池。
参见图6,任意时刻的资源池、资源节点、空闲组播组池、组播组节点的组织结构,第一号资源池具有三个资源节点,这三个资源节点都具有一个成员业务模块;第三号资源池具有一个资源节点,资源节点都具有三个成员业务模块中的;第四号资源池具有三个资源节点,这三个资源节点都具有四个成员业务模块;第五号资源池具有两个资源节点,这两个资源节点都具有五个成员业务模块。特别需要注意的是,资源节点所具有的成员业务模块的数量并不一定和挂在其下的组播组节点的成员业务模块的数量相等,这是由于资源节点的成员位图,是按照该资源节点下挂的所有组播组节点的成员位图通过“按位或”计算得到。比如第四号资源池中的第二个资源节点,其具有四个成员业务模块,但是其下挂的第一个组播组节点的成员业务模块的数量是三个。另外,在资源节点插入时,采用将待插入的资源节点成员位图与原先资源池中的各个资源节点的成员位图从小到大逐个比较的方法,可以令每个资源池中的资源节点按照其成员位图升序排列。这样可以进一步节省后继遍历资源节点所需要的时间。
参见图7,本实施例方法步骤为:
信息变更步骤,如果组播组m的成员业务模块的数量由k变成k’,更新组播组m的成员位图,将组播组m节点从原资源节点上摘除以及判断组播组m的原成员业务模块的数量k是否为0。
最优匹配步骤,比较组播组m的新的成员位图与各资源节点的成员位图,将组播组m的节点添加在最优匹配的资源节点下。
资源更新步骤,如组播组m的原成员业务模块的数量k不为0,更新组播组m所在的新资源节点信息和组播组m的原资源节点信息,更新组播路由表硬件资源的使用情况;如组播组m的原成员业务模块的数量k为0,更新组播组m所在的新资源节点信息,更新组播路由表硬件资源的使用情况。
若组播组m的原成员业务模块的数量k为0,那么只有两种情况:1、组播组m原来在空闲组播组池中:这种情况组播组m原来并不在资源节点下,不需要更新原来的资源节点信息;2、组播组m原来在0号资源池的资源节点下:这个资源池下的资源节点的成员业务模块的数量肯定是0,不需要进行更新。因此,若组播组m的原成员业务模块的数量k为0,则资源更新步骤中不需要更新其原来的资源节点信息。
而组播组m的原成员业务模块的数量k不为0,则资源更新步骤除了更新组播组m所在的新资源节点信息外,还需要更新组播组m所在的原资源节点信息。
最优匹配步骤为:遍历第k’号资源池的各资源节点,将组播组m节点的新的成员位图与各资源节点的成员位图相比较,若找到与组播组m节点的新的成员位图完全相同的资源节点的成员位图,则将组播组m节点挂在找到的资源节点下,执行资源更新步骤。
最优匹配步骤进一步包括:若没有找到与组播组m节点的新的成员位图完全相同的资源节点的成员位图,如第0号资源池中有闲置资源,则将组播组m节点挂在第0号资源池的第一个资源节点下,执行资源更新步骤。
最优匹配步骤进一步包括:如第0号资源池中没有闲置资源,将组播组m节点的新的成员位图与各资源节点的成员位图相比较,如发现差异度等于最佳匹配值δ的资源节点的成员位图,则将组播组m节点挂在发现的资源节点下,执行资源更新步骤。
最佳匹配值δ为本领域技术人员通过现有的数学方法选取。
将组播组m的节点的新的成员位图与各资源节点的成员位图相比较是以第k’号资源池为对称轴,按照逐一向两侧,即k’+1、k’-1、k’+2、k’-2、k’+3、k’-3…的顺序遍历各个资源池中是否存在与组播组m节点的新的成员位图差异度等于最佳匹配值δ的资源节点的成员位图。
遍历的范围可以是在k’±δ范围内的所有资源节点。
最优匹配步骤进一步包括:如没有发现差异度等于最佳匹配值δ的资源节点的成员位图,则将组播组m节点挂在成员位图与组播组m节点的新的成员位图差异度最小的资源节点下,执行资源更新步骤。
资源更新步骤中的更新资源节点信息包括:资源节点下有组播组节点添加或摘除时,重新计算资源节点的成员位图和成员业务模块的数量,并将资源节点移入和现有成员业务模块的数量对应的资源池。
如需要移入的资源节点成员位图与移入的资源池中原有的资源节点成员位图完全匹配,则将需要移入的资源节点下挂的所有组播组节点摘除,全部挂到移入的资源池中原有的位图完全匹配的资源节点上,更新原有的位图完全匹配的资源节点的下挂组播组节点数量,将需要移除的资源节点放置到第0号资源池的尾部,成为空闲硬件资源。
参看图8,一种提高组播信息传输带宽利用率的装置,应用于网络设备上,网络设备包括业务模块和交换模块。业务模块通过交换模块进行数据流通,网络设备支持组播组的业务规格为M,组播组m表示第m个组播组,m≤M;业务模块的总数为K,业务模块k表示第k个业务模块,k≤K,业务模块k’表示第k’个业务模块,k’≤K;交换模块中组播路由表硬件资源的规格为N;M、N和K均为自然数。
每个组播组具有一组播组节点;每个组播路由表硬件资源具有一资源节点;M个组播组节点挂在N个资源节点上。
该装置包括:
信息变更单元,用于如组播组m的成员业务模块的数量由k变成k’,更新组播组m的成员位图,将组播组m节点从原资源节点上摘除以及判断组播组m的原成员业务模块的数量k是否为0。
最优匹配单元,用于比较组播组m的新的成员位图与各资源节点的成员位图,将组播组m的节点添加在最优匹配的资源节点下。
资源更新单元,用于如组播组m的原成员业务模块的数量k不为0,更新组播组m所在的新资源节点信息和组播组m的原资源节点信息,更新组播路由表硬件资源的使用情况;如组播组m的原成员业务模块的数量k为0,更新组播组m所在的新资源节点信息,更新组播路由表硬件资源的使用情况。
N个资源节点分别放入第0至第K号资源池中,第k号资源池中的每个资源节点所具有的成员业务模块的数量为k,k≤K。
最优匹配单元包括:
遍历子单元,遍历第k’号资源池的各资源节点,将组播组m节点的新的成员位图与各资源节点的成员位图相比较。
匹配子单元,若找到与组播组m节点的新的成员位图完全相同的资源节点的成员位图,则将组播组m节点挂在找到的资源节点下,执行资源更新单元。
匹配子单元进一步包括:若没有找到与组播组m节点的新的成员位图完全相同的资源节点的成员位图,如第0号资源池中有闲置资源节点,则将组播组m节点挂在第0号资源池的第一个资源节点下,执行资源更新步骤。
匹配子单元进一步包括:如第0号资源池中没有闲置资源,将组播组m节点的新的成员位图与各资源节点的成员位图相比较,如发现差异度等于最佳匹配值的资源节点的成员位图,则将组播组m节点挂在发现的资源节点下,执行资源更新步骤。
将组播组m的节点的新的成员位图与各资源节点的成员位图相比较是以第k’号资源池为对称轴,按照逐一向两侧遍历各个资源池中是否存在与组播组m节点的新的成员位图差异度等于最佳匹配值的资源节点的成员位图。
匹配子单元进一步包括:如没有发现差异度等于最佳匹配值的资源节点的成员位图,则将组播组m节点挂在成员位图与组播组m节点的新的成员位图差异度最小的资源节点下,执行资源更新步骤。
资源更新单元中的更新资源节点信息包括:资源节点下有组播组节点添加或摘除时,重新计算资源节点的成员位图和成员业务模块的数量,并将资源节点移入和现有成员业务模块的数量对应的资源池。
如需要移入的资源节点成员位图与所要移入的资源池中原有的资源节点成员位图完全匹配,则将需要移入的资源节点下挂的所有组播组节点摘除,全部挂到移入的资源池中原有的位图完全匹配的资源节点上,更新原有的位图完全匹配的资源节点的下挂组播组节点数量,将需要移入的资源节点放置到第0号资源池。
现有技术中的组播组共用硬件资源的时候并没有考虑组播组之间的差异,所以组播组间差异越大,需要在出通道过滤掉的信息越多,带宽的浪费也是越多。而本发明则避免了上述问题,能够达到理想的效果。
以上仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。