CN100359888C - 一种数据轮询调度方法 - Google Patents
一种数据轮询调度方法 Download PDFInfo
- Publication number
- CN100359888C CN100359888C CNB2003101166218A CN200310116621A CN100359888C CN 100359888 C CN100359888 C CN 100359888C CN B2003101166218 A CNB2003101166218 A CN B2003101166218A CN 200310116621 A CN200310116621 A CN 200310116621A CN 100359888 C CN100359888 C CN 100359888C
- Authority
- CN
- China
- Prior art keywords
- data
- packet
- passage
- length
- buffer storage
- 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.)
- Expired - Fee Related
Links
Images
Abstract
本发明涉及一种数据轮询调度方法。在每一通道中,先按以下方法对其收到的每一个数据包进行处理,然后再进行正常的轮询调度:检查每一个数据包的长度是否小于其所在通道的缓存量;是则将该数据包直接传送到该通道的缓存中,再接收下一个数据包;否则将该数据包截断,且截断位置前面的数据长度小于该通道缓存量;其中将截断位置前面的数据直接传送到该通道的缓存中,并构造一个新的包尾传送到该通道的缓存中,与已传送到缓存中的数据一起组成一个完整的数据包;然后将截断位置后面的数据丢弃,再接收下一个数据包。本发明的方法可保证传送到通道缓存中的每一个数据包的长度均小于通道缓存量,从而使调度器的效率都可以达到100%。
Description
技术领域
本发明涉及数据传输技术,更具体地说,涉及一种由调度器对多个通道传来的数据进行轮询调度的方法。
背景技术
在逻辑设计中,经常需要将数据从多端口调度到单端口,比较常用的方法为按包进行Round Robin(轮询)调度,即对多个通道依次判断,如果某一通道有数据包则对其进行调度,没有则跳过。但这种方法有一个难以解决的问题,如果因为线路故障或者其他原因而产生了超出通道中缓冲存储器(以下简称缓存)的存储量的数据包,则会造成调度速率的显著下降。
如图1所示,现有的按包Round Robin调度技术中,调度器依次轮询A、B、C三个通道,如果A通道有数据即读取并发送A通道数据,直到发完当前数据包;然后再轮询下一个B通道,如果B通道有数据即发送B通道数据;然后C通道,依次轮询。并且要求调度器的出口速率D必须大于3个通道的入口速率A、B、C之和。
由于按包Round Robin调度技术必须调度完当前通道的数据包之后才会调度其他通道,并且各个通道的缓存量也是有限的,如果当前来的数据包大于通道的缓存量,则会降低调度器的性能。以A通道为例,假设:A通道的速率为100Mbps,调度器的速率为300Mbps,A通道的缓存量为1Mbits,且当前传来的数据包为3Mbits。如果调度器能够100%的进行调度,那么实际调度时间为3Mbits/300Mbps=10ms,但实际上由于A通道的缓存只有1Mbits,不能将数据包一次全部存放,则实际调度时间会增加到20ms,相当于调度器性能下降了50%,如果数据包超过3Mbits,则会造成调度器性能的进一步下降。
发明内容
本发明要解决的技术问题是要在不增加通道缓存量的情况下,使超过通道缓存量的大数据包不会影响调度器的性能,从而保证调度器的效率可达到100%。
本发明解决其技术问题所采用的技术方案是,在每一通道中,先按以下方法对其收到的每一个数据包进行处理,然后再进行正常的轮询调度:
检查每一个数据包的长度是否小于其所在通道的缓存量;
是则将该数据包直接传送到该通道的缓存中,再接收下一个数据包;
否则将该数据包截断,且截断位置前面的数据长度小于该通道缓存量;其中将截断位置前面的数据直接传送到该通道的缓存中,并构造一个新的包尾传送到该通道的缓存中,与已传送到缓存中的数据一起组成一个完整的数据包;然后将截断位置后面的数据丢弃,再接收下一个数据包。
在本发明所述的方法中,可在每一个通道的缓存前面设有一个超长包过滤模块,所述超长包过滤模块按以下具体步骤对其收到的每一个数据包进行处理:
(1)判断是否检测到一个新数据包的包头,是则进入下一步骤,否则继续等待;
(2)将该数据包的包头及后续数据依次传送到该通道的缓存中;(3)对所传送数据的长度进行计数,并判断已传送数据的长度是否小于预定长度,是则执行步骤(4),否则跳到步骤(5),其中所述预定长度小于该通道的缓存量、并大于该通道缓存量减去一个包尾长度所得的差值;(4)再判断是否检测到该数据包的包尾,是则将其传送到该通道的缓存中,与已传送到缓存中的数据一起组成一个完整的数据包,再跳到步骤(7);否则回到步骤(2);(5)构造一个新的包尾并将其传送到该通道的缓存中,与已传送到缓存中的数据一起组成一个完整的数据包;(6)再判断是否检测到该数据包的包尾,是则进入步骤(7),否则继续等待;(7)结束对该数据包的处理,回到步骤(1)。
采用本发明的技术方案可保证传送到通道缓存中的每一个数据包的长度均小于通道缓存量,从而有效地克服超过通道缓存量的大数据包对调度器性能的影响,显著提高调度器的效率,保证任何时候调度器的效率都可以达到100%,这在很多对调度器速度敏感的场合显得至关重要。另外,通过合理地设置通道缓存量,还可以保证正常数据包的通过率。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是现有技术中调度器与各通道之间的关系示意图;
图2是本发明一个优选实施例中调度器与各通道之间的关系示意图;
图3是本发明一个优选实施例中对每一个数据包进行处理的流程图。
具体实施方式
在轮询调度技术中,对于每一个通道,其缓存量的大小通常略大于其所要接收的正常数据包的长度,如果某一数据包的长度大于其所在通道的缓存量,则可能是因线路故障或者其他原因而导致出错,其中,正常长度之后的数据是无效数据,可将其丢弃。本发明的方法正是基于这一点来达到其目的的。
如图2所示,要实施本发明的方法,需要在各个通道的缓存之前增设一个超长包过滤模块,由该模块对其接收到的每一个数据包进行处理,以保证传送到缓存中的数据包的长度总是小于其缓存量。该超长包过滤模块可对数据包的包头和包尾进行检测;且其中还设有一个用于对所传送的数据长度进行计数的计数器,该计数器每传送N bit自动加1(其中N可为1或其它整数);该计数器计满则表示已传送的数据达到了预定长度,该预定长度应小于该通道的缓存量、并大于该通道缓存量减去一个包尾长度所得的差值。
如图3所示,以其中的A通道为例,其超长包过滤模块按以下具体步骤工作:
步骤101、判断是否检测到一个新数据包的包头,是则进入下一步骤,否则继续等待;
步骤102、当检测到一个新数据包时,将该数据包的包头及后续数据依次传送到该通道的缓存中。
步骤103、在传送包头的同时,计数器开始对所传送数据的长度进行计数,每传送N bit数据,该计数器自动加1。
步骤104、在计数器每次自动加1之后,判断其是否仍未计满,是则执行步骤105,否则跳到步骤107。
步骤105、此时计数器仍未计满,表示已传送数据的长度小于预定长度,需要再判断是否检测到该数据包的包尾,是则执行步骤106;否则回到步骤102,继续将该数据包的后续数据依次传送到该通道的缓存中。也就是说,在已传送数据的长度等于预定长度之前,如果未检测到包尾,则会重复上述步骤102-104;
步骤106、将该包尾传送到该通道的缓存中,与已传送的数据一起组成一个完整的数据包,然后跳到步骤109。也就是说,在已传送数据的长度等于预定长度之前,如果检测到包尾,表示该数据包的长度小于通道的缓存量,超长包过滤模块将其正常传送到通道的缓存中,不需要进行后面的截断操作。
步骤107、此时计数器已计满,表示已传送数据的长度达到了预定长度,需要构造一个新的包尾并将其传送到该通道的缓存中,该新包尾与已传送到缓存中的数据一起组成一个完整的数据包,其长度小于通道的缓存量。由于预定长度小于该通道的缓存量、并大于该通道缓存量减去一个包尾长度所得的差值,因此,如果已传送数据的长度达到预定长度,则表示该数据包的长度大于通道的缓存量,需要对其进行截断操作。
步骤108、再判断是否检测到该数据包的包尾,如果未检测到包尾则表示超长包过滤模块还未收完该数据包,需要继续等待;如果检测到包尾则表示已收完该数据包;本步骤所收到的后续数据不会被传送到通道的缓存中,而是被丢弃,也就是说,大于缓存量的后面部分数据都会被丢弃。
步骤109、结束对该数据包的处理,回到步骤101,等待下一个数据包。
通过上述步骤,可根据每一个数据包的长度决定是否需要进行截断处理,将每一个长度大于通道缓存量的数据包截断为两部分,其中截断位置前面的数据直接传送到该通道的缓存中,后面的数据包则直接丢弃,从而保证传送到通道缓存中的每一个数据包的长度均小于通道缓存量,使调度器的效率达到100%。
Claims (2)
1、一种数据轮询调度方法,其中由调度器依次轮询各个通道,如果某一通道的缓存中有数据,则进行调度,其特征在于,在每一通道中,按以下方法对其收到的每一个数据包进行处理:
检查每一个数据包的长度是否小于其所在通道的缓存量:
是则将该数据包直接传送到该通道的缓存中,再接收下一个数据包;
否则将该数据包截断,且截断位置前面的数据长度小于该通道缓存量;其中将截断位置前面的数据直接传送到该通道的缓存中,并构造一个新的包尾传送到该通道的缓存中,与已传送到缓存中的数据一起组成一个完整的数据包;然后将截断位置后面的数据丢弃,再接收下一个数据包。
2、根据权利要求1所述的方法,其特征在于,在每一个通道的缓存前面设有一个超长包过滤模块,所述超长包过滤模块按以下具体步骤对其收到的每一个数据包进行处理:
(1)判断是否检测到一个新数据包的包头,是则进入下一步骤,否则继续等待;
(2)将该数据包的包头及后续数据依次传送到该通道的缓存中;
(3)对所传送数据的长度进行计数,并判断已传送数据的长度是否小于预定长度,是则执行步骤(4),否则跳到步骤(5),其中所述预定长度小于该通道的缓存量、并大于该通道缓存量减去一个包尾长度所得的差值;
(4)再判断是否检测到该数据包的包尾,是则将其传送到该通道的缓存中,与已传送到缓存中的数据一起组成一个完整的数据包,再跳到步骤(7);否则回到步骤(2);
(5)构造一个新的包尾并将其传送到该通道的缓存中,与已传送到缓存中的数据一起组成一个完整的数据包;
(6)再判断是否检测到该数据包的包尾,是则进入步骤(7),否则继续等待;
(7)结束对该数据包的处理,回到步骤(1)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2003101166218A CN100359888C (zh) | 2003-11-27 | 2003-11-27 | 一种数据轮询调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2003101166218A CN100359888C (zh) | 2003-11-27 | 2003-11-27 | 一种数据轮询调度方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1622531A CN1622531A (zh) | 2005-06-01 |
CN100359888C true CN100359888C (zh) | 2008-01-02 |
Family
ID=34760707
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2003101166218A Expired - Fee Related CN100359888C (zh) | 2003-11-27 | 2003-11-27 | 一种数据轮询调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100359888C (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101227226B (zh) * | 2007-01-17 | 2011-04-06 | 上海无线通信研究中心 | 基于通信系统实际缓存量进行多业务调度的方法 |
CN103229466B (zh) | 2012-12-27 | 2016-03-09 | 华为技术有限公司 | 一种数据包传输的方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001063858A1 (en) * | 2000-02-24 | 2001-08-30 | Zarlink Semiconductor V.N. Inc. | Unified algorithm for frame scheduling and buffer management in differentiated services networks |
CN1340954A (zh) * | 2000-08-25 | 2002-03-20 | 松下电器产业株式会社 | 实时信息接收装置 |
WO2002084957A2 (en) * | 2001-04-13 | 2002-10-24 | Motorola, Inc., A Corporation Of The State Of Delaware | Manipulating data streams in data stream processors |
CN1411211A (zh) * | 2002-04-17 | 2003-04-16 | 华为技术有限公司 | 以太网交换芯片输出队列管理调度方法和装置 |
CN1428054A (zh) * | 2000-04-10 | 2003-07-02 | 转换中心股份公司 | 用于在交换机中分配带宽的方法和设备 |
-
2003
- 2003-11-27 CN CNB2003101166218A patent/CN100359888C/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001063858A1 (en) * | 2000-02-24 | 2001-08-30 | Zarlink Semiconductor V.N. Inc. | Unified algorithm for frame scheduling and buffer management in differentiated services networks |
CN1428054A (zh) * | 2000-04-10 | 2003-07-02 | 转换中心股份公司 | 用于在交换机中分配带宽的方法和设备 |
CN1340954A (zh) * | 2000-08-25 | 2002-03-20 | 松下电器产业株式会社 | 实时信息接收装置 |
WO2002084957A2 (en) * | 2001-04-13 | 2002-10-24 | Motorola, Inc., A Corporation Of The State Of Delaware | Manipulating data streams in data stream processors |
CN1411211A (zh) * | 2002-04-17 | 2003-04-16 | 华为技术有限公司 | 以太网交换芯片输出队列管理调度方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN1622531A (zh) | 2005-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100433711C (zh) | 一种报文限速方法 | |
CN100550833C (zh) | 以太网交换缓存及调度的方法和装置 | |
US20040109411A1 (en) | Dynamic traffic-based packet analysis for flow control | |
US9258171B2 (en) | Method and system for an OS virtualization-aware network interface card | |
CN101227402B (zh) | 聚合链路流量分担方法及装置 | |
CN103905300B (zh) | 一种数据报文发送方法、设备及系统 | |
CN103023809B (zh) | 一种采用二次缓冲技术的信息系统数据同步处理方法 | |
CN102057596A (zh) | 用于在通信系统中提供修改的时戳的方法和设备 | |
JP5737039B2 (ja) | パケット伝送装置、メモリ制御回路及びパケット伝送方法 | |
CN102970244A (zh) | 一种多cpu核间负载均衡的网络报文处理方法 | |
CN101958824A (zh) | 一种数据交换方法及数据交换结构 | |
CN102811176B (zh) | 一种数据流量控制方法和装置 | |
CA2539080A1 (en) | Encapsulating packets into a frame for a network | |
CN105978821B (zh) | 网络拥塞避免的方法及装置 | |
CN100359888C (zh) | 一种数据轮询调度方法 | |
CN101753584A (zh) | VxWorks系统下提高智能变电站快速报文处理速度的方法 | |
US20080205287A1 (en) | Apparatus and method for controlling the transfer of communication traffic to multiple links of a multi-link system | |
CN103281287A (zh) | 基于udp协议的风力发电机组通信方法及系统 | |
CN101616096B (zh) | 队列调度方法及装置 | |
EP2477366B1 (en) | Data transmission method, apparatus and system | |
CN107483287A (zh) | 一种自动监测网口数据包收发故障系统及方法 | |
CN103441945A (zh) | 一种控制链路负载的方法、设备及数据转发设备 | |
CN101527719A (zh) | 一种tcp数据流并行分析方法 | |
CN101854259A (zh) | 一种数据包的计数方法及系统 | |
CN102402416A (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: 20080102 Termination date: 20141127 |
|
EXPY | Termination of patent right or utility model |