IPSec VPN数据传输方法及装置转让专利
申请号 : CN201811231041.6
文献号 : CN109150688B
文献日 : 2021-07-09
发明人 : 王建明
申请人 : 网宿科技股份有限公司
摘要 :
权利要求 :
1.一种IPSec VPN数据传输方法,其特征在于,应用于VPN服务器,所述方法包括:与外网客户端进行协商,生成安全联盟信息;
接收所述外网客户端发送的请求报文,并基于预设端口号,判断是否由用户态进程获取所述请求报文;
若所述用户态进程获取所述请求报文,则基于用户态进程,使用所述安全联盟信息对所述请求报文进行解封装和解密,得到明文报文;
基于所述用户态进程,向内网服务器发送所述明文报文。
2.如权利要求1所述的方法,其特征在于,向所述内网服务器发送所述明文报文的步骤之后,还包括:
接收所述内网服务器基于所述明文报文发送的响应报文;
基于所述用户态进程,使用所述安全联盟信息对所述响应报文进行加密和封装;
基于所述用户态进程,向所述外网客户端发送封装之后的所述响应报文。
3.如权利要求1所述的方法,其特征在于,所述与外网客户端进行协商,生成安全联盟信息的步骤,还包括:基于内核态进程,与所述外网客户端进行协商,生成所述安全联盟信息。
4.如权利要求3所述的方法,其特征在于,所述与外网客户端进行协商,生成安全联盟信息的步骤,还包括:
基于所述内核态进程,获取包括预设端口号的协商报文;
利用所述协商报文与所述外网客户端进行协商,生成所述安全联盟信息。
5.如权利要求1所述的方法,其特征在于,与外网客户端进行协商,生成安全联盟信息的步骤之后,还包括:将所述安全联盟信息存入内存中;
相应的,基于所述用户态进程,使用所述安全联盟信息对所述请求报文进行解封装和解密,得到明文报文的步骤之前,还包括:基于所述请求报文中的安全参数索引,从所述内存中获取所述请求报文对应的安全联盟信息。
6.如权利要求1所述的方法,其特征在于,基于用户态进程,使用所述安全联盟信息对所述请求报文进行解封装和解密,得到明文报文的步骤之前,还包括:所述用户态进程按照预设时间间隔查询用于接收所述请求报文的网卡;
若所述网卡接收到所述请求报文,则所述用户态进程获取所述请求报文。
7.如权利要求1所述的方法,其特征在于,基于所述用户态进程,向内网服务器发送所述明文报文的步骤之前,还包括:根据所述安全联盟信息中的策略库查找对所述明文报文的处理方式;
当查找结果为转发时向所述内网服务器发送所述明文报文。
8.如权利要求1所述的方法,其特征在于,所述用户态进程采用多核并行处理机制处理所述请求报文。
9.如权利要求8所述的方法,其特征在于,所述用户态进程在采用多核并行处理机制的同时,采用均衡负载机制处理所述请求报文。
10.如权利要求9所述的方法,其特征在于,所述均衡负载机制采用四元组hash均衡算法。
11.一种IPSec VPN数据传输装置,其特征在于,所述装置包括:协商模块,用于与外网客户端进行协商,生成安全联盟信息;
接收模块,用于接收所述外网客户端发送的请求报文,并基于预设端口号,判断是否由用户态进程获取所述请求报文;
用户态模块,用于若所述用户态进程获取所述请求报文,则基于用户态进程,使用所述安全联盟信息对所述请求报文进行解封装和解密,得到明文报文;
所述用户态模块,还用于基于所述用户态进程,向内网服务器发送所述明文报文。
12.根据权利要求11所述的装置,其特征在于,所述接收模块,还用于接收所述内网服务器基于所述明文报文发送的响应报文;
所述用户态模块,还用于基于所述用户态进程,使用所述安全联盟信息对所述响应报文进行加密和封装;
所述用户态模块,还用于基于所述用户态进程,向所述外网客户端发送封装之后的所述响应报文。
13.根据权利要求11所述的装置,其特征在于,所述协商模块,还用于基于内核态进程,与所述外网客户端进行协商,生成所述安全联盟信息。
14.根据权利要求11所述的装置,其特征在于,所述协商模块,还用于将所述安全联盟信息存入内存中;
所述用户态模块,还用于基于所述请求报文中的安全参数索引,从所述内存中获取所述请求报文对应的安全联盟信息。
15.一种VPN服务器,其特征在于,所述VPN服务器包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求1至10任一所述的IPSec VPN数据传输方法。
说明书 :
IPSec VPN数据传输方法及装置
技术领域
背景技术
的通讯协议,在位于因特网中不同地方的两个或多个企业内部网之间,建立一条专有的通
讯线路。从而可以帮助远程用户、公司分支机构、商业伙伴及供应商同公司的内部网建立可
信的安全连接,并保证数据的安全传输。
提供了高质量的、可互操作的、基于密码学的安全保证。由于IPSec VPN所提供的安全服务
对于数据的机密性,完整性,来源认证,防重发等具有良好的保障,IPsec VPN越来越受到用
户的青睐。随着网络的不断发展,越来越多的用户需要在外接入企业的内部网络,获取企业
内部提供的服务,实现移动办公,这使得访问企业内部VPN服务器的流量大增。而现有的
IPsec VPN数据传输,是在内核态下进行数据的转发,即在接收到外网发送的报文之后,通
过操作系统先进行报文拷贝,然后将拷贝的报文发送给内部网络。所以访问企业内部VPN服
务器的流量较大时,报文拷贝动作频繁,使得VPN服务器的性能大大降低,甚至无法保障服
务的质量。
发明内容
述内存中获取所述请求报文对应的安全联盟信息。
程序、所述代码集或指令集由所述处理器加载并执行以实现第一方面所述的IPSec VPN数
据传输方法。
术中在内核态下处理报文的数据传输方法而言,不存在报文拷贝动作,直接在用户态下进
行数据传输,所以处理报文的速度较快,有效提高了IPSec VPN数据传输的速度;且在用户
态下进行数据传输,便于采用多核并行处理机制,进一步提高报文的处理速度;同时还有利
于对单独的环节进行流量的控制,比如可以对用户态进程的解封装或解密环节单独进行监
控,监测解封装和解密过程中流量的变化,或单独对多核并行处理中的每个核单独进行监
控,便于多核并行处理时为用户态进程分配空间和任务。
附图说明
本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他
的附图。
具体实施方式
本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他
实施例,都属于本发明保护的范围。
部连接公共网络的个人电脑。内网服务器可以是连接企业内部局域网的服务器。VPN服务器
可以作为内网服务器的网关,用于实现外网客户端与内网服务器之间的数据传输。VPN服务
器是既可以连接企业内部局域网,又可以连接公共网络的服务器,在基于IPSec VPN的数据
传输方式中,专门为内网服务器接收、转发数据。本实施例的IPSec VPN数据传输方法,主要
在于提高VPN服务器上的报文处理速度,具体是VPN服务器在接收到加密和封装的报文后,
基于用户态进程,即在用户态下使用SA信息对报文进行解封装和解密,得到明文报文,然后
基于用户态进程,直接将明文报文转发至内网服务器,避免内核态下的报文拷贝过程。其
中,内核态进程是指处于内核态的进程,当进程处于内核态时,进程执行系统调用会陷入内
核代码中执行;用户态进程是指处于用户态的进程,当进程处于用户态时,进程会执行用户
自己的代码。下面结合附图对该IPSec VPN数据传输方法进行具体说明。
户端进行协商并生成安全联盟(Security Association,SA)信息,SA信息决定了对报文进
行何种处理,包括安全协议、加密算法及密钥。每一个特定的SA信息都以由安全参数索引
(Security Parameter Index,SPI)、目的IP地址及安全协议号组成的三元组作为唯一标
识,其中SPI由一串数字组成,在生成SA信息时使用随机数生成。本实施例中,外网客户端发
送给VPN服务器的目的地址和协议号均可以相同,所以每一个报文需采用一个特定的SPI进
行标识,而在发送报文时,会把SPI插入到报头中,以便VPN服务器接收到报文后根据SPI查
找对应的SA信息。
基于用户态进程,与外网客户端进行协商,生成SA信息。但是协商生成SA信息的过程中,数
据流量很小,通常只有几千比特(kb)到几百kb,相对于几兆、上百兆甚至更大的传输数据来
说微乎其微,所以基本不会对VPN服务器的处理速度造成影响;但是基于内核态进程建立
IPsec连接,相较于基于用户态进程建立IPsec连接,却可以大大提高协商过程的安全性和
稳定性,可以有效防止连接掉线,降低被攻击的可能性。所以,本实施例优选基于内核态进
程,与外网客户端进行协商,生成SA信息。具体地,为了减少对VPN服务器系统内存的占用,
可以为进行协商所用的协商报文配置特定的端口号,如本实施例设置设为UDP4500,当然也
可以是UDP500,并设置只有经过该特定的端口号的数据才能进入内核态,则未配置该特定
的端口号的请求报文无法进入内核态,即基于用户态进行解封装和解密,如此,将协商过程
和数据传输过程分别基于内核态进程和用户态进程执行,即保证了IPsec连接的稳定性,又
提高了报文处理的速度。
能够获取SA信息。其中,内核态进程获取SA信息用于协商过程中的身份验证,用户态进程获
取SA信息用于报文的解封装和解密,以及报文的加密和封装。
至少有两个,一个用于接收外网客户端发送的报文;另一个用于接收内网服务器发送的报
文。
以参考上述设置只有经过特定的端口号的数据才能进入内核态,而请求报文未配置上述特
定的端口号,即UDP4500,则内核态进程无法获取请求报文,而是用户态进程获取请求报文,
然后直接再用户态下进行解封装和解密,避免了报文的拷贝过程,提高了报文的处理速度。
(Data Plane Development Kit,DPDK)进行绑定,然后用户态进程通过轮询机制获取请求
报文,轮询机制是指用户态进程按照预设时间间隔对用于接收请求报文的网卡进行查询,
查看网卡是否接收到请求报文,若网卡接收到请求报文,则用户态进程获取该请求报文,然
后可以基于用户态进程直接对请求报文进行解封装和解密,然后再进行转发,避免了报文
在内核态处理过程中的报文拷贝动作,以此提高报文的处理速度,进而提高数据传输的速
度。
封装和解密,然后得到请求报文的明文报文。其中,解封装采用SA信息中的安全协议,该安
全协议为AH协议或ESP协议或两者的结合,本实施例中,采用AH和ESP两者结合的方式进行
解封装和解密,相应的外网客户端也是采用AH和ESP两者结合的方式进行加密和封装,另
外,本实施例具体可以采用DES算法、3DES算法及AES算法进行解密。需要说明的是,用户态
下的数据报文的传输,依赖于用户态的协议栈,需要应用用户态的协议栈才能对请求报文
进行解封装和解密。
报文之后,使用已经与用户态进程绑定的相应网卡发送明文报文。
文之前,会根据SA信息中的策略库查找对该明文报文的处理方式。其中,策略库可以是SA信
息中的安全策略库(Security Policy Database,SPD),SPD中定义了若干策略,说明对于各
个报文应当做出怎样的处理,如转发、丢弃,还是执行IPSec加密等,只有查找结果为转发时
才进行转发。
VPN服务器基于用户态进程,从内存中获取SA信息,并使用SA信息,对响应报文进行加密和
封装,与解密和解封装一样,加密和封装可以采用SA信息中的安全协议,即AH协议或ESP协
议或两者的结合,本实施例中,采用AH和ESP两者结合的方式进行加密和封装,具体可以采
用DES算法、3DES算法及AES算法进行加密;最后,VPN服务器基于用户态进程,向外网客户端
发送封装之后的响应报文。其中,VPN服务器接收该响应报文后,用户态进程也是采用上述
轮询机制获取报文,然后基于用户态进程进行加密和封装。VPN服务器在向外网客户端发送
响应报文之前,也是根据SA信息中的SPD查找对应的处理方式,只有查找结果为转发时才进
行转发。
是一个指令一个指令的进行,即同一时间只能运行一个进程,则采用多核并行处理机制,可
以同时运行多个进程,比如,多个进程同时对请求报文进行解封装,如此,可有效提高CPU的
处理速度,提高VPN服务器的处理性能。采用均衡负载机制处理请求报文,即将请求报文在
多核上进行均衡负载,使每个核上的负载较为均衡,可进一步提高CPU的处理速度及VPN服
务器的处理性能。具体地,均衡负载机制采用四元组hash均衡算法,其中,四元组包括源IP
地址、源端口号、目的地址及目的端口号,四元组hash均衡算法即根据报文的上述四元组数
据,将报文进行分配,均衡负载于多核中,避免某个核出现过载或空载的情况。
的数据传输方法而言,不存在报文拷贝动作,直接在用户态下进行数据传输,所以处理报文
的速度较快,有效提高了IPSec VPN数据传输的速度;且在用户态下进行数据传输,便于采
用多核并行处理机制,进一步提高报文的处理速度;同时还有利于对单独的环节进行流量
的控制,比如可以对用户态进程的解封装或解密环节单独进行监控,监测解封装和解密过
程中流量的变化,或单独对多核并行处理中的每个核单独进行监控,便于多核并行处理时
为用户态进程分配空间和任务。
301用于与外网客户端进行协商,生成安全联盟信息;接收模块302用于接收外网客户端发
送的请求报文;用户态模块303用于基于用户态进程,使用安全联盟信息对请求报文进行解
封装和解密,得到明文报文;用户态模块303还用于基于用户态进程,向内网服务器发送明
文报文。
态模块303,还用于基于用户态进程,向外网客户端发送封装之后的响应报文。
的数据传输方法而言,不存在报文拷贝动作,直接在用户态下进行数据传输,所以处理报文
的速度较快,有效提高了IPSec VPN数据传输的速度;且在用户态下进行数据传输,便于采
用多核并行处理机制,进一步提高报文的处理速度;同时还有利于对单独的环节进行流量
的控制,比如可以对用户态进程的解封装或解密环节单独进行监控,监测解封装和解密过
程中流量的变化,或单独对多核并行处理中的每个核单独进行监控,便于多核并行处理时
为用户态进程分配空间和任务。
功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以
上描述的全部或者部分功能。另外,上述实施例提供的IPSec VPN数据传输装置与IPSec
VPN数据传输方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
个以上处理器)和存储器432,一个或一个以上存储应用程序442或数据444的存储介质430
(例如一个或一个以上海量存储设备)。其中,存储器432和存储介质430可以是短暂存储或
持久存储。存储在存储介质430的程序可以包括一个或一个以上模块(图示没标出),每个模
块可以包括对转码服务器中的一系列指令操作。更进一步地,中央处理器422可以设置为与
存储介质430通信,在VPN服务器400上执行存储介质430中的一系列指令操作。
一个以上操作系统441,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM
等等。
一个以上程序包含用于进行上述IPSec VPN数据传输的指令。
理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现
出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包
括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行
各个实施例或者实施例的某些部分所述的方法。