专利名称:多播的实现方法
技术领域:
本发明涉及一种网络通信方法,特别是涉及一种多播(multicast,组播)的实现方法。
背景技术:
多播是一种点到多点的通信方式,即由一个发送端将相同的信息发送给多个接收端。通常多播的发送端为局端设备,接收端为用户端设备。传统的组播实现方式是发送端设备要将一个数据包发送给多个接收端设备时, 先将该数据包存入一个多播队列,然后从该多播数据包中得到多播成员组。所述多播成员组即接收该数据包的多个接收端设备。发送端设备根据多播成员组的内容,重复地从多播队列中取出该多播数据包,并将该多播数据包放入各个接收端设备的通信队列。这种组播实现方法对带宽资源和存储空间的浪费较大。如果多播成员组中包括10 个接收端设备,则发送端设备需要将多播数据包复制10份,分别放入这10个接收端设备的输出队列。
发明内容
本发明所要解决的技术问题是提供一种多播的实现方法,可以节约发送端设备的带宽资源和存储空间。为解决上述技术问题,本发明多播的实现方法为,发送端设备要将一个数据包发送给多个接收端设备时,先将该数据包存入一个多播队列,同时为该多播数据包申请一个 ID;发送端设备还为该多播数据包生成一个指向帧,所述指向帧至少包括该多播数据包的 ID和该多播数据包在该多播队列中的存储地址;接着,发送端设备从该多播数据包中得到多播成员组,并将该多播数据包的指向帧放入多播成员组中的每一个接收端设备的输出队列;发送端设备发现接收端设备的输出队列中包含指向帧时,先根据该指向帧中的多播数据包的ID和存储地址找到该多播数据包,再将该多播数据包发送给该接收端设备。根据本发明所述方法,多播数据包只在发送端设备存储一次,多播数据包本身并不进入各个接收端设备的输出队列,而是由多播数据包的指向帧进入各个接收端设备的输出队列。通常多播数据包的指向帧仅需几个字节即可,远小于多播数据包的长度,因而可以显著节约发送端设备的内部处理带宽及内部存储空间。
图1是本发明多播的实现方法的示意图。
具体实施例方式本发明多播的实现方法包括如下步骤
第1步,发送端设备要将一个数据包发送给多个接收端设备时,先将该数据包存入一个多播队列,同时为该多播数据包申请一个ID。多播队列中的每个多播数据包都具有不同的ID。发送端设备还为该多播数据包生成一个指向帧,所述指向帧至少包括该多播数据包的ID和该多播数据包在该多播队列中的存储地址。第2步,请参阅图1,发送端设备从该多播数据包中得到多播成员组,并将该多播数据包的指向帧放入多播成员组中的每一个接收端设备的输出队列。发送端设备发现接收端设备的输出队列中包含指向帧时,先根据该指向帧中的多播数据包的ID和存储地址找到该多播数据包,再将该多播数据包发送给该接收端设备。以下是本发明所述方法的进一步改进。所述方法第1步中,发送端设备还为该多播数据包设置一个复制计数器,该复制计数器的初始值为0。发送端设备还为该多播数据包设置一个完成标志,该完成标志的初始值为“未完成”。在一个典型的实施例中,发送端设备预先设置好多组多播数据包的ID、复制计数器和完成标志,即预留一些存储空间并将其定义为多播数据包的ID、复制计数器和完成标志。一个新的数据包存入多播队列时,从预先设置的多播数据包的ID中申请一个空闲的 ID,从预先设置的复制计数器中申请一个空闲的复制计数器,从预先设置的完成标志中申请一个空闲的完成标志,所述“空闲”指没有被其他多播数据包使用。所述方法第2步中,该多播数据包的指向帧每进入一个接收端设备的输出队列, 该多播数据包的复制计数器加1。该多播数据包的指向帧从每一个接收端设备的输出队列中发出,该多播数据包的复制计数器减1。所述多播数据包的指向帧从一个接收端设备的输出队列中发出,是指先根据该指向帧中的多播数据包的ID和存储地址找到该多播数据包, 再将该多播数据包发送给该接收端设备。当该多播数据包的指向帧已放入多播成员组中的所有接收端设备的输出队列,该多播数据包的完成标志改为“已完成”。发送端设备发现该多播数据包的完成标志为“已完成”、且该多播数据包的复制计数器为0,表示该多播数据包已发送完成,从多播队列中删除该多播数据包,同时释放除该多播数据包的ID,清除复制计数器和完成标志。这样这一组多播数据包的ID、复制计数器和完成标志变为空闲。该多播数据包的指向帧只存储在该多播数据包的多播成员组的输出队列之中,当各个输出队列将指向帧都发出后,所有指向帧就全部被删除了。所述方法第1步中还可增加内容发送端设备要将一个数据包发送给多个接收端设备时,判断多播队列中是否有足够空间存储该数据包。如果多播队列中的空间足够,则将该数据包存入多播队列。如果多播队列中的空间不足,则丢弃该数据包。本发明多播的实现方法,使得每个多播数据包在发送端设备只占用一个存储空间,不会重复存储,从而节约了发送端设备的带宽及存储资源。
权利要求
1.一种多播的实现方法,其特征是,发送端设备要将一个数据包发送给多个接收端设备时,先将该数据包存入一个多播队列,同时为该多播数据包申请一个ID ;发送端设备还为该多播数据包生成一个指向帧,所述指向帧至少包括该多播数据包的ID和该多播数据包在该多播队列中的存储地址;接着,发送端设备从该多播数据包中得到多播成员组,并将该多播数据包的指向帧放入多播成员组中的每一个接收端设备的输出队列;发送端设备发现接收端设备的输出队列中包含指向帧时,先根据该指向帧中的多播数据包的ID和存储地址找到该多播数据包,再将该多播数据包发送给该接收端设备。
2.根据权利要求1所述的多播的实现方法,其特征是,发送端设备还为该多播数据包设置一个复制计数器,初始值为0 ;发送端设备还为该多播数据包设置一个完成标志,初始值为“未完成”;该多播数据包的指向帧每进入一个接收端设备的输出队列,该多播数据包的复制计数器加1 ;该多播数据包的指向帧从每一个接收端设备的输出队列中发出,该多播数据包的复制计数器减1 ;当该多播数据包的指向帧已放入多播成员组中的所有接收端设备的输出队列,该多播数据包的完成标志改为“已完成”;发送端设备发现该多播数据包的完成标志为“已完成”、且该多播数据包的复制计数器为0,表示该多播数据包已发送完成,从多播队列中删除该多播数据包,同时释放该多播数据包的ID,清除复制计数器和完成标志。
3.根据权利要求1所述的多播的实现方法,其特征是,多播队列中的每个多播数据包都具有不同的ID。
4.根据权利要求1所述的多播的实现方法,其特征是,所述多播数据包的指向帧从一个接收端设备的输出队列中发出,是指先根据该指向帧中的多播数据包的ID和存储地址找到该多播数据包,再将该多播数据包发送给该接收端设备。
全文摘要
本发明公开了一种多播的实现方法,发送端设备要将一个数据包发送给多个接收端设备时,先将该数据包存入一个多播队列,同时为该多播数据包申请一个ID;发送端设备还为该多播数据包生成一个指向帧,所述指向帧至少包括该多播数据包的ID和该多播数据包在该多播队列中的存储地址;接着,发送端设备从该多播数据包中得到多播成员组,并将该多播数据包的指向帧放入多播成员组中的每一个接收端设备的输出队列;发送端设备发现接收端设备的输出队列中包含指向帧时,先根据该指向帧中的多播数据包的ID和存储地址找到该多播数据包,再将该多播数据包发送给该接收端设备。本发明可以节约了发送端设备的带宽及存储资源。
文档编号H04L12/18GK102377576SQ201010247929
公开日2012年3月14日 申请日期2010年8月6日 优先权日2010年8月6日
发明者何运锋, 蔡云阳 申请人:高通创锐讯通讯科技(上海)有限公司