CN1213546C - 一种数据传输过程中提高带宽利用率的方法 - Google Patents
一种数据传输过程中提高带宽利用率的方法 Download PDFInfo
- Publication number
- CN1213546C CN1213546C CNB021300038A CN02130003A CN1213546C CN 1213546 C CN1213546 C CN 1213546C CN B021300038 A CNB021300038 A CN B021300038A CN 02130003 A CN02130003 A CN 02130003A CN 1213546 C CN1213546 C CN 1213546C
- Authority
- CN
- China
- Prior art keywords
- short
- package
- bag
- packing
- vacancy
- 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
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及一种数据传输过程中通过打包提高带宽利用率的方法,属数据传输技术领域。本方法首先接收数据包,然后对数据包进行打包处理,并将打包后的数据包的包信息进行虚拟输出队列调度,数据包载荷写入数据缓存。根据上述数据包种类进行虚拟输出队列管理和调度,根据队列调度后的包信息,对写入数据缓存中的相应数据包的包载荷进行解包处理,最后发送上述解包处理后的数据包。本发明的方法,在原有网络处理流程中加入了打包、解包两个步骤,解决了n+1问题。利用本发明的方法,以数据包长度为65字节的情况为例,DDR SDRAM的带宽利用率可以大幅度上升。
Description
技术领域
本发明涉及一种数据传输过程中提高带宽利用率的方法,属数据传输技术领域。
背景技术
数据传输是网络处理器的基本功能。如图1所示,网络处理器的基本工作步骤是:
1、从各源端口接收数据包,包载荷写入数据缓存。
2、将包信息通过虚拟输出队列进行调度。
3、根据调度结果,从数据缓存中读出数据进行发送。
上述第一步中所使用的数据缓存经常使用大容量双数据速率数据存储器(以下简称DDR SDRAM)作为数据缓存,采用成组方式进行读写操作,一次读写固定长度的数据(简称burst方式)。
如图2所示,假设数据包长65字节,DDR SDRAM一次读写长度为64字节。那么第一次处理64字节之后,数据包只剩下1字节。第二次处理时仍然要处理64字节。除了数据包剩余的1字节外,其余63字节用无效位(全零或全1)填充。其DDR SDRAM的带宽利用率只有64+1)/(64+64)=50.8%,这样就会造成带宽的很大浪费,使DDR SDRAM的读写环节成为整个系统的速度瓶颈,这种现象称为″n+1″问题。n表示一次DDR SDRAM分组处理的数据长度,本例中为64。当数据包的长度刚好为n+1时,带宽浪费率最高。
已有技术中,通常解决″n+1″问题的方法是通过提高芯片频率、加大总线宽度等办法提高芯片的整体性能。当出现″n+1″现象时,虽然性能大打折扣,仍然能够满足设计要求。这种方法实际上是对系统性能的一种浪费,并没有真正解决n+1问题。
发明内容
本发明的目的是提出一种数据传输过程中提高带宽利用率的方法,以解决数据传输中由双数据速率存储器引起的″n+1″现象带来的带宽浪费问题,减少带宽的浪费,提高带宽利用率。
本发明提出的数据传输过程中提高带宽利用率的方法,包括以下各步骤:
1、接收数据包;
2、对数据包进行打包处理,将打包后的数据包的包载荷存入数据缓存;
3、将打包后的数据包的包信息,根据包含在数据包中的种类信息进行虚拟输出队列管理和调度;
4、根据上述队列调度后的包信息,对存储在数据缓存中的相应数据包的包载荷进行解包处理;
5、发送上述解包处理后的数据包。
上述方法的步骤(2)的打包处理,还包括如下各步骤:
2.1、对接收的数据包按长度进行分流,将长包的包载荷存入数据缓存,将短包的包载荷存入过渡缓存,将长包的包信息与包含在短包包信息中的虚拟输出队列索引一起按原始顺序存储;
2.2、建立与虚拟输出队列相对应的打包队列,将上述短包信息送入打包队列,若进入的打包队列队尾的短包信息空缺段数为零,则不打包,若不为零,则用进入短包的包信息的包头填充该队尾短包信息的空缺段;
2.3、按原始顺序读取上述第一步存储的长包的包信息和短包包信息中的虚拟输出队列索引,若为长包信息,则直接将该信息送入虚拟输出队列;
2.4、若读取的是短包队列索引,则根据索引从打包队列中读取第一个短包的包信息,并根据该信息从过渡缓存中读取该短包的包载荷存入数据缓存。
上述打包队列队尾的短包信息空缺段数的计算方法还包括如下步骤:
2.2.1、将数据缓存的一次读写字节分成n段,n=m/l,其中m为数据缓存的一次读写字节数,l为每段的字节数;
2.2.2、将包头空缺段数与包尾空缺段数之和与n作比较,若小于n,则两者之和即为原队尾短包信息的空缺段数,若大于等于n,则减掉n,所得差值即为原队尾短包信息的空缺段数;
2.2.3、若空缺段数不为零,则将原队尾短包信息的填充段数改为该空缺段数,同时将进入短包信息的包头空缺段数改为该空缺段数。
本发明方法中步骤(4)的解包处理,包括如下各步骤:
4.1、根据虚拟输出队列调度出来的打包后的包信息,从数据缓存中读取长、短包的包载荷;
4.2、若读取的是长包载荷,则直接将长包发送;
4.3、若读取的是短包载荷,则对短包载荷进行解包后发送。
上述解包过程,包括如下各步骤:
4.3.1、建立与虚拟输出队列相对应的解包队列,并为每个队列建立一个相应的队列缓存;
4.3.2、当读取的是短包的包载荷时,若包载荷分属前后两个短包,则将第一个短包连同缓存中的包载荷一起发送,后一短包的包载荷存在相应的队列缓存中;
4.3.3、当该队列的下一个短包到来时,将缓存中上一个包留下的包载荷与新到来的短包一起发送;
4.3.4、当包载荷只属于一个短包时,则连同缓存内的包载荷发送。
本发明提出的数据传输过程中通过打包提高带宽利用率的方法,在原有网络处理流程中加入了打包、解包两个步骤,解决了n+1问题。利用本发明的方法,以数据包长度为65字节的情况为例,DDR SDRAM的带宽利用率上升到:
(64+1+48)/(64譥2)=88.3%
附图说明
图1是已有技术网络处理器工作流程。
图2是已有技术中的n+1问题示意图。
图3是本发明方法的流程图。
图4是打包步骤流程图。
图5是通过打包解决n+1问题示意图。
图6是解包步骤流程图。
具体实施方式
本发明提出的数据传输过程中提高带宽利用率的方法,其流程如图3所示,首先接收数据包;对数据包进行打包处理,将打包后的数据包的包载荷存入数据缓存;将打包后的数据包的包信息进行虚拟输出队列管理和调度;根据上述队列调度后的包信息,读出存储在数据缓存中的相应数据包的包载荷进行解包处理;最后发送上述解包处理后的数据包。
上述方法中的打包处理过程如图4所示,首先对接收的数据包按长度进行分流,将长包的包载荷存入数据缓存,将短包的包载荷存入过渡缓存,将长包的包信息与包含在短包包信息中的虚拟输出队列索引一起按原始顺序存储;建立与虚拟输出队列相对应的打包队列,当上述短包信息进入打包队列时,若所进入的打包队列队尾的短包信息空缺段数为零,则不打包,若不为零,则用进入短包的包信息的包头填充该队尾短包信息的空缺段;读取上述第一步存储的长包的包信息和短包包信息中的虚拟输出队列索引顺序,若为长包信息,则直接将该信息送入虚拟输出队列;若读取的是短包队列索引,则根据索引从打包队列中读取第一个短包的包信息,并根据该信息从过渡缓存中读取该短包的包载荷存入数据缓存。其中打包队列队尾的短包信息空缺段数的计算方法是,将数据缓存的一次读写字节分成n段,n=m/l,其中m为数据缓存的一次读写字节数,l为每段的字节数;将包头空缺段数与包尾空缺段数之和与n作比较,若小于n,则两者之和即为原队尾短包信息的空缺段数,若大于等于n,则减掉n,所得差值即为原队尾短包信息的空缺段数;若空缺段数不为零,则将原队尾短包信息的填充段数改为该空缺段数,同时将进入短包信息的包头空缺段数改为该空缺段数。
上述方法中的解包步骤流程如图6所示,首先根据虚拟输出队列调度出来的打包后的包信息,从数据缓存中读取长、短包的包载荷;若读取的是长包载荷,则直接将长包发送;若读取的是短包载荷,则对短包载荷进行解包后发送。短包包载荷的解包过程为:首先建立与虚拟输出队列相对应的解包队列,并为每个队列建立一个相应的队列缓存;当读取的是短包的包载荷时,若包载荷分属前后两个短包,则将第一个短包连同缓存中的包载荷一起发送,后一短包的包载荷存在相应的队列缓存中;当该队列的下一个短包到来时,将缓存中上一个包留下的包载荷与新到来的短包一起发送;当包载荷只属于一个短包时,则连同缓存内的包载荷发送。
本发明方法中,打包步骤的功能是:将接收到的未打包的数据进行打包处理,将打好包的包载荷写入DDR SDRAM数据缓存,同时得到含有打包信息的包信息供虚拟输出队列进行调度。解包步骤的功能是从DDR SDRAM读出的打包过的包载荷,根据虚拟队列调度出来的含有打包描述的包信息对包载荷进行解包处理。加入打包、解包步骤后,原网络处理器的工作步骤基本不需要更改。同时网络处理器芯片可以对是否打包进行用户配置。
长、短包的判断标准可以由用户设定。临界长度越大则对传输效率改善越多,但相应片内缓存开销也越大。最少可以规定大于三个burst长度(每个burst是64字节)的包为长包。
该步骤中提到的数据仲裁目的是将通向DDR SDRAM的长包、短包两条数据通路合为一条数据通路,以减少已有网络处理器技术增加打包功能后的修改。
为寻址方便,不按字节而是按段打包。即:如果一包包尾空闲空间是一个或一个以上完整的段(这里规定一段为16字节,也就是一次burst长度的四分之一)才打包,而且打包数据只占用这些完整的段。不足一段的空间仍然空闲。
当一个包进入打包队列中,首先根据包的队列索引进入相应队列,然后根据该队列的队尾的包的空缺段数和剩余段数,当存在空余段时,更改进入包与队尾包的包头空缺段数、包尾剩余段数和包尾打包段数,完成打包过程。
有些包很小,小于上一包包尾的整段空闲空间(如上一包空闲了三段48字节,而该包只有40字节),该小包就会被完全打在前一包上,使一次burst的数据内存在两个包尾。这种情况下是不允许打包的,因为在解包时会出现乱序。
可以看出,某一包是否被打包取决于该包入队列时所属队列是否为空。当DDR SDRAM总线繁忙时,包出队列速度很慢,打包队列内不容易呈空状态,这时打包率很高。反之DDR SDRAM总线通畅,打包队列经常为空,则打包率很低。通过这种自动调节,保持打包率与DDR SDRAM总线状态一致,既防止打包率低引起传输效率低下数据堵塞,又防止一味提高打包率引起数据不必要的滞留。保持传输速度与数据流速保持动态平衡。
解包过程中利用解包队列的缓存将打在一起的数据进行分离。对长包不做处理,透明传输过去。而对于短包,如果缓存中存有数据,一定是该短包的包头。这是由前面所述的打包过程决定的。通过这种方法使两个被长包隔开的短包打包之后也可以被正确解包恢复成原始状态。
Claims (5)
1、一种数据传输过程中提高带宽利用率的方法,其特征在于该方法包括以下步骤:
(1)接收数据包;
(2)对数据包进行打包处理,将打包后的数据包的包载荷存入数据缓存;
(3)将打包后的数据包的包信息,根据包含在数据包中的种类信息进行虚拟输出队列管理和调度;
(4)根据上述队列调度后的包信息,对存储在数据缓存中的相应数据包的包载荷进行解包处理;
(5)发送上述解包处理后的数据包。
2、如权利要求1所述的方法,其特征在于其中所述的第二步步骤(2)的打包处理,还包括如下各步骤:
(2.1)对接收的数据包按长度进行分流,将长包的包载荷存入数据缓存,将短包的包载荷存入过渡缓存,将长包的包信息与包含在短包包信息中的虚拟输出队列索引一起按原始顺序存储;
(2.2)建立与虚拟输出队列相对应的打包队列,将上述短包信息送入打包队列,若所进入的打包队列队尾的短包信息空缺段数为零,则不打包,若不为零,则用进入短包的包信息的包头填充该队尾短包信息的空缺段;
(2.3)按原始顺序读取上述第一步存储的长包的包信息和短包包信息中的虚拟输出队列索引,若为长包信息,则直接将该信息送入虚拟输出队列;
(2.4)若读取的是短包队列索引,则根据索引从打包队列中读取第一个短包的包信息,并根据该信息从过渡缓存中读取该短包的包载荷存入数据缓存。
3、如权利要求2所述的方法,其特征在于其中所述的第二步步骤(2.2)中打包队列队尾的短包信息空缺段数的计算方法还包括如下步骤:
(2.2.1)将数据缓存的一次读写字节分成n段,n=m/l,其中m为数据缓存的一次读写字节数,1为每段的字节数;
(2.2.2)将包头空缺段数与包尾空缺段数之和与n作比较,若小于n,则两者之和即为原队尾短包信息的空缺段数,若大于等于n,则减掉n,所得差值即为原队尾短包信息的空缺段数;
(2.2.3)若空缺段数不为零,则将原队尾短包信息的填充段数改为该空缺段数,同时将进入短包信息的包头空缺段数改为该空缺段数。
4、如权利要求1所述的方法,其特征在于其中所述的第四步步骤(4)的解包处理,还包括如下各步骤:
(4.1)根据虚拟输出队列调度出来的打包后的包信息,从数据缓存中读取长、短包的包载荷;
(4.2)若读取的是长包载荷,则直接将长包发送;
(4.3)若读取的是短包载荷,则对短包载荷进行解包后发送。
5、如权利要求4所述的方法,其特征在于其中第(3)步步骤(4.3)中的解包过程,还包括如下各步骤:
(4.3.1)建立与虚拟输出队列相对应的解包队列,并为每个队列建立一个相应的队列缓存;
(4.3.2)当读取的是短包的包载荷时,若包载荷分属前后两个短包,则将第一个短包连同缓存中的包载荷一起发送,后一短包的包载荷存在相应的队列缓存中;
(4.3.3)当该队列的下一个短包到来时,将缓存中上一个包留下的包载荷与新到来的短包一起发送;
(4.3.4)当包载荷只属于一个短包时,则连同缓存内的包载荷发送。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB021300038A CN1213546C (zh) | 2002-08-09 | 2002-08-09 | 一种数据传输过程中提高带宽利用率的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB021300038A CN1213546C (zh) | 2002-08-09 | 2002-08-09 | 一种数据传输过程中提高带宽利用率的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1474512A CN1474512A (zh) | 2004-02-11 |
CN1213546C true CN1213546C (zh) | 2005-08-03 |
Family
ID=34144357
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB021300038A Expired - Fee Related CN1213546C (zh) | 2002-08-09 | 2002-08-09 | 一种数据传输过程中提高带宽利用率的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1213546C (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101060392B (zh) * | 2006-09-07 | 2010-12-08 | 华为技术有限公司 | 一种传输业务数据的调度复用方法及系统 |
CN101079811B (zh) * | 2007-04-28 | 2011-03-30 | 北京航空航天大学 | 飞机与地面系统数据传输方法及系统 |
CN102111332B (zh) * | 2010-12-31 | 2013-04-03 | 中国航空工业集团公司第六三一研究所 | 通信系统消息分类输出方法及控制器 |
CN112910909B (zh) * | 2021-02-08 | 2022-05-17 | 北京交通大学 | 基于CoAP协议与HTTP协议转换的数据包处理方法 |
-
2002
- 2002-08-09 CN CNB021300038A patent/CN1213546C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN1474512A (zh) | 2004-02-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112084136B (zh) | 队列缓存管理方法、系统、存储介质、计算机设备及应用 | |
US7694024B2 (en) | TCP/IP offload device with fast-path TCP ACK generating and transmitting mechanism | |
CN106489136B (zh) | 用于在可扩展存储器系统协议中调节包传输的系统及方法 | |
CN1128410C (zh) | 管理数据从外部源输入系统的队列管理器和方法 | |
CN101340574A (zh) | 一种实现零拷贝发送流媒体数据的方法及系统 | |
CN107395565B (zh) | 一种定长单字节格式报文协议下串口接收预处理方法 | |
CN108366111B (zh) | 一种用于交换设备的数据包低时延缓存装置与方法 | |
US20050021558A1 (en) | Network protocol off-load engine memory management | |
CN106598752B (zh) | 远程零拷贝方法 | |
CN101044737A (zh) | 分组合并 | |
US7352766B2 (en) | High-speed memory having a modular structure | |
US7126959B2 (en) | High-speed packet memory | |
WO2012019475A1 (zh) | 一种rldramsio访问控制方法和装置 | |
CN1949695A (zh) | 一种帧数据传输中错帧丢弃的方法和系统 | |
CN1862482A (zh) | 一种先入先出存储器及其输出空满标志的方法 | |
US8990422B1 (en) | TCP segmentation offload (TSO) using a hybrid approach of manipulating memory pointers and actual packet data | |
WO2023193405A1 (zh) | 一种视频数据读写方法及相关装置 | |
CN1213546C (zh) | 一种数据传输过程中提高带宽利用率的方法 | |
CN1788261A (zh) | 具有用于传送描述符的存储器的usb主机控制器 | |
WO2012001122A1 (en) | Computer system and method for operating the same | |
CN1288876C (zh) | 基于动态包传输的动态随机存储器队列调度方法 | |
CN1517881A (zh) | 存储器管理空闲指针库 | |
CN1281037C (zh) | 具有有效分组管理单元的分组转发系统及其操作方法 | |
CN1669279A (zh) | 提高分组应用的存储器存取效率 | |
US7620770B2 (en) | Device and method for storing and processing data units |
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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20050803 Termination date: 20110809 |