CN104753813A - Dma传送报文的方法 - Google Patents

Dma传送报文的方法 Download PDF

Info

Publication number
CN104753813A
CN104753813A CN201310740954.1A CN201310740954A CN104753813A CN 104753813 A CN104753813 A CN 104753813A CN 201310740954 A CN201310740954 A CN 201310740954A CN 104753813 A CN104753813 A CN 104753813A
Authority
CN
China
Prior art keywords
message
length
core
dma
message length
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.)
Granted
Application number
CN201310740954.1A
Other languages
English (en)
Other versions
CN104753813B (zh
Inventor
邹昕
周立
何清林
王维晟
闫攀
任晓瑶
秦德楼
于林涛
杜建明
原万万
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou DPTech Technologies Co Ltd
National Computer Network and Information Security Management Center
Original Assignee
Hangzhou DPTech Technologies Co Ltd
National Computer Network and Information Security Management Center
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hangzhou DPTech Technologies Co Ltd, National Computer Network and Information Security Management Center filed Critical Hangzhou DPTech Technologies Co Ltd
Priority to CN201310740954.1A priority Critical patent/CN104753813B/zh
Publication of CN104753813A publication Critical patent/CN104753813A/zh
Application granted granted Critical
Publication of CN104753813B publication Critical patent/CN104753813B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明提供一种DMA传送报文的方法,应用于网卡,包括:控制核从内存中为每一个数据核分配一个拼包缓冲区;当网卡接收到报文时,数据核接收网络加速器的报文处理消息,并从该消息中获取报文长度信息,若该报文长度小于预定报文长度,则将该报文存入该数据核对应的拼包缓冲区;若该报文长度大于或等于预定报文长度,则启动DMA控制器执行DMA操作传送该报文给服务器;若数据核对应的拼包缓冲区内所有报文的总长度大于或等于预定报文长度,则启动DMA控制器执行DMA操作传送该报文给服务器;若报文总长度小于预定报文长度,则不作处理。本发明能够有效降低DMA的操作次数,提高PCIE通道带宽的有效利用率,从而提升了网卡小包的收包速率。

Description

DMA传送报文的方法
技术领域
本发明涉及网络数据处理领域,尤其涉及一种DMA传送报文的方法。
背景技术
随着网络技术的快速发展,网络带宽每年以接近3倍的速度迅猛发展,目前10G网络已开始部署到部分端系统,给网络流量分析应用带来了较大压力。随着下一代互联网(NGI)核心技术,如IPV6/MPLS、路由协议、QOS技术等不断成熟,互联网进入向下一代演进的关键阶段。各种网络发展呈现高带宽、高流量化趋势,因此,大幅度提高网络设备的性能及处理能力显得尤为重要。
服务器作为一种为用户提供共享信息资源和各种服务的高性能网络设备,其处理网络数据的能力很大程度上取决于网卡的性能。在实际使用中,网卡通过PCI-E插槽与服务器连接,当报文从网卡光口捕获并做前期处理后,通过PCI-E通道DMA(Direct Memory Access,直接内存存取)到服务器侧缓冲区,完成网卡侧任务处理。
目前,网卡的捕包采用每接收到一个报文做一次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 (5)

1.一种DMA传送报文的方法,应用于网卡,该网卡包括多核CPU、内存以及DMA控制器,其中,该多核CPU包括控制核、网络加速器以及多个数据核,其特征在于,该方法包括以下步骤:
步骤A,控制核从内存中为每一个数据核分配一个拼包缓冲区;
步骤B,当网卡接收到报文时,数据核接收网络加速器的报文处理消息,并从该消息中获取报文长度信息,若该报文长度小于预定报文长度,则将该报文存入该数据核对应的拼包缓冲区,转至步骤C;若该报文长度大于或等于预定报文长度,则转至步骤D;
步骤C,所述数据核计算其对应拼包缓冲区内所有报文的总长度,若报文总长度大于或等于预定报文长度,则转至步骤D;若报文总长度小于预定报文长度,则不作处理;
步骤D,所述数据核启动DMA控制器执行DMA操作传送该报文给服务器。
2.如权利要求1所述的方法,其特征在于,所述拼包缓冲区大小不小于2L-2字节,其中,L为预定报文长度。
3.如权利要求1所述的方法,其特征在于,所述预定报文长度为128字节。
4.如权利要求1所述的方法,其特征在于,还包括:
步骤E,控制核定时轮询所有拼包缓冲区,若轮询到的当前拼包缓冲区有报文,则启动DMA控制器执行DMA操作传送该拼包缓冲区内报文给服务器。
5.如权利要求4所述的方法,其特征在于:所述定时的时长大于控制核对所有拼包缓冲区进行一次轮询的总时间长度。
CN201310740954.1A 2013-12-27 2013-12-27 Dma传送报文的方法 Active CN104753813B (zh)

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 true CN104753813A (zh) 2015-07-01
CN104753813B 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)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106027349A (zh) * 2016-04-29 2016-10-12 重庆爱思网安信息技术有限公司 一种pci-e总线接口传输卡及基于该传输卡的数据传输方法
CN110046115A (zh) * 2019-04-03 2019-07-23 山东超越数控电子股份有限公司 一种基于大数据量高速异步传输的发送终端,接收终端,方法及系统
CN113542148A (zh) * 2021-07-15 2021-10-22 恒安嘉新(北京)科技股份公司 一种报文聚合方法、装置、网络网卡及可读存储介质
CN113676416A (zh) * 2021-10-22 2021-11-19 浙江锐文科技有限公司 一种在高速网卡/dpu内提升网络服务质量的方法
CN114979041A (zh) * 2022-05-18 2022-08-30 芯河半导体科技(无锡)有限公司 一种提升片上缓存利用效率的拼包方法

Citations (7)

* Cited by examiner, † Cited by third party
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 曙光信息产业(北京)有限公司 一种网卡发包功能的实现装置和方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Title
刘小威等: "零拷贝技术在网络分析工具中的应用", 《计算机系统应用》 *
苏绥平: "一种零拷贝报文捕获技术及其性能分析", 《数字技术与应用》 *

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106027349A (zh) * 2016-04-29 2016-10-12 重庆爱思网安信息技术有限公司 一种pci-e总线接口传输卡及基于该传输卡的数据传输方法
CN106027349B (zh) * 2016-04-29 2019-01-18 重庆爱思网安信息技术有限公司 一种pci-e总线接口传输卡及基于该传输卡的数据传输方法
CN110046115A (zh) * 2019-04-03 2019-07-23 山东超越数控电子股份有限公司 一种基于大数据量高速异步传输的发送终端,接收终端,方法及系统
CN110046115B (zh) * 2019-04-03 2023-09-01 超越科技股份有限公司 一种基于大数据量高速异步传输的发送终端,接收终端,方法及系统
CN113542148A (zh) * 2021-07-15 2021-10-22 恒安嘉新(北京)科技股份公司 一种报文聚合方法、装置、网络网卡及可读存储介质
CN113676416A (zh) * 2021-10-22 2021-11-19 浙江锐文科技有限公司 一种在高速网卡/dpu内提升网络服务质量的方法
CN113676416B (zh) * 2021-10-22 2021-12-28 浙江锐文科技有限公司 一种在高速网卡/dpu内提升网络服务质量的方法
CN114979041A (zh) * 2022-05-18 2022-08-30 芯河半导体科技(无锡)有限公司 一种提升片上缓存利用效率的拼包方法
CN114979041B (zh) * 2022-05-18 2024-03-08 芯河半导体科技(无锡)有限公司 一种提升片上缓存利用效率的拼包方法

Also Published As

Publication number Publication date
CN104753813B (zh) 2018-03-16

Similar Documents

Publication Publication Date Title
CN108536543B (zh) 具有基于跨步的数据分散的接收队列
US10425344B2 (en) Avoiding dropped data packets on a network transmission
CN106034084B (zh) 一种数据传输方法及装置
CN104753813A (zh) Dma传送报文的方法
WO2014079091A1 (zh) 一种基于时间触发以太网的数据传输方法及节点设备
CN102394880B (zh) 内容分发网络中的跳转响应处理方法和设备
US9774651B2 (en) Method and apparatus for rapid data distribution
CN103957169A (zh) 一种基于反向请求的可靠udp的实现方法
CN102006283A (zh) 数据传输的方法和装置
CN102811176B (zh) 一种数据流量控制方法和装置
CN109547162B (zh) 基于两套单向边界的数据通信方法
WO2017198108A1 (zh) 一种处理分片报文的方法及装置
JP2015511468A5 (zh)
CN105391536A (zh) 一种客户端和服务端进行通信的方法及装置
CN104052676B (zh) 一种发送通路装置及发送通路的数据处理方法
CN105743951A (zh) 一种数据发送、接收的方法及装置
WO2016095323A1 (zh) 一种基于串口服务器的数据传输方法及装置
CN103368870A (zh) 集群存储网络并行负载的控制方法及系统
KR102153543B1 (ko) 무선 환경에서 usb 통신을 위한 버퍼 관리 방법 및 장치
CN109818710A (zh) 一种数据传输方法及对应装置
CN104486187B (zh) 一种动态同步的can通讯设备和方法
CN105530196B (zh) 一种afdx终端系统基于子虚链路的调度方法
CN109586931A (zh) 组播方法及终端设备
US8458327B1 (en) System and method of reducing network latency
CN108111571B (zh) 一种基于iSCSI协议的存储QoS方法

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