CN112787998B - 一种基于dpdk的alg实现方法和系统 - Google Patents

一种基于dpdk的alg实现方法和系统 Download PDF

Info

Publication number
CN112787998B
CN112787998B CN202011569477.3A CN202011569477A CN112787998B CN 112787998 B CN112787998 B CN 112787998B CN 202011569477 A CN202011569477 A CN 202011569477A CN 112787998 B CN112787998 B CN 112787998B
Authority
CN
China
Prior art keywords
nginx
client
control connection
user
server
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
Application number
CN202011569477.3A
Other languages
English (en)
Other versions
CN112787998A (zh
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.)
Zhengzhou Xinda Jiean Information Technology Co Ltd
Original Assignee
Zhengzhou Xinda Jiean Information 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 Zhengzhou Xinda Jiean Information Technology Co Ltd filed Critical Zhengzhou Xinda Jiean Information Technology Co Ltd
Priority to CN202011569477.3A priority Critical patent/CN112787998B/zh
Publication of CN112787998A publication Critical patent/CN112787998A/zh
Application granted granted Critical
Publication of CN112787998B publication Critical patent/CN112787998B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/163In-band adaptation of TCP data exchange; In-band control procedures
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0876Network architectures or network communication protocols for network security for authentication of entities based on the identity of the terminal or configuration, e.g. MAC address, hardware or software configuration or device fingerprint
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Multimedia (AREA)
  • Power Engineering (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明涉及一种基于DPDK的ALG实现方法和系统,方法包括在用户态Nginx程序配置一条控制反向代理,代理到服务端;将所述控制反向代理作为静态控制连接侦听地址,并通过客户端访问静态控制连接侦听地址;用户态Nginx程序与客户端断开连接,与服务端建立连接,用户态Nginx程序用于转发客户端与服务端之间的控制连接数据包;用户态Nginx程序基于DPDK+FreeBSD+Nginx架构,对所述控制连接数据包做协议解析改写以及相关控制动作;服务端推流至用户态Nginx程序动态媒体连接侦听地址,用户态Nginx程序使用本地媒体端口发送流媒体给客户端。本发明能够实现基于DPDK用户态协议栈层面的ALG功能,打通多通道协议的业务,满足ALG高并发大吞吐应用场景。

Description

一种基于DPDK的ALG实现方法和系统
技术领域
本发明涉及互联网通信技术领域,尤其涉及一种基于DPDK的ALG实现方法和系统。
背景技术
普通NAT实现了对TCP或UDP报文头中的IP地址及端口转换功能,但对应用层数据载荷中的字段无能为力,在许多应用层协议中,比如多SIP、RTSP、FTP等,TCP/UDP载荷中带有地址或者端口信息,这些内容不能被NAT进行有效的转换,就可能导致业务不通。而NATALG技术能对应用层报文中的地址进行转换处理,从而保证应用层通信的正确性。
传统的Linux 内核ALG可以解决SIP、RTSP、FTP等协议经过nat设备时对其控制连接数据包中地址做ALG转换,但由于其基于Linux内核模块实现的,因此用户态程序无法对控制连接数据包做解析,进而做设备认证,访问控制等更丰富的功能。Linux内核中断处理、数据包经过协议栈处理时多次内存拷贝、以及锁的开销限制了设备并发吞吐。
发明内容
本发明为解决现有基于Linux内核ALG在进行处理时访问控制功能单一并且在数据包处理时其吞吐量受限的问题提供了一种基于DPDK的ALG实现方法和系统,运用基于DPDK+FreeBSD用户态协议栈+Nginx程序技术来实现ALG功能,Nginx程序作为反向代理终结连接,对控制连接数据包进行解析,继而实现ALG改写,设备认证,访问控制等功能,打通多通道协议业务,同时DPDK使用无锁技术、大页内存减少,cache-miss多核结合网卡多队列等方面优化,因此结合用户态协议栈可以满足ALG高并发大吞吐应用场景。
一方面,本发明提供了一种基于DPDK的ALG实现方法,所述方法包括以下步骤:
步骤1:用户态Nginx程序配置一条控制反向代理,代理到服务端;
步骤2:将所述控制反向代理作为静态控制连接侦听地址,并通过客户端访问静态控制连接侦听地址;
步骤3:用户态Nginx程序与客户端断开连接,与服务端建立连接,用户态Nginx程序用于转发客户端与服务端之间的控制连接数据包;
步骤4:用户态Nginx程序基于DPDK+FreeBSD+Nginx架构,对所述控制连接数据包做协议解析改写以及相关控制动作;
步骤5:服务端推流至用户态Nginx程序动态媒体连接侦听地址,用户态Nginx程序使用本地媒体端口发送流媒体给客户端。
进一步地,所述方法还包括配置阶段:
用户态Nginx程序接收客户端发送服务端的SETUP指令时,用户态Nginx程序将控制连接数据包中的媒体接收端口改写为动态媒体连接侦听端口,同时用户态Nginx程序下发动态媒体反向代理配置;
用户态Nginx程序收到服务端发给客户端的关于所述SETUP指令的Reply指令时,用户态Nginx程序将控制连接数据包中的媒体发送端口改写为动态媒体连接的本地端口,同时用户态Nginx程序下发动态媒体反向代理配置。
进一步地,步骤4所述DPDK+FreeBSD+Nginx架构包括用户态Nginx程序、FreeBSD用户态协议栈、多个CPU核心以及多个网卡,每个所述网卡包括多个网卡队列;
所述用户态Nginx程序的一个worker进程对应绑定一个CPU核心,并负责处理所有网卡的对应网卡队列上的控制连接数据包;
所述FreeBSD用户态协议栈通过协议栈路由转发从网卡队列上取出的控制连接数据包,并传输至用户态Nginx程序。
进一步地,所述步骤2具体包括:
步骤2.1:所述客户端发送控制连接数据包到达其中一个所述网卡队列后,从所述网卡队列上得到控制连接数据包,并传输至FreeBSD用户态协议栈进行处理;
步骤2.2:判断所述控制连接数据包的目的地址是否为用户态Nginx程序侦听的地址;
步骤2.3:若所述控制连接数据包的目的地址为用户态Nginx程序侦听的地址,用户态Nginx程序对控制连接数据包进行协议解析,并作为代理转发控制连接数据包给服务端。
进一步地,所述方法还包括通信阶段:
所述客户端连接服务端,客户端发送一个OPTIONS命令至服务端,并在收到服务端的回应后,客户端发送DESCRIBE命令查询媒体文件的SDP信息;
所述服务端通过一个SDP描述回应客户端,所述SDP描述至少包括流数量、媒体类型信息;
客户端对所述SDP描述进行分析,并对会话中的每一个流发送一个SETUP指令进行端口配置,完成客户端与服务端之间的流媒体连接建立;
客户端发送一个PLAY命令,服务端开始传送流媒体数据,在播放过程中,客户端可向服务端发送PAUSE命令以控制流媒体的播放;
客户端发送TERADOWN命令结束流媒体会话。
进一步地,所述用户态Nginx程序支持对SIP、RTSP、FTP任意一种或几种协议类型的控制连接数据包进行解析并做ALG改写处理。
进一步地,步骤4所述相关控制动作包括访问控制、格式校验以及客户端身份认证中的任意一种或几种。
另一方面,本发明实施例提供一种基于DPDK的ALG实现系统,包括:客户端、DPDK网关以及服务端;
所述客户端,用于访问所述服务端,并获取流媒体;
所述DPDK网关基于DPDK+FreeBSD+Nginx架构,DPDK网关包括用户态Nginx程序,所述用户态Nginx程序用于配置一条控制反向代理,代理到服务端,将所述控制反向代理作为静态控制连接侦听地址,并通过客户端访问静态控制连接侦听地址,用户态Nginx程序与客户端断开连接,与服务端建立连接,用户态Nginx程序用于转发客户端与服务端之间的控制连接数据包,用户态Nginx程序基于DPDK+FreeBSD+Nginx架构,对所述控制连接数据包做协议解析改写以及相关控制动作,用户态Nginx程序使用本地媒体端口发送流媒体给客户端;
所述服务端用于推流给用户态Nginx程序动态媒体连接侦听地址。
进一步地,所述DPDK+FreeBSD+Nginx架构包括用户态Nginx程序、FreeBSD用户态协议栈、多个CPU核心以及多个网卡,每个所述网卡包括多个网卡队列;
所述用户态Nginx程序的一个worker进程对应绑定一个CPU核心,并负责处理所有网卡的对应网卡队列上的控制连接数据包;
所述FreeBSD用户态协议栈用于通过协议栈路由转发从网卡队列上取出的控制连接数据包,并传输至用户态Nginx程序,所述客户端发送控制连接数据包到达一个所述网卡队列后,从网卡队列上得到控制连接数据包,并传输至FreeBSD用户态协议栈进行处理,判断所述控制连接数据包的目的地址是否为用户态Nginx程序侦听的地址,若所述控制连接数据包的目的地址为用户态Nginx程序侦听的地址,用户态Nginx程序对控制连接数据包进行协议解析,并作为代理转发控制连接数据包给服务端。
进一步地,所述用户态Nginx程序收到客户端发给服务端的SETUP指令时,改写控制连接数据包中的媒体接收端口为动态媒体连接侦听端口,同时用户态Nginx程序下发动态媒体反向代理配置;
用户态Nginx程序收到服务端发给客户端的SETUP指令的Reply指令时,改写控制连接数据包中媒体发送端口为动态媒体连接的本地端口,同时用户态Nginx程序下发动态媒体反向代理配置。
通过上述技术方案,本发明的有益效果为:
在本发明中客户端数据包到达设备的某个网卡队列后,由DPDK网关从网卡队列上取出数据包交给FreeBSD用户态协议栈处理,协议栈路由转发时对所述数据包目的地址进判断,当目的地址是用户态Nginx程序侦听的地址时,将数据包交给用户态Nginx程序处理,用户态Nginx程序对数据包进行解析,并做ALG改写,代理转发数据包给服务端;
使用用户态Nginx程序作为反向代理,因此会终结客户端连接,且与服务端新建连接,可以对转发的数据包做灵活解析,访问控制,格式校验,客户端身份认证等,打通多通道协议的业务,同时结合DPDK网关的无锁技术,避免ALG吞吐量受限的问题。
附图说明
图1为本发明一种基于DPDK的ALG实现方法的流程图;
图2为本发明一种基于DPDK的ALG实现方法和系统的DPDK+FreeBSD+Nginx整体架构图;
图3为本发明一种基于DPDK的ALG实现方法和系统的实现原理图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
如图1所示,本发明实施例提供的一种基于DPDK的ALG实现方法,所述方法包括以下步骤:
步骤1:用户态Nginx程序配置一条控制反向代理,代理到服务端;
步骤2:将所述控制反向代理作为静态控制连接侦听地址,并通过客户端访问静态控制连接侦听地址;
步骤3:用户态Nginx程序与客户端断开连接,与服务端建立连接,用户态Nginx程序用于转发客户端与服务端之间的控制连接数据包;
步骤4:用户态Nginx程序基于DPDK+FreeBSD+Nginx架构,对所述控制连接数据包做协议解析改写以及相关控制动作;
步骤5:服务端推流至用户态Nginx程序动态媒体连接侦听地址,用户态Nginx程序使用本地媒体端口发送流媒体给客户端。
在本实施例中所述流媒体具体为视频流。
本发明实施例提供的一种基于DPDK的ALG实现方法,基于DPDK+FreeBSD+Nginx架构,当目的地址是用户态Nginx程序侦听的地址时,将数据包交给用户态Nginx程序处理,用户态Nginx程序对数据包进行解析,并做ALG改写,代理转发数据包给服务端;从而实现数据包做灵活解析,访问控制,格式校验,客户端身份认证等,打通多通道协议的业务。
实施例2
在上述实施例1的基础上,本发明实施例与上述实施例的不同之处在于,对步骤4进行优化,在客户端与服务端通信时,用户态Nginx程序对当连接数据包中的媒体接收端口进行改写,并对应做出反向代理配置,从而确保了媒体流的正常传输,具体为:
用户态Nginx程序收到客户端发给服务端的SETUP指令时,改写控制连接数据包中的媒体接收端口为动态媒体连接侦听端口,同时用户态Nginx程序下发动态媒体反向代理配置;
当用户态Nginx程序收到服务端发给客户端的SETUP的Reply指令时,改写控制连接数据包中媒体发送端口为动态媒体连接的本地端口,同时用户态Nginx程序下发动态媒体反向代理配置。
实施例3
为避免ALG吞吐量受限,本发明实施例还提供了一种基于DPDK的ALG实现方法,与上述各实施例的不同之处在于,步骤4所述DPDK+FreeBSD+Nginx架构包括用户态Nginx程序、FreeBSD用户态协议栈、多个CPU核心以及多个网卡,每个所述网卡包括多个网卡队列;
所述用户态Nginx程序的一个worker进程对应绑定一个CPU核心,并负责处理所有网卡的对应网卡队列上的控制连接数据包;
所述FreeBSD用户态协议栈通过协议栈路由转发从网卡队列上取出的控制连接数据包,并传输至用户态Nginx程序。
在本实施例中,如图2所示,所述worker进程标号为worker0~worker3、所述CPU核心标号为core0~core3、所述网卡标号为网卡0~网卡2,所述网卡0~网卡2中的每一个网卡包含网卡队列0~3;
首先用户态Nginx程序的一个worker进程对应绑定一个CPU核心,(例如图2中worker0绑定core0, worker1绑定core1……);
所述用户态Nginx程序的一个worker进程对应绑定一个CPU核心,并负责处理多个所述网卡队列上的控制连接数据包,(例如图2中worker0处理网卡0和网卡1和网卡2的网卡队列0上的数据包,worker1处理网卡0和网卡1和网卡2的网卡队列1上的数据包);
在本发明实施例中,通过使每个所述网卡队列对应不同的中断,利用用户态Nginx程序的一个worker进程对应绑定一个CPU核心,充分利于了CPU多核并行处理特性,提高了转发效率。
实施例4
在上述各实施例的基础上,本发明实施例还提供了一种基于DPDK的ALG实现方法,与上述各实施例的不同之处在于,本实施例对步骤2进行了优化,具体的:
所述步骤2具体包括:
步骤2.1:所述客户端发送控制连接数据包到达一个所述网卡队列后,从网卡队列上得到控制连接数据包,并传输至FreeBSD用户态协议栈进行处理;
步骤2.2:判断所述控制连接数据包的目的地址是否为用户态Nginx程序侦听的地址;
步骤2.3:若所述控制连接数据包的目的地址为用户态Nginx程序侦听的地址,用户态Nginx程序对控制连接数据包进行协议解析,并作为代理转发控制连接数据包给服务端。
实施例5
所述用户态Nginx程序支持对SIP、RTSP、FTP任意一种或几种协议类型的控制连接数据包进行解析并做ALG改写处理。用户态Nginx程序对所述控制连接数据包做协议解析改写时所述控制动作包括访问控制、格式校验以及客户端身份认证中的任意一种或几种。像SIP、RTSP、FTP这样的协议,一般由控制连接和媒体连接组成,且媒体连接使用的收发地址在控制连接的数据包中会表明;
为了完成服务端至客户端的流媒体传输,结合附图3(图3中,A表示静态控制连接侦听地址,B表示控制连接代理到服务端使用的本地地址,C表示动态媒体连接侦听地址,D表示动态媒体连接代理到客户端使用的本地地址。)所示,本发明实施例还提供了一种基于DPDK的ALG实现方法,与上述各实施例的不同之处在于,本实施例还包括通信阶段,为了进一步说明本发明的技术方案,下面以RTSP协议为例,对通信阶段进行说明,具体为:
所述客户端连接服务端,客户端发送一个OPTIONS命令至服务端,所述OPTIONS命令用于查询服务端提供的方法,在收到服务端的回应后,客户端发送DESCRIBE命令查询媒体文件的SDP信息;
所述服务端通过一个SDP描述回应客户端,所述SDP描述至少包括流数量、媒体类型信息;
客户端对所述SDP描述进行分析,并对会话中的每一个流发送一个SETUP指令进行端口配置,所述端口配置过程为客户端通过SETUP指令告诉服务端:客户端用于接收媒体数据的端口,服务端回复客户端:自己推流的端口,从而完成客户端与服务端之间的流媒体连接建立;
客户端发送一个PLAY命令,服务端开始传送流媒体数据,在播放过程中,客户端可向服务端发送PAUSE命令以控制流媒体的播放;
客户端发送TERADOWN命令结束流媒体会话。
客户端和服务端在交互过程中所协商的端口号信息携带在SETUP指令和SETUP指令的Reply指令的报文中,比如客户端控制连接数据包中表明媒体接收端口是client_port=56958-56959,服务端控制连接数据包中表明媒体发送(推流)端口是server_port=6970-6971,因此在用户态Nginx程序对控制连接数据包解析时,对于SETUP的报文做ALG改写(例如将client_port=56958-56959改写为用户态Nginx程序未使用的端口60000-60001),以及对SETUP指令的Reply的报文做ALG改写(例如将server_port=6970-6971改写为Nginx未使用的端口7000-7001)。
实施例6
对应上述的一种基于DPDK的ALG实现方法,如图3所示,本发明实施例提供一种基于DPDK的ALG实现系统,所述系统包括:客户端、DPDK网关以及服务端;
所述客户端,用于访问所述服务端,并获取流媒体;
所述DPDK网关基于DPDK+FreeBSD+Nginx架构,DPDK网关包括用户态Nginx程序,所述用户态Nginx程序用于配置一条控制反向代理,代理到服务端,将所述控制反向代理作为静态控制连接侦听地址,并通过客户端访问静态控制连接侦听地址,用户态Nginx程序与客户端断开连接,与服务端建立连接,用户态Nginx程序用于转发客户端与服务端之间的控制连接数据包,用户态Nginx程序基于DPDK+FreeBSD+Nginx架构,对所述控制连接数据包做协议解析改写以及相关控制动作,用户态Nginx程序使用本地媒体端口发送流媒体给客户端;
所述服务端用于推流给用户态Nginx程序动态媒体连接侦听地址。
作为一种可实施方式,DPDK+FreeBSD+Nginx架构包括用户态Nginx程序、FreeBSD用户态协议栈、多个CPU核心以及多个网卡,每个所述网卡包括多个网卡队列;
所述用户态Nginx程序的一个worker进程对应绑定一个CPU核心,并负责处理所有网卡的对应网卡队列上的控制连接数据包;
所述FreeBSD用户态协议栈通过协议栈路由转发从网卡队列上取出的控制连接数据包,并传输至用户态Nginx程序,所述客户端发送控制连接数据包到达一个所述网卡队列后,从网卡队列上得到控制连接数据包,并传输至FreeBSD用户态协议栈进行处理,判断所述控制连接数据包的目的地址是否为用户态Nginx程序侦听的地址,若所述控制连接数据包的目的地址为用户态Nginx程序侦听的地址,用户态Nginx程序对控制连接数据包进行协议解析,并作为代理转发控制连接数据包给服务端。
作为一种可实施方式,所述用户态Nginx程序收到客户端发给服务端的SETUP指令时,改写控制连接数据包中的媒体接收端口为动态媒体连接侦听端口,同时用户态Nginx程序下发动态媒体反向代理配置;
用户态Nginx程序收到服务端发给客户端的SETUP指令的Reply指令时,改写控制连接数据包中媒体发送端口为动态媒体连接的本地端口,同时用户态Nginx程序下发动态媒体反向代理配置。
需要说明的是,本发明实施例提供的一种基于DPDK的ALG实现系统,是为了实现上述各方法实施例的,其功能具体可参考上述方法实施例,此处不再赘述。
本发明的一种基于DPDK的ALG实现方法和一种基于DPDK的ALG实现系统,基于DPDK+FreeBSD用户态协议栈+Nginx技术实现ALG功能,实现ALG改写,设备认证,访问控制等功能,打通多通道协议的业务。同时基于DPDK网关使用无锁技术、大页内存减少cache-miss多核结合网卡多队列等方面优化,再结合用户态协议栈可以满足ALG高并发大吞吐的应用场景。
以上所述之实施例,只是本发明的较佳实施例而已,并非限制本发明的实施范围,故凡依本发明专利范围所述的构造、特征及原理所做的等效变化或修饰,均应包括于本发明申请专利范围内。

Claims (7)

1.一种基于DPDK的ALG实现方法,其特征在于,所述方法包括以下步骤:
步骤1:用户态Nginx程序配置一条控制反向代理,代理到服务端;
步骤2:将所述控制反向代理作为静态控制连接侦听地址,并通过客户端访问静态控制连接侦听地址;
步骤3:用户态Nginx程序与客户端断开连接,与服务端建立连接,用户态Nginx程序用于转发客户端与服务端之间的控制连接数据包;
步骤4:用户态Nginx程序基于DPDK+FreeBSD+Nginx架构,对所述控制连接数据包做协议解析改写以及相关控制动作;
步骤5:服务端推流至用户态Nginx程序动态媒体连接侦听地址,用户态Nginx程序使用本地媒体端口发送流媒体给客户端;
步骤4所述DPDK+FreeBSD+Nginx架构包括用户态Nginx程序、FreeBSD用户态协议栈、多个CPU核心以及多个网卡,每个所述网卡包括多个网卡队列;
所述用户态Nginx程序的一个worker进程对应绑定一个CPU核心,并负责处理所有网卡的对应网卡队列上的控制连接数据包;
所述FreeBSD用户态协议栈通过协议栈路由转发从网卡队列上取出的控制连接数据包,并传输至用户态Nginx程序;
所述步骤2具体包括:
步骤2.1:所述客户端发送控制连接数据包到达其中一个所述网卡队列后,从所述网卡队列上得到控制连接数据包,并传输至FreeBSD用户态协议栈进行处理;
步骤2.2:判断所述控制连接数据包的目的地址是否为用户态Nginx程序侦听的地址;
步骤2.3:若所述控制连接数据包的目的地址为用户态Nginx程序侦听的地址,用户态Nginx程序对控制连接数据包进行协议解析,并作为代理转发控制连接数据包给服务端。
2.根据权利要求1所述的一种基于DPDK的ALG实现方法,其特征在于,所述方法还包括配置阶段:
用户态Nginx程序接收客户端发送服务端的SETUP指令时,用户态Nginx程序将控制连接数据包中的媒体接收端口改写为动态媒体连接侦听端口,同时用户态Nginx程序下发动态媒体反向代理配置;
用户态Nginx程序收到服务端发给客户端的关于所述SETUP指令的Reply指令时,用户态Nginx程序将控制连接数据包中的媒体发送端口改写为动态媒体连接的本地端口,同时用户态Nginx程序下发动态媒体反向代理配置。
3.根据权利要求1所述的一种基于DPDK的ALG实现方法,其特征在于,所述方法还包括通信阶段:
所述客户端连接服务端,客户端发送一个OPTIONS命令至服务端,并在收到服务端的回应后,客户端发送DESCRIBE命令查询媒体文件的SDP信息;
所述服务端通过一个SDP描述回应客户端,所述SDP描述至少包括流数量、媒体类型信息;
客户端对所述SDP描述进行分析,并对会话中的每一个流发送一个SETUP指令进行端口配置,完成客户端与服务端之间的流媒体连接建立;
客户端发送一个PLAY命令,服务端开始传送流媒体数据,在播放过程中,客户端可向服务端发送PAUSE命令以控制流媒体的播放;
客户端发送TERADOWN命令结束流媒体会话。
4.根据权利要求1所述的一种基于DPDK的ALG实现方法,其特征在于,所述用户态Nginx程序支持对SIP、RTSP、FTP任意一种或几种协议类型的控制连接数据包进行解析并做ALG改写处理。
5.根据权利要求1所述的一种基于DPDK的ALG实现方法,其特征在于,步骤4所述相关控制动作包括访问控制、格式校验以及客户端身份认证中的任意一种或几种。
6.一种基于DPDK的ALG实现系统,其特征在于,包括:客户端、DPDK网关以及服务端;
所述客户端,用于访问所述服务端,并获取流媒体;
所述DPDK网关基于DPDK+FreeBSD+Nginx架构,DPDK网关包括用户态Nginx程序,所述用户态Nginx程序用于配置一条控制反向代理,代理到服务端,将所述控制反向代理作为静态控制连接侦听地址,并通过客户端访问静态控制连接侦听地址,用户态Nginx程序与客户端断开连接,与服务端建立连接,用户态Nginx程序用于转发客户端与服务端之间的控制连接数据包,用户态Nginx程序基于DPDK+FreeBSD+Nginx架构,对所述控制连接数据包做协议解析改写以及相关控制动作,用户态Nginx程序使用本地媒体端口发送流媒体给客户端;
所述服务端用于推流给用户态Nginx程序动态媒体连接侦听地址;
所述DPDK+FreeBSD+Nginx架构包括用户态Nginx程序、FreeBSD用户态协议栈、多个CPU核心以及多个网卡,每个所述网卡包括多个网卡队列;
所述用户态Nginx程序的一个worker进程对应绑定一个CPU核心,并负责处理所有网卡的对应网卡队列上的控制连接数据包;
所述FreeBSD用户态协议栈通过协议栈路由转发从网卡队列上取出的控制连接数据包,并传输至用户态Nginx程序,所述客户端发送控制连接数据包到达一个所述网卡队列后,从网卡队列上得到控制连接数据包,并传输至FreeBSD用户态协议栈进行处理,判断所述控制连接数据包的目的地址是否为用户态Nginx程序侦听的地址,若所述控制连接数据包的目的地址为用户态Nginx程序侦听的地址,用户态Nginx程序对控制连接数据包进行协议解析,并作为代理转发控制连接数据包给服务端。
7.根据权利要求6所述的一种基于DPDK的ALG实现系统,其特征在于,所述用户态Nginx程序收到客户端发给服务端的SETUP指令时,改写控制连接数据包中的媒体接收端口为动态媒体连接侦听端口,同时用户态Nginx程序下发动态媒体反向代理配置;
用户态Nginx程序收到服务端发给客户端的SETUP指令的Reply指令时,改写控制连接数据包中媒体发送端口为动态媒体连接的本地端口,同时用户态Nginx程序下发动态媒体反向代理配置。
CN202011569477.3A 2020-12-26 2020-12-26 一种基于dpdk的alg实现方法和系统 Active CN112787998B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011569477.3A CN112787998B (zh) 2020-12-26 2020-12-26 一种基于dpdk的alg实现方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011569477.3A CN112787998B (zh) 2020-12-26 2020-12-26 一种基于dpdk的alg实现方法和系统

Publications (2)

Publication Number Publication Date
CN112787998A CN112787998A (zh) 2021-05-11
CN112787998B true CN112787998B (zh) 2022-04-08

Family

ID=75752683

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011569477.3A Active CN112787998B (zh) 2020-12-26 2020-12-26 一种基于dpdk的alg实现方法和系统

Country Status (1)

Country Link
CN (1) CN112787998B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110087650A (ko) * 2010-01-26 2011-08-03 삼성전자주식회사 원격 접속 서비스에서 아이피 주소 충돌 해결 방법 및 장치
CN108234359A (zh) * 2016-12-13 2018-06-29 华为技术有限公司 传输报文的系统和方法
CN109547519A (zh) * 2017-09-22 2019-03-29 中兴通讯股份有限公司 反向代理方法、装置及计算机可读存储介质
CN111158782A (zh) * 2019-12-27 2020-05-15 郑州信大捷安信息技术股份有限公司 一种基于DPDK技术的Nginx配置热更新系统和方法
WO2020167971A1 (en) * 2019-02-12 2020-08-20 Apple Inc. Core network support for delay budget information (dbi) signaling in ims multimedia sessions
CN111835685A (zh) * 2019-04-19 2020-10-27 厦门网宿有限公司 一种监控Nginx网络隔离空间的运行状态的方法和服务器

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10528721B2 (en) * 2016-10-20 2020-01-07 Intel Corporation Trusted packet processing for multi-domain separatization and security

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110087650A (ko) * 2010-01-26 2011-08-03 삼성전자주식회사 원격 접속 서비스에서 아이피 주소 충돌 해결 방법 및 장치
CN108234359A (zh) * 2016-12-13 2018-06-29 华为技术有限公司 传输报文的系统和方法
CN109547519A (zh) * 2017-09-22 2019-03-29 中兴通讯股份有限公司 反向代理方法、装置及计算机可读存储介质
WO2020167971A1 (en) * 2019-02-12 2020-08-20 Apple Inc. Core network support for delay budget information (dbi) signaling in ims multimedia sessions
CN111835685A (zh) * 2019-04-19 2020-10-27 厦门网宿有限公司 一种监控Nginx网络隔离空间的运行状态的方法和服务器
CN111158782A (zh) * 2019-12-27 2020-05-15 郑州信大捷安信息技术股份有限公司 一种基于DPDK技术的Nginx配置热更新系统和方法

Also Published As

Publication number Publication date
CN112787998A (zh) 2021-05-11

Similar Documents

Publication Publication Date Title
US6799220B1 (en) Tunneling management messages over a channel architecture network
US10868767B2 (en) Data transmission method and apparatus in optoelectronic hybrid network
CN107113342B (zh) 使用软件定义网络的中继优化
US8649395B2 (en) Protocol stack using shared memory
CN108494817A (zh) 数据传输方法、相关装置及系统
US8180856B2 (en) Testing a network
CN101304436A (zh) 实现应用层会话持续性的负载均衡方法、系统及设备
CN112631788B (zh) 数据传输方法及数据传输服务器
WO2016062142A1 (zh) 报文汇聚传输的方法、装置和系统
US20060239251A1 (en) Multi-user media client for communication devices
CN105554540A (zh) 一种网络接口在条件接收卡中的实现方法和装置
US7580410B2 (en) Extensible protocol processing system
US7636355B2 (en) Sharing of protocol processing
CN110213334B (zh) 一种共享文件的传输方法及装置
CN112787998B (zh) 一种基于dpdk的alg实现方法和系统
US20120131205A1 (en) Predetermined Ports for Multi-Core Architectures
CN110336710B (zh) 一种终端的测试方法、系统及装置和存储介质
US8707100B2 (en) Testing a network using randomly distributed commands
US20080056263A1 (en) Efficient transport layer processing of incoming packets
US7616653B1 (en) Network interface card aggregation framework
CN113794715A (zh) 一种虚拟点对点网络数据发送、接收、应答方法及其系统
CN110493191B (zh) Windows平台数据转发方法、装置、电子设备及可读存储介质
CN110086772B (zh) 一种监控视频的获取方法和系统
CN110098993B (zh) 一种信令报文的处理方法和装置
JP2018046404A (ja) 中継装置、中継システム、中継プログラム、及び中継方法

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
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: A DPDK based ALG implementation method and system

Granted publication date: 20220408

Pledgee: Bank of Zhengzhou Co.,Ltd. Zhongyuan Science and Technology City Sub branch

Pledgor: ZHENGZHOU XINDA JIEAN INFORMATION TECHNOLOGY Co.,Ltd.

Registration number: Y2024980007004

PE01 Entry into force of the registration of the contract for pledge of patent right