论文部分内容阅读
较之于专用的虚拟专用网(Virtual Private Network,VPN)网关设备,在通用服务器上部署软件VPN网关成本低、灵活性强、对新兴技术适应性强,提升其性能有利于其应对逐渐增大的VPN通信流量,有较大实际意义。本文致力于提升软件VPN网关吞吐量、包转发率和时延等性能。首先,为解决通用服务器内核网络处理低效的问题,本文研究了数据面开发工具集(Data Plane Development Kit,DPDK)和用户态协议栈应用在VPN网关中的方法,对比传统软件VPN网关设计了基于DPDK的VPN网关框架。该框架使用用户态驱动,利用轮询模式收发报文,构建精简的用户态协议栈,并在用户态实现VPN网关的连接转发功能和代理转发功能。为在用户态实现连接转发功能,本文优化了基于Patricia树的路由算法,删去了其中对掩码的操作,在查找过程中找到叶子结点即可,不再回溯,更加适用于VPN路由查找。实验表明,该算法在少量用户分散于大量网络地址的条件下灵活性强、查找速度快。在此基础上,结合VPN路由查找的特点,提出一种基于划分阶段的改进方法,该方法将VPN路由查找分为两个阶段,第一阶段使用Patricia树查找网络地址,第二阶段使用hash表确定具体虚拟IP。实验表明,该改进方法在大量用户集中于少量网络地址的条件下效率较高。为在用户态实现代理转发功能,本文研究了用户态网络地址转换(Network Address Translation,NAT),利用映射描述了NAT技术的核心,并给出一种NAT核心算法。在核心算法的基础上,本文设计了一种用户态NAT实现方法,该方法使用两个hash表记录NAT规则,实现了流出报文的源地址转换,流入报文的目的地址转换以及NAT规则的超时删除。通过实验,本文为该实现方法选了BPHash作为其hash函数。通过测试,验证了该实现方法能够完成用户态NAT功能。最后,在上述研究基础之上,本文设计并实现了基于DPDK的软件VPN网关,并与其他五种软件VPN网关进行了对比测试。测试结果表明,本文实现的软件VPN网关的系统吞吐量、包转发率、传输时延等性能均优于其他五种网关,并且包长越小优势越明显。