CN104104618B - 一种多播报文调度方法及装置 - Google Patents
一种多播报文调度方法及装置 Download PDFInfo
- Publication number
- CN104104618B CN104104618B CN201410386740.3A CN201410386740A CN104104618B CN 104104618 B CN104104618 B CN 104104618B CN 201410386740 A CN201410386740 A CN 201410386740A CN 104104618 B CN104104618 B CN 104104618B
- Authority
- CN
- China
- Prior art keywords
- output port
- multicast message
- sent
- message
- multicast
- 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.)
- Active
Links
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Small-Scale Networks (AREA)
Abstract
本发明提供了一种多播报文调度方法及装置,包括确定接收到的待发送报文为多播报文,然后根据该多播报文的多播组号确定该多播组包含的多个输出端口,当输出端口空闲且接收端口有发送至该输出端口的多播报文时向输出端口发送连接请求,在得到输出端口响应后,将该多播报文调度至输出端口后发送,将未被发送到的输出端口进行记录,并重复以上过程,直至将多播报文发送至该多播组包含的每一预发送的输出端口。采用本发明的技术方案,能够避免多播报文发生死锁。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种多播报文调度方法及装置。
背景技术
在当前的大多数实现中,单播报文和多播报文采用的结构和系统是独立的,分别有自己的网络。
对于多播报文,在多数实现中总是要等所有同组目的端口响应之后才发送,当多个多播报文同时等待发送,且同一个目的端口属于多个多播组时,容易发生死锁。
现有技术的不足在于:现有多播报文的调度方法容易发生死锁,且现有技术中缺乏简单易于实现的避免死锁的方案。
发明内容
本发明实施例中提供了一种多播报文调度方法及装置,用以避免死锁。
本发明实施例中提供了一种多播报文调度方法,包括步骤:
将每一接收端口接收到的待发送报文置于该接收端口的缓冲区内缓存;
在确定输出端口端口空闲时,通知各接收端口该输出端口处于可发送状态;
确定各接收端口缓冲区内缓存的待发送报文中包括多播报文;
根据各接收端口的多播报文的多播组号确定该接收端口的多播报文欲发送的输出端口;
在确定接到通知的各接收端口缓冲区内的多播报文的欲发送的输出端口是空闲时,向输出端口发送连接请求,并在得到输出端口响应后,将多播报文调度至输出端口后发送,直至多播报文发送至每一欲发送的输出端口。
本发明还实施例中提供了一种多播报文调度装置,包括:分别位于各接收端口的请求模块,以及分别位于各输出端口的仲裁模块,其中:
请求模块,用于将每一接收端口接收到的待发送报文置于该接收端口的缓冲区内缓存;
仲裁模块,用于在确定输出端口空闲时,通知各接收端口该输出端口处于可发送状态;
请求模块进一步用于确定各接收端口缓冲区内缓存的待发送报文中包括多播报文;
请求模块进一步用于根据各接收端口的多播报文的多播组号确定该接收端口的多播报文欲发送的输出端口;
请求模块进一步用于在确定接到通知的各接收端口缓冲区内的多播报文的欲发送的输出端口是空闲时,向输出端口发送连接请求,并在得到输出端口响应后,将多播报文调度至输出端口后发送,直至多播报文发送至每一欲发送的输出端口。
本发明的有益效果是:本发明实施例中提供的多播报文调度方法和装置,通过先确定接收到的待发送报文为多播报文,然后根据该多播报文的多播组号确定该多播组包含的多个输出端口,当输出端口空闲且接收端口有发送至该输出端口的多播报文时向输出端口发送连接请求,在得到输出端口响应后,将该多播报文调度至输出端口后发送,将未被发送到的输出端口进行记录,并重复以上过程,直至将多播报文发送至该多播组包含的每一预发送的输出端口。采用本发明实施例中的技术方案,能够避免多播报文发生死锁。
附图说明
下面将参照附图描述本发明的具体实施例,其中:
图1为本发明实施例中的多播报文调度方法的使用流程示意图。
图2为本发明实施例中的多播报文调度装置的实施结构示意图。
具体实施方式
为了使本发明实施例中的技术方案及优点更加清楚明白,以下结合附图对本发明的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本发明的一部分实施例,而不是所有实施例的穷举。
发明人在发明过程中注意到:在当前的大多数实现中,单播报文与多播报文采用的结构和系统是独立的,分别有自己的网络,这样的方式消耗资源多。并且,在多播报文的实现中,大多数情况下,要等同组目的端口响应之后才发送,当多个多播报文同时等待发送,且同一个目的端口属于多个多播组时,容易发生死锁。
针对上述不足,本发明实施例中提供了一种多播报文调度方法及装置,下面进行说明。
图1为本发明实施例中多播报文调度方法的使用流程示意图,如图所示,可以包括步骤:
步骤101、将每一接收端口接收到的待发送报文置于该接收端口的缓冲区内缓存;
步骤102、在确定输出端口空闲时,通知各接收端口该输出端口处于可发送状态;
步骤103、确定各接收端口缓冲区内缓存的待发送报文中包括多播报文;
步骤104、根据各接收端口的多播报文的多播组号确定该接收端口的多播报文欲发送的输出端口;
步骤105、在确定接到通知的各接收端口缓冲区内的多播报文的欲发送的输出端口是空闲时,向输出端口发送连接请求,并在得到输出端口响应后,将多播报文调度至输出端口后发送,直至多播报文发送至每一欲发送的输出端口。
具体实施中,将每个接收端口接收到的待发送的多播报文放入缓冲区,在输出端口空闲时发出请求,若报文所属多播组的所有输出端口均不空闲,则进入等待状态。其中,输出端口按现有机制能够获知自己是否空闲,在空闲时,可以通知所有接收端口自己处于空闲,接到通知后,检查接收端口缓冲区内是否有可以发送至此空闲端口的多播报文,在当输出端口空闲且缓冲区内有输出端口的多播报文时,发出连接请求。实施中可以用握手的方式实现接收端口与输出端口之间的交互。
为了便于理解,实施例中会提到“目的端口”这一用语,该用语主要是在从报文角度描述时采用,表达的是接收端口中的某个报文总会有一个输出端口是其“目的端口”。例如,上述内容也可描述成:将每个接收端口接收到的待发送的报文放入缓冲区,在报文的目的端口空闲时发出请求,若目的端口不空闲,则进入等待状态。输出端口在空闲时,可以通知所有接收端口自己处于空闲,接到通知后,检查接收端口缓冲区内是否有可以发送至此空闲输出端口的多播报文,在当输出端口空闲且缓冲区内有目的端口为此输出端口的多播报文时,向输出端口发出请求。
另外,对于多播报文,不是等多播报文多播组号确定的的所有欲发送输出端口都空闲时,才向所有欲发送输出端口同时发出请求,而是只要有空闲的输出端口就请求,因此,一个多播报文可能经过多次发送。
具体实施中,由于一个多播报文可能经过多次发送,多播报文缓冲区没有采用FIFO(First Input First Output,先入先出队列),可以采用随机访问的RAM(Random-Access Memory,随机存取存储器)。
另外,本发明实施例中缓冲区既可以存放多播报文,也可以存放单播报文,当有单播时,向其输出端口发送;当有多播时,则要向多播组的所有输出端口都发送完毕之后,才发送下一个报文。
实施中,可以利用位图来记录多播报文的发送状态,以确定接收端口缓冲区内多播报文是否有未被发到的输出端口,其中位图的位数为输出端口的数目。
具体实施中,位图可以仅用于多播报文,用来记录多播报文发送是否完毕,所有作为该报文目的端口的输出端口是否均被发到。对于每个要发送的多播报文,位图中多播报文的多播组内输出端口对应的位为1,发送成功的对应位清为0。只要位图中还有为1的位,则重复请求/应答过程,直至多播报文发送至每一欲发送的目的端口。
实施中,向多播报文的输出端口发送连接请求的周期小于向单播报文的输出端口发送连接请求的周期。
具体实施中,由于为避免队头阻塞通常采用多个虚通道等方式来提高单播的带宽利用率,在实现中,需要同时根据多个队列的报文来决定请求的端口,受限于电路复杂度,这个过程往往不能在一个周期内完成,而多播则一般不设虚通道,可以更快的完成请求,因此,也就是说,发出单播请求要比发出多播请求的时间长。利用这个特性,不使用显式的优先级,就可以让多播报文具有更高的优先级。这可以简化仲裁器即仲裁模块的设计,仲裁器不需区分单播或多播。根据前面的设计,不管多播还是单播,只有当目的端口处于空闲状态后,才发起请求。假设单播报文从目的端口处于空闲到发出请求需要s个周期,多播报文需要t个周期,s>t。再假设端口X有一个目的端口为d的单播报文,端口Y有一个多播报文,目的端口也包含d。那么,当端口d处于空闲后,X和Y都会发出请求,但X的请求要晚于Y,相差(t-s)个周期。由于仲裁器不区分请求类型,必然较早的请求被响应,因此Y被成功,X只能进入等待。这样,虽然没有显式的优先级,多播报文实际上具有更高的优先级。
实施中,将多播报文向输出端口发送将要结束时,可以提前对属于该多播组的其他空闲的输出端口发出连接请求。
具体实施中,一个多播报文从发起请求到仲裁结束到发送通常需要花费若干周期,为了减少发送多播报文之间的间隔,提高吞吐率,本发明实施例中采用提前发送多播报文结束信号的方式。所谓提前发送结束,就是说在多播报文的发送过程中,当报文在结束之前,就提前发出“数据即将结束”等信息的通知,等仲裁结束时,上个报文刚结束,可以马上启动向下一个目的端口发送报文。也就是说,在多播报文的一次发送过程即将结束时,提前对下一个属于该多播组且空闲的输出端口发出请求;若被仲裁到,则待发送过程一结束,可以立即启动下一轮发送。
实施中,在向所述输出端口发送连接请求之后,可以在接到请求的输出端口上,对各接收端口的请求进行仲裁后,确定该输出端口响应的接收端口。
也即,在向所述输出端口发出请求之后,输出端口根据某种策略对请求给出响应。该策略可以是轮转调度,也可以是其他相对公平的仲裁策略。这里,可能在多个接收端口上同时向同一个输出端口发出请求,而在输出端口上只能响应其中的一个,那些没有获得响应的多播报文则放弃请求,进入等待状态,接收端口持续检查缓冲区中的多播报文,当其中某个多播报文的作为该报文目的端口的输出端口空闲(实际上,只有一个多播都发送完后,才启动下一个多播报文)后,立即发起请求。
下面结合一个具体的实施示例来进行说明。
对于多播报文,在接收端口上,可能同时向多个目的端口发出请求。多播报文采用握手的方式实现接收端口与输出端口之间的交互。在接收端口上根据多播组号查得多播组包含的输出端口,记录在一个N位的位图中,N为作为该报文目的端口的输出端口数目,其中为1的位表示该多播报文需要发送到的目的端口。然后向那些空闲的目的端口(即只有空闲信号有效的输出端口,不是多播组中的所有输出端口)发出请求。对于成功获得响应的端口,在接收端口上将报文发送到这些目的端口,并将位图中相应的位清为0。只要位图中还有为1的位,则重复上述请求/应答过程。因此,一个多播报文可能经过多次发送才能到达所有的目的端口。
多播报文这种多次发送的方式可以避免死锁。考虑下面这种情况。假设端口X和端口Y分别有一个多播报文等待发送,且两个多播报文的目的端口都包含d和e,如果采用传统的方法,X和Y都要等待d和e响应后才能发送;如果端口d响应X,端口e响应Y,那么X和Y将死锁。采用多次发送的方式则不管响应结果如何,最终都能够成功发送。
基于同一发明构思,本发明实施例中还提供了一种多播报文调度装置,由于该装置解决问题的原理与一种多播报文调度方法相似,因此该装置的实施可以参见多播报文调度方法的实施,重复之处不再赘述。
图2为本发明实施例中多播报文调度装置的实施结构示意图,可以包括:分别位于各接收端口的请求模块(如图所示,分别标记为2011、2012至201N),以及分别位于各输出端口的仲裁模块(如图所示,分别标记为2021、2022至202N),其中:
请求模块,用于将每一接收端口接收到的待发送报文置于该接收端口的缓冲区内缓存;
仲裁模块,用于在确定输出端口空闲时,通知各接收端口该输出端口处于可发送状态;
请求模块进一步用于确定各接收端口缓冲区内缓存的待发送报文中包括多播报文;
请求模块进一步用于根据各接收端口的多播报文的多播组号确定该接收端口的多播报文欲发送的输出端口;
请求模块进一步用于在确定接到通知的各接收端口缓冲区内的多播报文的欲发送的输出端口是空闲时,向输出端口发送连接请求,并在得到输出端口响应后,将多播报文调度至输出端口后发送,直至多播报文发送至每一欲发送的输出端口。
进一步的,请求模块可以用于利用位图来记录多播报文的发送状态,以确定接收端口缓冲区内多播报文是否有未被发到的输出端口,其中位图的位数为输出端口的数目。
进一步的,请求模块可以用于在发送连接请求时,向多播报文的输出端口发送连接请求的周期小于向单播报文的输出端口发送连接请求的周期。
进一步的,请求模块可以用于在将多播报文调度向输出端口发送将要结束时,提前对属于该多播组的其他空闲的输出端口发出连接请求。
进一步的,仲裁模块可以用于在向所述输出端口发送连接请求之后,在接到请求的输出端口上,对各接收端口的请求进行仲裁后,确定该输出端口响应的接收端口。
为了描述的方便,以上所述多播报文调度装置的各部分以功能分为各种部件或单元分别描述。当然,在实施本发明时可以把各部件或单元的功能在同一个或多个软件或硬件中实现。
本发明实施例中提供的多播报文调度方法和装置,通过先确定接收到的待发送报文为多播报文,然后根据该多播报文的多播组号确定该多播组包含的多个目的端口,当目的端口空闲且接收端口有发送至该目的端口的多播报文时向输出端口发送连接请求,在得到输出端口响应后,将该多播报文调度至输出端口后发送,将未被发送到的目的端口进行记录,并重复以上过程,直至将该多播组包含的目的端口均被发送到。采用本发明实施例中的技术方案,能够避免多播报文发生死锁。
本发明实施例中提供的多播报文调度方法和装置,与单播报文共用同一个交换网络,单播报文和多播报文经过同一个数据通路达到目的端口,这样节省资源消耗。同时利用单播请求时间先后获得隐式的优先级,简化了仲裁器的设计。
以上实施例仅用以说明本发明的技术方案,而非对其进行限制。因此,在不背离本发明的精神及其实质的情况下,本领域技术人员可作出各种改变、替换和变型。很显然,但这些改变、替换和变型都应涵盖于本发明权利要求的保护范围之内。
Claims (10)
1.一种多播报文调度方法,其特征在于,所述方法包括步骤:
将每一接收端口接收到的待发送报文置于该接收端口的缓冲区内缓存;
在确定输出端口空闲时,通知各接收端口该输出端口处于可发送状态;
确定各接收端口缓冲区内缓存的待发送报文中包括多播报文;
根据各接收端口的多播报文的多播组号确定该接收端口的多播报文欲发送的输出端口;
在确定接到通知的各接收端口缓冲区内的多播报文的欲发送的输出端口是空闲时,向输出端口发送连接请求,并在得到输出端口响应后,将多播报文调度至输出端口后发送,直至多播报文发送至每一欲发送的输出端口。
2.如权利要求1所述的多播报文调度方法,其特征在于,利用位图来记录多播报文的发送状态,以确定接收端口缓冲区内多播报文是否有未被发到的输出端口,其中位图的位数为输出端口的数目。
3.如权利要求1至2任一所述的多播报文调度方法,其特征在于,向多播报文的输出端口发送连接请求的周期小于向单播报文的输出端口发送连接请求的周期。
4.如权利要求1所述的多播报文调度方法,其特征在于,所述将多播报文调度至输出端口后发送将要结束时,进一步包括:提前对属于该多播组的其他空闲的输出端口发出连接请求。
5.如权利要求4所述的多播报文调度方法,其特征在于,在向所述输出端口发送连接请求之后,进一步包括:
在接到请求的输出端口上,对各接收端口的请求进行仲裁后,确定该输出端口响应的接收端口。
6.一种多播报文调度装置,其特征在于,包括:分别位于各接收端口的请求模块,以及分别位于各输出端口的仲裁模块,其中:
请求模块,用于将每一接收端口接收到的待发送报文置于该接收端口的缓冲区内缓存;
仲裁模块,用于在确定输出端口空闲时,通知各接收端口该输出端口处于可发送状态;
请求模块进一步用于确定各接收端口缓冲区内缓存的待发送报文中包括多播报文;
请求模块进一步用于根据各接收端口的多播报文的多播组号确定该接收端口的多播报文欲发送的输出端口;
请求模块进一步用于在确定接到通知的各接收端口缓冲区内的多播报文的欲发送的输出端口是空闲时,向输出端口发送连接请求,并在得到输出端口响应后,将多播报文调度至输出端口后发送,直至多播报文发送至每一欲发送的输出端口。
7.如权利要求6所述的多播报文调度装置,其特征在于,请求模块进一步用于利用位图来记录多播报文的发送状态,以确定接收端口缓冲区内多播报文是否有未被发到的输出端口,其中位图的位数为输出端口的数目。
8.如权利要求6至7任一所述的多播报文调度装置,其特征在于,请求模块进一步用于在发送连接请求时,向多播报文的输出端口发送连接请求的周期小于向单播报文的输出端口发送连接请求的周期。
9.如权利要求8所述的多播报文调度装置,其特征在于,请求模块进一步用于在将多播报文调度至输出端口后发送将要结束时,提前对属于该多播组的其他空闲的输出端口发出连接请求。
10.如权利要求9所述的多播报文调度装置,其特征在于,仲裁模块进一步用于在向所述输出端口发送连接请求之后,在接到请求的输出端口上,对各接收端口的请求进行仲裁后,确定该输出端口响应的接收端口。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410386740.3A CN104104618B (zh) | 2014-08-07 | 2014-08-07 | 一种多播报文调度方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410386740.3A CN104104618B (zh) | 2014-08-07 | 2014-08-07 | 一种多播报文调度方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104104618A CN104104618A (zh) | 2014-10-15 |
CN104104618B true CN104104618B (zh) | 2017-10-17 |
Family
ID=51672425
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410386740.3A Active CN104104618B (zh) | 2014-08-07 | 2014-08-07 | 一种多播报文调度方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104104618B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6947433B2 (en) * | 2000-09-21 | 2005-09-20 | Avici Systems, Inc. | System and method for implementing source based and egress based virtual networks in an interconnection network |
CN101815025A (zh) * | 2009-02-24 | 2010-08-25 | 华为技术有限公司 | 单播多播的调度方法、装置和系统 |
CN103023669A (zh) * | 2012-12-28 | 2013-04-03 | 中国航空工业集团公司第六三一研究所 | 基于交换网络的一种广播调度方法 |
-
2014
- 2014-08-07 CN CN201410386740.3A patent/CN104104618B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6947433B2 (en) * | 2000-09-21 | 2005-09-20 | Avici Systems, Inc. | System and method for implementing source based and egress based virtual networks in an interconnection network |
CN101815025A (zh) * | 2009-02-24 | 2010-08-25 | 华为技术有限公司 | 单播多播的调度方法、装置和系统 |
CN103023669A (zh) * | 2012-12-28 | 2013-04-03 | 中国航空工业集团公司第六三一研究所 | 基于交换网络的一种广播调度方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104104618A (zh) | 2014-10-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5790545A (en) | Efficient output-request packet switch and method | |
CN105812287B (zh) | 分组交换网络中的有效电路 | |
US7505410B2 (en) | Method and apparatus to support efficient check-point and role-back operations for flow-controlled queues in network devices | |
CN101867511B (zh) | 流控帧发送方法、相关设备及系统 | |
CN107391271A (zh) | 一种基于消息队列系统的延时任务触发方法和装置 | |
CN101262501B (zh) | 一种多核系统中的核间通信方法和一种多核系统 | |
CN102298539A (zh) | 一种用于分布式并行处理的共享资源调度方法及系统 | |
US7142555B2 (en) | Method and apparatus for switching data using parallel switching elements | |
CN103023669A (zh) | 基于交换网络的一种广播调度方法 | |
CN104104617B (zh) | 一种报文仲裁方法及装置 | |
WO2010115360A1 (zh) | 一种数据交换方法和设备 | |
US8589593B2 (en) | Method and apparatus for processing protocol messages for multiple protocol instances | |
CN104333516A (zh) | 用于组合输入交叉点缓存交换结构的旋转轮训调度方法 | |
US20040081108A1 (en) | Arbitration system | |
CN114531488A (zh) | 一种面向以太网交换器的高效缓存管理系统 | |
CN104104618B (zh) | 一种多播报文调度方法及装置 | |
CN101459598A (zh) | 实现分组交换的方法及其系统 | |
Liu et al. | Packet scheduling in a low-latency optical interconnect with electronic buffers | |
CN115344522B (zh) | 消息转换通道、消息转换装置、电子设备和交换设备 | |
US9703739B2 (en) | Return available PPI credits command | |
KR20040055312A (ko) | 간단한 파이프라인 방식을 이용한 입력 버퍼형 스위치 및그 경합 방법 | |
EP1561312B1 (en) | Method and apparatus for processing superframes using an arbitration system | |
CN109522130A (zh) | 基于共享缓存的逆向调度方法 | |
CN108650189A (zh) | 一种流量平衡控制方法及装置 | |
US20050213925A1 (en) | Fiber channel switching system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220722 Address after: 100089 building 36, courtyard 8, Dongbeiwang West Road, Haidian District, Beijing Patentee after: Dawning Information Industry (Beijing) Co.,Ltd. Patentee after: DAWNING INFORMATION INDUSTRY Co.,Ltd. Address before: 100193 building 36, Zhongguancun Software Park, 8 North East West Road, Haidian District, Beijing. Patentee before: Dawning Information Industry (Beijing) Co.,Ltd. |
|
TR01 | Transfer of patent right |