CN108600120A - 一种基于dpdk下实现nat的方法 - Google Patents

一种基于dpdk下实现nat的方法 Download PDF

Info

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
Application number
CN201810419879.1A
Other languages
English (en)
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.)
Guangdong Unique Network Technology Co Ltd
Original Assignee
Guangdong Unique Network Technology 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 Guangdong Unique Network Technology Co Ltd filed Critical Guangdong Unique Network Technology Co Ltd
Priority to CN201810419879.1A priority Critical patent/CN108600120A/zh
Publication of CN108600120A publication Critical patent/CN108600120A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3009Header conversion, routing tables or routing tags
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9015Buffering arrangements for supporting a linked list
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation 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的方法
技术领域
本发明涉及网络通信技术领域,特别是涉及一种基于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收包处理线程、初始化网卡模块配置。
CN201810419879.1A 2018-05-04 2018-05-04 一种基于dpdk下实现nat的方法 Pending CN108600120A (zh)

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)

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

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

Patent Citations (3)

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

* Cited by examiner, † Cited by third party
Title
黄冰: "基于DPDK的高性能负载均衡系统设计与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Cited By (8)

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