CN101540727B - 一种ip报文的硬件分流方法 - Google Patents

一种ip报文的硬件分流方法 Download PDF

Info

Publication number
CN101540727B
CN101540727B CN2009100831555A CN200910083155A CN101540727B CN 101540727 B CN101540727 B CN 101540727B CN 2009100831555 A CN2009100831555 A CN 2009100831555A CN 200910083155 A CN200910083155 A CN 200910083155A CN 101540727 B CN101540727 B CN 101540727B
Authority
CN
China
Prior art keywords
thread
message
dma
register
network interface
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
Application number
CN2009100831555A
Other languages
English (en)
Other versions
CN101540727A (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.)
Wuxi City Cloud Computer Center Co.,Ltd.
Original Assignee
Dawning Information Industry Beijing Co Ltd
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 Dawning Information Industry Beijing Co Ltd filed Critical Dawning Information Industry Beijing Co Ltd
Priority to CN2009100831555A priority Critical patent/CN101540727B/zh
Publication of CN101540727A publication Critical patent/CN101540727A/zh
Application granted granted Critical
Publication of CN101540727B publication Critical patent/CN101540727B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明涉及一种IP报文的硬件分流方法,本方案利用网卡硬件对接收到的IP报文进行分流,网卡在接受IP报文的同时,抽取IP报文头中的源、目的地址,利用Hash算法计算出该IP报文所属的线程,然后DMA通道调度模块根据线程号启动DMA引擎将报文送到该线程所属的主存缓冲区中,为了支持IP报文的硬件分流策略,上层软件使得每个线程拥有一个专用的主存缓冲区,网卡启动多个接收IP包的线程与主机处理IP包的线程一一对应,主机处理IP包的线程直接从内存缓冲区获取数据进行处理,这中间的数据传输不需要CPU参与,可以降低CPU负载。本发明可支持高达1024甚至4096、8192个硬件线程,最佳配置为每个CPU核对应一个线程,这样每个线程独立工作,互不干扰,系统资源的共享竞争最少,达到最好性能。

Description

一种IP报文的硬件分流方法
技术领域
本发明涉及一种服务器网络IP报文传输硬件分流方法
背景技术
在高速网络接入系统的多路多核服务器环境下,为了充分利用每个处理器核的处理能力,不同IP报文流往往被分配到不同的处理器核进行处理,每个处理器核处理运行一个线程处理数据包。
传统的做法是,网卡将接收到的所有IP报文传送到主存的同一个区域,上层软件有一个调度线程根据IP报文头中的信息将不同的IP报文流分派到不同的处理器核。传统的做法中内存数据移动开销、操作系统切换开销、上层软件开销非常大,特别是通信负荷比较重的情况下系统的性能很差。
如传统DMA操作过程首先有CPU将DMA地址和长度写到要进行DMA的设备,然后设备启动DMA过程,DMA过程完成以后设备向CPU发出中断,告知CPU DMA已经完成,CPU可以准备下一次DMA的地址和长度。
中断由于需要在进入时保存CPU现场,退出时恢复CPU现场,比较耗费系统资源,因此在数据量非常大,DMA过程非常频繁的情况下,中断成了影响系统性能的瓶颈。
发明内容
本发明的目的是克服传统分流方法的重负荷情况下性能差的缺点,采用在网卡上硬件实现IP报文分流提高系统性能。本发明采用方法如下:一种IP报文网卡硬件分流方法,所述网卡包括端口数据采集模块、DMA通道调度模块、DMA通道描述符模块、分流控制寄存器和DMA引擎,其特征在于,所述方法包括如下步骤:
A、所述网卡驱动程序根据当前系统中的各个CPU的负载通过分流控制寄存器调节每个线程处理的IP报文比例,并为每个线程提供一套DMA寄存器,所述每个DMA寄存器包括缓冲区起始地址、缓冲区大小、硬件写指针和软件读指针;
B、网卡驱动加载时为每个线程在内存中申请一块连续的缓冲区,并将缓冲区首地址、大小、缓冲区读写指针初始值写到网卡上每个DMA通道的对应寄存器中,使主内存与DMA寄存器形成映射关系;
C、端口数据采集模块在接受IP报文的同时,抽取IP报文头中的源、目的地址,利用hash算法算出一个hash值,然后利用该hash值与对应的DMA寄存器与分流控制寄存器进行运算,最终决定每个IP报文的线程号,然后将线程号送到DMA通道调度模块;
D、DMA通道调度模块根据当前报文的线程号选择相应的DMA寄存器,通过比较该DMA寄存器读写指针判断内存缓冲区是否已经用完,如果内存缓冲区有空间则启动DMA引擎将该线程号对应的报文写到对应的物理内存中,如果没有则丢弃该报文,然后将寄存器写指针增加相应的数目;
E、软件每个处理线程在处理完当前数据后读网卡寄存器获取本线程的读写指针,通过比较寄存器读写指针判断内存缓冲区是否有待处理的数据,若有数据待处理则从相应的缓冲区读出IP报文进行处理,处理完之后写网卡寄存器更新读指针,重复此步直到所有的数据都处理完毕。
本方案的另一优选方式:所述主机IP处理线程根据线程号直接从内存缓冲区获取数据进行处理。
本方案的再一优选方式:所述D步骤中每个线程提供一个当前待上传的数据总量的信息给调试模块,调度模块优先调度当前数据量最大线程。
本方案的又一优选方式:所述D步骤中报文所属线程号计算方法是:
TiHVUT:分流控制寄存器中与线程i对应的部分。
如果TiHVUT=T(i+1)HVUT,则线程(i+1)将不会分配流量;
否则,HashValue值∈[0,TOHVUT]的报文被分配到线程0;
Hash值∈(TiHVUT,T(i+1)HVUT]的报文被分配到线程i+1;
本方案的还一优选方式:所述E步骤中网卡寄存器中待处理数据的查询是由CPU线程直接执行。
本方法提出查询方式的DMA完全抛弃中断,并且采用多通道,充分利用IO总线,能大大提高系统的DMA性能,利用DMA来对应内容中的虚拟地址,避免调度线程只在内存中操作,数据拥堵的现象,在网卡上硬件实现IP报文分流,进而提高了系统性能。本方案根据所支持的线程数目将主存缓冲区进行分割,使得每个线程拥有一个专用的主存缓冲区,这样可以使线程之间资源竞争大大减少,通过写该寄存器来控制启动的线程数和每个线程分流比例。由于系统存在其他负载,并不是每个CPU核的处理IP报文的能力都是一样的,所以完全均匀的分配不一定最好,因此分流控制寄存器提供给软件接口,由软件划分各个线程分流的比例,从而达到系统性能发挥的最大化。利用本发明设计的网卡可以大大降低内存数据移动开销、操作系统切换开销和上层软件开销,明显改善多路多核服务器环境下网络接入系统的性能。
附图说明
附图1网卡与主机数据传输示意图
附图2DMA缓冲区管理示意图
具体实施方式
本发明提出的查询方式DMA完全抛弃中断,并且采用多通道,充分利用IO总线,能大大提高系统的DMA性能,如图1所示,网卡包括端口数据采集模块、DMA通道调度模块、DMA通道描述符模块、分流控制寄存器和DMA引擎,通过以下步骤实现硬件数据传输的目的。
A、网卡驱动程序根据当前系统中的各个CPU的负载通过分流控制寄存器调节每个线程处理的IP报文比例,并为每个线程提供一套DMA寄存器,所述每个DMA寄存器包括缓冲区起始地址、缓冲区大小、硬件写指针和软件读指针;网卡驱动程序根据需要修改主存缓冲区的管理机制,根据所支持的线程数目将主存缓冲区进行分割,使得每个线程拥有一个专用的主存缓冲区,这样可以使线程之间资源竞争大大减少,系统加载驱动时软件将申请的缓冲区首地址和大小写到对应寄存器,并将读指针寄存器初始化。硬件将写指针初始化为0。
B、网卡驱动加载时为每个线程在内存中申请一块连续的缓冲区,并将缓冲区首地址、大小、缓冲区读写指针初始值写到网卡上每个DMA通道的对应寄存器中,使主内存与DMA寄存器形成映射关系;其中申请缓冲区大小网卡驱动程序根据主机内存大小和线程数目来决定的,驱动程序由大到小尝试为每个线程分配缓冲区,如果分配失败则减小申请的缓冲区大小,直到申请成功。
C、端口数据采集模块在接受IP报文的同时,抽取IP报文头中的源、目的地址,利用hash算法算出一个hash值,然后利用该hash值与对应的DMA寄存器与分流控制寄存器进行运算,最终决定每个IP报文的线程号,然后将线程号送到DMA通道调度模块;
D、DMA通道调度模块根据当前报文的线程号选择相应的DMA寄存器,通过比较该DMA寄存器读写指针判断内存缓冲区是否已经用完,如果内存缓冲区有空间则启动DMA引擎将该线程号对应的报文写到对应的物理内存中,如果没有则丢弃该报文,然后将寄存器写指针增加相应的数目;每个线程提供一个当前待上传的数据总量的信息给调试模块,调度模块优先调度当前数据量最大线程。如图2所示,其中报文所属线程号计算方法是:TiHVUT:分流控制寄存器中与线程i对应的部分。
如果TiHVUT=T(i+1)HVUT,则线程(i+1)将不会分配流量;
否则,HashValue值∈[0,TOHVUT]的报文被分配到线程0;
Hash值∈(TiHVUT,T(i+1)HVUT]的报文被分配到线程i+1;
软件每个线程通过查询本线程对应的读写指针判断缓冲区中是否有待处理数据(相等则为空,没有数据待处理)和待处理数据的内存物理地址和大小,然后进行数据处理,处理完之后写对应寄存器更新读指针。当某个线程要启动DMA操作时,首先检查缓冲区是否写满(写指针加1等于读指针)。如果没满则启动DMA过程,并在DMA完成以后更新写指针,否则丢弃当前待报文,以免影响后续数据传输。
E、软件每个处理线程在处理完当前数据后读网卡寄存器获取本线程的读写指针,通过比较寄存器读写指针判断内存缓冲区是否有待处理的数据,若有数据待处理则从相应的缓冲区读出IP报文进行处理,处理完之后写网卡寄存器更新读指针,重复此步直到所有的数据都处理完毕;网卡寄存器中待处理数据的查询是由CPU线程直接执行。
本方案中网卡启动多个接收IP包的线程,与主机处理IP包的线程一一对应,网卡收包线程直接将接收的IP包写到主机内存的一块缓冲区中,主机处理IP包的线程直接从内存缓冲区获取数据进行处理,这中间的数据传输不需要CPU参与,可以降低CPU负载。本发明可支持高达1024甚至4096、8192个硬件线程,最佳配置为每个CPU核对应一个线程,这样每个线程独立工作,互不干扰,系统资源的共享竞争最少,能达到最好性能。

Claims (4)

1.一种IP报文网卡硬件分流方法,所述网卡包括端口数据采集模块、DMA通道调度模块、DMA通道描述符模块、分流控制寄存器和DMA引擎,其特征在于,所述方法包括如下步骤:
A、所述网卡驱动程序根据当前系统中的各个CPU的负载通过分流控制寄存器调节每个线程处理的IP报文比例,并为每个线程提供一套DMA寄存器,所述每个DMA寄存器包括缓冲区起始地址、缓冲区大小、硬件写指针和软件读指针;
B、网卡驱动加载时为每个线程在内存中申请一块连续的缓冲区,并将缓冲区首地址、大小、缓冲区读写指针初始值写到网卡上每个DMA通道的对应寄存器中,使主内存与DMA寄存器形成映射关系;
C、端口数据采集模块在接受IP报文的同时,抽取IP报文头中的源、目的地址,利用hash算法算出一个hash值,然后利用该hash值与对应的DMA寄存器、分流控制寄存器进行运算,最终决定每个IP报文的线程号,然后将线程号送到DMA通道调度模块;
D、DMA通道调度模块根据当前报文的线程号选择相应的DMA寄存器,通过比较该DMA寄存器读写指针判断内存缓冲区是否已经用完,如果内存缓冲区有空间则启动DMA引擎将该线程号对应的报文写到对应的物理内存中,如果没有则丢弃该报文,然后将寄存器写指针增加相应的数目;
E、软件每个处理线程在处理完当前数据后读网卡寄存器获取本线程的读写指针,通过比较DMA寄存器读写指针判断主机内存缓冲区是否有待处理的数据,若有数据待处理则从相应的缓冲区读出IP报文进行处理,处理完之后写DMA寄存器更新读指针,重复此步直到所有的数据都处理完毕。
2.如权利要求1所述的一种IP报文网卡硬件分流方法,其特征在于,所述D步骤中每个线程提供一个当前待上传的数据总量的信息给调试模块,调度模块优先调度当前数据量最大线程。
3.如权利要求1所述的一种IP报文网卡硬件分流方法,其特征在于,所述C步骤中报文所属线程号计算方法是:
TiHVUT:分流控制寄存器中与线程i对应的部分;
如果TiHVUT=Ti+1HVUT,则线程i+1将不会分配流量;
否则,HashValue值∈[0,T0HVUT]的报文被分配到线程0;
Hash值∈(TiHVUT,Ti+1HVUT]的报文被分配到线程i+1。
4.如权利要求1所述的一种IP报文网卡硬件分流方法,其特征在于,所述E步骤中判断主机内存缓冲区是否有待处理的数据是由CPU线程直接执行。 
CN2009100831555A 2009-05-05 2009-05-05 一种ip报文的硬件分流方法 Active CN101540727B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2009100831555A CN101540727B (zh) 2009-05-05 2009-05-05 一种ip报文的硬件分流方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2009100831555A CN101540727B (zh) 2009-05-05 2009-05-05 一种ip报文的硬件分流方法

Publications (2)

Publication Number Publication Date
CN101540727A CN101540727A (zh) 2009-09-23
CN101540727B true CN101540727B (zh) 2012-05-09

Family

ID=41123723

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009100831555A Active CN101540727B (zh) 2009-05-05 2009-05-05 一种ip报文的硬件分流方法

Country Status (1)

Country Link
CN (1) CN101540727B (zh)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101968748B (zh) * 2010-09-17 2014-04-02 北京星网锐捷网络技术有限公司 多线程数据调度方法、装置及网络设备
CN102420749A (zh) * 2011-11-28 2012-04-18 曙光信息产业(北京)有限公司 一种网卡发包功能的实现装置和方法
CN102497430B (zh) * 2011-12-13 2014-12-03 曙光信息产业(北京)有限公司 一种分流设备实现系统和方法
CN102497297A (zh) * 2011-12-13 2012-06-13 曙光信息产业(北京)有限公司 基于多核多线程的深度报文检测技术的实现系统和方法
CN102497322A (zh) * 2011-12-19 2012-06-13 曙光信息产业(北京)有限公司 一种基于分流网卡和多核cpu实现的高速包过滤设备和方法
CN102752198B (zh) * 2012-06-21 2014-10-29 北京星网锐捷网络技术有限公司 多核报文转发方法、多核处理器及网络设备
CN102769575A (zh) * 2012-08-08 2012-11-07 南京中兴特种软件有限责任公司 一种用于智能网卡的流量负载均衡方法
CN102904729B (zh) * 2012-10-26 2018-05-01 曙光信息产业(北京)有限公司 根据协议、端口分流支持多应用的智能加速网卡
CN105706058B (zh) * 2013-11-05 2019-09-20 甲骨文国际公司 用于支持网络环境中高效的分组处理模型和用于分组处理的优化的缓冲区利用的系统和方法
CN104539642A (zh) * 2014-10-29 2015-04-22 杭州银江智慧医疗集团有限公司 一种基于感控协议包的物联模组设备硬件加速装置及方法
CN105183553A (zh) * 2015-10-31 2015-12-23 山东智洋电气股份有限公司 软总线程序并发资源分配方法
CN106209840A (zh) * 2016-07-12 2016-12-07 中国银联股份有限公司 一种网络包去重方法及装置
CN113504985B (zh) * 2016-07-29 2022-10-11 华为技术有限公司 一种任务处理方法以及网络设备
DK3358463T3 (da) * 2016-08-26 2020-11-16 Huawei Tech Co Ltd Fremgangsmåde, anordning og system til implementering af hardwareaccelerationsbehandling
CN109800064B (zh) * 2017-11-17 2024-01-30 华为技术有限公司 一种处理器和线程处理方法
CN108092913B (zh) * 2017-12-27 2022-01-25 杭州迪普科技股份有限公司 一种报文分流的方法和多核cpu网络设备
CN109361723B (zh) * 2018-04-18 2021-08-31 上海锐智集数电子有限公司 一种udp有效报文发送时序控制方法
CN108989289B (zh) * 2018-06-21 2020-10-13 北京亚鸿世纪科技发展有限公司 一种保障流量采集完整性的方法及装置
CN110046115B (zh) * 2019-04-03 2023-09-01 超越科技股份有限公司 一种基于大数据量高速异步传输的发送终端,接收终端,方法及系统
TWI714055B (zh) * 2019-04-16 2020-12-21 瑞昱半導體股份有限公司 資料傳輸方法及資料傳輸系統
CN110943941B (zh) * 2019-12-06 2022-03-11 北京天融信网络安全技术有限公司 一种报文接收方法、网卡及电子设备
CN113965844B (zh) * 2021-12-22 2022-04-15 深圳市维海德技术股份有限公司 低延时音频传输方法、装置、驱动设备及可读存储介质

Also Published As

Publication number Publication date
CN101540727A (zh) 2009-09-23

Similar Documents

Publication Publication Date Title
CN101540727B (zh) 一种ip报文的硬件分流方法
US11025544B2 (en) Network interface for data transport in heterogeneous computing environments
CN107623646B (zh) 数据流传输方法、发送设备及接收设备
CN101340574B (zh) 一种实现零拷贝发送流媒体数据的方法及系统
EP4298776A1 (en) Service mesh offload to network devices
CN101030182A (zh) 执行dma数据传输的设备和方法
US20040037313A1 (en) Packet data service over hyper transport link(s)
US8891517B2 (en) Switching device
KR20160037827A (ko) 시스템 메모리로의 연결을 위한 오프로드 프로세서 모듈들
US11496419B2 (en) Reliable transport offloaded to network devices
US20050144402A1 (en) Method, system, and program for managing virtual memory
CN101034384A (zh) 一种能同时进行读写操作的dma控制器及传输方法
US20040030712A1 (en) Efficient routing of packet data in a scalable processing resource
CN107870879A (zh) 一种数据搬移方法、加速器板卡、主机及数据搬移系统
TWI717373B (zh) 用於通用序列匯流排2.0頻寬保留之方法及系統
US20240086200A1 (en) Self-scheduling threads in a programmable atomic unit
CN104811431A (zh) 基于并行协议栈实例的数据包处理方法和装置
CN102843435A (zh) 一种在集群系统中存储介质的访问、响应方法和系统
CN1595910A (zh) 一种网络处理器的数据包接收接口部件及其存储管理方法
US11347567B2 (en) Methods and apparatus for multiplexing data flows via a single data structure
CN1450767A (zh) 一种数据包转发控制装置和方法
CN109167740B (zh) 一种数据传输的方法和装置
CN101388906A (zh) 存取数据的方法与系统
CN104657326A (zh) 双cpu通信方法、系统和片上系统芯片
US20180219641A1 (en) Fractional multiplexing of serial attached small computer system interface links

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
ASS Succession or assignment of patent right

Owner name: WUXI CITY CLOUD COMPUTER CENTER CO., LTD.

Free format text: FORMER OWNER: SHUGUANG INFORMATION INDUSTRIAL (BEIJING) CO., LTD.

Effective date: 20130603

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 100084 HAIDIAN, BEIJING TO: 214028 WUXI, JIANGSU PROVINCE

TR01 Transfer of patent right

Effective date of registration: 20130603

Address after: 214028 Jiangsu province Wuxi Zhenze Wuxi national hi tech Industrial Development Zone, No. 18 Wuxi Road (National) whale Software Park B District North layer

Patentee after: Wuxi City Cloud Computer Center Co.,Ltd.

Address before: 100084 Beijing Haidian District City Mill Street No. 64

Patentee before: Dawning Information Industry (Beijing) Co., Ltd.