CN110601950B - 一种基于dtls协议的vpn网关系统和实现方法 - Google Patents

一种基于dtls协议的vpn网关系统和实现方法 Download PDF

Info

Publication number
CN110601950B
CN110601950B CN201910948826.3A CN201910948826A CN110601950B CN 110601950 B CN110601950 B CN 110601950B CN 201910948826 A CN201910948826 A CN 201910948826A CN 110601950 B CN110601950 B CN 110601950B
Authority
CN
China
Prior art keywords
network
vpn
unit
data
card
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
CN201910948826.3A
Other languages
English (en)
Other versions
CN110601950A (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
Henan Yun'an Big Data Security Protection Industry Technology Research Institute 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 Henan Yun'an Big Data Security Protection Industry Technology Research Institute Co ltd filed Critical Henan Yun'an Big Data Security Protection Industry Technology Research Institute Co ltd
Priority to CN201910948826.3A priority Critical patent/CN110601950B/zh
Publication of CN110601950A publication Critical patent/CN110601950A/zh
Application granted granted Critical
Publication of CN110601950B publication Critical patent/CN110601950B/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
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4633Interconnection of networks using encapsulation techniques, e.g. tunneling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4641Virtual LANs, VLANs, e.g. virtual private networks [VPN]
    • 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/164Adaptation or special uses of UDP protocol

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

本发明提出了一种基于DTLS协议的VPN网关系统和实现方法,所述VPN网关系统包括功能模块、CPU模块和资源配置模块;功能模块包括系统控制单元、通信单元、网络业务单元、加密单元;CPU模块包括m个CPU核心数,所述系统控制单元和所述通信单元按照预定方式共同占有n个CPU核心数,并预留出m‑n个CPU核心数;资源配置模块根据网络I/O的吞吐率与加密算法的吞吐率之间的比例关系将预留出的m‑n个CPU核心数分别配置给所述网络业务单元和所述加密单元。本发明能够有效解决传统的VPN实现由于网络I/O的读写速度、CPU的处理性能、加密算法复杂度等因素造成的CPU资源利用率低、VPN性能不高的问题;并能够最大限度的减少VPN实现中的内存拷贝,有效避免了IP分片的发生。

Description

一种基于DTLS协议的VPN网关系统和实现方法
技术领域
本发明涉及网络通信技术领域,尤其涉及一种基于DTLS协议的VPN网关系统和实现方法。
背景技术
虚拟私有网(Virtual Private Network,VPN)是指利用开放的公共网络资源建立私有传输通路将远程的分支机构、商业伙伴、移动办公人员等连接起来,并且提供安全的端到端的数据通信的一种技术。
例如,公司员工出差到外地,他想访问企业内网的服务器资源,VPN技术可以使外地员工访问到内网资源。其实现方法为:在内网中架设一台VPN服务器,VPN服务器有两块网卡,一块连接内网,一块连接公网。外地员工在当地连上互联网后,通过互联网找到VPN服务器,然后利用VPN服务器作为跳板进入企业内网。为了保证数据安全,VPN服务器和客户机之间的通讯数据都进行了加密处理。有了数据加密,就可以认为数据是在一条专用的数据链路上进行安全传输,就如同专门架设了一个专用网络一样。但实际上VPN使用的是互联网上的公用链路,因此只能称为虚拟专用网。即:VPN实质上就是利用加密技术在公网上封装出一个数据通讯隧道。有了VPN技术,用户无论是在外地出差还是在家中办公,只要能上互联网就能利用VPN非常方便地访问内网资源。
在VPN的实现过程中,通常会受到网络I/O的读写速度、CPU的处理性能、加密算法的复杂度等因素的影响,传统的VPN实现方案很难平衡上述各因素的速度与性能,进而容易出现CPU资源利用率低、VPN性能不高的问题。
发明内容
鉴于上述内容,有必要提供一种基于DTLS协议的VPN网关系统和实现方法,以解决传统的VPN实现由于网络I/O的读写速度、CPU的处理性能、加密算法的复杂度等因素造成的CPU资源利用率低、VPN性能不高的问题。
本发明第一方面提出一种基于DTLS协议的VPN网关系统,所述VPN网关系统包括:功能模块、CPU模块以及资源配置模块;
所述功能模块包括:系统控制单元、通信单元、网络业务单元、加密单元;所述通信单元分别连接所述系统控制单元和所述网络业务单元,用于搭建所述系统控制单元与所述网络业务单元之间的通信链路;
所述系统控制单元通过所述网络业务单元与外部的终端或服务器进行VPN握手;
所述通信单元用于在握手成功后从所述系统控制单元读取VPN握手信息并同步至所述网络业务单元;
所述网络业务单元用于对接收的网络数据进行解析处理获得VPN业务数据,以及根据VPN握手信息将加密后的VPN业务数据进行封装并返回至外部的终端或服务器,所述加密单元用于对VPN业务数据进行加密处理;
所述CPU模块包括m个CPU核心数,所述系统控制单元和所述通信单元按照预定方式共同占有n个CPU核心数,并预留出m-n个CPU核心数;
所述资源配置模块根据网络I/O的吞吐率与加密算法的吞吐率之间的比例关系将预留出的m-n个CPU核心数分别配置给所述网络业务单元和所述加密单元。
进一步的,待握手成功后,所述通信单元通过linux/socket通道异步读取VPN握手信息。
进一步的,所述VPN网关系统还包括:DPDK网卡驱动模块和以太网卡,所述DPDK网卡驱动模块通信连接于所述网络业务单元和所述以太网卡;所述DPDK网卡驱动模块表征为以下两种工作状态:
第一状态,所述以太网卡接收终端或服务器发来的网络数据,并将其转发给所述DPDK网卡驱动模块,所述DPDK网卡驱动模块接收所述网络数据并将其发送给所述网络业务单元进行解析处理;
第二状态,所述网络业务单元对加密处理完成的VPN业务数据进行UDP协议封装,所述DPDK网卡驱动模块接收封装后的VPN业务数据,并通过所述以太网卡发送给终端或服务器。
进一步的,所述DPDK网卡驱动模块包括多个RX mbuf和多个TX mbuf,当所述DPDK网卡驱动模块从所述以太网卡接收到网络数据时,将所述网络数据承载在一个RX mbuf上,并匹配一个对应的TX mbuf;然后将载有网络数据的RX mbuf和对应的TX mbuf一同发送至所述网络业务节点;所述网络业务节点对所述网络数据进行解析后获得VPN业务数据,将载有所述VPN业务数据的RX mbuf和对应的TX mbuf一同发送至所述加密单元,所述加密单元对所述RX mbuf上的VPN业务数据加密后生成密文,将所述密文直接放入对应的TX mbuf预留出的UDP负载位置上,待完成UDP封装、IP封装、以太帧封装后,经由所述以太网卡发送给终端或服务器。
进一步的,所述以太网卡包括接收网卡和发送网卡,所述接收网卡和所述发送网卡分别设置有对应的MTU,预设所述接收网卡的MTU长度为a,所述发送网卡的MTU长度为b,所述加密单元对长度为a的VPN业务数据加密处理后增加的长度为c,则a+c小于等于b。
进一步的,所述CPU模块包括四个CPU核心数,所述系统控制单元、所述通信单元、所述网络业务单元和所述加密单元分别独占一个CPU核心数。
本发明第二方面还提出一种基于DTLS协议的VPN实现方法,所述方法包括如下步骤:
按照预定方式在CPU模块中的m个核心数中选取n个CPU核心数共同配置给系统控制单元和通信单元,根据网络I/O的吞吐率与加密算法的吞吐率之间的比例关系将剩余的m-n个CPU核心数分别配置给网络业务单元和加密单元;
所述网络业务单元接收终端或服务器发来的网络数据,并将所述网络数据解析为对应的VPN业务数据;
所述系统控制单元与终端或服务器通过网络业务单元进行VPN握手;
待握手成功后,所述通信单元读取VPN握手信息,并将所述VPN握手信息同步给所述网络业务单元;
所述网络业务单元将解析完成的VPN业务数据发送给所述加密单元进行异步加密处理;
待加密处理完成后,返回加密处理完成的VPN业务数据给所述网络业务单元,并由所述网络业务单元根据所述VPN握手信息将加密后的VPN业务数据返回给终端或服务器。
进一步的,所述方法还包括:
通过以太网卡接收终端或服务器发来的网络数据,并将其转发给DPDK网卡驱动模块;
所述DPDK网卡驱动模块接收所述网络数据并将其发送给所述网络业务单元进行解析处理,获得VPN业务数据;
通过加密单元对解析处理后的VPN业务数据进行加密处理;
所述网络业务单元对加密处理完成的VPN业务数据进行UDP协议封装;
所述DPDK网卡驱动模块接收封装后的VPN业务数据,并通过所述以太网卡发送给终端或服务器。
进一步的,在通过以太网卡接收终端或服务器发来的网络数据,并将其转发给DPDK网卡驱动模块之后,所述方法还包括:
当所述DPDK网卡驱动模块从所述以太网卡接收到网络数据时,将所述网络数据承载在一个RX mbuf上,并匹配一个对应的TX mbuf;
将载有网络数据的RX mbuf和对应的TX mbuf一同发送至所述网络业务节点;
所述网络业务节点对网络数据解析后获得VPN业务数据,将载有所述VPN业务数据的RX mbuf和对应的TX mbuf一同发送至所述加密单元;
所述加密单元对所述RX mbuf上的VPN业务数据加密后生成密文,将所述密文直接放入对应的TX mbuf预留出的UDP负载位置上;
待完成UDP封装、IP封装、以太帧封装后,经由所述以太网卡发送给终端或服务器。
进一步的,所述以太网卡包括接收网卡和发送网卡,所述接收网卡和所述发送网卡分别设置有对应的MTU,预设所述接收网卡的MTU长度为a,所述发送网卡的MTU长度为b,所述加密单元对长度为a的VPN业务数据加密处理后增加的长度为c,则a+c小于等于b。
本发明将功能模块的系统控制单元、通信单元、网络业务单元、加密单元分别与相应的CPU核心数进行绑定,并使每个单元均分配有独立的CPU核心数来处理各自的业务;同时根据网络I/O的吞吐率与加密算法的吞吐率之间的比例关系来分配预留出的m-n个CPU核心数,能够有效解决传统的VPN实现由于网络I/O的读写速度、CPU的处理性能、加密算法的复杂度等因素造成的CPU资源利用率低、VPN性能不高的问题;同时,本发明能够最大限度的减少了VPN实现中的内存拷贝,并有效避免了IP分片的发生,提升了VPN业务处理效率。
本发明的附加方面和优点将在下面的描述部分中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1示出本发明一种基于DTLS协议的VPN网关系统的框图;
图2示出本发明VPN网关系统的业务处理流程图;
图3示出本发明DPDK网卡驱动模块的工作原理图;
图4示出本发明避免IP分片的实现原理图;
图5示出本发明一种基于DTLS协议的VPN实现方法的流程图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
图1示出本发明一种基于DTLS协议的VPN网关系统的框图。
如图1所示,本发明第一方面提出一种基于DTLS协议的VPN网关系统,所述VPN网关系统包括:功能模块、CPU模块以及资源配置模块;
所述功能模块包括:系统控制单元、通信单元、网络业务单元、加密单元;所述通信单元分别连接所述系统控制单元和所述网络业务单元,用于搭建所述系统控制单元与所述网络业务单元之间的通信链路;
所述系统控制单元通过所述网络业务单元与外部的终端或服务器进行VPN握手;
所述通信单元用于在握手成功后从所述系统控制单元读取VPN握手信息并同步至所述网络业务单元;
所述CPU模块包括m个CPU核心数,所述系统控制单元和所述通信单元按照预定方式共同占有n个CPU核心数(其中n小于m),并预留出m-n个CPU核心数;
所述资源配置模块根据网络I/O的吞吐率与加密算法的吞吐率之间的比例关系将预留出的m-n个CPU核心数分别配置给所述网络业务单元和所述加密单元。
需要说明的是,本发明可以预先将分配给所述网络业务单元和所述加密单元的CPU核心数写入到配置文件中,在VPN服务启动后,通过读取所述配置文件来配置所述网络业务单元和所述加密单元的CPU核心数,并启动相应的工作线程。
优选的,所述CPU模块可以包括四个CPU核心数,所述系统控制单元、所述通信单元、所述网络业务单元和所述加密单元分别独占一个CPU核心数,但不限于此。
在实际应用中,所述基于DTLS协议的VPN网关系统可以设置在终端与服务器之间,也可以设置在服务器与服务器之间,也可以设置在终端与终端之间。所述终端可以为手机、PC、IPAD的任意一种,但不限于此。
可以理解,本发明将功能模块的系统控制单元、通信单元、网络业务单元、加密单元分别与相应的CPU核心数进行绑定,并使每个单元均分配有独立的CPU核心数来处理各自的业务;同时根据网络I/O的吞吐率与加密算法的吞吐率之间的比例关系来分配预留出的m-n个CPU核心数,可以平衡网络I/O与加密算法的处理速度,实现对CPU资源的最大化利用,并满足基于DTLS协议的VPN网关系统的高性能需求。
如图2所示,在本实施例中,所述网络业务单元读取终端或服务器发来的网络数据,并将所述网络数据解析为对应的VPN业务数据;然后所述系统控制单元与终端或服务器通过所述网络业务单元进行VPN握手;待握手成功后,所述通信单元通过linux/socket通道异步读取VPN握手信息,并将所述VPN握手信息同步给所述网络业务单元;所述网络业务单元将解析完成的VPN业务数据发送给所述加密单元进行异步加密处理;所述加密单元对VPN业务数据加密处理完成后,返回加密处理完成的VPN业务数据给所述网络业务单元,并经所述网络业务单元封装成网络数据后返回给终端或服务器。
具体的,在所述系统控制单元与终端或服务器通过所述网络业务单元进行VPN握手时,终端或服务器通过所述网络业务单元发送VPN握手请求数据给所述系统控制单元,然后所述系统控制单元通过所述网络业务单元反馈VPN握手回应数据,进而完成终端或服务器与所述系统控制单元之间的VPN握手交互。
具体的,在所述网络业务单元收到加密处理完成的数据后,由于先前所述通信单元已将所述VPN握手信息同步给所述网络业务单元,根据所述VPN握手信息可以确定源地址与目的地址之间的对应关系,然后基于源地址与目的地址之间的对应关系将加密处理完成的数据发送给终端或服务器。
需要说明的是,所述系统控制单元、所述通信单元、所述网络业务单元、所述加密单元分别处于用户空间,linux内核处于内核空间;所述系统控制单元与所述通信单元之间存在两种通信方式;第一种通信方式为:所述系统控制单元与所述通信单元通过linux/socket通道进行直接通信,此通信方式可以传输与VPN业务处理相关的数据;第二种通信方式为:所述系统控制单元和所述通信单元分别与linux内核进行通信,并借助linux内核实现所述系统控制单元和所述通信单元的间接通信,此通信方式可以传输与VPN业务处理不相关,且需要linux内核辅助完成的数据。
根据本发明的实施例,所述VPN网关系统还包括:DPDK网卡驱动模块和以太网卡,所述DPDK网卡驱动模块通信连接于所述网络业务单元和所述以太网卡;所述DPDK网卡驱动模块表征为以下两种工作状态:
第一状态,所述以太网卡接收终端或服务器发来的网络数据,并将其转发给所述DPDK网卡驱动模块,所述DPDK网卡驱动模块接收所述网络VPN业务数据并将其发送给所述网络业务单元进行解析处理;
第二状态,所述网络业务单元对加密处理完成的数据进行UDP协议封装,所述DPDK网卡驱动模块接收封装后的VPN业务数据,并通过所述以太网卡发送给终端或服务器。
如图3所示,所述DPDK网卡驱动模块包括多个RX mbuf和多个TX mbuf,其中RX表示接收数据,TX表示发出数据,当所述DPDK网卡驱动模块从所述以太网卡接收到网络数据时,将所述网络数据承载在一个RX mbuf上,并匹配一个对应的TX mbuf;然后将载有网络数据的RX mbuf和对应的TX mbuf一同发送至所述网络业务节点;所述网络业务节点对所述网络数据解析后获得VPN业务数据,将载有所述VPN业务数据的RX mbuf和对应的TX mbuf一同发送至所述加密单元,所述加密单元对所述RX mbuf上的VPN业务数据加密后生成密文,将所述密文直接放入对应的TX mbuf预留出的UDP负载位置上,待完成UDP封装、IP封装、以太帧封装后,经由所述以太网卡发送给终端或服务器。
可以理解,根据DTLS协议,需要将内网口收到的IP包文加密后封装为DTLS报文格式。本发明去掉了传统UDP协议的socket缓存,而直接使用提前申请好的外层以太网包缓存,加密时传给加密单元,加密引擎直接将密文存放到外层以太网缓存的UDP有效负载的位置,待加密完成后由网络业务工作线程将UDP协议头填充完整,并最终发送出去。相较于传统UDP协议的socket缓存方式,本发明能够提高VPN处理性能,减少内存拷贝。
根据本发明的实施例,所述以太网卡包括接收网卡和发送网卡,所述接收网卡和所述发送网卡分别设置有对应的MTU,预设所述接收网卡的MTU长度为a,所述发送网卡的MTU长度为b,所述加密单元对长度为a的VPN业务数据加密处理后增加的长度为c,则a+c小于等于b。
如图4所示,本实施例设定接收网卡的MTU为1400,发送网卡的MTU为1500,所述加密单元对长度为1400的VPN业务数据加密处理后增加的长度为100;所述接收网卡根据自己的MTU限制只能接收到小于等于1400的以太网包,然后将接收的以太网包传送给DPDK网卡驱动模块,所述DPDK网卡驱动模块可以将所述以太网包承载在一个RX mbuf上,且接收的以太网包包括ETH头、IP头、IP负载,同时匹配一个对应的TX mbuf,然后将载有网络数据的RXmbuf和对应的TX mbuf一同发送至所述网络业务节点;所述网络业务节点对所述网络数据解析后获得VPN业务数据,将载有所述VPN业务数据的RX mbuf和对应的TX mbuf一同发送至所述加密单元所述加密单元对所述RX mbuf上的VPN业务数据加密后生成密文,并放入TXmbuf上预留的UDP负载位置上,同时封装UDP头;然后进行IP封装、以太帧封装,最终形成发送的以太网包。
可以理解,由于密文存在加密padding等字段的填充,所以密文的长度相较于原始数据的长度则会增加;在本实施例中,(UDP头+UDP负载)-IP负载的长度即为增加的长度(100)。
进一步的,接收网卡MTU可以根据发送网卡的MTU来设定,当发送网卡的MTU为1500时,预设发送的以太网包长度为1500(与发送网卡的MTU值相等),由于以太网包的ETH头、IP头、UDP头的长度均为固定值,预设ETH头+IP头+UDP头的长度为150,则可以推算出UDP负载的密文数据长度为1350,剔除加密padding等字段的填充(长度为50)即可推算出接收的以太网包的IP负载数据长度为1300,再加上ETH头、IP头的长度(100)即可推出接收的以太网包长度为1400。可以理解,如果预设发送的以太网包长度小于1500,则推出接收的以太网包长度将会小于1400,因此可以设定接收网卡MTU为1400,这样不仅可以防止发送网卡出现IP分片的问题,也可以有效提高整体VPN网关系统的吞吐率。
需要说明的是,所述加密单元可以支持DES、3DES、AES、国密SM4等多种加密算法。
图5示出本发明一种基于DTLS协议的VPN实现方法的流程图。
如图5所示,本发明第二方面还提出一种基于DTLS协议的VPN实现方法,所述方法包括如下步骤:
S501,按照预定方式在CPU模块中的m个核心数中选取n个CPU核心数共同配置给系统控制单元和通信单元,根据网络I/O的吞吐率与加密算法的吞吐率之间的比例关系将剩余的m-n个CPU核心数分别配置给网络业务单元和加密单元;
S502,所述网络业务单元接收终端或服务器发来的网络数据,并将所述网络数据解析为对应的VPN业务数据;
S503,所述系统控制单元与终端或服务器通过网络业务单元进行VPN握手;
S504,待握手成功后,所述通信单元读取VPN握手信息,并将所述VPN握手信息同步给所述网络业务单元,优选的,所述通信单元通过linux/socket通道异步读取VPN握手信息;
S505,所述网络业务单元将解析完成的VPN业务数据发送给所述加密单元进行异步加密处理;
S506,待加密处理完成后,返回加密处理完成的VPN业务数据给所述网络业务单元,并由所述网络业务单元根据所述VPN握手信息返回给终端或服务器。
进一步的,所述方法还包括:
通过以太网卡接收终端或服务器发来的网络数据,并将其转发给DPDK网卡驱动模块;
所述DPDK网卡驱动模块接收所述网络数据并将其发送给所述网络业务单元进行解析处理;
通过加密单元对解析处理后的数据进行加密处理;
所述网络业务单元对加密处理完成的数据进行UDP协议封装;
所述DPDK网卡驱动模块接收封装后的数据,并通过所述以太网卡发送给终端或服务器。
进一步的,在通过以太网卡接收终端或服务器发来的网络数据,并将其转发给DPDK网卡驱动模块之后,所述方法还包括:
当所述DPDK网卡驱动模块从所述以太网卡接收到网络数据时,将所述网络数据承载在一个RX mbuf上,并匹配一个对应的TX mbuf;
将载有网络数据的RX mbuf和对应的TX mbuf一同发送至所述网络业务节点;
所述网络业务节点对网络数据解析后获得VPN业务数据,将载有所述VPN业务数据的RX mbuf和对应的TX mbuf一同发送至所述加密单元;
所述加密单元对所述RX mbuf上的VPN业务数据加密后生成密文,将所述密文直接放入对应的TX mbuf预留出的UDP负载位置上;
待完成UDP封装、IP封装、以太帧封装后,经由所述以太网卡发送给终端或服务器。
进一步的,所述以太网卡包括接收网卡和发送网卡,所述接收网卡和所述发送网卡分别设置有对应的MTU,预设所述接收网卡的MTU长度为a,所述发送网卡的MTU长度为b,所述加密单元对长度为a的VPN业务数据加密处理后增加的长度为c,则a+c小于等于b。
本发明能够有效解决传统的VPN实现由于网络I/O的读写速度、CPU的处理性能、加密算法的复杂度等因素造成的CPU资源利用率低、VPN性能不高的问题;同时,本发明能够最大限度的减少了VPN实现中的内存拷贝,并有效避免了IP分片的发生,提升了VPN业务处理效率。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

Claims (9)

1.一种基于DTLS协议的VPN网关系统,其特征在于,所述VPN网关系统包括:功能模块、CPU模块以及资源配置模块;
所述功能模块包括:系统控制单元、通信单元、网络业务单元、加密单元;所述通信单元用于搭建所述系统控制单元与所述网络业务单元之间的通信链路;
所述系统控制单元通过所述网络业务单元与外部的终端或服务器进行VPN握手;
所述通信单元用于在握手成功后从所述系统控制单元读取VPN握手信息并同步至所述网络业务单元;
所述网络业务单元用于对从终端或服务器读取的网络数据进行解析处理获得VPN业务数据,以及对加密后的VPN业务数据进行封装并根据VPN握手信息返回至对应的终端或服务器,所述加密单元用于对VPN业务数据进行加密处理;
所述CPU模块包括m个CPU核心数,所述系统控制单元和所述通信单元按照预定方式共同占有n个CPU核心数,并预留出m-n个CPU核心数;
所述资源配置模块根据网络I/O的吞吐率与加密算法的吞吐率之间的比例关系将预留出的m-n个CPU核心数分别配置给所述网络业务单元和所述加密单元。
2.根据权利要求1所述的一种基于DTLS协议的VPN网关系统,其特征在于,待握手成功后,所述通信单元通过linux/socket通道异步读取VPN握手信息。
3.根据权利要求2所述的一种基于DTLS协议的VPN网关系统,其特征在于,所述VPN网关系统还包括:DPDK网卡驱动模块和以太网卡,所述DPDK网卡驱动模块通信连接于所述网络业务单元和所述以太网卡;所述DPDK网卡驱动模块表征为以下两种工作状态:
第一状态,所述以太网卡接收终端或服务器发来的网络数据,并将其转发给所述DPDK网卡驱动模块,所述DPDK网卡驱动模块接收所述网络数据并将其发送给所述网络业务单元进行解析处理;
第二状态,所述网络业务单元对加密处理完成的VPN业务数据进行UDP协议封装,所述DPDK网卡驱动模块接收封装后的VPN业务数据,并通过所述以太网卡发送给终端或服务器。
4.根据权利要求3所述的一种基于DTLS协议的VPN网关系统,其特征在于,所述DPDK网卡驱动模块包括多个RX mbuf和多个TX mbuf,当所述DPDK网卡驱动模块从所述以太网卡接收到网络数据时,将所述网络数据承载在一个RX mbuf上,并匹配一个对应的TX mbuf;然后将载有网络数据的RX mbuf和对应的TX mbuf一同发送至所述网络业务节点;所述网络业务节点对所述网络数据解析后获得VPN业务数据,将载有所述VPN业务数据的RX mbuf和对应的TX mbuf一同发送至所述加密单元,所述加密单元对所述RX mbuf上的VPN业务数据加密后生成密文,将所述密文直接放入对应的TX mbuf预留出的UDP负载位置上,待完成UDP封装、IP封装、以太帧封装后,经由所述以太网卡发送给终端或服务器。
5.根据权利要求3所述的一种基于DTLS协议的VPN网关系统,其特征在于,所述以太网卡包括接收网卡和发送网卡,所述接收网卡和所述发送网卡分别设置有对应的MTU,预设所述接收网卡的MTU长度为a,所述发送网卡的MTU长度为b,所述加密单元对长度为a的VPN业务数据加密处理后增加的长度为c,则a+c小于等于b。
6.一种基于DTLS协议的VPN实现方法,应用权利要求1-5任意一项所述的基于DTLS协议的VPN网关系统,所述方法包括如下步骤:
按照预定方式在CPU模块中的m个核心数中选取n个CPU核心数共同配置给系统控制单元和通信单元,根据网络I/O的吞吐率与加密算法的吞吐率之间的比例关系将剩余的m-n个CPU核心数分别配置给网络业务单元和加密单元;
所述网络业务单元接收终端或服务器发来的网络数据,并将所述网络数据解析为对应的VPN业务数据;
所述系统控制单元与终端或服务器通过网络业务单元进行VPN握手;
待握手成功后,所述通信单元读取VPN握手信息,并将所述VPN握手信息同步给所述网络业务单元;
所述网络业务单元将解析完成的VPN业务数据发送给所述加密单元进行异步加密处理;
待加密处理完成后,返回加密处理完成的VPN业务数据给所述网络业务单元,并由所述网络业务单元根据所述VPN握手信息将加密后的VPN业务数据返回给终端或服务器。
7.根据权利要求6所述的一种基于DTLS协议的VPN实现方法,其特征在于,所述方法还包括:
通过以太网卡接收终端或服务器发来的网络数据,并将其转发给DPDK网卡驱动模块;
所述DPDK网卡驱动模块接收所述网络数据并将其发送给所述网络业务单元进行解析处理,获得VPN业务数据;
通过加密单元对解析处理后的VPN业务数据进行加密处理;
所述网络业务单元对加密处理完成的VPN业务数据进行UDP协议封装;
所述DPDK网卡驱动模块接收封装后的VPN业务数据,并通过所述以太网卡发送给终端或服务器。
8.根据权利要求7所述的一种基于DTLS协议的VPN实现方法,其特征在于,在通过以太网卡接收终端或服务器发来的网络数据,并将其转发给DPDK网卡驱动模块之后,所述方法还包括:
当所述DPDK网卡驱动模块从所述以太网卡接收到网络数据时,将所述网络数据承载在一个RX mbuf上,并匹配一个对应的TX mbuf;
将载有网络数据的RX mbuf和对应的TX mbuf一同发送至所述网络业务节点;
所述网络业务节点对网络数据解析后获得VPN业务数据,将载有所述VPN业务数据的RXmbuf和对应的TX mbuf一同发送至所述加密单元;
所述加密单元对所述RX mbuf上的VPN业务数据加密后生成密文,将所述密文直接放入对应的TX mbuf预留出的UDP负载位置上;
待完成UDP封装、IP封装、以太帧封装后,经由所述以太网卡发送给终端或服务器。
9.根据权利要求7所述的一种基于DTLS协议的VPN实现方法,其特征在于,所述以太网卡包括接收网卡和发送网卡,所述接收网卡和所述发送网卡分别设置有对应的MTU,预设所述接收网卡的MTU长度为a,所述发送网卡的MTU长度为b,所述加密单元对长度为a的VPN业务数据加密处理后增加的长度为c,则a+c小于等于b。
CN201910948826.3A 2019-10-08 2019-10-08 一种基于dtls协议的vpn网关系统和实现方法 Active CN110601950B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910948826.3A CN110601950B (zh) 2019-10-08 2019-10-08 一种基于dtls协议的vpn网关系统和实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910948826.3A CN110601950B (zh) 2019-10-08 2019-10-08 一种基于dtls协议的vpn网关系统和实现方法

Publications (2)

Publication Number Publication Date
CN110601950A CN110601950A (zh) 2019-12-20
CN110601950B true CN110601950B (zh) 2021-06-01

Family

ID=68865698

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910948826.3A Active CN110601950B (zh) 2019-10-08 2019-10-08 一种基于dtls协议的vpn网关系统和实现方法

Country Status (1)

Country Link
CN (1) CN110601950B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102811169A (zh) * 2012-07-24 2012-12-05 成都卫士通信息产业股份有限公司 采用哈希算法进行多核并行处理的vpn实现方法及系统
CN105939312A (zh) * 2015-08-26 2016-09-14 杭州迪普科技有限公司 一种数据的传输方法和装置
US9571458B1 (en) * 2011-10-13 2017-02-14 Juniper Networks, Inc. Anti-replay mechanism for group virtual private networks
CN106445686A (zh) * 2016-09-21 2017-02-22 东软集团股份有限公司 资源分配方法及装置
CN106850740A (zh) * 2016-12-19 2017-06-13 中国科学院信息工程研究所 一种高吞吐数据流处理方法
WO2018109531A1 (en) * 2016-12-15 2018-06-21 Nokia Technologies Oy Method and apparatus for tunnel endpoint ip address selection in a network environment
CN110138553A (zh) * 2019-05-10 2019-08-16 郑州信大捷安信息技术股份有限公司 一种IPSec VPN网关数据包处理装置及方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102137100B (zh) * 2011-03-01 2013-12-11 汉柏科技有限公司 构建ip层ssl vpn隧道的方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9571458B1 (en) * 2011-10-13 2017-02-14 Juniper Networks, Inc. Anti-replay mechanism for group virtual private networks
CN102811169A (zh) * 2012-07-24 2012-12-05 成都卫士通信息产业股份有限公司 采用哈希算法进行多核并行处理的vpn实现方法及系统
CN105939312A (zh) * 2015-08-26 2016-09-14 杭州迪普科技有限公司 一种数据的传输方法和装置
CN106445686A (zh) * 2016-09-21 2017-02-22 东软集团股份有限公司 资源分配方法及装置
WO2018109531A1 (en) * 2016-12-15 2018-06-21 Nokia Technologies Oy Method and apparatus for tunnel endpoint ip address selection in a network environment
CN106850740A (zh) * 2016-12-19 2017-06-13 中国科学院信息工程研究所 一种高吞吐数据流处理方法
CN110138553A (zh) * 2019-05-10 2019-08-16 郑州信大捷安信息技术股份有限公司 一种IPSec VPN网关数据包处理装置及方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
一种基于DTLS协议的VPN方案设计;赵华,周利华;《电子科技》;20060715;全文 *

Also Published As

Publication number Publication date
CN110601950A (zh) 2019-12-20

Similar Documents

Publication Publication Date Title
US8250643B2 (en) Communication device, communication system, communication method, and program
US9712504B2 (en) Method and apparatus for avoiding double-encryption in site-to-site IPsec VPN connections
EP1614250B1 (en) Transparent ipsec processing inline between a framer and a network component
CN101296238A (zh) 一种保持安全套接层会话持续性的方法及设备
US9369550B2 (en) Protocol for layer two multiple network links tunnelling
JP2018139448A5 (zh)
US8266294B2 (en) Routing hints
US10044841B2 (en) Methods and systems for creating protocol header for embedded layer two packets
US10944590B2 (en) Transport protocol task offload emulation to detect chunks of data for communication with a private network
CN108964880A (zh) 一种数据传输方法及装置
CN112699397B (zh) 基于虚拟环境下的软件加解密方法和系统
US10116466B2 (en) Transport protocol task offload emulation to detect offload segments for communication with a private network
CN114268518B (zh) 一种实现sdwan数据隧道转发加速的方法及系统
CN110235417B (zh) 一种sdn及其报文转发的方法和装置
CN110601950B (zh) 一种基于dtls协议的vpn网关系统和实现方法
JP2003069642A (ja) レイヤ2トンネリング装置における複数パケット連結伝送方式
JP2002026927A (ja) カプセリング方法及び装置並びにプログラム記録媒体
US20240106647A1 (en) Methods and systems of a packet orchestration to provide data encryption at the ip layer, utilizing a data link layer encryption scheme
CN115442183B (zh) 一种数据转发方法及装置
US20220038443A1 (en) Methods and systems of a packet orchestration to provide data encryption at the ip layer, utilizing a data link layer encryption scheme
US20230403137A1 (en) Computer and Network Interface Controller Securely Offloading Encryption Keys and WireGuard Encryption Processing to the Network Interface Controller
WO2024041064A1 (zh) Quic报文的传输方法及相关设备
JP2002077150A (ja) 暗号通信時の暗号化パケットの作成方法
CN114567478A (zh) 通信方法及装置
CN116032689A (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
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220622

Address after: 450000 building F4, yard 139, Yangjin Road, Jinshui District, Zhengzhou City, Henan Province

Patentee after: ZHENGZHOU XINDA JIEAN INFORMATION TECHNOLOGY Co.,Ltd.

Address before: F5-2 (phase a Tianli I), Henan Outsourcing Industrial Park, 139 Yangjin Road, Jinshui District, Zhengzhou City, Henan Province, 450000

Patentee before: Henan yun'an big data security protection industry technology Research Institute Co.,Ltd.