CN108600120A - 一种基于dpdk下实现nat的方法 - Google Patents
一种基于dpdk下实现nat的方法 Download PDFInfo
- Publication number
- CN108600120A CN108600120A CN201810419879.1A CN201810419879A CN108600120A CN 108600120 A CN108600120 A CN 108600120A CN 201810419879 A CN201810419879 A CN 201810419879A CN 108600120 A CN108600120 A CN 108600120A
- Authority
- CN
- China
- Prior art keywords
- data packet
- nat
- dpdk
- conversions
- chained list
- 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.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
- H04L49/3009—Header conversion, routing tables or routing tags
-
- 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/9015—Buffering arrangements for supporting a linked list
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及一种基于DPDK下实现NAT的方法,实现NAT转发的步骤如下:S1:调用DPDK程序模块的api接口读取经由NAT设备网卡模块的数据包;S2:对S1步骤中读取到的数据包进行识别,若为用户端第一次数据包请求,则查找转发规则表,根据对应的转发规则,将需要做NAT转换的数据包进行NAT转换或NAT逆转换,并建立链表及记录该数据包转换前后五元组到链表;若为用户端第N次数据包请求或目标服务器第1、2…N次数据包应答,则查找链表获取转换规则,将需要做NAT转换的数据包进行NAT转换或NAT逆转换;本发明能够提升数十倍数据包处理性能,实现千万级别的数据包转发能力。
Description
技术领域
本发明涉及网络通信技术领域,特别是涉及一种基于DPDK下实现NAT的方法。
背景技术
NAT(Network Address Translation,网络地址转换)技术能够解决IP地址不足的
问题,用于通信的IP数据包一般具有Source IP Address(源IP地址)与Destination IP
Address(目的IP地址)这两个字段,采用NAT技术实现内网与外网之间的通信时,数据包所
经过的路由器/设备通过基于Linux内核协议栈对数据包进行处理,根据源IP地址字段和目
的IP地址字段判定数据由什么地方发过来的,它要将数据包发到什么地方去,并通过
iptables利用转发规则表,将内网地址与外网地址进行转换,但采用该方式需要较长的地
址转换计算时间,性能耗损大,且无法直接绕过Linux内核协议栈实现数据包从内网到公网
方向的通信,在面向厂商服务时,面对上百万的用户请求数量,现有的数据包处理性能难以
满足实际需求。
发明内容
为解决上述问题,本发明提供一种基于DPDK下实现NAT的方法,其大幅度提升数据包处理性能,实现千万级别数据包转发能力。
为解决上述目的,本发明采用的如下技术方案。
一种基于DPDK下实现NAT的方法,在NAT设备集成DPDK程序模块,在NAT设备上分配内存,并建立转换流表池单元,实现NAT转发的步骤如下:
S1:调用DPDK程序模块的api接口读取经由NAT设备网卡模块的数据包;
S2:对S1步骤中读取到的数据包进行识别;
S21:若为用户端第一次数据包请求,则查找转发规则表,根据对应的转换规则,将需要做NAT转换的数据包进行NAT转换,并建立链表及记录该数据包转换前后五元组到链表;
S22:若为用户端第N次数据包请求,则查找链表获取转换规则,将需要做NAT转换的数据包进行NAT转换;
S23:若为目标服务器第1、2…N次数据包应答,则查找链表获取转换规则,将需要做NAT转换的数据包进行NAT逆转换。
S3:继续调用DPDK程序模块的api接口读取下一数据包。
进一步地,在S2步骤中若为用户端第一次数据包请求,计算该请求方向数据包五元组的hash值,若为目标服务器第一次数据包应答,计算该应答方向数据包五元组的hash值,将请求方向和应答方向的hash值记录到链表,并可通过指针互指相连。
进一步地,在S2步骤中,若为用户端第N次数据包请求或目标服务器第1、2…N次数据包应答,计算五元组的hash值并查找链表,获得转换规则,进行NAT转换或NAT逆转换。
进一步地,NAT转换应用SNAT将数据包的源IP地址修改为转换的源IP地址,NAT逆转换应用DNAT将数据包的目的IP地址修改为转换的目的IP地址。
进一步地,S1步骤中调用DPDK程序模块的api接口读取数据包具体为:通过函数rte_lcore_id()获取当前cpu逻辑核id;通过函数rte_eth_rx_burst()读取数据包;通过函数rte_pktmbuf_free()释放mbuf。
进一步地,在NAT设备集成DPDK程序模块包括:初始化DPDK环境、分配CPU给DPDK收包处理线程、初始化网卡模块配置。
本发明的有益效果如下:
本发明在NAT设备上集成DPDK程序模块,通过调用DPDK程序模块的api接口读取数据包,绕过了Linux内核协议栈对数据包处理过程,能够提升数十倍数据包处理性能,实现千万级别的数据包转发能力,实际部署时,将NAT设备与上联交换机万兆口进行串接,数据包经由万兆交换机至NAT设备进行转发,本发明根据用户端第一请求包建立链表并记录转换前后五元组,后续相同源地址/目的地址发过来的数据包,直接在链表查找获取对应的转换规则,从而修改或还原出正确的源IP/目的IP,采用该方式获取对应的转换规则,能够降低计算地址转换的时间及性能损耗。
附图说明
图1为本发明的基于DPDK下实现NAT转发的流程图。
具体实施方式
下面将结合附图对本发明作进一步的说明。
参考图1,一种基于DPDK下实现NAT的方法,NAT设备集成DPDK程序模块,具体包括初始化DPDK环境、安装DPDK编译模块、在NAT设备上分配内存并建立转换规则表池单元、分配CPU给DPDK收包处理线程、初始化网卡模块配置。
本实施例实现NAT转发的步骤如下:
S1:调用DPDK程序模块的api接口读取经由NAT设备网卡模块的数据包,具体为通过函数rte_lcore_id()获取当前cpu逻辑核id;通过函数rte_eth_rx_burst()发送数据包;通过函数rte_pktmbuf_free()释放mbuf;实现调用DPDK程序模块api接口绕过了Linux内核协议栈对数据包处理过程,可有效减少中断次数、内存拷贝次数,定制化协议栈降低复杂度,能够提升数十倍数据包处理性能,实现千万级别的数据包转发能力。
S2:对S1步骤中读取到的数据包进行识别;S21:若为用户端第一次数据包请求,则查找转换规则表,根据对应的转发规则,将需要做NAT转换的数据包进行NAT转换,并建立链表及记录该数据包转换前后五元组到链表;S22:若为用户端第N次数据包请求,则查找链表获取转换规则,将需要做NAT转换的数据包进行NAT转换;S23:若为目标服务器第1、2…N次数据包应答,则查找链表获取转换规则,将需要做NAT转换的数据包进行NAT逆转换。
S3:继续调用DPDK程序模块的api接口读取下一数据包。
在S2步骤中若为用户端第一次数据包请求,计算该请求方向数据包五元组的hash值,若为目标服务器第一次数据包应答,计算该应答方向数据包五元组的hash值,将请求方向和应答方向的hash值记录到链表,并可通过指针互指相连;在上述S2步骤中,若为用户端第N次数据包请求或目标服务器第1、2…N次数据包应答,计算五元组的hash值并查找链表,获得转换规则,进行NAT转换或NAT逆转换,本实施例根据用户端第一请求包的五元组的hash值建立转换规则的链表并记录转换前后五元组到链表,目标服务器第一次数据包应答,计算hash值并记录到链表,如此将请求方向和应答方向的hash值记录到链表,并可通过指针互指相连起来,后续相同源地址/目的地址发过来的数据包,通过计算数据包的hash值,以hash值索引直接在链表查找获取对应的转换规则,从而修改或还原出正确的源IP/目的IP,采用该方式获取对应的转换规则,能够降低计算地址转换的时间及性能损耗。
本实施例中的SNAT(Source Network Address Translation,源地址转换)其作用是修改数据包的源地址,DNAT(Destination Network Address Translation,目的地址转换)其作用是修改数据包的目的地址,上述步骤中NAT转换应用SNAT将数据包的源IP地址修改为转换的源IP地址,NAT逆转换应用DNAT将数据包的目的IP地址修改为转换的目的IP地址。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (6)
1.一种基于DPDK下实现NAT的方法,其特征在于,在NAT设备集成DPDK程序模块,在NAT设备上分配内存,并建立转换流表池单元,实现NAT转发的步骤如下:
S1:调用DPDK程序模块的api接口读取经由NAT设备网卡模块的数据包;
S2:对S1步骤中读取到的数据包进行识别;
S21:若为用户端第一次数据包请求,则查找转发规则表,根据对应的转换规则,将需要做NAT转换的数据包进行NAT转换,并建立链表及记录该数据包转换前后五元组到链表;
S22:若为用户端第N次数据包请求,则查找链表获取转换规则,将需要做NAT转换的数据包进行NAT转换;
S23:若为目标服务器第1、2…N次数据包应答,则查找链表获取转换规则,将需要做NAT转换的数据包进行NAT逆转换。
S3:继续调用DPDK程序模块的api接口读取下一数据包。
2.根据权利要求1所述的一种基于DPDK下实现NAT的方法,其特征在于,在S2步骤中若为用户端第一次数据包请求,计算该请求方向数据包五元组的hash值,若为目标服务器第一次数据包应答,计算该应答方向数据包五元组的hash值,将请求方向和应答方向的hash值记录到链表,并可通过指针互指相连。
3.根据权利要求1所述的一种基于DPDK下实现NAT的方法,其特征在于,在S2步骤中,若为用户端第N次数据包请求或目标服务器第1、2…N次数据包应答,计算五元组的hash值并查找链表,获得转换规则,进行NAT转换或NAT逆转换。
4.根据权利要求1所述的一种基于DPDK下实现NAT的方法,其特征在于,NAT转换应用SNAT将数据包的源IP地址修改为转换的源IP地址,NAT逆转换应用DNAT将数据包的目的IP地址修改为转换的目的IP地址。
5.根据权利要求1所述的一种基于DPDK下实现NAT的方法,其特征在于,S1步骤中调用DPDK程序模块的api接口读取数据包具体为:通过函数rte_lcore_id()获取当前cpu逻辑核id;通过函数rte_eth_rx_burst()读取数据包;通过函数rte_pktmbuf_free()释放mbuf。
6.根据权利要求1所述的一种基于DPDK下实现NAT的方法,其特征在于,在NAT设备集成DPDK程序模块包括:初始化DPDK环境、分配CPU给DPDK收包处理线程、初始化网卡模块配置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810419879.1A CN108600120A (zh) | 2018-05-04 | 2018-05-04 | 一种基于dpdk下实现nat的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810419879.1A CN108600120A (zh) | 2018-05-04 | 2018-05-04 | 一种基于dpdk下实现nat的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108600120A true CN108600120A (zh) | 2018-09-28 |
Family
ID=63620683
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810419879.1A Pending CN108600120A (zh) | 2018-05-04 | 2018-05-04 | 一种基于dpdk下实现nat的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108600120A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109787912A (zh) * | 2019-03-04 | 2019-05-21 | 南京邮电大学 | 一种dpdk环境下基于nat的负载均衡方法 |
CN111654556A (zh) * | 2020-05-09 | 2020-09-11 | 苏州云杉世纪网络科技有限公司 | Snat设备翻译前后的流量对应关系匹配方法及装置 |
CN112217919A (zh) * | 2020-12-11 | 2021-01-12 | 广东省新一代通信与网络创新研究院 | 一种用于实现网络地址转换的方法及系统 |
CN112231101A (zh) * | 2020-10-16 | 2021-01-15 | 北京中科网威信息技术有限公司 | 内存分配方法、装置及可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104135548A (zh) * | 2014-08-12 | 2014-11-05 | 深圳市邦彦信息技术有限公司 | 基于fpga的静态nat实现方法及装置 |
CN107483237A (zh) * | 2017-08-02 | 2017-12-15 | 赛尔网络有限公司 | 基于dpdk转发的性能优化系统及方法 |
US20180062880A1 (en) * | 2016-08-27 | 2018-03-01 | Jia Yu | Centralized Processing of North-South Traffic for Logical Network in Public Cloud |
-
2018
- 2018-05-04 CN CN201810419879.1A patent/CN108600120A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104135548A (zh) * | 2014-08-12 | 2014-11-05 | 深圳市邦彦信息技术有限公司 | 基于fpga的静态nat实现方法及装置 |
US20180062880A1 (en) * | 2016-08-27 | 2018-03-01 | Jia Yu | Centralized Processing of North-South Traffic for Logical Network in Public Cloud |
CN107483237A (zh) * | 2017-08-02 | 2017-12-15 | 赛尔网络有限公司 | 基于dpdk转发的性能优化系统及方法 |
Non-Patent Citations (1)
Title |
---|
黄冰: "基于DPDK的高性能负载均衡系统设计与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109787912A (zh) * | 2019-03-04 | 2019-05-21 | 南京邮电大学 | 一种dpdk环境下基于nat的负载均衡方法 |
JP7177548B2 (ja) | 2019-03-04 | 2022-11-24 | 南京郵電大学 | Dpdk環境でのnatに基づく負荷分散方法 |
CN111654556A (zh) * | 2020-05-09 | 2020-09-11 | 苏州云杉世纪网络科技有限公司 | Snat设备翻译前后的流量对应关系匹配方法及装置 |
CN111654556B (zh) * | 2020-05-09 | 2022-04-29 | 苏州云杉世纪网络科技有限公司 | Snat设备翻译前后的流量对应关系匹配方法及装置 |
CN112231101A (zh) * | 2020-10-16 | 2021-01-15 | 北京中科网威信息技术有限公司 | 内存分配方法、装置及可读存储介质 |
CN112231101B (zh) * | 2020-10-16 | 2024-03-01 | 北京中科网威信息技术有限公司 | 内存分配方法、装置及可读存储介质 |
CN112217919A (zh) * | 2020-12-11 | 2021-01-12 | 广东省新一代通信与网络创新研究院 | 一种用于实现网络地址转换的方法及系统 |
CN112217919B (zh) * | 2020-12-11 | 2021-03-23 | 广东省新一代通信与网络创新研究院 | 一种用于实现网络地址转换的方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108600120A (zh) | 一种基于dpdk下实现nat的方法 | |
CN101217493B (zh) | 一种tcp数据包的传输方法 | |
US7257633B2 (en) | Dynamic allocation of a pool of threads | |
US8059562B2 (en) | Listener mechanism in a distributed network system | |
WO2018133454A1 (zh) | 远程服务访问路径控制方法和相关设备 | |
AU2008203261B2 (en) | Data processing apparatus and data transfer method | |
US20080107112A1 (en) | Network device and packet forwarding method thereof | |
US20070220183A1 (en) | Receive Queue Descriptor Pool | |
CN111614631B (zh) | 一种用户态流水线架构防火墙系统 | |
WO2015114473A1 (en) | Method and apparatus for locality sensitive hash-based load balancing | |
CN110166570A (zh) | 业务会话管理方法、装置、电子设备 | |
CN106533967A (zh) | 一种可自定义负载均衡策略的数据传输方法 | |
WO2022007406A1 (zh) | 一种基于k8s的服务部署方法、装置、设备、介质 | |
CN103297632A (zh) | 一种用于voip语音通信的设备、系统及通信方法 | |
WO2013113213A1 (zh) | 一种控制用户呼叫的方法和设备 | |
CN111031020A (zh) | 一种基于端口映射的管理网络和租户网络通信的方法 | |
CN101742701A (zh) | 处理at命令的装置、方法及系统 | |
TWI276336B (en) | Internet address pre-lookup method | |
CN103686852B (zh) | 一种对交互数据进行处理的方法、设备及无线加速系统 | |
CN107547690A (zh) | Nat中的端口分配方法、装置、nat设备及存储介质 | |
JP2023041022A (ja) | クラスタ化ゲートウェイのシャンディング方法、装置、記憶媒体及び電子機器 | |
CN105657025A (zh) | 基于udp特征关键字匹配实现udp报文通过负载均衡设备同源同宿的算法及其结构 | |
CN101102269A (zh) | 一种gprs网络中的数据负载均衡方法 | |
CN105553698A (zh) | 基于局域网的流量统计方法及其系统 | |
US20070156547A1 (en) | Method, System, Device and Function for Generating and Transferring a Bill |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180928 |