CN1941733A - 一种集群通信中的报文群发方法 - Google Patents
一种集群通信中的报文群发方法 Download PDFInfo
- Publication number
- CN1941733A CN1941733A CNA2005101001604A CN200510100160A CN1941733A CN 1941733 A CN1941733 A CN 1941733A CN A2005101001604 A CNA2005101001604 A CN A2005101001604A CN 200510100160 A CN200510100160 A CN 200510100160A CN 1941733 A CN1941733 A CN 1941733A
- Authority
- CN
- China
- Prior art keywords
- message
- sending
- thread
- user
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Telephonic Communication Services (AREA)
Abstract
本发明提供了一种集群通信中的报文群发方法,报文群发功能由发送线程和调度线程共同实现。发送线程收到调度线程的指派任务后,完成报文的发送,如果收到调度线程释放报文的信号,则释放该报文空间,否则将该报文重新入队到某群发队列。调度线程轮询各个发送队列,为队列中等待发送的报文创建指派任务,通知发送线程发送报文,当前指派任务被完成后,调度线程才会给发送线程发放下一个指派任务。本发明方法克服了使用大量复制报文引起的延时所带来的影响,提高数据处理的效率并扩大系统的用户容量。
Description
技术领域
本发明涉及一种无线通信领域的报文群发方法,尤其涉及的是,一种在集群通信中进行报文群发的处理方法。
背景技术
网络处理器是一种专用的、可编程的硬件设备,它结合了RISC处理器的低成本、灵活性以及ASIC芯片的速度和可扩展性等特点。网络处理器主要用于网络数据报文的处理与转发,其通常包括一个内核(嵌入式处理器)和多个I/O处理器(微引擎),每个I/O处理器又包含多个线程;在实现的功能方面,网络处理器的功能通常可以分为数据面和控制面,数据面完成报文的转发,控制面完成报文转发以外的控制管理功能。
集群通信系统是一种专用指挥调度通信系统,系统内的若干用户成为一组,任一用户讲话都可以被组内的任何用户听到,即任一用户的语音帧需要被发送给组内的所用用户。用网络处理器进行语音数据的转发时,通常的处理方法是按照组内用户数,将数据复制多份,并分别发送出去。
报文处理过程中,频繁的内存读写通常都要产生较大的延时,如网络处理器读/写一次内存的时间就远大于其指令周期。因此,大量复制报文的方法会直接影响到报文处理过程的效率,容易成为系统运行的瓶颈。
因此,现有技术存在缺陷,有待于改进和发展。
发明内容
本发明的目的在于提供一种集群通信中的报文群发方法,无需大量复制报文,可用以提高数据处理的效率并扩大系统的用户容量。
本发明的技术方案如下:
一种集群通信中的报文群发方法,其包括至少一调度线程和至少一发送线程,
所述发送线程负责报文发送:在收到调度线程的指派任务后,完成报文的实际发送功能,每发送完一个报文时,如果收到调度线程释放报文的信号,则释放该报文及报文描述符的空间,否则将该报文重新入队到群发队列;
所述调度线程负责控制发出发送请求的时机和方式:所述调度线程轮询各个发送队列:当某个队列有报文等待发送时,为该报文创建指派任务,通知发送线程发送报文,否则通知发送线程释放报文空间;当前指派任务被完成后,调度线程给发送线程发放下一个指派任务。
所述的报文群发方法,其中,所述调度线程具体包括步骤:
a1)轮询各发送队列;
b1)如果某发送队列有报文等待发送,则从所述报文取出报文描述符,否则返回a1步;
c1)根据所述报文描述符确定群发队列信息和所述群发队列的用户数,将所述报文入队到所述群发队列;
d1)为所述报文创建指派任务;
e1)判断用户数是否大于零;如果用户数大于零,进入步骤f1),否则进入步骤i1);
f1)为所述群发队列创建一个新指派任务;
g1)待发送线程清除原指派任务的信息后,将新指派任务的信息赋值于原指派任务;
h1)将用户数减1,返回步骤d1);
i1)给发送进程发出释放信号;
j1)返回步骤a1)。
所述的报文群发方法,其中,所述调度线程每创建一个指派任务后,先查看当前报文是否需要继续发送给其它用户,需要的话,优先为群发队列创建下一个指派任务,否则继续轮询下一个发送队列,通知发送线程释放报文。
所述的报文群发方法,其中,所述发送线程具体包括步骤:
a2)读取指派任务,从指定队列中取出所述报文;
b2)根据所述报文的报文描述符的信息,从相应的群组用户表取出一个用户的信息,将用户的信息封装进报文的净荷;
c2)发送所述报文;
d2)检查释放信号是否存在;如果存在释放信号,进入步骤e2),否则,进入步骤f2);
e2)释放报文和报文描述符空间,删除释放信号;
f2)将所述报文入队到所述群发队列中;
g2)清除指派任务信息;
h2)返回步骤a2)。
所述的报文群发方法,其中,一个调度线程可管理多个发送线程。
所述的报文群发方法,其中,所述群发队列,其结构与发送队列相同,需要群发的所述报文暂存于群发队列中。
所述的报文群发方法,其中,所述群发队列的信息及其用户数的信息存放在报文描述符中。
所述的报文群发方法,其中,所述用户的信息,包括用户的信息和群组用户表中所述用户的下一个用户信息;所述用户的信息,包括报文需要发送到的下一跳IP地址、用户标识。
所述的报文群发方法,其中,所述清除指派任务信息,是将指派任务信息置零。
本发明所提供的一种集群通信中的报文群发方法,实现了集群用户组呼的功能,克服了使用大量复制报文引起的延时所带来的影响,提高了数据处理的效率并扩大系统的用户容量。
附图说明
图1所示为根据本发明的发送队列描述符和群发队列描述符结构说明;
图2所示为根据本发明的队列描述符、队列、报文描述符、报文净荷间的关系;
图3所示为根据本发明的群组用户表的结构;
图4所示为根据本发明的调度线程的处理流程;
图5所示为根据本发明的发送线程的处理流程;
图6所示为根据本发明的群组用户表的一个实施例结构。
具体实施方式
以下结合附图,对本发明的较佳实施例进行较为详细的说明。
本发明的集群通信中的报文群发方法,其中包括了调度线程和发送线程,其中的报文群发功能由负责报文发送的发送线程和负责控制发出发送请求的时机和方式的调度线程共同实现;一个报文在内存中只存在一份,不进行报文的拷贝。
本发明方法中的所述发送线程收到调度线程的指派任务后,完成报文的实际发送功能,每发送完一个报文时,如果收到调度线程释放报文的信号,则释放该报文及报文描述符的空间,否则将该报文重新入队到某群发队列。
所述调度线程轮询各个发送队列,当某个队列有报文等待发送时,为该报文创建指派任务,通知发送线程发送报文,当前指派任务被完成后,调度线程才会给发送线程发放下一个指派任务。调度线程每创建一个指派任务后,先查看当前报文是否需要继续发送给其它用户,需要的话,优先为该群发队列创建下一个指派任务,否则继续轮询下一个发送队列,通知发送线程释放报文。
其中,本发明的以下用语意义为:
发送队列:一般用于存放待发送报文的队列。
群发队列(group_send_queue[key]):发送线程发送完一个报文后,仍需要将该报文发送给其它用户,在继续发送前将报文暂存的队列。该队列的数量和用户组数相同。其中key是区分群组的信息,一个key值对应一组集群用户
发送队列和群发队列结构如附图1、附图2所示,其中图1各个字段的含义为:
队列头指针:指向队列中第一个报文的报文描述符;
队列尾指针:指向队列中最后一个报文的报文描述符;
报文数:显示队列中已有报文的个数;
最大报文数:预设的最大队列长度,当队列长度超过该长度时,将丢弃报文。
群组用户表(group_users_table):记录一个组内各个用户信息的表项,一张group_users_table对应一个群组,表内各个单元存放各个用户不同的信息(如ip地址等),发送线程给每个用户发送报文之前,从该表中取出相应用户的信息进行替换。群组用户表的结构如附图3所示,其中表中的每个单元存放一个用户区别于其它用户的信息,每个单元的长度由需要存放的用户信息量决定。每个单元中各个字段的含义为:下一个用户:指向表中的下一个用户单元;用户N的信息1:该用户不同于其它用户的第一个信息;用户N的信息2:该用户不同于其它用户的第二个信息。
报文描述符中存放用来用来区分群组的key值和群组内用户个数user_count,以及其它报文描述信息。
一个调度线程可服务多个发送队列,在各个发送队列间进行轮询,发现待发送报文时创建指派任务。一个调度线程可管理多个发送线程,也可以有多个调度线程分别管理各个发送线程。
本发明的集群通信中高效报文群发方法的处理过程为:
1)调度线程轮询各个发送队列,当发现某个队列有待发送报文时,从该队列取出一个报文描述符,取出描述符中的key值和用户数user_count,将该报文入队到群发队列group_send_queue[key]中,并给1号发送线程创建发送group_send_queue[key]队列报文的指派任务assign1。
2)调度线程判断user_count是否大于0,是的话,为队列group_send_queue[key]创建指派任务new_assign1,待收到1号发送线程完成了上次指派任务的信号(如全局变量assign1被置0)后,将new_assign1赋给assign1,对用户数user_count进行减1操作,并重新执行本步骤;否则的话给1号发送线程发送释放报文的信号(如给全局变量free1赋一个正值)。
3)1号发送线程收到调度线程的指派任务后,从指定的队列中取出一个报文;根据报文描述符中的key值从相应的group_users_table表中取出一个用户的信息,封装进报文的净荷中,发送该报文。
4)1号发送线程发送完一个报文后,查看是否收到调度线程发出的释放报文信号(如判断全局变量free1是否为正),如果收到该信号,释放报文和报文描述符空间,删除释放报文信号(如将全局变量free1清零),并将指派任务assign1清零;否则的话,根据报文描述符中的key值,将报文入队到group_send_queue[key]队列中,并将指派任务assign1清零。最后发送线程返回到第3步。
5)调度线程继续按照第1步和第2步给其它发送线程创建指派任务assignN,其它发送线程继续按照第3步和第4步执行指派任务。
下面继续结合一个具体的例子对本发明的技术方案的实施做进一步的详细描述:
本发明报文群发方法可以应用到中兴GOTA的PTT调度客户端用户面协议处理模块中,这里使用intel的IXP1200网络处理器实现报文转发功能。
一.发送线程、调度线程及各种队列的说明:
1.发送队列:IXP1200业务处理微引擎处理过的报文,放在发送队列中等待报文发送微引擎发送,共四个发送队列。
2.发送线程、调度线程:使用一个微引擎作为报文发送微引擎,其中共有四个线程,将0号线程分配为调度线程,1、2、3号线程分配为发送线程。
3.群发队列group_send_queue[key]:发送线程发送完一个报文后,仍需要将该报文发送给其它用户的时候,在继续发送前将报文暂存的队列。该队列的数量和用户组数相同。
4.群组用户表group_users_table:记录一个组内各个用户信息的表项,一张group_users_table对应一个群组,该表以及其中各个单元的结构如附图6所示。其中每个用户单元占用三个longword长度,next_user字段指向表中的下一个用户,userN_hop_ip字段为第N个用户的报文需要发送到的下一跳ip地址,userN_A8key为第N个用户的A8key值(GRE通用路由协议规定的值,是用户标识的一种),后两项信息需要封装进报文的净荷中。
5.报文描述符中存放A10key值和群组内用户个数user_count,以及其它报文描述信息。
二.调度线程(0号线程)的处理过程,如图4所示的包括:
第一步:轮询4个发送队列,当发现某个队列有待发送报文时,从该队列取出一个报文描述符,取出描述符中的key值和user_count,将该报文入队到group_send_queue[key]队列中。
第二步:给1号发送线程创建发送group_send_queue[key]队列报文的指派任务assign1。
第三步:判断user_count是否大于0,是的话执行第四步,否则执行第五步。
第四步:为队列group_send_queue[key]创建指派任务new_assign1,待1号发送线程将assign1置0后,将new_assign1赋给assign1,让1号发送线程执行下一个任务。对user_count进行减1操作。转到第三步。
第五步:给变量free1赋1,以此通知1号发送线程释放处理过的报文。
第六步:按照上面的步骤给2号发送线程创建指派任务assign2。
第七步:按照上面的步骤给3号发送线程创建指派任务assign3。
第八步:继续轮询其它发送队列。
三.发送线程(1、2、3号线程)的处理过程,如图5所示的,包括:
这里只描述1号发送线程的处理步骤,2号和3号线程与其完全一致。
第一步:读取指派任务assign1,从指定的队列中取出一个报文;根据报文描述符中的key值从相应的group_users_table表中取出一个用户的userN_hop_ip和userN_A8key,封装进报文的净荷并发送该报文。
第二步:查看free1是否为1,是的话,执行第三步,否则执行第四步。
第四步:根据报文描述符中的key值,将报文入队到group_send_queue[key]队列中。
第五步:给assign1置0。返回第一步,执行下一个指派任务。
以上所述仅为本发明的较佳实施例,并非用来限定本发明,任何熟悉本技术及其领域的人,在不脱离本发明的精神和范畴内,可能作出各种修改或变更,因此本发明的保护范围应以权利要求书所要求保护的范围为准。
Claims (9)
1、一种集群通信中的报文群发方法,其包括至少一调度线程和至少一发送线程,
所述发送线程负责报文发送:在收到调度线程的指派任务后,完成报文的实际发送功能,每发送完一个报文时,如果收到调度线程释放报文的信号,则释放该报文及报文描述符的空间,否则将该报文重新入队到群发队列;
所述调度线程负责控制发出发送请求的时机和方式:所述调度线程轮询各个发送队列:当某个队列有报文等待发送时,为该报文创建指派任务,通知发送线程发送报文,否则通知发送线程释放报文空间;当前指派任务被完成后,调度线程给发送线程发放下一个指派任务。
2、根据权利要求1所述的报文群发方法,其特征在于,所述调度线程具体包括步骤:
a1)轮询各发送队列;
b1)如果某发送队列有报文等待发送,则从所述报文取出报文描述符,否则返回a1步;
c1)根据所述报文描述符确定群发队列信息和所述群发队列的用户数,将所述报文入队到所述群发队列;
d1)为所述报文创建指派任务;
e1)判断用户数是否大于零;如果用户数大于零,进入步骤f1),否则进入步骤i1);
f1)为所述群发队列创建一个新指派任务;
g1)待发送线程清除原指派任务的信息后,将新指派任务的信息赋值于原指派任务;
h1)将用户数减1,返回步骤d1);
i1)给发送进程发出释放信号;
j1)返回步骤a1)。
3、根据权利要求2所述的报文群发方法,其特征在于,所述调度线程每创建一个指派任务后,先查看当前报文是否需要继续发送给其它用户,需要的话,优先为群发队列创建下一个指派任务,否则继续轮询下一个发送队列,通知发送线程释放报文。
4、根据权利要求2所述的报文群发方法,其特征在于,所述发送线程具体包括步骤:
a2)读取指派任务,从指定队列中取出所述报文;
b2)根据所述报文的报文描述符的信息,从相应的群组用户表取出一个用户的信息,将用户的信息封装进报文的净荷;
c2)发送所述报文;
d2)检查释放信号是否存在;如果存在释放信号,进入步骤e2),否则,进入步骤f2);
e2)释放报文和报文描述符空间,删除释放信号;
f2)将所述报文入队到所述群发队列中;
g2)清除指派任务信息;
h2)返回步骤a2)。
5、根据权利要求4所述的报文群发方法,其特征在于,一个调度线程可管理多个发送线程。
6、根据权利要求4所述的报文群发方法,其特征在于,所述群发队列,其结构与发送队列相同,需要群发的所述报文暂存于群发队列中。
7、根据权利要求4所述的报文群发方法,其特征在于,所述群发队列的信息及其用户数的信息存放在报文描述符中。
8、根据权利要求4所述的报文群发方法,其特征在于,所述用户的信息,包括用户的信息和群组用户表中所述用户的下一个用户信息;
所述用户的信息,包括报文需要发送到的下一跳IP地址、用户标识。
9、根据权利要求4所述的报文群发方法,其特征在于,所述清除指派任务信息,是将指派任务信息置零。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005101001604A CN100499581C (zh) | 2005-09-30 | 2005-09-30 | 一种集群通信中的报文群发方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005101001604A CN100499581C (zh) | 2005-09-30 | 2005-09-30 | 一种集群通信中的报文群发方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1941733A true CN1941733A (zh) | 2007-04-04 |
CN100499581C CN100499581C (zh) | 2009-06-10 |
Family
ID=37959531
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005101001604A Expired - Fee Related CN100499581C (zh) | 2005-09-30 | 2005-09-30 | 一种集群通信中的报文群发方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100499581C (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101826999A (zh) * | 2010-04-26 | 2010-09-08 | 瑞斯康达科技发展股份有限公司 | 一种在线报文流量监测及带宽补偿的方法和装置 |
CN101094181B (zh) * | 2007-07-25 | 2010-12-08 | 华为技术有限公司 | 报文入队和出队调度的装置及方法 |
CN101471810B (zh) * | 2007-12-28 | 2011-09-14 | 华为技术有限公司 | 一种在集群环境下实现任务的方法、装置及系统 |
CN104702484A (zh) * | 2013-12-06 | 2015-06-10 | 中兴通讯股份有限公司 | 推送方法及装置 |
-
2005
- 2005-09-30 CN CNB2005101001604A patent/CN100499581C/zh not_active Expired - Fee Related
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101094181B (zh) * | 2007-07-25 | 2010-12-08 | 华为技术有限公司 | 报文入队和出队调度的装置及方法 |
CN101471810B (zh) * | 2007-12-28 | 2011-09-14 | 华为技术有限公司 | 一种在集群环境下实现任务的方法、装置及系统 |
CN101826999A (zh) * | 2010-04-26 | 2010-09-08 | 瑞斯康达科技发展股份有限公司 | 一种在线报文流量监测及带宽补偿的方法和装置 |
CN101826999B (zh) * | 2010-04-26 | 2012-03-28 | 瑞斯康达科技发展股份有限公司 | 一种在线报文流量监测及带宽补偿的方法和装置 |
CN104702484A (zh) * | 2013-12-06 | 2015-06-10 | 中兴通讯股份有限公司 | 推送方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN100499581C (zh) | 2009-06-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1297078C (zh) | 在无线通信系统中提供分组数据业务的方法 | |
CN1112075C (zh) | 在移动无线通信系统中管理和分配无线传输信道的设备与方法 | |
CN1770720A (zh) | 支持多个无线通用串行总线主机的方法和设备 | |
CN1849587A (zh) | 共享处理器和网络接口的多个操作系统 | |
CN1097988C (zh) | Msc中的ussd程序机 | |
CN1108075C (zh) | 无线信道的动态分配的方法 | |
CN1822564A (zh) | 用于有效实时分组传送的自适应队列机制及其自适应队列建立系统 | |
CN1933656A (zh) | 宽带码分多址系统中的紧急呼叫处理方法 | |
CN1787656A (zh) | 通信系统中的时效处理设备和方法 | |
CN1925640A (zh) | 一种通信系统实现前向信道共享的方法 | |
CN1870582A (zh) | 通信网络中对网络地址/端口转换请求进行处理的方法 | |
CN1917667A (zh) | 群发短消息业务中的号码处理系统及处理方法 | |
CN1941733A (zh) | 一种集群通信中的报文群发方法 | |
CN101039468A (zh) | 一种业务调度的方法和装置 | |
CN101068149A (zh) | 提高业务判别效率的方法 | |
CN1946061A (zh) | 一种快速处理报文的方法及装置 | |
CN1449160A (zh) | 用于包括无阻塞交换结构和线路卡接口的系统的包调度 | |
CN1968270A (zh) | 资源接入方法及其装置 | |
CN1863140A (zh) | 一种提高无线通信系统网络资源利用率的方法 | |
CN1870813A (zh) | 信道优先级调度及业务优先级调度实现方法 | |
CN1287561C (zh) | 辅助信道分配方法 | |
CN1286277C (zh) | 网络处理器中核心处理器与微引擎之间的通信方法 | |
CN1129281C (zh) | 利用缓存技术提高ip报文转发速度的方法 | |
CN1925689A (zh) | 一种寻呼消息处理方法及装置 | |
CN1666559A (zh) | 用于建立通信链路的无线通信终端,方法,用于执行所述方法的程序,及含有所述程序的记录介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090610 Termination date: 20150930 |
|
EXPY | Termination of patent right or utility model |