CN104753813B - Dma传送报文的方法 - Google Patents
Dma传送报文的方法 Download PDFInfo
- Publication number
- CN104753813B CN104753813B CN201310740954.1A CN201310740954A CN104753813B CN 104753813 B CN104753813 B CN 104753813B CN 201310740954 A CN201310740954 A CN 201310740954A CN 104753813 B CN104753813 B CN 104753813B
- Authority
- CN
- China
- Prior art keywords
- message
- length
- core
- buffering area
- dma
- 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
- Computer And Data Communications (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供一种DMA传送报文的方法,应用于网卡,包括:控制核从内存中为每一个数据核分配一个拼包缓冲区;当网卡接收到报文时,数据核接收网络加速器的报文处理消息,并从该消息中获取报文长度信息,若该报文长度小于预定报文长度,则将该报文存入该数据核对应的拼包缓冲区;若该报文长度大于或等于预定报文长度,则启动DMA控制器执行DMA操作传送该报文给服务器;若数据核对应的拼包缓冲区内所有报文的总长度大于或等于预定报文长度,则启动DMA控制器执行DMA操作传送该报文给服务器;若报文总长度小于预定报文长度,则不作处理。本发明能够有效降低DMA的操作次数,提高PCIE通道带宽的有效利用率,从而提升了网卡小包的收包速率。
Description
技术领域
本发明涉及网络数据处理领域,尤其涉及一种DMA传送报文的方法。
背景技术
随着网络技术的快速发展,网络带宽每年以接近3倍的速度迅猛发展,目前10G网络已开始部署到部分端***,给网络流量分析应用带来了较大压力。随着下一代互联网(NGI)核心技术,如IPV6/MPLS、路由协议、QOS技术等不断成熟,互联网进入向下一代演进的关键阶段。各种网络发展呈现高带宽、高流量化趋势,因此,大幅度提高网络设备的性能及处理能力显得尤为重要。
服务器作为一种为用户提供共享信息资源和各种服务的高性能网络设备,其处理网络数据的能力很大程度上取决于网卡的性能。在实际使用中,网卡通过PCI-E插槽与服务器连接,当报文从网卡光口捕获并做前期处理后,通过PCI-E通道DMA(Direct MemoryAccess,直接内存存取)到服务器侧缓冲区,完成网卡侧任务处理。
目前,网卡的捕包采用每接收到一个报文做一次DMA的策略。当报文长度越小时,携带的协议数据所占的比例就越大,占用的PCI-E通道带宽就越大。另外,在流量一定的情况下,报文长度越小,发起DMA操作的次数越多。
综上所述,当报文长度越小时,由于其携带的控制协议增多,从而导致PCI-E通道带宽有效利用率越低。
发明内容
有鉴于此,本发明提供一种DMA传送报文的方法,应用于网卡,该网卡包括多核CPU、内存以及DMA控制器,其中,该多核CPU包括控制核、网络加速器以及多个数据核,其特征在于,该方法包括以下步骤:
步骤A,控制核从内存中为每一个数据核分配一个拼包缓冲区;
步骤B,当网卡接收到报文时,数据核接收网络加速器的报文处理消息,并从该消息中获取报文长度信息,若该报文长度小于预定报文长度,则将该报文存入该数据核对应的拼包缓冲区,转至步骤C;若该报文长度大于或等于预定报文长度,则转至步骤D;
步骤C,所述数据核计算其对应拼包缓冲区内所有报文的总长度,若报文总长度大于或等于预定报文长度,则转至步骤D;若报文总长度小于预定报文长度,则不作处理;
步骤D,所述数据核启动DMA控制器执行DMA操作传送该报文给服务器。
本发明能够有效降低DMA的操作次数,提高PCIE通道带宽的有效利用率,从而提升了网卡面向设备内部的实际数据速率。
附图说明
图1是本发明一种实施方式中网卡内部基础硬件环境的示意图。
图2是本发明一种实施方式中DMA传送报文方法的流程图。
图3是本发明一种实施方式中DMA传送报文方法的详细流程图。
具体实施方式
以下结合附图对本发明进行详细描述。
本发明是针对网卡做出的改进方案,网卡作为服务器的重要组成部分,其网络数据处理能力决定了服务器的性能。网卡通过PCI-E插槽与服务器连接,当报文从网卡光口或者千兆电口被捕获并做前期处理后,通过PCI-E通道DMA到服务器侧缓冲区,完成网卡侧任务处理。如图1所示,该网卡包括多核CPU、内存、DMA控制器以及其他硬件,其中,该多核CPU包括控制核、网络加速器以及多个数据核。该DMA传送报文的方法通过在上述网卡硬件的基础上运行网卡驱动程序来实现。请参考图2,该方法的实现包括以下步骤:
步骤101,控制核从内存中为每一个数据核分配一个拼包缓冲区;
步骤102,当网卡接收到报文时,数据核接收网络加速器的报文处理消息,并从该消息中获取报文长度信息,若该报文长度小于预定报文长度,则将该报文存入该数据核对应的拼包缓冲区,转至步骤103;若该报文长度大于或等于预定报文长度,则转至步骤104;
步骤103,所述数据核计算其对应拼包缓冲区内所有报文的总长度,若报文总长度大于或等于预定报文长度,则转至步骤104;若报文总长度小于预定报文长度,则不作处理;
步骤104,所述数据核启动DMA控制器执行DMA操作传送该报文给服务器。
现以具体实施例来说明该DMA传送报文方法的实现过程,请参考图3。首先,控制核需要从网卡内存中为每一个数据核分配一个拼包缓冲区,该拼包缓冲区大小不小于2L-2字节,其中,L为预定报文长度。在本实施例中,优选地,预定报文长度为128字节,则每一个拼包缓冲区的大小不小于254字节。这是因为对于大于或等于128字节的报文,数据核直接启动DMA操作将该报文传送给服务器,而对于小于128字节的报文,数据核则将该报文存入其对应的拼包缓冲区,因此,存入拼包缓冲区的最大报文长度为127字节,而拼包缓冲区中至少要存入2个报文才可以进行一次DMA操作,若2次存入的报文长度均为最大可存入报文长度,即127字节,则拼包缓冲区大小至少需要254字节。
在控制核完成拼包缓冲区的分配后,网卡即可接收报文。当网卡从外部接收到报文时,先由网卡多核CPU内部的网络加速器模块对报文进行预处理。该网络加速器模块是多核CPU内部的硬件模块,在网卡启动时,由控制核对网络加速器模块进行初始化。当网络加速器模块接收到报文时,通过提取该报文中的报文特征,计算出应该由哪一个数据核对该报文进行处理,并向该数据核发送报文处理消息。网络加速器模块对报文的预处理过程是由硬件自动完成的,无需软件干预。
数据核在接收到网络加速器的报文处理消息后,从该消息中获取报文长度信息。若该报文长度大于或等于预定报文长度,则该数据核启动DMA操作传送该报文给服务器;若该报文长度小于预定报文长度,则该数据核将该报文存入其对应的拼包缓冲区,并计算该拼包缓冲区内所有报文的总长度,若该报文总长度大于或等于预定报文长度,则启动一次DMA操作传送该报文给服务器;否则,不作处理。优选地,在本实施例中,预定报文长度为128字节,当接收到的报文长度或拼包后的报文总长度大于或等于128字节时,数据核启动DMA操作传送该报文给服务器。
在上述对小报文进行拼包处理的过程中,为了避免拼包缓冲区内长时间没有新报文存入,而导致拼包缓冲区内已有报文无法被DMA传送,控制核通过定时查询拼包缓冲区的方式,将拼包缓冲区内的报文DMA传送给服务器。具体实现方式为,控制核启动定时器,当定时时间到时,控制核顺序查询每一个拼包缓冲区,若当前查询的拼包缓冲区内有报文,则控制核启动DMA操作传送该报文给服务器,然后继续查询下一个拼包缓冲区,直到所有拼包缓冲区内的报文均已被DMA传送给服务器。定时器的定时时长取决于控制核的处理速度以及拼包缓冲区的数量,为了保证控制核有足够的时间处理所有拼包缓冲区内的报文,定时时长应大于控制核对所有拼包缓冲区轮询一次的总时间长度。
经DMA操作的报文需通过PCI-E通道传送给服务器。PCI-E的传输性能取决于多种因素,其中包括协议开销和负载大小。当TLP协议帧头长度为5个双字时,忽略DLLP和PLP,如果报文长度为64字节,则PCI-E带宽有效利用率为64/(64+20),约为76.2%;如果报文长度为128字节,此时的带宽有效利用率为128/(128+20),约为86.5%。可见,报文长度越大,PCI-E带宽有效利用率越高。但是,在实际应用中,为了提高带宽利用率,无限制的增加拼包报文长度并不可取。这是因为,拼包报文长度的增加必然导致多个小报文滞留在拼包缓冲区中,报文传输的实时性变差,因此,要综合考虑上述因素,确定符合实际需求的拼包报文长度。
综上所述,通过对小报文进行拼包处理,使得单次传送的有效报文长度增加,减少了DMA操作的次数,提高了PCI-E通道带宽的有效利用率,从而提升了网卡小包的收包速率。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (4)
1.一种DMA传送报文的方法,应用于网卡,该网卡包括多核CPU、内存以及DMA控制器,其中,该多核CPU包括控制核、网络加速器以及多个数据核,其特征在于,该方法包括以下步骤:
步骤A,控制核从内存中为每一个数据核分配一个拼包缓冲区,所述拼包缓冲区大小不小于2L-2字节,其中,L为预定报文长度;
步骤B,当网卡接收到报文时,数据核接收网络加速器的报文处理消息,并从该消息中获取报文长度信息,若该报文长度小于预定报文长度,则将该报文存入该数据核对应的拼包缓冲区,转至步骤C;若该报文长度大于或等于预定报文长度,则转至步骤D;
步骤C,所述数据核计算其对应拼包缓冲区内所有报文的总长度,若报文总长度大于或等于预定报文长度,则转至步骤D;若报文总长度小于预定报文长度,则不作处理;
步骤D,所述数据核启动DMA控制器执行DMA操作传送该报文给服务器。
2.如权利要求1所述的方法,其特征在于,所述预定报文长度为128字节。
3.如权利要求1所述的方法,其特征在于,还包括:
步骤E,控制核定时轮询所有拼包缓冲区,若轮询到的当前拼包缓冲区有报文,则启动DMA控制器执行DMA操作传送该拼包缓冲区内报文给服务器。
4.如权利要求3所述的方法,其特征在于:所述定时的时长大于控制核对所有拼包缓冲区进行一次轮询的总时间长度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310740954.1A CN104753813B (zh) | 2013-12-27 | 2013-12-27 | Dma传送报文的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310740954.1A CN104753813B (zh) | 2013-12-27 | 2013-12-27 | Dma传送报文的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104753813A CN104753813A (zh) | 2015-07-01 |
CN104753813B true CN104753813B (zh) | 2018-03-16 |
Family
ID=53592942
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310740954.1A Active CN104753813B (zh) | 2013-12-27 | 2013-12-27 | Dma传送报文的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104753813B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106027349B (zh) * | 2016-04-29 | 2019-01-18 | 重庆爱思网安信息技术有限公司 | 一种pci-e总线接口传输卡及基于该传输卡的数据传输方法 |
CN110046115B (zh) * | 2019-04-03 | 2023-09-01 | 超越科技股份有限公司 | 一种基于大数据量高速异步传输的发送终端,接收终端,方法及*** |
CN113542148A (zh) * | 2021-07-15 | 2021-10-22 | 恒安嘉新(北京)科技股份公司 | 一种报文聚合方法、装置、网络网卡及可读存储介质 |
CN113676416B (zh) * | 2021-10-22 | 2021-12-28 | 浙江锐文科技有限公司 | 一种在高速网卡/dpu内提升网络服务质量的方法 |
CN114979041B (zh) * | 2022-05-18 | 2024-03-08 | 芯河半导体科技(无锡)有限公司 | 一种提升片上缓存利用效率的拼包方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1801806A (zh) * | 2005-11-11 | 2006-07-12 | 华中科技大学 | 一种实时环境下的零拷贝通信方法 |
CN101645832A (zh) * | 2009-05-07 | 2010-02-10 | 曙光信息产业(北京)有限公司 | 一种基于fpga的虚拟机网络数据包处理方法 |
CN101650698A (zh) * | 2009-08-28 | 2010-02-17 | 曙光信息产业(北京)有限公司 | 直接存储器访问的实现方法 |
US7764676B1 (en) * | 2006-07-31 | 2010-07-27 | Qlogic, Corporation | Method and system for processing network information |
CN102185770A (zh) * | 2011-05-05 | 2011-09-14 | 汉柏科技有限公司 | 基于多核架构的批量式报文收发方法 |
CN102244579A (zh) * | 2010-05-12 | 2011-11-16 | 北京研华兴业电子科技有限公司 | 网卡及网络数据接收方法 |
CN102420749A (zh) * | 2011-11-28 | 2012-04-18 | 曙光信息产业(北京)有限公司 | 一种网卡发包功能的实现装置和方法 |
-
2013
- 2013-12-27 CN CN201310740954.1A patent/CN104753813B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1801806A (zh) * | 2005-11-11 | 2006-07-12 | 华中科技大学 | 一种实时环境下的零拷贝通信方法 |
US7764676B1 (en) * | 2006-07-31 | 2010-07-27 | Qlogic, Corporation | Method and system for processing network information |
CN101645832A (zh) * | 2009-05-07 | 2010-02-10 | 曙光信息产业(北京)有限公司 | 一种基于fpga的虚拟机网络数据包处理方法 |
CN101650698A (zh) * | 2009-08-28 | 2010-02-17 | 曙光信息产业(北京)有限公司 | 直接存储器访问的实现方法 |
CN102244579A (zh) * | 2010-05-12 | 2011-11-16 | 北京研华兴业电子科技有限公司 | 网卡及网络数据接收方法 |
CN102185770A (zh) * | 2011-05-05 | 2011-09-14 | 汉柏科技有限公司 | 基于多核架构的批量式报文收发方法 |
CN102420749A (zh) * | 2011-11-28 | 2012-04-18 | 曙光信息产业(北京)有限公司 | 一种网卡发包功能的实现装置和方法 |
Non-Patent Citations (2)
Title |
---|
一种零拷贝报文捕获技术及其性能分析;苏绥平;《数字技术与应用》;20110715(第7期);正文第199-203页 * |
零拷贝技术在网络分析工具中的应用;刘小威等;《计算机***应用》;20120415;第21卷(第4期);正文第169-173页 * |
Also Published As
Publication number | Publication date |
---|---|
CN104753813A (zh) | 2015-07-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104753813B (zh) | Dma传送报文的方法 | |
EP1472145B1 (en) | Method and apparatus for concatenating and piggybacking data packets | |
WO2022121469A1 (zh) | 一种流量控制方法、装置、设备及可读存储介质 | |
CN103401946B (zh) | Http上传加速方法和*** | |
CN102394880B (zh) | 内容分发网络中的跳转响应处理方法和设备 | |
US9774651B2 (en) | Method and apparatus for rapid data distribution | |
CN102217251A (zh) | 一种数据转发方法、数据处理方法、***以及相关设备 | |
CN104301066A (zh) | 数据包传输方法及装置 | |
CN101662418A (zh) | 一种传输文件的检测方法及终端 | |
CN103457956B (zh) | 基于多条tcp连接的http流媒体直播方法和*** | |
CN108111558A (zh) | 一种高速报文处理方法、装置及*** | |
CN107404446A (zh) | 一种处理分片报文的方法及装置 | |
CN103944880B (zh) | 一种ZigBee数据传输的方法 | |
CN104113599B (zh) | 一种缓存方法、装置及代理服务器 | |
EP1985028A1 (en) | Method and apparatus for packet aggregation in power line communication network | |
CN112910793A (zh) | 用于七层负载均衡中连接复用的方法和负载均衡器 | |
CN103974339B (zh) | 一种数据缓存的方法和装置 | |
CN101562567B (zh) | 一种处理报文的方法和服务器 | |
CN103856558B (zh) | 一种用于终端应用的数据处理方法和装置 | |
CN104486187B (zh) | 一种动态同步的can通讯设备和方法 | |
CN104009961A (zh) | 一种PPPoE会话标识分配方法及设备 | |
TW201312369A (zh) | 網頁內容過濾方法以及具網頁內容過濾功能之網路設備 | |
CN105453681B (zh) | 一种数据调度方法及装置 | |
CN103297474B (zh) | 一种批量处理分包方法和*** | |
CN109729016A (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 | ||
CB02 | Change of applicant information |
Address after: 100029 Beijing city Chaoyang District Yumin Road No. 3 Applicant after: State Computer Network and Information Safety Management Center Applicant after: Hangzhou Dipu Polytron Technologies Inc Address before: 100029 Beijing city Chaoyang District Yumin Road No. 3 Applicant before: State Computer Network and Information Safety Management Center Applicant before: Hangzhou Dipu Technology Co., Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |