CN115242895B - 基于dpdk的访问本机方法和装置 - Google Patents
基于dpdk的访问本机方法和装置 Download PDFInfo
- Publication number
- CN115242895B CN115242895B CN202210849701.7A CN202210849701A CN115242895B CN 115242895 B CN115242895 B CN 115242895B CN 202210849701 A CN202210849701 A CN 202210849701A CN 115242895 B CN115242895 B CN 115242895B
- Authority
- CN
- China
- Prior art keywords
- message
- dpdk
- interface
- source
- kni
- 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
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- 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
- H04L61/256—NAT traversal
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本公开涉及一种基于DPDK的访问本机方法,该方法包括:创建KNI接口;配置KNI接口的IP地址;创建源NAT规则;在本机的ARP表中创建静态ARP表项;进行针对访问本机报文的接收,通过DPDK接口接收终端发送的针对本机访问的报文并对所述报文应用所述源NAT规则进行NAT处理后,将报文上送至与接收所述报文的DPDK接口相关联的KNI接口,以完成本机对所述报文的接收;进行本机针对访问报文的应答,在本机对针对所述报文进行应答时,在本机中的所述ARP表进行查询并在所述ARP表中查询到所述静态ARP表项后生成应答报文,并将所述应答报文通过相应的KNI接口发送至DPDK数据平面,并通过DPDK数据平面将本机对所述报文的应答报文向所述终端发送。
Description
技术领域
本公开涉及网络通讯技术领域,具体而言,涉及一种基于DPDK的访问本机方法和装置。
背景技术
DPDK(Data Plane Development Kit,数据平面开发套件)是由6WIND和Intel等多家公司开发的用于快速数据包处理的函数库与驱动集合,其主要基于Linux系统运行,可极大提高数据处理性能和吞吐量,提高数据平面应用程序的工作效率。随着因特网规模和通讯量的快速增长,网络业务复杂度的提升对网络通讯的效率提出了更高的要求,网络业务的多样化让网络产品的开发周期变的更长、更难于移植和适配,而DPDK的面世可有效解决这些问题。
DPDK为数据平面的报文处理提供了一个完备且高性能的解决方案,该方案简单易懂,开发人员可快速地在此基础上设计自己的业务。DPDK通过轮询的方式快速处理数据报文,通过报文零拷贝等技术加快报文处理的性能和效率。DPDK创造了环境抽象层对底层的硬件资源进行了封装,提供了接口进行访问。开发人员不需要了解实现细节,同时也消除了业务代码对硬件的依赖,使得业务具有很好的移植性。
但是DPDK架构设计的初衷是为了解决在用户态数据平面高速转发的问题,对于访问设备自身的本机报文没有过多考虑。具体而言,DPDK架构在运行时会对原来的网络接口卸载,然后使用用户态驱动加载这些网络接口,之后这些网络接口在操作系统空间变为不可见,仅仅在DPDK进程空间可见,这样对于一些本机的应用程序比如NTP、WEB服务等无法通过这些网络接口与外部交互报文消息。
为此,DPDK提供了一个KNI(Kernel NIC(NETWORK INTERFACE CARD)Interface)接口,该接口是在操作系统下可见的一个虚口,允许DPDK进程和内核之间传递报文。DPDK进程接收到的报文可以通过此接口转发到内核协议栈。现有技术方案对每个DPDK网络接口创建一个关联的KNI接口,并且将DPDK网络接口的地址和路由同步给它关联的KNI接口,访问本机的报文先进入DPDK进程空间,在查完路由确认是本机后将报文发送到接口对应的KNI口,然后报文会走内核协议栈,将查路由上送本机。本机回包也会先查询操作系统内的路由表,发送给KNI接口,转到DPDK进程空间,从DPDK进程空间发送出去。
现有技术方案通过DPDK的KNI机制,打通了DPDK进程空间到操作系统内核的转发路径,完成报文上送到本机的处理。但此方案存在以下缺点:1)将DPDK进程空间的IP地址和路由信息同步给操作系统内核,给操作系统带来很大的资源处理负担,特别是表项非常多的情况下;2)网络设备涉及的路由条目可能达到数万或数十万条,标准的操作系统无法存储如此多的路由表项。在这种情况下,部分访问本机的流量会有不通的问题。
因此,需要一种无需同步大量路由表项的基于DPDK的访问本机方法和装置。
发明内容
有鉴于此,本公开提供一种基于DPDK的访问本机方法和装置。根据本公开的一方面,提出一种基于DPDK的访问本机方法,该方法包括:创建KNI接口,针对DPDK所创建的每个DPDK接口,在创建DPDK接口的同时创建一个与其相关联的KNI接口,所述KNI接口对于本机具有可见性;配置KNI接口的IP地址,在DPDK进程空间中,针对每个KNI接口配置其的IP地址为与其相关联的DPDK接口的IP地址相同的IP地址;创建源NAT规则,在DPDK数据平面创建源NAT规则,所述源NAT规则包括针对上送到KNI接口的报文,将其的源IP地址转换为新源IP地址,所述新源IP地址与所述源IP地址属于同一网段;创建ARP表项,在本机包括的ARP表中针对所述源NAT规则中包括的所有新源IP地址创建静态ARP表项,所述静态ARP表项中与IP地址对应的MAC地址可为任意值;进行针对访问本机报文的接收,通过DPDK接口接收终端发送的针对本机访问的报文并对所述报文应用所述源NAT规则进行NAT处理后,将报文上送至与接收所述报文的DPDK接口相关联的KNI接口,以完成本机对所述报文的接收;进行本机针对访问报文的应答,在本机对针对所述报文进行应答时,在本机中的所述ARP表进行查询并在所述ARP表中查询到所述静态ARP表项后生成应答报文,并将所述应答报文通过相应的KNI接口发送至DPDK数据平面,并通过DPDK数据平面将本机对所述报文的应答报文向所述终端发送。
根据本公开的基于DPDK的访问本机方法,其中,在进行本机对所述报文的接收时,包括:通过DPDK接口接收报文,并对所述报文进行解析;获取所述报文的源IP和目的IP;判断所述报文是否为访问本机的报文,当判断报文为访问本机的报文时,对所述报文应用所述源NAT规则进行NAT处理;将经过NAT处理后的报文上送至接口IP地址为所述目的IP的KNI接口,以及本机通过所述KNI接口进行对所述报文的接收。
根据本公开的基于DPDK的访问本机方法,其中,在进行本机对所述报文的应答时,包括:获取应答报文的源IP和目的IP,其中,所述应答报文的源IP为所述报文的目的IP,所述应答报文的目的IP为所述报文的源IP;在本机中查询ARP表,以当在所述ARP表中查询到创建的所述静态ARP表项时,最终将所述应答报文通过KNI接口发送至DPKP数据平面;DPKP数据平面在接收到所述应答报文后,对所述应答报文进行目的NAT转换以获得新的应答报文,即将所述应答报文的目的IP还原成终端IP;DPDK数据平面针对所述新的应答报文进行路由查询,并最终将所述新的应答报文向所述终端发送,以完成本机对所述报文的应答。
根据本公开的基于DPDK的访问本机方法,其还包括:针对对通过DPDK接口接收到终端发送的针对本机访问的报文,在将所述报文通过KNI接口向本机发送的同时,在DPKP数据平面建立针对所述报文的会话。
根据本公开的另一方法,提供一种基于DPDK的访问本机装置,该装置包括:KNI接口创建组件,用于针对DPDK所创建的每个DPDK接口,在创建DPDK接口的同时创建一个与其相关联的KNI接口,所述KNI接口对于本机具有可见性;KNI接口IP地址配置组件,用于在DPDK进程空间中,针对每个KNI接口配置其的IP地址为与其相关联的DPDK接口的IP地址相同的IP地址;源NAT创建组件,用于在DPDK数据平面创建源NAT规则,所述源NAT规则包括针对上送到KNI接口的报文,将其的源IP地址转换为新源IP地址,所述新源IP地址与所述源IP地址属于同一网段;ARP表项创建组件,用于在本机包括的ARP表中针对所述源NAT规则中包括的所有新源IP地址创建静态ARP表项,所述静态ARP表项中与IP地址对应的MAC地址可为任意值;报文接收组件,用于通过DPDK接口接收终端发送的针对本机访问的报文并对所述报文应用所述源NAT规则进行NAT处理后,将报文上送至与接收所述报文的DPDK接口相关联的KNI接口,以完成本机对所述报文的接收;报文应答组件,用于在本机对针对所述报文进行应答时,在本机中的所述ARP表进行查询并在所述ARP表中查询到所述静态ARP表项后生成应答报文,并将所述应答报文通过相应的KNI接口发送至DPDK数据平面,并通过DPDK数据平面将本机对所述报文的应答报文向所述终端发送。
根据本公开的基于DPDK的访问本机装置,其中,所述报文接收组件在进行本机对所述报文的接收时,包括:DPDK报文接收及解析组件,用于通过DPDK接口接收报文,并对所述报文进行解析;报文IP获取组件,用于获取所述报文的源IP和目的IP;源NAT处理组件,用于判断所述报文是否为访问本机的报文,当判断报文为访问本机的报文时,对所述报文应用所述源NAT规则进行NAT处理;报文上送组件,用于将经过NAT处理后的报文上送至接口IP地址为所述目的IP的KNI接口,以及本机通过所述KNI接口进行对所述报文的接收。
根据本公开的基于DPDK的访问本机装置,其中,所述报文应答组件在进行本机对所述报文的应答时,包括:应答报文IP获取组件,用于获取应答报文的源IP和目的IP,其中,所述应答报文的源IP为所述报文的目的IP,所述应答报文的目的IP为所述报文的源IP;ARP查询组件,用于在本机中查询ARP表;应答报文转发组件,用于当在所述ARP表中查询到创建的所述静态ARP表项时,最终将所述应答报文通过KNI接口发送至DPKP数据平面;目的NAT转换组件,用于DPKP数据平面在接收到所述应答报文后,对所述应答报文进行目的NAT转换以获得新的应答报文,即将所述应答报文的目的IP还原成终端IP;DPDK报文发送组件,用于DPDK数据平面针对所述新的应答报文进行路由查询,并最终将所述新的应答报文向所述终端发送,以完成本机对所述报文的应答。
根据本公开的基于DPDK的访问本机装置,其还包括:会话组件,用于针对对通过DPDK接口接收到终端发送的针对本机访问的报文,在将所述报文通过KNI接口向本机发送的同时,在DPKP数据平面建立针对所述报文的会话。
综上,采用本公开的基于DPDK的访问本机方法和装置,将标准LINUX静态ARP表项、DPDK的KNI机制和数据平面NAT特性结合起来,实现在不同步路由表项的情况下对本机的访问,可避免大量的路由同步给操作系统带来的资源管理负担。具体而言,利用数据平面NAT特性修改访问的本机的报文源IP,使得修改后的该源IP与KNI接口的IP为同一网段IP,以使反向回包时能查到本机路由;通过配置静态ARP表项,使得本机回包能从KNI接口发送出去;在DPDK数据平面生成默认的源NAT规则来完成原始报文的IP转换。本公开的基于DPDK的访问本机方法,利用标准LINUX系统静态ARP表项和DPDK的KNI机制结合,实现了一种更加灵活地通过DPDK接口访问本机应用的方法,通过这种方法,DPDK架构下的网络设备可以部署一些开源的应用,端设备可通过DPDK业务接口访问,开源应用不需要修改任何代码。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本申请。
附图说明
通过参照附图详细描述其示例实施例,本申请的上述和其它目标、特征及优点将变得更加显而易见。下面描述的附图仅仅是本申请的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1所示的是根据本公开实施例的基于DPDK的访问本机方法的流程示意图。
图2所示的是根据本公开实施例的基于DPDK的访问本机方法的详细流程示意图。
图3所示的是根据本公开实施例的基于DPDK的访问本机装置的原理示意图。
图4所示的是根据本公开实施例的基于DPDK的访问本机装置中的报文接收组件的原理示意图。
图5所示的是根据本公开实施例的基于DPDK的访问本机装置中的报文应答组件的原理示意图。
具体实施方式
现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的实施例;相反,提供这些实施例使得本公开将全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本公开的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、系统、实现或者操作以避免模糊本公开的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
本领域技术人员可以理解,附图只是示例实施例的示意图,附图中的模块或流程并不一定是实施本公开所必须的,因此不能用于限制本公开的保护范围。
本公开实施例的基于DPDK的访问本机方法和装置,可以在DPDK架构下不进行大量路由表项的同步便可实现对本机的访问,并且在解决问题的同时尽量少地对原有操作系统造成影响。
图1所示的是根据本公开实施例的基于DPDK的访问本机方法的流程示意图,如图1所示,在步骤S102中,创建KNI接口,针对DPDK所创建的每个DPDK接口,在创建DPDK接口的同时创建一个与其相关联的KNI接口,所述KNI接口对于本机具有可见性;
在步骤S104中,配置KNI接口的IP地址,在DPDK进程空间中,针对每个KNI接口配置其的IP地址为与其相关联的DPDK接口的IP地址相同的IP地址;
在步骤S106中,创建源NAT规则,在DPDK数据平面创建源NAT规则,所述源NAT规则包括针对上送到KNI接口的报文,将其的源IP地址转换为新源IP地址,所述新源IP地址与所述源IP地址属于同一网段;
在步骤S108中,创建ARP表项,在本机包括的ARP表中针对所述源NAT规则中包括的所有新源IP地址创建静态ARP表项,所述静态ARP表项中与IP地址对应的MAC地址可为任意值;
在步骤S110中,进行针对访问本机报文的接收,通过DPDK接口接收终端发送的针对本机访问的报文并对所述报文应用所述源NAT规则进行NAT处理后,将报文上送至与接收所述报文的DPDK接口相关联的KNI接口,以完成本机对所述报文的接收;
在步骤S112中,进行本机针对访问报文的应答,在本机对针对所述报文进行应答时,在本机中的所述ARP表进行查询并在所述ARP表中查询到所述静态ARP表项后生成应答报文,并将所述应答报文通过相应的KNI接口发送至DPDK数据平面,并通过DPDK数据平面将本机对所述报文的应答报文向所述终端发送。
根据本公开实施例的基于DPDK的访问本机方法,其中,在进行本机对所述报文的接收时,包括:通过DPDK接口接收报文,并对所述报文进行解析;获取所述报文的源IP和目的IP;判断所述报文是否为访问本机的报文,当判断报文为访问本机的报文时,对所述报文应用所述源NAT规则进行NAT处理;将经过NAT处理后的报文上送至接口IP地址为所述目的IP的KNI接口,以及本机通过所述KNI接口进行对所述报文的接收。
根据本公开实施例的基于DPDK的访问本机方法,其中,在进行本机对所述报文的应答时,包括:获取应答报文的源IP和目的IP,其中,所述应答报文的源IP为所述报文的目的IP,所述应答报文的目的IP为所述报文的源IP;在本机中查询ARP表,以当在所述ARP表中查询到创建的所述静态ARP表项时,最终将所述应答报文通过KNI接口发送至DPKP数据平面;DPKP数据平面在接收到所述应答报文后,对所述应答报文进行目的NAT转换以获得新的应答报文,即将所述应答报文的目的IP还原成终端IP;DPDK数据平面针对所述新的应答报文进行路由查询,并最终将所述新的应答报文向所述终端发送,以完成本机对所述报文的应答。
根据本公开实施例的基于DPDK的访问本机方法,其还包括:针对对通过DPDK接口接收到终端发送的针对本机访问的报文,在将所述报文通过KNI接口向本机发送的同时,在DPKP数据平面建立针对所述报文的会话。
图2所示的是根据本公开实施例的基于DPDK的访问本机方法的详细流程示意图。
根据本公开实施例的基于DPDK的访问本机方法,完整的实施步骤如下:
S1、每创建一个DPDK接口的同时创建一个KNI接口,并将两者关联起来。
S2、在DPDK进程空间内给DPDK接口配置的IP地址会同步到对应的KNI接口,但是路由表项不同步。如图2所示,根据本公开实施例的基于DPDK的访问本机方法,定义KNI接口的IP地址为y1、y2、y3等。
S3、在DPDK数据平面对上送到本地KNI接口的报文创建一个源NAT规则,以将上送到KNI接口的报文源IP都改为KNI接口同网段的地址y11、y22、y33等。
S4、使用linux标准ARP命令给每个源NAT出来的IP地址(y11、y22、y33等)创建一个静态的ARP表项,其中,所创建的静态ARP表项中的MAC地址可以是任意地址。
S5、发往本机设备的报文同时也会在DPDK数据平面建立会话。
经过上述修改后,所有访问本机的流量,比如终端访问目的地址y1、y2、y3的流量,会在上送KNI接口前将源IP地址更换为y11、y22、y33等。那么设备的回送报文的源IP是KNI接口IP,目的IP为y11,y22,y33等。本机回包通过KNI接口发送到DPDK数据平面,在DPDK数据平面内会先做目的NAT将报文的目的IP还原成终端IP,然后在DPDK数据平面查询路由发包,从而完成报文交互过程。
图3所示的是根据本公开实施例的基于DPDK的访问本机装置的原理示意图,如图3所示,该装置包括:
KNI接口创建组件302,用于针对DPDK所创建的每个DPDK接口,在创建DPDK接口的同时创建一个与其相关联的KNI接口,所述KNI接口对于本机具有可见性;
KNI接口IP地址配置组件304,用于在DPDK进程空间中,针对每个KNI接口配置其的IP地址为与其相关联的DPDK接口的IP地址相同的IP地址;
源NAT创建组件306,用于在DPDK数据平面创建源NAT规则,所述源NAT规则包括针对上送到KNI接口的报文,将其的源IP地址转换为新源IP地址,所述新源IP地址与所述源IP地址属于同一网段;
ARP表项创建组件308,用于在本机包括的ARP表中针对所述源NAT规则中包括的所有新源IP地址创建静态ARP表项,所述静态ARP表项中与IP地址对应的MAC地址可为任意值;
报文接收组件310,用于通过DPDK接口接收终端发送的针对本机访问的报文并对所述报文应用所述源NAT规则进行NAT处理后,将报文上送至与接收所述报文的DPDK接口相关联的KNI接口,以完成本机对所述报文的接收;
报文应答组件312,用于在本机对针对所述报文进行应答时,在本机中的所述ARP表进行查询并在所述ARP表中查询到所述静态ARP表项后生成应答报文,并将所述应答报文通过相应的KNI接口发送至DPDK数据平面,并通过DPDK数据平面将本机对所述报文的应答报文向所述终端发送。
图4所示的是根据本公开实施例的基于DPDK的访问本机装置中的报文接收组件的原理示意图。
如图4所示,根据本公开实施例的基于DPDK的访问本机装置,其中,所述报文接收组件310在进行本机对所述报文的接收时,包括:
DPDK报文接收及解析组件310a,用于通过DPDK接口接收报文,并对所述报文进行解析;
报文IP获取组件310b,用于获取所述报文的源IP和目的IP;
源NAT处理组件310c,用于判断所述报文是否为访问本机的报文,当判断报文为访问本机的报文时,对所述报文应用所述源NAT规则进行NAT处理;
报文上送组件310d,用于将经过NAT处理后的报文上送至接口IP地址为所述目的IP的KNI接口,以及本机通过所述KNI接口进行对所述报文的接收。
图5所示的是根据本公开实施例的基于DPDK的访问本机装置中的报文应答组件的原理示意图。
如图5所示,根据本公开实施例的基于DPDK的访问本机装置,其中,所述报文应答组件312在进行本机对所述报文的应答时,包括:
应答报文IP获取组件312a,用于获取应答报文的源IP和目的IP,其中,所述应答报文的源IP为所述报文的目的IP,所述应答报文的目的IP为所述报文的源IP;
ARP查询组件312b,用于在本机中查询ARP表;
应答报文转发组件312c,用于当在所述ARP表中查询到创建的所述静态ARP表项时,最终将所述应答报文通过KNI接口发送至DPKP数据平面;
目的NAT转换组件312d,用于DPKP数据平面在接收到所述应答报文后,对所述应答报文进行目的NAT转换以获得新的应答报文,即将所述应答报文的目的IP还原成终端IP;
DPDK报文发送组件312e,用于DPDK数据平面针对所述新的应答报文进行路由查询,并最终将所述新的应答报文向所述终端发送,以完成本机对所述报文的应答。
根据本公开实施例的基于DPDK的访问本机装置,其还包括:会话组件314,用于针对对通过DPDK接口接收到终端发送的针对本机访问的报文,在将所述报文通过KNI接口向本机发送的同时,在DPKP数据平面建立针对所述报文的会话。
综上,采用本公开的基于DPDK的访问本机方法和装置,将标准LINUX静态ARP表项、DPDK的KNI机制和数据平面NAT特性结合起来,实现在不同步路由表项的情况下对本机的访问,可避免大量的路由同步给操作系统带来的资源管理负担。具体而言,利用数据平面NAT特性修改访问的本机的报文源IP,使得修改后的该源IP与KNI接口的IP为同一网段IP,以使反向回包时能查到本机路由;通过配置静态ARP表项,使得本机回包能从KNI接口发送出去;在DPDK数据平面生成默认的源NAT规则来完成原始报文的IP转换。本公开的基于DPDK的访问本机方法利用标准LINUX系统静态ARP表项和DPDK的KNI机制结合,实现了一种更加灵活地通过DPDK接口访问本机应用的方法,通过这种方法,DPDK架构下的网络设备可以部署一些开源的应用,端设备可通过DPDK业务接口访问,开源应用不需要修改任何代码。
总体而言,本公开通过在每创建一个DPDK接口的同时创建一个与之关联的KNI接口,两者关联起来。在DPDK进程空间内给DPDK接口配置的IP地址会同步到对应的KNI接口,但是路由表项不同步。这里定义KNI接口的IP为y1、y2、y3等。在DPDK数据平面对上送到本地KNI接口的报文创建一个源NAT规则,将上送到KNI接口的报文源IP都改为KNI接口同网段的地址y11、y22、y33等。并且使用linux标准arp命令给每个源NAT出来的IP地址(y11、y22、y33等)创建一个静态的ARP表项,MAC地址可以是任意地址。发往本机设备的报文同时也会在DPDK数据平面建立会话。经过采用本公开的上述修改后,所有访问本机的流量,比如终端访问目的地址y1、y2、y3的流量,会在上送KNI接口前将源IP地址会更换为y11、y22、y33等。那么设备的回报源IP是KNI接口IP,目的IP为y11,y22,y33等。本机回包在通过KNI接口发送到DPDK数据平面,在DPDK数据平面内会先做目的NAT将报文的目的IP还原成终端IP,然后在DPDK数据平面查询路由发包,从而完成报文交互过程。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、或者网络设备等)执行根据本申请实施方式的上述方法。
所述软件产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
所述计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本申请操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该计算机可读介质实现如下功能:根据待测设备的类型生成测试脚本;对所述测试脚本进行解析生成多个命令数据;调用与所述多个命令数据的类型对应的多个接口;基于所述多个接口将所述多个命令数据分别发送至高加速应力筛选控制箱;高加速应力筛选控制箱根据命令数据对所述待测设备进行测试。该计算机可读介质还可实现如下功能:在测试过程中,高加速应力筛选控制箱实时生成返回消息;基于所述返回消息进行测试状态展示;和/或基于所述返回消息生成测试报告。
本领域技术人员可以理解上述各模块可以按照实施例的描述分布于装置中,也可以进行相应变化唯一不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
通过以上的实施例的描述,本领域的技术人员易于理解,这里描述的示例实施例可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本申请实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本申请实施例的方法。
以上具体地示出和描述了本申请的示例性实施例。应可理解的是,本申请不限于这里描述的详细结构、设置方式或实现方法;相反,本申请意图涵盖包含在所附权利要求的精神和范围内的各种修改和等效设置。
Claims (8)
1.一种基于DPDK的访问本机方法,包括:
创建KNI接口,针对DPDK所创建的每个DPDK接口,在创建DPDK接口的同时创建一个与其相关联的KNI接口,所述KNI接口对于本机具有可见性;
配置KNI接口的IP地址,在DPDK进程空间中,针对每个KNI接口配置其的IP地址为与其相关联的DPDK接口的IP地址相同的IP地址;
创建源NAT规则,在DPDK数据平面创建源NAT规则,所述源NAT规则包括针对上送到KNI接口的报文,将其的源IP地址转换为新源IP地址,所述新源IP地址与所述源IP地址属于同一网段;
创建ARP表项,在本机包括的ARP表中针对所述源NAT规则中包括的所有新源IP地址创建静态ARP表项,所述静态ARP表项中与IP地址对应的MAC地址可为任意值;
进行针对访问本机报文的接收,通过DPDK接口接收终端发送的针对本机访问的报文并对所述报文应用所述源NAT规则进行NAT处理后,将报文上送至与接收所述报文的DPDK接口相关联的KNI接口,以完成本机对所述报文的接收;
进行本机针对访问报文的应答,在本机对针对所述报文进行应答时,在本机中的所述ARP表进行查询并在所述ARP表中查询到所述静态ARP表项后生成应答报文,并将所述应答报文通过相应的KNI接口发送至DPDK数据平面,并通过DPDK数据平面将本机对所述报文的应答报文向所述终端发送。
2.根据权利要求1所述的基于DPDK的访问本机方法,其中,在进行本机对所述报文的接收时,包括:
通过DPDK接口接收报文,并对所述报文进行解析;
获取所述报文的源IP和目的IP;
判断所述报文是否为访问本机的报文,当判断报文为访问本机的报文时,对所述报文应用所述源NAT规则进行NAT处理;
将经过NAT处理后的报文上送至接口IP地址为所述目的IP的KNI接口,以及本机通过所述KNI接口进行对所述报文的接收。
3.根据权利要求1所述的基于DPDK的访问本机方法,其中,在进行本机对所述报文的应答时,包括:
获取应答报文的源IP和目的IP,其中,所述应答报文的源IP为所述报文的目的IP,所述应答报文的目的IP为所述报文的源IP;
在本机中查询ARP表,以当在所述ARP表中查询到创建的所述静态ARP表项时,最终将所述应答报文通过KNI接口发送至DPKP数据平面;
DPKP数据平面在接收到所述应答报文后,对所述应答报文进行目的NAT转换以获得新的应答报文,即将所述应答报文的目的IP还原成终端IP;
DPDK数据平面针对所述新的应答报文进行路由查询,并最终将所述新的应答报文向所述终端发送,以完成本机对所述报文的应答。
4.根据权利要求1所述的基于DPDK的访问本机方法,其还包括:
针对通过DPDK接口接收到终端发送的针对本机访问的报文,在将所述报文通过KNI接口向本机发送的同时,在DPKP数据平面建立针对所述报文的会话。
5.一种基于DPDK的访问本机装置,包括:
KNI接口创建组件,用于针对DPDK所创建的每个DPDK接口,在创建DPDK接口的同时创建一个与其相关联的KNI接口,所述KNI接口对于本机具有可见性;
KNI接口IP地址配置组件,用于在DPDK进程空间中,针对每个KNI接口配置其的IP地址为与其相关联的DPDK接口的IP地址相同的IP地址;
源NAT创建组件,用于在DPDK数据平面创建源NAT规则,所述源NAT规则包括针对上送到KNI接口的报文,将其的源IP地址转换为新源IP地址,所述新源IP地址与所述源IP地址属于同一网段;
ARP表项创建组件,用于在本机包括的ARP表中针对所述源NAT规则中包括的所有新源IP地址创建静态ARP表项,所述静态ARP表项中与IP地址对应的MAC地址可为任意值;
报文接收组件,用于通过DPDK接口接收终端发送的针对本机访问的报文并对所述报文应用所述源NAT规则进行NAT处理后,将报文上送至与接收所述报文的DPDK接口相关联的KNI接口,以完成本机对所述报文的接收;
报文应答组件,用于在本机对针对所述报文进行应答时,在本机中的所述ARP表进行查询并在所述ARP表中查询到所述静态ARP表项后生成应答报文,并将所述应答报文通过相应的KNI接口发送至DPDK数据平面,并通过DPDK数据平面将本机对所述报文的应答报文向所述终端发送。
6.根据权利要求5所述的基于DPDK的访问本机装置,其中,所述报文接收组件在进行本机对所述报文的接收时,包括:
DPDK报文接收及解析组件,用于通过DPDK接口接收报文,并对所述报文进行解析;
报文IP获取组件,用于获取所述报文的源IP和目的IP;
源NAT处理组件,用于判断所述报文是否为访问本机的报文,当判断报文为访问本机的报文时,对所述报文应用所述源NAT规则进行NAT处理;
报文上送组件,用于将经过NAT处理后的报文上送至接口IP地址为所述目的IP的KNI接口,以及本机通过所述KNI接口进行对所述报文的接收。
7.根据权利要求5所述的基于DPDK的访问本机装置,其中,所述报文应答组件在进行本机对所述报文的应答时,包括:
应答报文IP获取组件,用于获取应答报文的源IP和目的IP,其中,所述应答报文的源IP为所述报文的目的IP,所述应答报文的目的IP为所述报文的源IP;
ARP查询组件,用于在本机中查询ARP表;
应答报文转发组件,用于当在所述ARP表中查询到创建的所述静态ARP表项时,最终将所述应答报文通过KNI接口发送至DPKP数据平面;
目的NAT转换组件,用于DPKP数据平面在接收到所述应答报文后,对所述应答报文进行目的NAT转换以获得新的应答报文,即将所述应答报文的目的IP还原成终端IP;
DPDK报文发送组件,用于DPDK数据平面针对所述新的应答报文进行路由查询,并最终将所述新的应答报文向所述终端发送,以完成本机对所述报文的应答。
8.根据权利要求5所述的基于DPDK的访问本机装置,其还包括:
会话组件,用于针对通过DPDK接口接收到终端发送的针对本机访问的报文,在将所述报文通过KNI接口向本机发送的同时,在DPKP数据平面建立针对所述报文的会话。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210849701.7A CN115242895B (zh) | 2022-07-19 | 2022-07-19 | 基于dpdk的访问本机方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210849701.7A CN115242895B (zh) | 2022-07-19 | 2022-07-19 | 基于dpdk的访问本机方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115242895A CN115242895A (zh) | 2022-10-25 |
CN115242895B true CN115242895B (zh) | 2023-04-18 |
Family
ID=83673130
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210849701.7A Active CN115242895B (zh) | 2022-07-19 | 2022-07-19 | 基于dpdk的访问本机方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115242895B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106020926A (zh) * | 2016-04-29 | 2016-10-12 | 华为技术有限公司 | 一种用于虚拟交换机技术中数据传输的方法及装置 |
CN107483237A (zh) * | 2017-08-02 | 2017-12-15 | 赛尔网络有限公司 | 基于dpdk转发的性能优化系统及方法 |
CN107689963A (zh) * | 2017-09-26 | 2018-02-13 | 杭州迪普科技股份有限公司 | 一种针对arp应答报文攻击的检测方法及装置 |
CN108243262A (zh) * | 2016-12-26 | 2018-07-03 | 大唐移动通信设备有限公司 | Arp表的学习方法、装置及网络三层设备 |
CN108270676A (zh) * | 2016-12-31 | 2018-07-10 | 普天信息技术有限公司 | 一种基于IntelDPDK的网络数据处理方法及装置 |
CN110677397A (zh) * | 2019-09-18 | 2020-01-10 | 广东网堤信息安全技术有限公司 | 基于dpdk下的nat转发数据的方法 |
US10644948B1 (en) * | 2017-08-29 | 2020-05-05 | Juniper Networks, Inc. | Hypervisor detection of virtual machine and network interface compatibility |
CN111147391A (zh) * | 2019-12-05 | 2020-05-12 | 深圳市任子行科技开发有限公司 | DPDK用户态与linux内核网络协议栈之间的数据传输方法及系统 |
CN111859062A (zh) * | 2019-04-30 | 2020-10-30 | 大唐移动通信设备有限公司 | 一种基于dpdk的网络数据处理方法和装置 |
CN113127139A (zh) * | 2019-12-31 | 2021-07-16 | 阿里巴巴集团控股有限公司 | 一种基于数据面开发套件dpdk的内存分配方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10348741B2 (en) * | 2017-05-10 | 2019-07-09 | Alcatel Lucent | Method and apparatus for virtually tapping network traffic using a virtual packet broker |
-
2022
- 2022-07-19 CN CN202210849701.7A patent/CN115242895B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106020926A (zh) * | 2016-04-29 | 2016-10-12 | 华为技术有限公司 | 一种用于虚拟交换机技术中数据传输的方法及装置 |
CN108243262A (zh) * | 2016-12-26 | 2018-07-03 | 大唐移动通信设备有限公司 | Arp表的学习方法、装置及网络三层设备 |
CN108270676A (zh) * | 2016-12-31 | 2018-07-10 | 普天信息技术有限公司 | 一种基于IntelDPDK的网络数据处理方法及装置 |
CN107483237A (zh) * | 2017-08-02 | 2017-12-15 | 赛尔网络有限公司 | 基于dpdk转发的性能优化系统及方法 |
US10644948B1 (en) * | 2017-08-29 | 2020-05-05 | Juniper Networks, Inc. | Hypervisor detection of virtual machine and network interface compatibility |
CN107689963A (zh) * | 2017-09-26 | 2018-02-13 | 杭州迪普科技股份有限公司 | 一种针对arp应答报文攻击的检测方法及装置 |
CN111859062A (zh) * | 2019-04-30 | 2020-10-30 | 大唐移动通信设备有限公司 | 一种基于dpdk的网络数据处理方法和装置 |
CN110677397A (zh) * | 2019-09-18 | 2020-01-10 | 广东网堤信息安全技术有限公司 | 基于dpdk下的nat转发数据的方法 |
CN111147391A (zh) * | 2019-12-05 | 2020-05-12 | 深圳市任子行科技开发有限公司 | DPDK用户态与linux内核网络协议栈之间的数据传输方法及系统 |
CN113127139A (zh) * | 2019-12-31 | 2021-07-16 | 阿里巴巴集团控股有限公司 | 一种基于数据面开发套件dpdk的内存分配方法和装置 |
Non-Patent Citations (1)
Title |
---|
李兰兰. 网络功能虚拟化技术的发展与挑战.网络安全技术与应用.2016,14-15. * |
Also Published As
Publication number | Publication date |
---|---|
CN115242895A (zh) | 2022-10-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20070106541A1 (en) | Method for the construction and execution of a distributed workflow in a communication system | |
CN106657180B (zh) | 用于云服务的信息传输方法、装置、终端设备及系统 | |
CN113691589B (zh) | 报文传输方法、装置及系统 | |
CN114285781B (zh) | Srv6业务流量统计方法、装置、电子设备及介质 | |
CN103581041A (zh) | Mtu值的设置方法和电子设备 | |
CN112507005A (zh) | 一种处理报文的方法和装置 | |
CN112770408B (zh) | 一种日志的传输方法、装置、计算机设备和存储介质 | |
CN114640557A (zh) | 网关以及云网络系统 | |
CN107222365B (zh) | 数据处理方法、装置及服务器 | |
CN115242895B (zh) | 基于dpdk的访问本机方法和装置 | |
US20210103457A1 (en) | Control apparatus, control system, control method, and program | |
CN111367810B (zh) | 测试环境生成方法、装置、系统、电子设备及可读介质 | |
CN110572394B (zh) | 访问控制方法及装置 | |
CN112968965A (zh) | Nfv网络节点的元数据服务方法、服务器及存储介质 | |
CN109005250B (zh) | 用于访问服务端的方法和装置 | |
CN100389627C (zh) | 短信接口测试设备 | |
CN114157632B (zh) | 网络隔离方法、装置、设备和存储介质 | |
Zhang et al. | P4SC: A high performance and flexible framework for service function chain | |
CN110661895A (zh) | 一种服务器的网络地址映射方法及网络地址映射设备 | |
CN102083118A (zh) | 一种大话务测试装置、系统及方法 | |
CN115250254B (zh) | Netflow报文分发处理方法及装置 | |
CN111125493A (zh) | 一种基于协议无感知转发的高速数据查询系统及方法 | |
CN111078477A (zh) | 接口测试的方法、装置、存储介质和电子设备 | |
CN114650271B (zh) | 全局负载dns邻居站点学习方法及装置 | |
CN115277506B (zh) | 负载均衡设备测试方法及系统 |
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 |