CN102340442B - 调整接口接收队列长度的方法及装置 - Google Patents
调整接口接收队列长度的方法及装置 Download PDFInfo
- Publication number
- CN102340442B CN102340442B CN201010236062.4A CN201010236062A CN102340442B CN 102340442 B CN102340442 B CN 102340442B CN 201010236062 A CN201010236062 A CN 201010236062A CN 102340442 B CN102340442 B CN 102340442B
- Authority
- CN
- China
- Prior art keywords
- interface
- queue
- receiving
- cycle
- receiving queue
- 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)
Abstract
本发明公开了调整接口接收队列长度的方法及装置。方法包括:预设调整周期,在每个调整周期内,统计各打开接口的接收队列丢包统计信息、接收队列收包速率统计信息,并统计系统任务运行统计信息;对于任一打开接口,在每个调整周期内,根据该周期内的该接口的接收队列丢包统计信息,判断该接口是否存在丢包事件,若存在,则根据该周期内该接口的接收队列收包速率统计信息和系统任务运行统计信息,调整该接口的接收队列长度。本发明实现了对接口接收队列长度的动态调整,减少了丢包现象。
Description
技术领域
本发明涉及数据接收技术领域,具体涉及调整接口接收队列长度的方法及装置。
背景技术
中低端路由器的显著特色是接口种类丰富、接口速率千差万别、实际应用场景复杂。路由器各接口都存在报文接收队列,该队列的核心功能是为硬件提供报文缓冲区,是路由器存储转发的核心部件,该队列的长短直接决定了报文的缓冲能力,队列太短会造成接口经常性的丢包事件发生,队列太长会造成不必要的内存浪费。对于中低端路由器丰富多样的接口来说,由于接口速率不同,接口的队列长度也需要区别定制,从而使问题进一步复杂化;同时,由于具体应用场景的千差万别,也导致固定长度的接口队列适应性极差。目前实现中,路由器各接口的队列长度,基本是根据接口速率和历史经验进行定制,该定制值在设备启动后是不能动态更改的。
图1为路由器接口接收报文的处理示意图,如图1所示,硬件接口从线路上收到报文后,会通知直接存储器访问(DMA,Direct Memory Access)模块启动数据搬移,DMA模块首先访问系统内存中的缓存描述符(BD,BufferDescriptor)队列,通过BD描述符找到对应的内存缓冲区,然后将收到的报文搬移到内存缓冲区中去,并通知中央处理单元(CPU,Central ProcessingUnit)报文接收事件,CPU在适当的时候,开始对接收报文进行处理,并最终从其它接口转发出去。
其中,BD队列是网络硬件与系统驱动软件的重要接口,即通常所说的接口硬件接收队列。从图1可以看出,BD队列的核心元素是BD描述符,一个典型的BD描述符结构如图2所示,包括状态控制位、数据长度信息和内存缓冲区指针。
多个内存中地址连续的BD描述符组成环状BD队列,如图3所示,其中W=1表示当前BD是队列中最后一个BD,硬件控制器发现当前BD的W标志为1时,会自动跳转到队列开始位置。硬件接口接收数据时,硬件控制器顺序访问BD环上的BD描述符,根据BD描述符中的状态控制位,判断当前BD是否可用,如果可用,则根据BD描述符中的内存缓冲区指针查找到对应的缓冲区,启动DMA模块开始向该缓冲区传输数据,传输完成后,将BD状态控制位设置为“满”,通过中断通知CPU处理,CPU处理完成后,再将BD状态控制位设置为“空”,该BD可以再次使用。硬件控制器和CPU围绕BD队列周而复始地循环,形成了报文的持续接收过程。当硬件控制器发现BD环上所有的BD都处于“满”状态时,就会开始丢弃接收报文,直到发现BD环上又有可用BD为止。
现有实现中,软件根据与硬件的接口设置队列的起始地址和长度,该队列长度在设备初始化时配置为固定长度,在运行过程中不可更改。
现有技术方案的主要缺点如下:
接收队列长度在接口初始化时指定,且在路由器运行期间不可改变,形成固定内存消耗。而实际网络运行环境中存在有规律的周期性流量波动,单一长度的BD队列无法根据实际情况进行动态调整,很容易造成接口周期性丢包;另外,某些用户应用和配置会导致路由器内部出现周期性的耗时较长的任务占用CPU资源,此时接收队列肩负着缓冲接收报文的作用,单一长度的接收队列在这种情况下很容易造成接口丢包。路由器发生丢包会导致上层协议的重传机制生效,增加网络重传报文数量,进一步加重网络负担,形成恶性循环。
发明内容
本发明提供调整接口接收队列长度的方法及装置,以实现对接口接收队列长度的动态调整,减少丢包现象。
本发明的技术方案是这样实现的:
一种调整接口接收队列长度的方法,预设调整周期,该方法包括:
在每个调整周期内,统计各打开接口的接收队列丢包统计信息、接收队列收包速率统计信息,并统计系统任务运行统计信息;
对于任一打开接口,在每个调整周期内,根据该周期内该接口的接收队列丢包统计信息,判断该接口是否存在丢包事件,若存在,则根据该周期内该接口的接收队列收包速率统计信息和系统任务运行统计信息,调整该接口的接收队列长度。
所述在每个调整周期内,统计各打开接口的接收队列丢包统计信息、接收队列收包速率统计信息的同时进一步包括:
在每个调整周期内,统计各打开接口的接收队列利用率;
所述判断该接口是否存在丢包事件之后进一步包括:
若不存在,则当本周期内该接口的接收队列利用率大于预设上限时,增大该接口的接口队列长度;当本周期内该接口的接口队列利用率小于预设下限时,减少该接口的接收队列长度;否则,保持该接口的接收队列长度不变。
所述在每个调整周期内,统计各打开接口的接收队列丢包统计信息、收包速率统计信息之前进一步包括:
当一个接口打开时,根据当前可用系统内存,为该接口分配初始队列长度。
所述系统任务运行统计信息为系统最大任务运行时长。
一种调整接口接收队列长度的装置,该装置包括:
硬件事件管理模块:在每个调整周期内,统计各打开接口的接收队列丢包统计信息、接收队列收包速率统计信息;
任务管理模块:在每个调整周期内,统计系统任务运行统计信息;
队列控制模块:对于任一打开接口,在每个调整周期内,根据硬件事件管理模块中的该周期内该接口的接收队列丢包统计信息,判断该接口是否存在丢包事件,若存在,则根据硬件事件管理模块中的该周期内该接口的接收队列收包速率统计信息和任务管理模块中的该周期内的系统任务运行统计信息,调整该接口的接收队列长度。
所述硬件事件管理模块进一步用于,在每个调整周期内,统计各打开接口的接收队列利用率;
所述队列控制模块进一步用于,对于任一打开接口,在每个调整周期内,若根据硬件事件管理模块中的该周期内的丢包统计信息,确定该接口不存在丢包事件,则若硬件事件管理模块中的本周期内该接口的接收队列利用率大于预设上限,则增大该接口的接口队列长度;若硬件事件管理模块中的本周期内该接口的接口队列利用率小于预设下限,则减少该接口的接收队列长度;否则,保持该接口的接收队列长度不变。
所述装置进一步包括内存管理模块,用于记录当前可用系统内存;
所述队列控制模块进一步用于,当接收到硬件事件管理模块上报的接口打开事件时,根据内存管理模块中的当前可用系统内存,为该接口分配初始队列长度。
与现有技术相比,本发明中周期性地统计各接口的接收队列丢包统计信息和收包速率统计信息,并统计系统任务运行统计信息,当一个接口存在丢包事件时,则根据本周期内该接口的接收队列收包速率统计信息以及系统任务运行统计信息,调整接口的接收队列长度,从而实现了根据接口的收包情况,动态调整接口的接收队列长度,减少了丢包现象,降低了网络负担;且,实现简单,不需新增硬件成本,不影响已有接口处理流程;同时可提高设备的可靠性、转发性能、内存利用率等关键用户指标。
附图说明
图1为路由器接口接收报文的处理示意图;
图2为典型的BD描述符结构示意图;
图3为地址连续的BD描述符组成的环状BD队列示意图;
图4为本发明实施例提供的调整接口接收队列长度的方法流程图;
图5为本发明实施例提供的调整接口接收队列长度的装置的组成图。
具体实施方式
下面结合附图及具体实施例对本发明再作进一步详细的说明。
图4为本发明实施例提供的调整接口接收队列长度的方法流程图,如图4所示,其具体步骤如下:
步骤401:预设接收队列调整周期,预设接口接收队列利用率上限和下限,设备初始化完毕,设备的硬件事件管理模块和任务管理模块将自身的所有统计信息清零。
接口的接收队列利用率上限>接口的接收队列利用率下限,如:接口的接收队列利用率上限可以为75%,接口的接收队列利用率下限可以为25%。
硬件事件管理模块中的统计信息包括:各接口的队列利用率、各接口的丢包统计信息、各接口的收包速率统计信息,任务管理模块中的统计信息指的是系统任务运行统计信息如:最大任务运行时长等。
对于任一接口,执行如下步骤402~409:
步骤402:队列控制模块接收硬件事件管理模块发来的该接口打开(up)事件,向内存管理模块获取可用内存信息,根据该可用内存信息,为该接口分配初始队列长度。
当硬件事件管理模块接收到一个接口的驱动模块发来的接口up事件后,会向队列控制模块上报该接口up事件。
可预先将内存大小分为多个等级,并为每个等级设置一个接收队列长度,队列控制模块记录内存大小与内存等级的对应关系,同时记录内存等级与接收队列长度的对应关系。本步骤中,队列控制模块先根据可用内存信息确定内存等级,然后再根据内存等级为该接口分配初始接收队列长度。
步骤403:当一个调整周期到来时,队列控制模块查询本周期内该接口的接收队列利用率、接收队列丢包统计信息、接收队列收包速率统计信息以及系统任务运行统计信息。
其中,队列控制模块可以向硬件事件管理模块查询本周期内该接口的接收队列利用率,或者,硬件事件管理模块可以主动向队列控制模块上报本周期内该接口的接收队列利用率。其中,接口的驱动模块会周期性地向硬件事件管理模块上报接口的接收队列的利用率;
队列控制模块可以通过向硬件事件管理模块查询接口上报的缓存溢出事件来得知该接口的接收队列丢包统计信息。由于:当接口的接收队列丢包时,接口的驱动模块会向硬件事件管理模块上报缓存溢出事件,因此,队列控制模块可以向硬件事件管理模块查询本周期内接口的驱动模块上报的缓存溢出事件数,或者硬件事件管理模块也可以主动向队列控制模块上报本周期内接口的驱动模块上报的缓存溢出事件数,从而队列控制模块可以得知接口的接收队列的丢包统计信息如:丢包数、丢包率等;
队列控制模块可以向硬件事件管理模块查询本周期内的收包速率统计信息,或者,硬件事件管理模块主动向队列控制模块上报本周期内的收包速率统计信息。接口的驱动模块在收包时,会向硬件事件管理模块上报收包事件,因此硬件事件管理模块可根据本周期内接收到的收包事件的数目,得到收包速率,即收包速率=本周期内收到的收包事件数/调整周期长度。
队列控制模块可以向任务管理模块查询本周期内的系统任务运行统计信息如:最大任务运行时长;或者,任务管理模块可以主动向队列控制模块上报本周期内的系统任务运行统计信息如:最大任务运行时长。
步骤404:队列控制模块根据本周期内该接口的丢包统计信息,判断本周期内该接口是否存在丢包事件,若是,执行步骤405;否则,执行步骤406。
步骤405:队列控制模块根据本周期内该接口的收包速率统计信息以及本周期内的系统任务运行统计信息,得到调整后的该接口的接收队列长度,根据该长度调整该接口的接口队列,本流程结束。
例如:调整后的该接口的接收队列长度=本周期内该接口的平均收包速率*本周期内的系统最大任务运行时长。
步骤406:队列控制模块判断本周期内接口的接收队列利用率是否大于预设接收队列利用率上限,若是,执行步骤407;否则,执行步骤408。
步骤407:队列控制模块增大该接口的接收队列长度,本流程结束。
这里,可将接口的接收队列长度增大预设比例,预设比例可以是5%等。
步骤408:队列控制模块判断本周期内接口的接收队列利用率是否小于预设接收队列利用率下限,若是,执行步骤409;否则,保持接口的接收队列长度不变,本流程结束。
步骤409:队列控制模块减少该接口的接收队列长度,本流程结束。
这里,可将接口的接收队列长度减少预设比例。
其中,步骤步骤406、408中判断接口的接收队列利用率是否大于预设接收队列利用率上限、是否小于预设接收队列利用率下限并无先后之分,在实际应用中,只要做到:当接口的接收队列利用率大于预设接收队列利用率上限时,就增大该接口的接收队列长度;当接口的接收队列利用率小于预设接收队列利用率下限时,就减少该接口的接收队列长度;否则,保持该接口的队列长度不变即可。
当队列控制模块接收到硬件事件管理模块上报的该接口的接口关闭(down)事件后,释放该接口的接收队列。
图5为本发明实施例提供的调整接口接收队列长度的装置的组成图,如图5所示,该装置主要包括:硬件事件管理模块51、任务管理模块52和队列控制模块53,其中:
硬件事件管理模块51:在每个调整周期内,统计各up接口的接收队列丢包统计信息、收包速率统计信息。
任务管理模块52:在每个调整周期内,统计系统任务运行统计信息。
队列控制模块53:对于任一up接口,在每个调整周期内,从硬件事件管理模块51获取该周期内该接口的丢包统计信息,根据该丢包统计信息,判断该接口在本周期内是否存在丢包事件,若存在,则从硬件事件管理模块51获取本周期内该接口的收包速率统计信息,从任务管理模块52获取本周期内的系统任务运行统计信息,根据该收包速率统计信息和系统任务运行统计信息,调整该接口的接收队列长度。
在实际应用中,硬件事件管理模块51还可用于,在每个调整周期内,统计各接口的接收队列利用率;
同时,队列控制模块53还用于,对于任一接口,在每个调整周期内,若根据从硬件事件管理模块51获取的该周期内该接口的丢包统计信息,确定该接口不存在丢包事件,则从硬件事件管理模块51获取本周期内该接口的接收队列利用率,若该利用率大于预设上限,则增大该接口的接口队列长度;若该利用率小于预设下限,则减少该接口的接收队列长度;否则,保持该接口的接收队列长度不变。
在实际应用中,图5所示装置还包括内存管理模块:用于记录当前可用系统内存;
队列控制模块53还可用于,当接收到硬件事件管理模块51上报的一个接口的接口up事件时,则从内存管理模块获取当前可用系统内存,根据该可用系统内存,为该接口分配初始队列长度。
本发明实施例中的接收队列可以是BD队列。
本发明实施例中的设备可以是路由器。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (6)
1.一种调整接口接收队列长度的方法,其特征在于,预设调整周期,该方法包括:
在每个调整周期内,统计各打开接口的接收队列丢包统计信息、接收队列收包速率统计信息,并统计系统任务运行统计信息,所述系统任务运行统计信息为:最大任务运行时长;
对于任一打开接口,在每个调整周期内,根据该周期内该接口的接收队列丢包统计信息,判断该接口是否存在丢包事件,若存在,则根据该周期内该接口的接收队列收包速率统计信息和系统任务运行统计信息,调整该接口的接收队列长度为:本周期内该接口的平均收包速率*本周期内的系统最大任务运行时长。
2.根据权利要求1所述的方法,其特征在于,所述在每个调整周期内,统计各打开接口的接收队列丢包统计信息、接收队列收包速率统计信息的同时进一步包括:
在每个调整周期内,统计各打开接口的接收队列利用率;
所述判断该接口是否存在丢包事件之后进一步包括:
若不存在,则当本周期内该接口的接收队列利用率大于预设上限时,增大该接口的接口队列长度;当本周期内该接口的接口队列利用率小于预设下限时,减少该接口的接收队列长度;否则,保持该接口的接收队列长度不变。
3.根据权利要求1所述的方法,其特征在于,所述在每个调整周期内,统计各打开接口的接收队列丢包统计信息、收包速率统计信息之前进一步包括:
当一个接口打开时,根据当前可用系统内存,为该接口分配初始队列长度。
4.一种调整接口接收队列长度的装置,其特征在于,该装置包括:
硬件事件管理模块:在每个调整周期内,统计各打开接口的接收队列丢包统计信息、接收队列收包速率统计信息;
任务管理模块:在每个调整周期内,统计系统任务运行统计信息,所述系统任务运行统计信息为:最大任务运行时长;
队列控制模块:对于任一打开接口,在每个调整周期内,根据硬件事件管理模块中的该周期内该接口的接收队列丢包统计信息,判断该接口是否存在丢包事件,若存在,则根据硬件事件管理模块中的该周期内该接口的接收队列收包速率统计信息和任务管理模块中的该周期内的系统任务运行统计信息,调整该接口的接收队列长度为:本周期内该接口的平均收包速率*本周期内的系统最大任务运行时长。
5.根据权利要求4所述的装置,其特征在于,所述硬件事件管理模块进一步用于,在每个调整周期内,统计各打开接口的接收队列利用率;
所述队列控制模块进一步用于,对于任一打开接口,在每个调整周期内,若根据硬件事件管理模块中的该周期内的丢包统计信息,确定该接口不存在丢包事件,则若硬件事件管理模块中的本周期内该接口的接收队列利用率大于预设上限,则增大该接口的接口队列长度;若硬件事件管理模块中的本周期内该接口的接口队列利用率小于预设下限,则减少该接口的接收队列长度;否则,保持该接口的接收队列长度不变。
6.根据权利要求4所述的装置,其特征在于,所述装置进一步包括内存管理模块,用于记录当前可用系统内存;
所述队列控制模块进一步用于,当接收到硬件事件管理模块上报的接口打开事件时,根据内存管理模块中的当前可用系统内存,为该接口分配初始队列长度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010236062.4A CN102340442B (zh) | 2010-07-21 | 2010-07-21 | 调整接口接收队列长度的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010236062.4A CN102340442B (zh) | 2010-07-21 | 2010-07-21 | 调整接口接收队列长度的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102340442A CN102340442A (zh) | 2012-02-01 |
CN102340442B true CN102340442B (zh) | 2015-07-22 |
Family
ID=45515948
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010236062.4A Active CN102340442B (zh) | 2010-07-21 | 2010-07-21 | 调整接口接收队列长度的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102340442B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105718384A (zh) * | 2014-12-05 | 2016-06-29 | 中兴通讯股份有限公司 | 缓存的配置方法及装置 |
CN106470128A (zh) * | 2015-08-18 | 2017-03-01 | 富士通株式会社 | 故障检测装置和系统 |
CN109218119B (zh) * | 2017-06-30 | 2020-11-27 | 迈普通信技术股份有限公司 | 网络丢包诊断方法及网络设备 |
CN110912770B (zh) * | 2019-11-13 | 2021-06-18 | 中国联合网络通信集团有限公司 | 一种接口拥塞时延的计算方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101132361A (zh) * | 2006-08-22 | 2008-02-27 | 国际商业机器公司 | 数据处理系统和用于管理数据分组的传输的方法 |
CN101562565A (zh) * | 2009-05-25 | 2009-10-21 | 马福奎 | 一种动态队列资源管理策略及虚队列方法 |
CN101729386A (zh) * | 2008-11-03 | 2010-06-09 | 华为技术有限公司 | 一种基于令牌调度的流量控制方法及装置 |
-
2010
- 2010-07-21 CN CN201010236062.4A patent/CN102340442B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101132361A (zh) * | 2006-08-22 | 2008-02-27 | 国际商业机器公司 | 数据处理系统和用于管理数据分组的传输的方法 |
CN101729386A (zh) * | 2008-11-03 | 2010-06-09 | 华为技术有限公司 | 一种基于令牌调度的流量控制方法及装置 |
CN101562565A (zh) * | 2009-05-25 | 2009-10-21 | 马福奎 | 一种动态队列资源管理策略及虚队列方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102340442A (zh) | 2012-02-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10789198B2 (en) | Methods and apparatus for reduced-latency data transmission with an inter-processor communication link between independently operable processors | |
US7782886B2 (en) | Method for improving quality of service in a wireless network | |
TWI392393B (zh) | 執行暫存器狀態回報的方法及其通訊裝置 | |
US8606290B2 (en) | Method and apparatus for performing a demotion in a cellular communications network | |
US20110170408A1 (en) | Congestion level indication with explicit congestion notification in communication systems | |
EP4024763A1 (en) | Network congestion control method, node, system and storage medium | |
WO2021057128A1 (zh) | 一种基于nf的通信方法、设备及存储介质 | |
WO2014107946A1 (zh) | 一种无线网络下视频实时传输的码率平滑方法 | |
US10452122B2 (en) | Methods for controlling data transfer speed of a data storage device and a host device utilizing the same | |
CN102340442B (zh) | 调整接口接收队列长度的方法及装置 | |
US11695629B2 (en) | Method and apparatus for configuring a network parameter | |
WO2022193890A1 (zh) | 一种资源调度方法和装置 | |
US20170230292A1 (en) | Dynamic Network Rate Control | |
US8300611B2 (en) | Method and apparatus to provide air time fairness in multiple physical transmission rate wireless systems | |
WO2022170641A1 (zh) | 一种智能路由选择方法、系统、存储介质及终端设备 | |
CN103945244A (zh) | 控制视频业务传输的方法和装置 | |
US7558198B2 (en) | Method and apparatus for data transfer | |
KR20090094760A (ko) | 버퍼 상태 보고 방법 및 장치 | |
US20080192633A1 (en) | Apparatus and method for controlling data flow in communication system | |
KR20150050085A (ko) | 무선 환경에서 usb 통신을 위한 버퍼 관리 방법 및 장치 | |
CN103856558A (zh) | 一种用于终端应用的数据处理方法和装置 | |
US9374238B2 (en) | Multicast group transmission method and wireless network apparatus using the same | |
KR101017352B1 (ko) | 무선 인터넷 환경에서의 스트리밍 콘텐츠 전송 방법 | |
JPWO2018212085A1 (ja) | 送信装置、可用帯域推定装置、可用帯域推定システム、方法 | |
WO2020200307A1 (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 | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No. Patentee after: Xinhua three Technology Co., Ltd. Address before: 310053 Hangzhou hi tech Industrial Development Zone, Zhejiang province science and Technology Industrial Park, No. 310 and No. six road, HUAWEI, Hangzhou production base Patentee before: Huasan Communication Technology Co., Ltd. |