CN113055269A - 虚拟专用网络数据的传输方法及装置 - Google Patents
虚拟专用网络数据的传输方法及装置 Download PDFInfo
- Publication number
- CN113055269A CN113055269A CN201911373904.8A CN201911373904A CN113055269A CN 113055269 A CN113055269 A CN 113055269A CN 201911373904 A CN201911373904 A CN 201911373904A CN 113055269 A CN113055269 A CN 113055269A
- Authority
- CN
- China
- Prior art keywords
- data packet
- data
- message type
- socket
- packet
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
- H04L12/4641—Virtual LANs, VLANs, e.g. virtual private networks [VPN]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例涉及通信领域,公开了一种虚拟专用网络数据的传输方法及装置。本发明通过用户态协议栈的第一进程接收数据包;如果接收的数据包为控制报文类型的数据包,则将控制报文类型的数据包转发至内核态协议栈的第二进程,并通过第二进程对控制报文类型的数据包进行处理。通过不同的进程对不同报文类型数据包进行处理,实现OpenVPN的数据面和控制面的分离。另外,第一进程仅需对数据报文类型的数据包进行处理,针对控制报文类型的数据包只需转发无需进行处理,提高了第一进程对接收到的数据包的处理效率。
Description
技术领域
本发明实施例涉及通信领域,特别涉及一种虚拟专用网络数据的传输方法及装置。
背景技术
OpenVPN是一个基于开放源代码的软件库(OpenSSL)的虚拟专用网络(VPN)实现的一种软件。如图1所示,在OpenVPN中,如果用户访问一个远程的虚拟地址,用户侧客户端的操作系统会将请求数据发送至服务端的物理网卡上,服务端的物理网卡通过TCP/IP协议栈的路由机制将数据包发送到服务端的虚拟网卡上,openVPN服务程序接收该数据并进行相应的处理,处理后的数据包通过TCP/IP协议栈发送至应用层,完成客户端的数据远程传输至服务器。服务器将数据传输至客户端与上述过程类似,应用层将数据通过TCP/IP协议栈进行处理,并经由TCP/IP协议栈路由至虚拟网卡,openVPN调用虚拟网卡的字符处理程序,读取路由至虚拟网卡的数据包,并对数据包进行封装处理,最后通过TCP/IP协议栈将数据返回客户端,完成数据的传输。
发明人发现相关技术中至少存在如下问题:在OpenVPN服务程序对数据包的处理过程中,服务程序以单进程的方式对所接收到的数据包进行处理,但是服务程序所接收到的数据包的报文类型却可能是不同的,也就是说在处理不同报文类型的数据包时,均通过同一程序对其进行处理,无法将不同报文类型的数据包进行分离,并针对特定的报文类型的数据包的处理进行加速。
发明内容
本发明实施方式的目的在于提供一种虚拟专用网络数据的传输方法及装置,通过不同的进程对不同报文类型数据包进行处理,实现OpenVPN的数据面和控制面的分离。
为解决上述技术问题,本发明的实施方式提供了一种虚拟专用网络数据的传输方法,包括:通过用户态协议栈的第一进程接收数据包;如果接收的数据包为控制报文类型的数据包,则将控制报文类型的数据包转发至内核态协议栈的第二进程,并通过第二进程对控制报文类型的数据包进行处理。
本发明的实施方式还提供了一种虚拟专用网络数据的传输装置,包括:接收模块,转发模块和处理模块;接收模块用于通过用户态协议栈的第一进程接收数据包;转发模块用于在接收的数据包为控制报文类型的数据包时,将控制报文类型的数据包转发至内核态协议栈的第二进程;处理模块用于通过第二进程对控制报文类型的数据包进行处理。
本发明的实施方式还提供了一种服务器,包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行虚拟专用网络数据的传输方法。
本发明的实施方式还提供了一种存储介质,存储有计算机程序,计算机程序被处理器执行时上述的虚拟专用网络数据的传输方法。
本发明实施方式相对于现有技术而言,通过用户态协议栈的第一进程接收用户发送的数据包,将控制报文类型的数据包拦截并转发至内核态协议栈的第二进程,通过第二进程进行处理,而对于数据报文类型的数据包,则无需拦截,直接通过用户态协议栈的第一进程进行处理,使不同报文类型的数据包以不同的进程进行处理,实现了虚拟专用网络的数据面与控制面的分离。另外,第一进程仅需对数据报文类型的数据包进行处理,针对控制报文类型的数据包只需转发无需进行处理,提高了第一进程对接收到的数据包的处理效率。
另外,将控制报文类型的数据包转发至内核态协议栈的第二进程,包括:确定接收控制报文类型的数据包的第一套接字;根据第一套接字和预存的第一套接字和第二套接字的对应关系,确定用于转发控制报文类型的数据包的第二套接字;通过第二套接字将控制报文类型的数据包转发至内核态协议栈的第二进程,从而实现内核态协议栈的第二进程与用户态协议栈的第一进程之间的数据传输。
另外,第一套接字和第二套接字的对应关系通过以下方式确定:在通过第一套接字接收控制报文类型的数据包时,创建连接到第二进程的第二套接字;创建一个协议代理用于存储第一套接字和所述第二套接字;根据协议代理确定第一套接字和第二套接字的对应关系。
另外,协议代理包括:TCP代理或UDP代理,根据数据包的传输协议为其创建满足传输条件的协议代理。
另外,在通过第二进程对控制报文类型的数据包进行处理之后,还包括:将第二进程针对控制报文类型的数据包生成的参数返回至第一进程;其中,参数至少包括加密参数和解密参数;在第一进程接收数据报文类型的数据包时,根据数据报文类型的数据包的流向获取加密参数或解密参数;根据加密参数对数据报文类型的数据包进行加密;或,根据解密参数对数据报文类型的数据包进行解密。这样做可以对不同传输方向的数据报文类型的数据包进行不同的处理,并将处理后的数据进行转发处理。
另外,在利用TCP协议对虚拟专用网络数据进行传输时,获取解密参数,包括:如果数据报文类型的数据包为用户发送的数据包,则获取接收数据报文类型的数据包的第一套接字;根据第一套接字获取解密参数;获取加密参数,包括:如果数据报文类型的数据包为服务器返回的数据包,则获取数据包的目的地址;根据目的地址,在预先存储的第一哈希表中获取加密参数。
另外,在利用UDP协议对虚拟专用网络数据进行传输时,获取解密参数,包括:如果数据报文类型的数据包为用户发送的数据包,则获取数据包发送的外部源地址及外部源端口;根据外部源地址和外部源端口,在预存的第二哈希表中获取解密参数;获取加密参数,包括:如果数据报文类型的数据包为服务器返回的数据包,则获取数据包的目的地址;根据目的地址,在预存的第三哈希表中获取加密参数。
附图说明
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1是根据现有技术中基于openVPN的数据包传输过程的示意图;
图2是根据本发明第一实施方式中的虚拟专用网络数据的传输的方法流程图;
图3是根据本发明第二实施方式中的虚拟专用网络数据的传输的方法流程图;
图4是根据本发明第二实施方式中的流入方向的数据包的处理过程示意图;
图5是根据本发明第二实施方式中的流出方向的数据包的处理过程示意图;
图6是根据本发明第二实施方式中基于openVPN的数据包传输过程的示意图;
图7是根据本发明第三实施方式中的虚拟专用网络数据的传输装置的示意图;
图8是根据本发明第四实施方式中的服务器的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。
以下各个实施例的划分是为了描述方便,不应对本发明的具体实现方式构成任何限定,各个实施例在不矛盾的前提下可以相互结合相互引用。
本发明的第一实施方式涉及一种虚拟专用网络数据的传输方法,通过用户态协议栈的第一进程接收数据包;如果接收的数据包为控制报文类型的数据包,则将控制报文类型的数据包转发至内核态协议栈的第二进程,并通过第二进程对控制报文类型的数据包进行处理。通过不同的进程对不同报文类型数据包进行处理,实现OpenVPN的数据面和控制面的分离。下面对本实施方式的虚拟专用网络数据的传输方法进行具体的说明,以下内容仅为方便理解提供的实现细节,并非实施本方案的必须。
如图2所示,本发明实施方式提供的虚拟专用网络数据的传输方法,包括:
步骤201,通过用户态协议栈的第一进程接收数据包。
具体地说,用户态协议栈的第一进程可以用来监听用户发送至物理网卡的数据包,也可以监听服务器返回至用户客户端的数据包。用户态协议栈的第一进程中通过创建ip:port监听用户关联的套接字socketM(1~N)。套接字为ip地址与端口的组合,通过套接字可以对数据包进行打开、读写和关闭等操作。在创建ip1:port1之后,在用户通过套接字socket1(1~N)向服务器的物理网卡发送数据包时,用户态协议栈的第一线程可以监听到该数据包并获取该数据包。
步骤202,如果接收的数据包为控制报文类型的数据包,则将控制报文类型的数据包转发至内核态协议栈的第二进程。
具体地说,用户态协议栈的第一线程可以根据获取的数据包的头部字段,判断所接收到的数据包的报文类型,如数据报文类型的数据包或控制报文类型的数据包。例如,通过OPENVPN报文头部的op code字段来判断该数据包为控制报文类型数据包或者数据报文类型数据包;具体见下表:
报文头部op code字段 | 编号 | 报文类型 |
P_CONTROL_HARD_RESET_CLIENT_V1 | 1 | 控制流 |
P_CONTROL_HARD_RESET_SERVER_V1 | 2 | 控制流 |
P_CONTROL_SOFT_RESET_V1 | 3 | 控制流 |
P_CONTROL_V1 | 4 | 控制流 |
P_ACK_V1 | 5 | 控制流 |
P_DATA_V1 | 6 | 数据流 |
P_DATA_V2 | 9 | 数据流 |
在用户态协议栈的第一线程接收到控制报文类型的数据包时,可以利用新建的协议代理将控制报文类型的数据包转发至内核态协议栈的第二进程。新建的协议代理中至少包括与用户客户端连接的第一套接字,还包括与内核态协议栈的第二进程相连接的第二套接字,在协议代理通过第一套接字接收数据包时,通过第二套接字将接收的数据包转发出去;同理如果该协议代理通过第二套接字接收数据包时,通过第一套接字将接收的该数据包转发出去,从而实现用户态协议栈的第一进程与内核态协议栈的第二进程之间数据包的传递。
新建协议代理中第一套接字和第二套接字的对应关系可以通过下述方式进行确定,在用户态协议栈的第一进程监听到用户M向VPN服务器发送控制报文类型的数据包时,建立与用户的套接字socketM的连接,并对应创建连接至内核态协议栈的第二进程(控制面)的socketM.M。此后为该用户M创建一个控制结构体context_M,该控制结构体中包含上述socketM和socketM.M。创建的控制结构体包含新建的为该用户转发数据包的协议代理。在再次接收到该用户M的控制报文类型的数据包时,根据与用户连接的套接字socketM,即可获取相应的协议代理控制结构体context_M,并根据context_M中包含的另一套接字socketM.M,即可确定第一套接字和第二套接字的对应关系,并实现对控制报文类型的数据包的转发。与内核态协议栈的第二进程(控制面)连接的套接字socketM.M在该控制面建立并启动之后,通过进程间的通信方式,将启动的控制面对应的套接字socketM.M通知到用户态协议栈,从而便于用户态协议栈的第一进程可以将套接字socketM.M与用户对应的套接字socketM进行绑定。
在实际应用中可以通过TCP协议或UDP协议对数据包进行传输,在建立协议代理时,需确定传输协议是TCP协议或是UDP协议,建立相应的TCP代理或是UDP代理,从而保证数据包的正常转发。
步骤203,通过第二进程对控制报文类型的数据包进行处理。
第二进程根据用户发送的控制报文类型的数据包,确定对该用户发送的数据包进行解密的解密参数,以及发送至该用户的数据包的加密参数,并为该用户分配相应的内网地址。内网地址可以通过配置文件中的参数确定,例如,配置文件中的serve字段写有server 10.9.0.0255.255.255.0,可以在上述字段中的地址中任选一个ip作为向该用户返回数据包的内网地址。
另外,如果接收的数据包为数据报文类型的数据包,则直接通过用户态协议栈的第一进程进行处理。由于第一进程在接收控制报文类型的数据包之后,将控制报文类型的数据包转发至第二进程进行处理,所以在第一进程中无需控制报文类型的数据包的处理逻辑,对第一进程中的代码做出了简化,从而可以提高通过第一进程对数据报文类型的数据包处理的速度,从而实现对数据报文类型的数据包的处理进行加速。
另外,为进一步对数据报文类型的数据包的处理进行加速,可以使用jemalloc代码替换原有的内存管理器的代码,通过jemalloc代码对数据报文类型的数据包的内存申请和内存释放过程进行加速;还可以通过加解密软件库对数据报文类型的数据包进行加密或解密,从而提高数据报文类型的数据包加解密过程的速度,或可以通过硬件加速技术(Quick Assist Technology,QAT)对数据报文类型的数据包的加解密过程进行加速;还可以将数据报文类型的数据包由单进程处理改为多进程处理,每个进程绑定一个中央处理器(cpu),利用多个中央处理器同时对多进程的数据报文类型的数据包进行处理,从而实现加速;还可以将数据面与数据平面开发套件(DPDK)网卡进行绑定,数据平面开发套件(DPDK)为高效快速的处理数据包提供函数库与驱动的支持,可以极大提高数据处理性能和吞吐量,从而可以提高数据面的处理效率,等等还可以通过其他的方式对数据报文类型的数据包的处理进行加速,在此就不一一例举了。
本发明实施方式相对于现有技术而言,通过用户态协议栈的第一进程接收用户发送的数据包,将控制报文类型的数据包拦截并转发至内核态协议栈的第二进程,通过第二进程进行处理,而对于数据报文类型的数据包,则无需拦截,直接通过用户态协议栈的第一进程进行处理,使不同报文类型的数据包以不同的进程进行处理,实现了虚拟专用网络的数据面与控制面的分离。另外,第一进程仅需对数据报文类型的数据包进行处理,针对控制报文类型的数据包只需转发无需进行处理,提高了第一进程对接收到的数据包的处理效率。
本发明的第二实施方式涉及一种虚拟专用网络数据的传输方法。在本发明第二实施方式中包括对数据报文类型的数据包进行处理时,根据数据包的流向对其进行加密或解密的处理,如图3所示。
步骤301,通过用户态协议栈的第一线程接收数据包。
步骤302,如果接收的数据包为控制报文类型的数据包,则将控制报文类型的数据包转发至内核态协议栈的第二进程,通过第二进程对控制报文类型的数据包进行处理。
步骤303,在接收的数据包为数据报文类型的数据包时,判断数据包的流量方向是否为流入流量。若判断结果为是,则进入步骤304;若判断结果为否,则进入步骤305。
步骤304,对数据报文类型的数据包进行解密和解封装处理。
具体地说,在通过TCP协议对数据包进行传输时,控制面在处理控制报文类型的数据包时与用户协商确定加密参数和解密参数,在确定加解密参数之后,在配置文件中注册该用户的读事件(read event),并设置读事件(read event)对应的回调参数context_M,以便用户态协议栈的第一进程在检测到读事件时可以通过回调参数context_M,从而实现加解密。
在用户态协议栈接收到用户发送的数据报文类型的数据包时,如图4所示,用户态协议栈的第一进程检测到读事件,并根据上述设置的回调参数contextM,获取到回调参数中包含的解密参数,通过解密参数对接收的数据报文类型的数据包进行解密,并将解密后的数据包转发至真实服务器。
在通过UDP协议对数据包进行传输时,控制面在处理控制报文类型的数据包时与用户协商确定加密参数和解密参数,将包含解密参数的回调参数添加至第二哈希表中,并将包含加密参数的回调参数添加至第三哈希表中,包含加解密参数的回调参数以udp_context_M表示,包含加密参数的回调函数以udp_context_m表示,分别设置各个回调参数的回调条件,若满足设置的回调条件则可以从哈希表中获取到回调参数。
在用户态协议栈接收到用户发送的数据报文类型的数据包时,获取该数据包发送的外部源地址outer_ip及外部源端口outer_port,根据获取的外部源地址outer_ip及外部源端口outer_port即可实现调用参数的调用,在获取回调参数udp_context_M之后,根据回调参数中的解密参数对接收的数据报文类型的数据包进行解密,并将解密后的数据包转发至真实服务器。
步骤305,对数据报文类型的数据包进行加密和封装处理。
具体地说,在通过TCP协议对数据包进行传输时,协商得到解密参数和加密参数之后,将加密参数添加至第一哈希表中,并设置相应的第一匹配参数,例如可以将分配给用户用于给用户发送数据包的内网地址作为第一匹配参数。如图5所示,用户态协议栈接收到内网服务器发送的数据报文类型的数据包,根据内网地址与第一哈希表相匹配,若匹配则获取相匹配的加密参数,并根据加密参数对数据包进行加密并转发;若不匹配,则说明数据包的目的地址不是已建立连接的虚拟专用网络下的客户端,无需对该数据包进行加密,直接进入转发流程。
在通过UDP协议对数据包进行传输时,用户态协议栈接收到服务端发送给用户的数据报文类型的数据包,可以根据内网地址(udp_ipM),获取第三哈希表中的回调参数udp_context_m,并根据回调参数中的加密参数直接对内网服务器发送的数据报文类型的数据包进行加密并转发。第三哈希表中的回调参数udp_context_m可以是用户控制结构体contextM,,根据用户控制结构体contextM即可通过用户设置的加密方式对数据包进行加密。
步骤306,将进行解密和解封装处理的数据包或进行加密和封装处理的数据包转发。
在本实施例中,用户态协议栈的第一进程仅需对数据报文类型的数据包进行处理,而针对控制报文类型的数据包只需转发而无需进行处理,提高了第一进程对数据包的处理速度。另外,对不同的协议采用不同的方式进行数据包的加解密处理,保证了数据包的正常加解密。
上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包括相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。
下面通过一个实施例对上述虚拟专用网络数据的传输方法进行整体的说明,如图6所示,服务端通过物理网卡接收到用户发送的数据包,服务端的用户态协议栈对控制报文类型的数据包进行拦截,并将拦截的控制报文类型的数据包发送至内核态协议栈,由内核态协议栈对控制报文类型的数据包进行处理,在内核态协议栈处理之后,将处理的相关参数,如数据包的加解密参数等返回用户态协议栈,以便用户态协议栈根据返回的相关参数对数据报文类型的数据包进行处理。在用户态协议栈监听到物理网卡接收到客户端发送的数据报文类型的数据包时,用户态协议栈调取之前内核态协议栈返回的解密参数,对用户发送的数据报文类型的数据包进行解密,最后将解密后的数据包转发至openVPN服务器。
同样,在服务端向客户端返回数据包时,openVPN服务器将返回的数据包发送至用户态协议栈,用户态协议栈调用加密参数对数据包进行加密,并将加密后的数据包通过物理网卡返回客户端,实现虚拟专用网络下数据在客户端和服务端之间的传输。
本发明第三实施方式涉及一种虚拟专用网络数据的传输装置,如图7所示,包括:接收模块701,转发模块702,处理模块703;接收模块701用于通过用户态协议栈的第一进程接收数据包;转发模块702用于在接收的数据包为控制报文类型的数据包时,将控制报文类型的数据包转发至内核态协议栈的第二进程;处理模块703用于通过第二进程对控制报文类型的数据包进行处理。
不难发现,本实施方式为与第一实施方式相对应的系统实施例,本实施方式可与第一实施方式互相配合实施。第一实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第一实施方式中。
另外,转发模块702用于确定接收控制报文类型的数据包的第一套接字;根据第一套接字和预存的第一套接字和第二套接字的对应关系,确定用于转发控制报文类型的数据包的第二套接字;通过第二套接字将控制报文类型的数据包转发至内核态协议栈的第二进程。
另外,还包括:返回模块,获取模块,加密模块和解密模块;返回模块用于将第二进程针对控制报文类型的数据包生成的参数返回至第一进程;其中,参数至少包括加密参数和解密参数;获取模块用于在第一进程接收数据报文类型的数据包时,根据数据报文类型的数据包的流向获取加密参数或解密参数;加密模块用于根据加密参数对数据报文类型的数据包进行加密;解密模块用于根据解密参数对数据报文类型的数据包进行解密。
另外,获取模块用于在利用TCP协议对虚拟专用网络数据进行传输时,如果数据报文类型的数据包为用户发送的数据包,则获取接收数据报文类型的数据包的第一套接字;根据第一套接字获取解密参数;如果数据报文类型的数据包为服务器返回的数据包,则获取数据包的内网地址;根据内网地址,在预先存储的第一哈希表中获取加密参数。
另外,获取模块用于在利用UDP协议对虚拟专用网络数据进行传输时,如果数据报文类型的数据包为用户发送的数据包,则获取数据包发送的外部源地址及外部源端口;根据外部源地址和外部源端口,在预存的第二哈希表中获取解密参数;如果数据报文类型的数据包为服务器返回的数据包,则获取数据包的内网地址;根据内网地址,在预存的第三哈希表中获取加密参数。
值得一提的是,本实施方式中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本发明的创新部分,本实施方式中并没有将与解决本发明所提出的技术问题关系不太密切的单元引入,但这并不表明本实施方式中不存在其它的单元。
本发明第四实施方式涉及一种服务器,如图8所示,包括至少一个处理器801;以及,与至少一个处理器801通信连接的存储器802;其中,存储器802存储有可被至少一个处理器801执行的指令,指令被至少一个处理器801执行,以使至少一个处理器801能够执行上述虚拟专用网络数据的传输方法。
其中,存储器802和处理器801采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器801和存储器802的各种电路连接在一起。总线还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路连接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传送给处理器801。
处理器801负责管理总线和通常的处理,还可以提供各种功能,包括定时,外围接口,电压调节、电源管理以及其他控制功能。而存储器802可以被用于存储处理器801在执行操作时所使用的数据。
本发明第五实施方式涉及一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现上述方法实施例。
即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。
Claims (10)
1.一种虚拟专用网络数据的传输方法,其特征在于,包括:
通过用户态协议栈的第一进程接收数据包;
如果所述接收的数据包为控制报文类型的数据包,则将所述控制报文类型的数据包转发至内核态协议栈的第二进程,并通过所述第二进程对所述控制报文类型的数据包进行处理。
2.根据权利要求1所述的虚拟专用网络数据的传输方法,其特征在于,所述将所述控制报文类型的数据包转发至内核态协议栈的第二进程,包括:
确定接收所述控制报文类型的数据包的第一套接字;
根据所述第一套接字和预存的第一套接字和第二套接字的对应关系,确定用于转发所述控制报文类型的数据包的第二套接字;
通过所述第二套接字将所述控制报文类型的数据包转发至内核态协议栈的第二进程。
3.根据权利要求2所述的虚拟专用网络数据的传输方法,其特征在于,所述第一套接字和第二套接字的对应关系通过以下方式确定:
在通过第一套接字接收控制报文类型的数据包时,创建连接到所述第二进程的第二套接字;
创建一个协议代理用于存储所述第一套接字和所述第二套接字;
根据所述协议代理确定所述第一套接字和所述第二套接字的对应关系。
4.根据权利要求3所述的虚拟专用网络数据的传输方法,其特征在于,所述协议代理包括:TCP代理或UDP代理。
5.根据权利要求1所述的虚拟专用网络数据的传输方法,其特征在于,在所述通过所述第二进程对所述控制报文类型的数据包进行处理之后,还包括:
将所述第二进程针对所述控制报文类型的数据包生成的参数返回至所述第一进程;
其中,所述参数至少包括加密参数和解密参数;
在所述第一进程接收数据报文类型的数据包时,根据所述数据报文类型的数据包的流向获取加密参数或解密参数;
根据所述加密参数对所述数据报文类型的数据包进行加密;或,
根据所述解密参数对所述数据报文类型的数据包进行解密。
6.根据权利要求5所述的虚拟专用网络数据的传输方法,其特征在于,在利用TCP协议对所述虚拟专用网络数据进行传输时,所述获取解密参数,包括:
如果所述数据报文类型的数据包为用户发送的数据包,则获取接收所述数据报文类型的数据包的第一套接字;
根据所述第一套接字获取所述解密参数;
所述获取加密参数,包括:
如果所述数据报文类型的数据包为服务器返回的数据包,则获取所述数据包的内网地址;
根据所述内网地址,在预先存储的第一哈希表中获取所述加密参数。
7.根据权利要求5所述的虚拟专用网络数据的传输方法,其特征在于,在利用UDP协议对所述虚拟专用网络数据进行传输时,所述获取解密参数,包括:
如果所述数据报文类型的数据包为用户发送的数据包,则获取所述数据包发送的外部源地址及外部源端口;
根据所述外部源地址和所述外部源端口,在预存的第二哈希表中获取所述解密参数;
所述获取加密参数,包括:
如果所述数据报文类型的数据包为服务器返回的数据包,则获取所述数据包的内网地址;
根据所述内网地址,在预存的第三哈希表中获取所述加密参数。
8.一种虚拟专用网络数据的传输装置,其特征在于,包括:接收模块,转发模块和处理模块;
所述接收模块用于通过用户态协议栈的第一进程接收数据包;
所述转发模块用于在所述接收的数据包为控制报文类型的数据包时,将所述控制报文类型的数据包转发至内核态协议栈的第二进程;
所述处理模块用于通过所述第二进程对所述控制报文类型的数据包进行处理。
9.一种服务器,其特征在于,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1至7中任一所述的虚拟专用网络数据的传输方法。
10.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的虚拟专用网络数据的传输方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911373904.8A CN113055269B (zh) | 2019-12-27 | 2019-12-27 | 虚拟专用网络数据的传输方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911373904.8A CN113055269B (zh) | 2019-12-27 | 2019-12-27 | 虚拟专用网络数据的传输方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113055269A true CN113055269A (zh) | 2021-06-29 |
CN113055269B CN113055269B (zh) | 2023-03-07 |
Family
ID=76506381
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911373904.8A Active CN113055269B (zh) | 2019-12-27 | 2019-12-27 | 虚拟专用网络数据的传输方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113055269B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114143061A (zh) * | 2021-11-25 | 2022-03-04 | 郑州信大信息技术研究院有限公司 | 基于用户态协议栈实现数据安全可靠传输的方法及系统 |
CN114205186A (zh) * | 2021-11-25 | 2022-03-18 | 锐捷网络股份有限公司 | 报文处理方法、设备及系统 |
CN115038138A (zh) * | 2022-06-08 | 2022-09-09 | 大连市共进科技有限公司 | 数据转发方法、装置、计算机设备及存储介质 |
CN115297164A (zh) * | 2022-07-06 | 2022-11-04 | 珠海格力电器股份有限公司 | 网络代理方法、装置、电子设备及计算机可读存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101442556A (zh) * | 2008-12-25 | 2009-05-27 | 北京交通大学 | 一种基于IPv6的无线传感器网络服务器系统 |
CN105656808A (zh) * | 2015-12-29 | 2016-06-08 | 京信通信技术(广州)有限公司 | 报文处理方法及其系统 |
US20180041421A1 (en) * | 2016-08-03 | 2018-02-08 | Anchorfree Inc | System And Method For Virtual Multipath Data Transport |
CN108880885A (zh) * | 2018-06-19 | 2018-11-23 | 杭州迪普科技股份有限公司 | 一种报文处理方法及装置 |
CN110324227A (zh) * | 2019-06-26 | 2019-10-11 | 厦门网宿有限公司 | 一种vpn服务器中的数据传输方法及vpn服务器 |
CN110430111A (zh) * | 2019-06-26 | 2019-11-08 | 厦门网宿有限公司 | 一种OpenVPN的数据传输方法及VPN服务器 |
CN110535813A (zh) * | 2018-05-25 | 2019-12-03 | 网宿科技股份有限公司 | 内核态协议栈与用户态协议栈并存处理方法和装置 |
-
2019
- 2019-12-27 CN CN201911373904.8A patent/CN113055269B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101442556A (zh) * | 2008-12-25 | 2009-05-27 | 北京交通大学 | 一种基于IPv6的无线传感器网络服务器系统 |
CN105656808A (zh) * | 2015-12-29 | 2016-06-08 | 京信通信技术(广州)有限公司 | 报文处理方法及其系统 |
US20180041421A1 (en) * | 2016-08-03 | 2018-02-08 | Anchorfree Inc | System And Method For Virtual Multipath Data Transport |
CN110535813A (zh) * | 2018-05-25 | 2019-12-03 | 网宿科技股份有限公司 | 内核态协议栈与用户态协议栈并存处理方法和装置 |
CN108880885A (zh) * | 2018-06-19 | 2018-11-23 | 杭州迪普科技股份有限公司 | 一种报文处理方法及装置 |
CN110324227A (zh) * | 2019-06-26 | 2019-10-11 | 厦门网宿有限公司 | 一种vpn服务器中的数据传输方法及vpn服务器 |
CN110430111A (zh) * | 2019-06-26 | 2019-11-08 | 厦门网宿有限公司 | 一种OpenVPN的数据传输方法及VPN服务器 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114143061A (zh) * | 2021-11-25 | 2022-03-04 | 郑州信大信息技术研究院有限公司 | 基于用户态协议栈实现数据安全可靠传输的方法及系统 |
CN114205186A (zh) * | 2021-11-25 | 2022-03-18 | 锐捷网络股份有限公司 | 报文处理方法、设备及系统 |
CN115038138A (zh) * | 2022-06-08 | 2022-09-09 | 大连市共进科技有限公司 | 数据转发方法、装置、计算机设备及存储介质 |
CN115297164A (zh) * | 2022-07-06 | 2022-11-04 | 珠海格力电器股份有限公司 | 网络代理方法、装置、电子设备及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113055269B (zh) | 2023-03-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113055269B (zh) | 虚拟专用网络数据的传输方法及装置 | |
US7634650B1 (en) | Virtualized shared security engine and creation of a protected zone | |
US10250571B2 (en) | Systems and methods for offloading IPSEC processing to an embedded networking device | |
US8856518B2 (en) | Secure and efficient offloading of network policies to network interface cards | |
US7397797B2 (en) | Method and apparatus for performing network processing functions | |
US6970446B2 (en) | Method and apparatus to provide inline encryption and decryption for a wireless station via data streaming over a fast network | |
US7924868B1 (en) | Internet protocol (IP) router residing in a processor chipset | |
CN103051510B (zh) | 网络策略向网络接口卡的安全和高效卸载的方法和装置 | |
US8194667B2 (en) | Method and system for inheritance of network interface card capabilities | |
US7548532B2 (en) | Method and apparatus to provide inline encryption and decryption for a wireless station via data streaming over a fast network | |
US11729042B2 (en) | IPSec acceleration method, apparatus, and system | |
JP2018139448A5 (zh) | ||
US11316837B2 (en) | Supporting unknown unicast traffic using policy-based encryption virtualized networks | |
CN110971586A (zh) | 网络接口设备 | |
US7188250B1 (en) | Method and apparatus for performing network processing functions | |
CN108924157B (zh) | 一种基于IPSec VPN的报文转发方法及装置 | |
CN112887187B (zh) | 一种设备间通信建立方法、系统、装置、设备及介质 | |
CN111835613B (zh) | 一种vpn服务器的数据传输方法及vpn服务器 | |
US11729187B2 (en) | Encrypted overlay network for physical attack resiliency | |
CN115529180B (zh) | IPSec加解密卸载方法 | |
CN115967511A (zh) | 加解密方法、装置及计算机可读存储介质 | |
JP2019145889A (ja) | スイッチングハブ及び制御通信ネットワークシステム | |
CN115529180A (zh) | IPSec加解密卸载方法 |
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 |