CN108366018B - 一种基于dpdk的网络数据包处理方法 - Google Patents
一种基于dpdk的网络数据包处理方法 Download PDFInfo
- Publication number
- CN108366018B CN108366018B CN201710061598.9A CN201710061598A CN108366018B CN 108366018 B CN108366018 B CN 108366018B CN 201710061598 A CN201710061598 A CN 201710061598A CN 108366018 B CN108366018 B CN 108366018B
- Authority
- CN
- China
- Prior art keywords
- data
- dpdk
- protocol stack
- network protocol
- user space
- 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
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/54—Organization of routing tables
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/06—Notations for structuring of protocol data, e.g. abstract syntax notation one [ASN.1]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/26—Special purpose or proprietary protocols or architectures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请公开了一种基于数据平面开发工具包(DPDK)的网络数据包处理方法,该方法基于DPDK用户空间应用程序实现旁路网络协议栈;并由DPDK用户空间旁路网络协议栈与Linux内核网络协议栈共同对同一物理网络端口的数据进行处理。应用本申请公开的技术方案,能够降低DPDK技术应用到网络设备研发项目中的技术难度和开发成本,提高效率。
Description
技术领域
本申请涉及网络技术领域,特别涉及一种基于DPDK的网络数据包处理方法。
背景技术
传统的Linux对称多处理器(SMP)环境下,多个CPU运行操作系统的单一复本,并且,各CPU之间共享内存子系统以及总线架构。Linux SMP环境下,因共享内存、多核调度、中断等带来的高额系统开销,导致数据包的处理性能不能随着处理器核数的增加而线性增长。
DPDK(数据平面开发工具包:Data Plane Development Kit)是一个开源的数据平面开发工具集,是Intel为了解决Linux SMP环境下数据包处理性能问题而提供的一个用户空间下的高效数据包处理函数库和驱动集。DPDK通过环境抽象层的旁路OS运行环境、轮询模式的数据无中断收发、优化内存/缓冲区/队列管理、大页内存等多项技术,实现了SMP环境下的高性能数据包处理能力,用户可以在Linux用户空间中开发各类高速数据包处理应用,也适合于集成到各类商业化的数据平面加速解决方案中。
DPDK的核心技术包括EAL(环境适配层)、PMD(轮询模式驱动)、RING(无锁环)、MEMPOOL(内存池管理)、MBUF(缓存管理)、KNI(内核NIC接口)、ACL(接入控制库)等。
DPDK是一个开源的快速包处理开发工具集,实现了一套完整的基于Linux OS但又不同于Linux OS的旁路实时运行环境,不是一个网络协议栈。应用DPDK技术进行网络数据包的高效处理,需应用程序自行实现IP网络的网络协议栈及各类型网络服务功能。
基于DPDK技术实现完整的IP网络的网络协议栈,开发技术难度高且开发工作量大,不适于小成本、低投入的网络设备产品研发项目。
发明内容
本申请提供了一种基于DPDK的网络数据包处理方法,以降低DPDK技术应用到网络设备研发项目中的技术难度和开发成本,提高效率。
本申请公开了一种基于数据平面开发工具包DPDK的网络数据包处理方法,包括:
基于DPDK用户空间应用程序实现旁路网络协议栈;
DPDK用户空间旁路网络协议栈与Linux内核网络协议栈共同对同一物理网络端口的数据进行处理。
较佳的,该方法还包括:
所述物理网络端口通过Linux用户空间输入输出Linux UIO技术由DPDK轮询模式驱动PMD进行驱动并配置;DPDK用户空间应用程序使用内核NIC接口KNI技术创建物理网络端口的KNI设备;
所述DPDK用户空间旁路网络协议栈与Linux内核网络协议栈共同对同一物理网络端口的数据进行处理包括:对于从物理网络端口接收到的数据,定义路由规则,根据数据的类别,部分数据经DPDK处理后从物理网络端口发出,部分数据通过KNI设备转发到Linux内核网络协议栈,应用程序基于内核网络协议栈对数据进行解析并处理。
较佳的,所述DPDK用户空间旁路网络协议栈与Linux内核网络协议栈共同对同一物理网络端口的数据进行处理还包括:
对于需要从物理网络端口发出的数据,定义规则进行分类处理,部分数据由用户空间应用程序处理后采用DPDK PMD技术从网络端口发出,部分数据经Linux内核网络协议栈处理后,由内核将数据写入到KNI设备的发送队列,再由用户空间应用程序负责从KNI设备中读取数据的线程从KNI设备中读取数据,写入到物理网络端口的PMD发送队列中进行发送。
由上述技术方案可见,本申请提供的基于DPDK的网络数据包处理方法,通过基于DPDK用户空间应用程序实现旁路网络协议栈,并由DPDK用户空间旁路网络协议栈与Linux内核网络协议栈共同对同一物理网络端口的数据进行处理,使得数据量较大的网络协议数据完全由DPDK用户空间应用程序进行处理,实现其基于DPDK的网络协议栈;数据量较小、不造成对称多处理器环境下处理瓶颈的网络协议数据,由内核协议栈与DPDK用户空间应用程序共同进行处理,用户空间应用程序仅负责在物理网络接口上的接收和发送以及路由到物理网络接口的KNI设备或从KNI设备接收,从而降低了DPDK技术应用到网络设备研发项目中的技术难度和开发成本,提高了效率。
附图说明
图1为本发明基于DPDK的网络数据包处理方法的逻辑结构图。
具体实施方式
为使本申请的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本申请作进一步详细说明。
本发明基于DPDK的PMD、KNI等技术提供一种解决方案,该方案中,基于DPDK用户空间应用程序实现的旁路网络协议栈(以下称为DPDK用户空间旁路网络协议栈)与Linux内核网络协议栈共同对同一网络端口的数据进行处理,使得仅需基于DPDK实现部分网络协议功能,就可使用基于DPDK的高效网络数据处理方案,从而解决了应用DPDK技术到网络设备产品时开发成本高,技术难度大的问题。
本发明基于DPDK的网络数据包处理方法的逻辑结构图如图1所示:
DPDK用户空间旁路网络协议栈与Linux内核网络协议栈(如图所示Kernel)共同进行数据处理的物理网络端口,通过Linux UIO(用户空间输入输出:Userspace I/O)技术由DPDK PMD进行驱动并配置。DPDK用户空间应用程序使用KNI技术创建网络端口的KNI设备,即创建对应于物理网络接口的虚拟网络设备,每个物理网络接口可创建一个或多个KNI设备。
对于从物理网络端口接收到的数据,定义路由规则,规则中对数据进行分类,部分数据直接经DPDK处理后从物理网络端口发出,部分数据通过KNI设备转发到Linux内核网络协议栈,应用程序基于内核网络协议栈对数据进行解析并处理。负责从物理网络端口读取数据的线程从物理网络端口读取数据,然后根据数据的L2、L3、L4数据类型以及路由规则确定数据转发路径并进行转发,路由规则中定义为需转发到内核网络协议栈的数据写入到物理网络端口对应的KNI设备中,Linux内核从KNI设备(虚拟网络设备)读取数据,经内核网络协议栈对数据进行处理再通知用户空间应用程序处理。PMD从物理网络端口读取数据到消息缓冲区MBUF时,对数据的L2、L3、L4数据类型已做解析处理,不需要额外的处理,也不需要增加系统开销。
对于需要从物理网络端口发出的数据,也定义规则进行分类处理,部分数据由用户空间应用程序处理后直接采用DPDK PMD技术从网络端口发出,部分数据则经Linux内核网络协议栈处理后,由内核将数据写入到KNI设备(虚拟网络设备)的发送队列,再由用户空间应用程序负责从KNI设备中读取数据的线程从KNI设备中读取数据,不做任何修改,写入到物理网络端口的PMD发送队列中进行发送。
基于上述原理,数据量较大的网络协议数据完全由DPDK用户空间应用程序进行处理,实现其基于DPDK的网络协议栈;数据量较小、不造成对称多处理器环境下处理瓶颈的网络协议数据,由内核协议栈与DPDK用户空间应用程序共同进行处理,用户空间应用程序仅负责在物理网络接口上的接收和发送以及路由到物理网络接口的KNI设备或从KNI设备接收。应用本申请所提供的方案,可降低DPDK技术应用到网络设备研发项目中的技术难度和开发成本,提高效率。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
Claims (2)
1.一种基于数据平面开发工具包DPDK的网络数据包处理方法,其特征在于,包括:
基于DPDK用户空间应用程序实现旁路网络协议栈;
DPDK用户空间旁路网络协议栈与Linux内核网络协议栈共同对同一物理网络端口的数据进行处理;
其中:
所述物理网络端口通过Linux用户空间输入输出Linux UIO技术由DPDK轮询模式驱动PMD进行驱动并配置;DPDK用户空间应用程序使用内核NIC接口KNI技术创建物理网络端口的KNI设备;
所述DPDK用户空间旁路网络协议栈与Linux内核网络协议栈共同对同一物理网络端口的数据进行处理包括:对于从物理网络端口接收到的数据,定义路由规则,根据数据的类别,部分数据经DPDK处理后从物理网络端口发出,部分数据通过KNI设备转发到Linux内核网络协议栈,应用程序基于内核网络协议栈对数据进行解析并处理。
2.根据权利要求1所述的方法,其特征在于:
所述DPDK用户空间旁路网络协议栈与Linux内核网络协议栈共同对同一物理网络端口的数据进行处理还包括:
对于需要从物理网络端口发出的数据,定义规则进行分类处理,部分数据由用户空间应用程序处理后采用DPDK PMD技术从网络端口发出,部分数据经Linux内核网络协议栈处理后,由内核将数据写入到KNI设备的发送队列,再由用户空间应用程序负责从KNI设备中读取数据的线程从KNI设备中读取数据,写入到物理网络端口的PMD发送队列中进行发送。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710061598.9A CN108366018B (zh) | 2017-01-26 | 2017-01-26 | 一种基于dpdk的网络数据包处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710061598.9A CN108366018B (zh) | 2017-01-26 | 2017-01-26 | 一种基于dpdk的网络数据包处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108366018A CN108366018A (zh) | 2018-08-03 |
CN108366018B true CN108366018B (zh) | 2020-11-27 |
Family
ID=63011488
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710061598.9A Active CN108366018B (zh) | 2017-01-26 | 2017-01-26 | 一种基于dpdk的网络数据包处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108366018B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111859062B (zh) * | 2019-04-30 | 2023-09-22 | 大唐移动通信设备有限公司 | 一种基于dpdk的网络数据处理方法和装置 |
CN111934894B (zh) * | 2019-05-13 | 2022-08-12 | 烽火通信科技股份有限公司 | 基于dpdk管理无线网络接口的方法及系统 |
CN111600833B (zh) * | 2019-07-30 | 2022-08-26 | 新华三技术有限公司 | 网络操作系统及报文转发方法 |
CN110417791A (zh) * | 2019-08-02 | 2019-11-05 | 成都卫士通信息产业股份有限公司 | 一种密码设备及处理网络数据方法、装置 |
CN112506674B (zh) * | 2019-09-16 | 2024-02-02 | 北京华耀科技有限公司 | Linux系统下用户态TCP/IP协议栈与本地应用通信的系统及方法 |
CN110636139B (zh) * | 2019-10-15 | 2020-07-31 | 广州市品高软件股份有限公司 | 一种云负载均衡的优化方法及系统 |
CN110768829B (zh) * | 2019-10-23 | 2022-02-15 | 江苏省未来网络创新研究院 | 一种基于dpdk实现流量分析业务性能线性增长的方法 |
CN110768994B (zh) * | 2019-10-30 | 2022-01-11 | 中电福富信息科技有限公司 | 一种基于dpdk技术的提高sip网关性能的方法 |
CN112737932B (zh) * | 2020-12-25 | 2023-04-07 | 江苏省未来网络创新研究院 | 一种基于dpdk实现高性能ipsce网关 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104142867A (zh) * | 2013-05-09 | 2014-11-12 | 华为技术有限公司 | 数据处理装置及数据处理方法 |
CN105099957A (zh) * | 2015-08-20 | 2015-11-25 | 电子科技大学 | 一种基于软件查表的数据包转发方法 |
CN105577567A (zh) * | 2016-01-29 | 2016-05-11 | 国家电网公司 | 基于Intel DPDK的网络数据包并行处理方法 |
CN105939349A (zh) * | 2016-05-25 | 2016-09-14 | 电子科技大学 | 一种实现用户数据随动安全存取的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20140095820A (ko) * | 2013-01-25 | 2014-08-04 | 삼성디스플레이 주식회사 | 박막 트랜지스터 기판, 그것의 제조 방법 및 그것을 포함하는 표시 장치 |
-
2017
- 2017-01-26 CN CN201710061598.9A patent/CN108366018B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104142867A (zh) * | 2013-05-09 | 2014-11-12 | 华为技术有限公司 | 数据处理装置及数据处理方法 |
CN105099957A (zh) * | 2015-08-20 | 2015-11-25 | 电子科技大学 | 一种基于软件查表的数据包转发方法 |
CN105577567A (zh) * | 2016-01-29 | 2016-05-11 | 国家电网公司 | 基于Intel DPDK的网络数据包并行处理方法 |
CN105939349A (zh) * | 2016-05-25 | 2016-09-14 | 电子科技大学 | 一种实现用户数据随动安全存取的方法 |
Non-Patent Citations (1)
Title |
---|
基于DPDK的高效数据包捕获技术分析与应用;赵宁,谢淑翠;《计算机工程与科学》;20161130;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN108366018A (zh) | 2018-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108366018B (zh) | 一种基于dpdk的网络数据包处理方法 | |
CN110915173B (zh) | 用于计算节点和存储节点的数据处理单元 | |
CN108337910B (zh) | 用于软件定义的互连交换机的架构 | |
US10237171B2 (en) | Efficient QoS support for software packet processing on general purpose servers | |
US9823868B2 (en) | Method and apparatus for virtualization | |
US8949838B2 (en) | Multi-threaded processing with hardware accelerators | |
US7802025B2 (en) | DMA engine for repeating communication patterns | |
WO2014113059A1 (en) | Network overlay system and method using offload processors | |
KR20130099185A (ko) | 단일 모뎀 보드 상의 개선된 멀티-셀 지원을 위한 방법 및 시스템 | |
US20170351639A1 (en) | Remote memory access using memory mapped addressing among multiple compute nodes | |
US10873630B2 (en) | Server architecture having dedicated compute resources for processing infrastructure-related workloads | |
WO2022055627A1 (en) | Dynamic offline end-to-end packet processing based on traffic class | |
Wu et al. | A transport-friendly NIC for multicore/multiprocessor systems | |
CN103678203A (zh) | 一种实现网卡零拷贝方法及装置 | |
CN111984415A (zh) | 一种基于流水线转发模型的负载均衡方法及装置 | |
CN116132287A (zh) | 基于dpu的高性能网络加速方法及系统 | |
CN117015963A (zh) | 用于异构和加速计算系统的输入/输出缩放的服务器结构适配器 | |
CN116257471A (zh) | 一种业务处理方法及装置 | |
US7929439B1 (en) | Multiple network interface core apparatus and method | |
Lant et al. | Enabling shared memory communication in networks of MPSoCs | |
Chang et al. | Virtualization technology for TCP/IP offload engine | |
Tang et al. | Towards high-performance packet processing on commodity multi-cores: current issues and future directions | |
US10284501B2 (en) | Technologies for multi-core wireless network data transmission | |
Jung et al. | Gpu-ether: Gpu-native packet i/o for gpu applications on commodity ethernet | |
Jung et al. | Virtualizing GPU direct packet I/O on commodity Ethernet to accelerate GPU-NFV |
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 |