CN113992608A - 一种网络收发包路径优化方法、装置及存储介质 - Google Patents
一种网络收发包路径优化方法、装置及存储介质 Download PDFInfo
- Publication number
- CN113992608A CN113992608A CN202111241785.8A CN202111241785A CN113992608A CN 113992608 A CN113992608 A CN 113992608A CN 202111241785 A CN202111241785 A CN 202111241785A CN 113992608 A CN113992608 A CN 113992608A
- Authority
- CN
- China
- Prior art keywords
- queue
- packet
- data
- data packet
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 33
- 238000004590 computer program Methods 0.000 claims description 3
- 239000000872 buffer Substances 0.000 description 4
- 238000010586 diagram Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/901—Buffering arrangements using storage descriptor, e.g. read or write pointers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9031—Wraparound memory, e.g. overrun or underrun detection
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Information Transfer Systems (AREA)
Abstract
本发明公开了一种网络收发包路径优化方法、装置及存储介质,所述方法包括网络收包时,调用recv接口对预先构建的环形队列中存放的数据包进行读取,并将该数据包的地址返回给用户程序,使用户程序能够根据所述地址对数据包进行操作;网络发包时,先调用alloc接口,从环形队列中返回第一块可用的内存地址,在该内存上构造以太网帧后调用send接口发送数据包;本发明在收包时使用轮询方式收包,不再有中断处理,不再绕路内核协议栈,减少了数据拷贝;在发包时也不再绕路内核协议栈,减少了数据拷贝,本发明通过优化网络收发包路径,有效提高网络收发包性能。
Description
技术领域
本发明涉及一种网络收发包路径优化方法、装置及存储介质,属于网络优化技术领域。
背景技术
网络收包时,先缓存在ringbuffer中,再经协议栈处理后缓存在socket中,最后用户通过系统调用获取数据包。网络发包时,用户通过系统调用将数据缓存在socket中,再经协议栈处理后缓存在ringbuffer中,最后通过网卡发包。因为网络收发包时都要经过协议栈处理,且处理期间还涉及到内存拷贝,所以影响数据收发性能。
发明内容
本发明的目的在于克服现有技术中的不足,提供一种网络收发包路径优化方法、装置及存储介质,通过网络收发包路径优化技术,可以在网络收发包处理时绕过内核协议栈,减少内存拷贝,提高数据收发性能。
为达到上述目的,本发明是采用下述技术方案实现的:
第一方面,本发明提供了一种网络收发包路径优化方法,应用于用户程序端,包括:
网络收包时,调用recv接口对预先构建的环形队列中存放的数据包进行读取,并将该数据包的地址返回给用户程序,使用户程序能够根据所述地址对数据包进行操作;
网络发包时,先调用alloc接口,从环形队列中返回第一块可用的内存地址,在该内存上构造以太网帧后调用send接口发送数据包。
进一步的,所述环形队列包括第一队列和第二队列,其中,第一队列用于存放从网卡收上来的数据包,第二队列用于存放从用户程序下发的数据包。
进一步的,所述环形队列创建时,申请一段连续的内核内存区域,划分为第一队列和第二队列,用于存放数据包。
进一步的,所述环形队列包含首尾指针用于指示缓存数据包的起始和终止位置。
进一步的,所述首尾指针指示缓存数据包的起始和终止位置的方法,具体包括:
当初始化时队列为空时,首尾指针指向同一位置;
当队列满时,尾指针指向的数据包的下一个是首指针指向的数据包;
当有数据包到达时,尾指针向后偏移一位,并在尾指针新指向的位置缓存数据包;
当读取数据时,返回首指针指向的数据包,并将首指针向后偏移一位;
当队列为空时,读取数据时直接返回失败,首尾指针不动;
当队列已满时,仍然可以正常缓存数据,数据缓存后需同时将首指针向后偏移一位,即新的数据会覆盖第一个数据。
进一步的,所述alloc接口、send接口和recv接口预先设置在驱动中,用于直接操作环形队列。
进一步的,所述recv接口采用轮询模式。
第二方面,本发明提供一种网络收发包路径优化装置,包括处理器及存储介质;
所述存储介质用于存储指令;
所述处理器用于根据所述指令进行操作以执行根据上述任一项所述方法的步骤。
第三方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一项所述方法的步骤。
与现有技术相比,本发明所达到的有益效果:
本发明在收包时使用轮询方式收包,不再有中断处理,不再绕路内核协议栈,减少了数据拷贝;在发包时也不再绕路内核协议栈,减少了数据拷贝,本发明通过优化网络收发包路径,有效提高网络收发包性能。
附图说明
图1是本发明实施例提供的网络收包示意图;
图2是本发明实施例提供的网络发包示意图。
具体实施方式
下面结合附图对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
实施例1
本实施例介绍一种网络收发包路径优化方法,应用于用户程序端,包括:
网络收包时,调用recv接口对预先构建的环形队列中存放的数据包进行读取,并将该数据包的地址返回给用户程序,使用户程序能够根据所述地址对数据包进行操作;
网络发包时,先调用alloc接口,从环形队列中返回第一块可用的内存地址,在该内存上构造以太网帧后调用send接口发送数据包。
如图1、图2所示,本实施例提供的网络收发包路径优化方法,其应用过程具体涉及如下步骤:
一、NIC(网卡)驱动初始化阶段,创建两个Ring buffer(环形队列)分别是rx队列和tx队列,并申请一段连续的内核内存区域,划分多个数据块并分为两组,挂在两个队列上,用于存放数据包。rx队列用于存放从NIC收上来的数据包,tx队列用于存放从用户程序下发的要发送的数据包。
二、Ring buffer包含首尾指针用于指示缓存数据包的起始和终止位置,初始化时队列为空,此时首尾指针指向同一位置,当队列满时尾指针指向的数据块的下一个是首指针指向的数据块。当有数据包到达时,尾指针向后偏移一位,并在新的尾指针指向的数据块中缓存数据包;当读取数据时,返回首指针指向的数据包,并将首指针向后偏移一位;当队列为空时,读取数据时直接返回失败,首尾指针不动;当队列已满时,仍然可以正常缓存数据,数据缓存后需同时将首指针向后偏移一位(即新数据包会覆盖最老的数据包)。
三、驱动为用户程序提供alloc接口、send接口和recv接口,用于直接操作Ringbuffer。recv接口采用轮询模式,用户程序每次调用recv时,驱动尝试读取rx队列中的第一个数据包并将该数据块的地址返回给用户程序,用户程序可直接对该数据块进行操作。数据块缓存的数据包是以太网帧,由用户程序负责解析以太网帧。用户程序想要发送数据时先调用alloc接口,从tx队列中返回第一块可用的内存,用户程序在该内存上构造以太网帧后调用send接口。
四、NIC收包后通过dma将数据包从fifo写入rx队列后不再触发中断,而是通过recv接口轮询方式从rx队列读取数据包。用户调用send接口时会触发dma中断,通过dma将数据包从tx队列写入fifo并发送。dma初始化时分配一块内存保存标志,每个标志块对应一个数据块,dma收发包时都会在处理完成后去改变这个标志。驱动定时或再下一次发包时查询相应的标志块,用来判断某个数据包是否已写入fifo,已写入则清空该数据缓存。
实施例2
本实施例提供一种网络收发包路径优化装置,包括处理器及存储介质;
所述存储介质用于存储指令;
所述处理器用于根据所述指令进行操作以执行根据下述任一项所述方法的步骤:
网络收包时,调用recv接口对预先构建的环形队列中存放的数据包进行读取,并将该数据包的地址返回给用户程序,使用户程序能够根据所述地址对数据包进行操作;
网络发包时,先调用alloc接口,从环形队列中返回第一块可用的内存地址,在该内存上构造以太网帧后调用send接口发送数据包。
实施例3
本实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现下述任一项所述方法的步骤:
网络收包时,调用recv接口对预先构建的环形队列中存放的数据包进行读取,并将该数据包的地址返回给用户程序,使用户程序能够根据所述地址对数据包进行操作;
网络发包时,先调用alloc接口,从环形队列中返回第一块可用的内存地址,在该内存上构造以太网帧后调用send接口发送数据包。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
Claims (9)
1.一种网络收发包路径优化方法,其特征在于,应用于用户程序端,包括:
网络收包时,调用recv接口对预先构建的环形队列中存放的待接收数据包进行读取,并将该数据包的地址返回给用户程序,使用户程序能够根据所述地址对数据包进行操作;
网络发包时,调用alloc接口,返回环形队列中的第一块可用内存地址给用户程序,在该内存上构造以太网帧后调用send接口发送数据包。
2.根据权利要求1所述的网络收发包路径优化方法,其特征在于:所述环形队列包括第一队列和第二队列,其中,第一队列用于存放从网卡收上来的数据包,第二队列用于存放从用户程序下发的数据包。
3.根据权利要求2所述的网络收发包路径优化方法,其特征在于:所述环形队列创建时,申请一段连续的内核内存区域,划分为第一队列和第二队列,用于存放数据包。
4.根据权利要求1所述的网络收发包路径优化方法,其特征在于:所述环形队列包含首尾指针用于指示缓存数据包的起始和终止位置。
5.根据权利要求1所述的网络收发包路径优化方法,其特征在于:所述首尾指针指示缓存数据包的起始和终止位置的方法,具体包括:
当初始化时队列为空时,首尾指针指向同一位置;
当队列满时,尾指针指向的数据包的下一个是首指针指向的数据包;
当有数据包到达时,尾指针向后偏移一位,并在尾指针新指向的位置缓存数据包;
当读取数据时,返回首指针指向的数据包,并将首指针向后偏移一位;
当队列为空时,读取数据时直接返回失败,首尾指针不动;
当队列已满时,仍然可以正常缓存数据,数据缓存后需同时将首指针向后偏移一位,即新的数据会覆盖第一个数据。
6.根据权利要求1所述的网络收发包路径优化方法,其特征在于:所述alloc接口、send接口和recv接口预先设置在驱动中,用于直接操作环形队列。
7.根据权利要求1所述的网络收发包路径优化方法,其特征在于:所述recv接口采用轮询模式。
8.一种网络收发包路径优化装置,其特征在于:包括处理器及存储介质;
所述存储介质用于存储指令;
所述处理器用于根据所述指令进行操作以执行根据权利要求1~7任一项所述方法的步骤。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于:该程序被处理器执行时实现权利要求1~7任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111241785.8A CN113992608B (zh) | 2021-10-25 | 2021-10-25 | 一种网络收发包路径优化方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111241785.8A CN113992608B (zh) | 2021-10-25 | 2021-10-25 | 一种网络收发包路径优化方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113992608A true CN113992608A (zh) | 2022-01-28 |
CN113992608B CN113992608B (zh) | 2024-01-05 |
Family
ID=79741051
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111241785.8A Active CN113992608B (zh) | 2021-10-25 | 2021-10-25 | 一种网络收发包路径优化方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113992608B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115225565A (zh) * | 2022-07-25 | 2022-10-21 | 科东(广州)软件科技有限公司 | 数据包收发配置、收取、发送方法及装置、电子设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1529256A (zh) * | 2003-10-17 | 2004-09-15 | 中兴通讯股份有限公司 | 基于双环形队列、非中断式pci通信方法 |
CN102156662A (zh) * | 2011-02-14 | 2011-08-17 | 大唐移动通信设备有限公司 | 一种数据处理方法和设备 |
CN103581181A (zh) * | 2013-10-28 | 2014-02-12 | 清华大学 | 数据包捕获、处理和发送方法及系统 |
CN106302240A (zh) * | 2016-08-19 | 2017-01-04 | 山东智洋电气股份有限公司 | 服务器端接收客户端并发连接和数据处理方法 |
CN108090003A (zh) * | 2017-11-20 | 2018-05-29 | 广东睿江云计算股份有限公司 | 一种基于零拷贝的提升web服务器性能的方法、系统 |
CN110138553A (zh) * | 2019-05-10 | 2019-08-16 | 郑州信大捷安信息技术股份有限公司 | 一种IPSec VPN网关数据包处理装置及方法 |
WO2020206849A1 (zh) * | 2019-04-09 | 2020-10-15 | 烽火通信科技股份有限公司 | 一种处理带vlan tag的dhcp数据的方法及系统 |
-
2021
- 2021-10-25 CN CN202111241785.8A patent/CN113992608B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1529256A (zh) * | 2003-10-17 | 2004-09-15 | 中兴通讯股份有限公司 | 基于双环形队列、非中断式pci通信方法 |
CN102156662A (zh) * | 2011-02-14 | 2011-08-17 | 大唐移动通信设备有限公司 | 一种数据处理方法和设备 |
CN103581181A (zh) * | 2013-10-28 | 2014-02-12 | 清华大学 | 数据包捕获、处理和发送方法及系统 |
CN106302240A (zh) * | 2016-08-19 | 2017-01-04 | 山东智洋电气股份有限公司 | 服务器端接收客户端并发连接和数据处理方法 |
CN108090003A (zh) * | 2017-11-20 | 2018-05-29 | 广东睿江云计算股份有限公司 | 一种基于零拷贝的提升web服务器性能的方法、系统 |
WO2020206849A1 (zh) * | 2019-04-09 | 2020-10-15 | 烽火通信科技股份有限公司 | 一种处理带vlan tag的dhcp数据的方法及系统 |
CN110138553A (zh) * | 2019-05-10 | 2019-08-16 | 郑州信大捷安信息技术股份有限公司 | 一种IPSec VPN网关数据包处理装置及方法 |
Non-Patent Citations (1)
Title |
---|
吴伟国,王建德编著: "《计算机程序设计》", 复旦大学出版社, pages: 104 - 105 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115225565A (zh) * | 2022-07-25 | 2022-10-21 | 科东(广州)软件科技有限公司 | 数据包收发配置、收取、发送方法及装置、电子设备 |
CN115225565B (zh) * | 2022-07-25 | 2023-12-15 | 科东(广州)软件科技有限公司 | 数据包收发配置、收取、发送方法及装置、电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN113992608B (zh) | 2024-01-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11899596B2 (en) | System and method for facilitating dynamic command management in a network interface controller (NIC) | |
CN109936510B (zh) | 多路径rdma传输 | |
US7526593B2 (en) | Packet combiner for a packetized bus with dynamic holdoff time | |
CN113225307B (zh) | 卸载引擎网卡中描述符预读取的优化方法、系统及终端 | |
CN112559436B (zh) | 一种rdma通信设备的上下文访问方法及系统 | |
US7788437B2 (en) | Computer system with network interface retransmit | |
US6388989B1 (en) | Method and apparatus for preventing memory overrun in a data transmission system | |
CN108932207A (zh) | 带有缓存区的sdio-wifi数据传输方法及系统 | |
CN113518044B (zh) | Epa设备 | |
CN113992608B (zh) | 一种网络收发包路径优化方法、装置及存储介质 | |
JP2008512942A5 (zh) | ||
US6529945B1 (en) | Data buffer management between two different systems | |
CN111274173A (zh) | 一种基于zynq的多节点srio通信设计方法及装置 | |
CN113572582B (zh) | 数据发送、重传控制方法及系统、存储介质及电子设备 | |
CN110781104A (zh) | 一种数据处理系统、方法和装置 | |
CN112235206A (zh) | 一种基于单片机的环形缓冲队列数据接收机制 | |
JP2008512943A5 (zh) | ||
CN115955441A (zh) | 一种基于tsn队列的管理调度方法、装置 | |
CN111666237B (zh) | 具有高速缓存管理功能的dma控制器 | |
US20220217098A1 (en) | Streaming communication between devices | |
CN109902036B (zh) | 基于emif接口的双速率1553b总线设备通信方法 | |
US7379453B1 (en) | Method and apparatus for transferring multiple packets from hardware | |
CN115687200B (zh) | 基于FPGA应用于EPA的PCIe数据传输方法及系统 | |
JP4373887B2 (ja) | パケット処理方法 | |
CN113676421B (zh) | 一种基于PCIe的多端口网络报文收发方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |