CN101951378B - 用于ssl vpn的协议栈系统及数据处理方法 - Google Patents
用于ssl vpn的协议栈系统及数据处理方法 Download PDFInfo
- Publication number
- CN101951378B CN101951378B CN201010292474XA CN201010292474A CN101951378B CN 101951378 B CN101951378 B CN 101951378B CN 201010292474X A CN201010292474X A CN 201010292474XA CN 201010292474 A CN201010292474 A CN 201010292474A CN 101951378 B CN101951378 B CN 101951378B
- Authority
- CN
- China
- Prior art keywords
- data
- tcp
- layer module
- packet header
- module
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种用于SSL VPN的协议栈体系结构,所述协议栈体系结构自下而上包括:设备驱动层、数据链路层、TCP-IP层和内核应用处理层;其中,在TCP-IP层中,对入栈数据通过五元组(协议,本地ip,本地端口,通信对端ip,通信对端端口)和TCP-IP链路状态机机制,使得入栈数据的IP包头与TCP包头在同层拆解,然后将TCP-IP层处理后的应用数据交给嵌入操作系统内核(即内核态)协议栈的内核应用数据处理层处理,处理过程始终运行在操作系统内核态,不做内核态和用户态的状态切换。应用本发明,能够提高现有大并发SSL VPN业务的处理速度,并保证SSL VPN服务器的性能,这将极大的推进SSL VPN的普及应用。
Description
技术领域
本发明涉及网络通信技术领域,特别涉及一种用于SSL VPN的协议栈系统及数据处理方法。
背景技术
近年来,随着Internet的发展,VPN(Virtual Private Network,虚拟专用网络)技术得到了网络软件研究界和工业界的日益广泛的关注,此外通过利用无所不在的互联网,VPN的经济性和部署弹性发挥到了更高的水准,近年来日益成为了取代专线的首选方案。
同时随着SSL(Secure Sockets Layer,安全套接层)VPN技术的日益成熟,已经有越来越多的企业与机构选用SSL VPN来保护他们的网络通信安全。但是在增加了通信网络安全性的同时,也随之带来了网络通信速度的下降,尤其是在具有大量客户的电信级企业中,VPN本身的数据处理速度是其主要的性能瓶颈,随之而来的就是大并发用户下,用户请求响应缓慢,甚至VPN服务器崩溃。这是因为目前国内外大部分SSL VPN服务器的架构都是采用传统TCP/IP协议栈。图1是现有技术中使用传统TCP/IP协议栈处理SSL VPN业务数据的结构示意图;参见图1,运行在操作系统之上,以进程或线程模式存在的程序为用户态数据处理进程,其通过与操作系统交互实现对硬件、软件资源的调度利用;运行在操作系统内核中,成为操作系统的一个组成部分的程序为内核态数据处理进程。在操作系统中内核态数据处理进程可以直接调度软硬件资源,相比起用户态数据处理进程可以更高效的调度系统硬件资源,具备比用户态数据处理进程更高的执行效率。在进行SSL VPN业务数据处理的过程中,从内核态数据处理进程接收的SSL VPN业务数据交由上层用户态数据处理进程,之后用户态数据处理进程需要发送的SSL VPN业务数据又交还给内核态数据处理进程发送或转发;应用层中除了进行套接字(Socket)处理的部分为内核态数据处理过程外,其他均为用户态数据处理过程;SSLVPN业务数据在传统TCP/IP协议栈里的处理过程中频繁地在用户态和内核态间切换,在并发处理比较小时,由此带来的性能损耗还不明显,但当并发处理比较大时,则SSL VPN服务器的处理器资源很大一部分浪费在用户态和内核态的状态切换中,极大地影响了SSL VPN服务器的性能,请求响应速度急剧下降,甚至停止响应。
发明内容
(一)要解决的技术问题
针对传统TCP/IP协议栈在处理大的并发SSL VPN业务时存在的处理速度下降,性能降低的问题,本发明要解决的技术问题是:如何提供一种用于SSL VPN的协议栈系统及数据处理方法,提高现有大并发SSL VPN业务的处理速度,并保证SSL VPN服务器的性能。
(二)技术方案
为解决上述技术问题,本发明提供了一种用于SSL VPN的协议栈系统,所述协议栈系统自下而上包括:设备驱动层模块、数据链路层模块、TCP-IP层模块和内核应用处理层模块;其中,
所述设备驱动层模块用于将网卡捕获的入栈数据发送给数据链路层模块,或,将接收自数据链路层模块的出栈数据发送到安全套接层虚拟专用网络SSL VPN中;
所述数据链路层模块用于将接收自设备驱动层模块的入栈数据根据端口号和协议类型进行分类,将SSL VPN需要处理的入栈数据转发给所述TCP-IP层模块,并丢弃其他的入栈数据,或将接收自所述TCP-IP层模块的出栈数据发送给所述设备驱动层模块;
所述TCP-IP层模块用于将接收自数据链路层模块的SSL VPN需要处理的入栈数据剥去IP包头和TCP包头,将剥去IP包头和TCP包头之后的SSL VPN需要处理的入栈数据转发给所述内核应用处理层模块;或,将接收自所述内核应用处理层模块的出栈数据分段,并为每个出栈数据段封装TCP包头和IP包头,然后将封装了TCP包头和IP包头的出栈数据段转发给所述数据链路层模块;
所述内核应用处理层模块用于对接收自所述TCP-IP层模块的入栈数据进行内核态数据处理进程;或,将处理后需要发送回SSL VPN的出栈数据发送到所述TCP-IP层模块,所述内核态数据处理进程为运行在操作系统内核中,成为操作系统的一个组成部分的程序。
优选地,所述协议栈系统进一步包括TCP-IP入栈数据队列存储模块,用于保存入栈数据;
所述数据链路层模块进一步用于将SSL VPN需要处理的入栈数据放入所述TCP-IP入栈数据队列存储模块中;
所述TCP-IP层模块中进一步包括入栈数据提取模块,所述入栈数据提取模块用于从所述TCP-IP入栈数据队列存储模块中提取待处理的入栈数据,如果队列中无数据,则不提取;
所述TCP-IP层模块进一步用于将所述入栈数据提取模块提取的入栈数据剥去IP包头和TCP包头,将剥去IP包头和TCP包头的SSLVPN需要处理的入栈数据转发给所述内核应用处理层模块。
优选地,所述协议栈系统进一步包括TCP-IP出栈数据队列存储模块,用于保存出栈数据;
所述TCP-IP层模块进一步用于将封装了TCP包头和IP包头的出栈数据段放入所述TCP-IP出栈数据队列存储模块中;
所述数据链路层模块进一步用于从所述TCP-IP出栈数据队列存储模块中提取出栈数据,并将所述出栈数据发送到所述设备驱动层模块。
优选地,所述TCP-IP层模块包括:入栈数据处理模块和出栈数据处理模块;其中,
所述入栈数据处理模块用于检查接收自数据链路层模块的所述SSL VPN需要处理的入栈数据的校验码,将通过校验码检查的所述SSL VPN需要处理的入栈数据剥去IP包头和TCP包头,并查找网络连接信息表NCIT,查找所述SSL VPN需要处理的入栈数据对应的网络数据控制块NDCP,如果没有找到,则在NCIT中添加对应的网络数据控制块;从对应的NDCP中提取所述SSL VPN需要处理的入栈数据的相关控制信息,依据所述SSL VPN需要处理的入栈数据所处网络连接的状态和标识查找协议栈处理模块表,找出所述SSL VPN需要处理的入栈数据当前状态下对应的协议栈处理模块;进入协议栈处理模块后,则对所述SSL VPN需要处理的入栈数据进行当前状态下的协议栈处理;协议栈处理完成后则通过调用上层应用处理句柄,所述SSLVPN需要处理的入栈数据进入所述内核应用处理层模块;
所述出栈数据处理模块用于依据最大传输数据单元MSS把接收自内核应用处理层模块的出栈数据分成多段,然后为每段封装TCP包头和IP包头,并将封装了TCP包头和IP包头的出栈数据段发送到所述数据链路层模块。
优选地,所述TCP-IP层模块进一步用于链路的发起,建立与关闭。
本发明还提供了一种应用上述协议栈系统的数据处理方法,所述数据处理方法包括:
步骤A:设备驱动层模块将网卡捕获的入栈数据发送给数据链路层模块;
步骤B:从设备驱动层模块接收到入栈数据后,数据链路层模块根据端口号和协议类型对所述入栈数据进行分类,将SSL VPN需要处理的入栈数据转交给TCP-IP层模块,并丢弃其他的入栈数据;
步骤C:从数据链路层模块接收到SSL VPN需要处理的入栈数据后,TCP-IP层模块剥去所述SSL VPN需要处理的入栈数据的IP包头和TCP包头,将剥去IP包头和TCP包头的SSL VPN需要处理的入栈数据转发给内核应用处理层模块;
步骤D:从TCP-IP层模块接收到所述剥去IP包头和TCP包头的SSL VPN需要处理的入栈数据后,内核应用处理层模块进行相应内核态的数据处理;
步骤E:内核应用处理层模块将处理后的出栈数据转发给TCP-IP层模块;
步骤F:从内核应用处理层模块接收到所述处理后的出栈数据后,TCP-IP层模块将所述出栈数据分段并为每个数据段依次封装TCP包头和IP包头,然后将封装了TCP包头和IP包头的出栈数据段转发给数据链路层模块;
步骤G:从TCP-IP层模块接收到封装了TCP包头和IP包头的出栈数据段后,数据链路层模块将所述封装了TCP包头和IP包头的出栈数据段通过设备驱动层模块发送到SSL VPN中。
优选地,所述步骤B进一步包括:所述数据链路层模块将SSL VPN需要处理的入栈数据放入TCP-IP入栈数据队列存储模块中;
所述步骤C进一步包括:从所述TCP-IP入栈数据队列存储模块中提取待处理的入栈数据,如果队列中无数据,则不提取;将所提取的入栈数据剥去IP包头和TCP包头,将剥去IP包头和TCP包头的SSL VPN需要处理的入栈数据转发给内核应用处理层模块。
优选地,所述步骤F进一步包括:所述TCP-IP层模块将封装了TCP包头和IP包头的出栈数据段放入TCP-IP出栈数据队列存储模块中;
所述步骤G进一步包括:所述数据链路层模块从所述TCP-IP出栈数据队列存储模块中提取出栈数据。
优选地,所述步骤C具体包括:
所述TCP-IP层模块检查接收自数据链路层模块的SSL VPN需要处理的入栈数据的校验码,将通过校验码检查的所述SSL VPN需要处理的入栈数据依次剥去IP包头和TCP包头,并查找网络连接信息表NCIT,找出SSL VPN需要处理的入栈数据对应的网络数据控制块NDCP,如果没有找到,则在NCIT中添加对应的网络数据控制块;从对应的NDCP中提取SSL VPN需要处理的入栈数据的相关控制信息,依据SSL VPN需要处理的入栈数据所处网络连接的状态和标识查找协议栈处理模块表,找出SSL VPN需要处理的入栈数据当前状态下对应的协议栈处理模块;进入协议栈处理模块后,则对SSL VPN需要处理的入栈数据进行当前状态下的协议栈处理;协议栈处理完成后则通过调用上层应用处理句柄,SSL VPN需要处理的入栈数据进入所述内核应用处理层模块。
优选地,所述步骤F具体包括:所述TCP-IP层模块依据最大传输数据单元MSS把接收自内核应用处理层模块的出栈数据分成多段,然后为每段封装TCP包头和IP包头,并将封装了TCP包头和IP包头的出栈数据段发送到所述数据链路层模块。
(三)有益效果
本发明公开了一种用于SSL VPN的协议栈系统及数据处理方法;本发明所述的协议栈系统自下而上包括:设备驱动层模块(即物理层)、数据链路层模块、TCP-IP层模块和内核应用处理层模块,在TCP-IP层模块中,对入栈数据通过五元组(协议,本地ip,本地端口,通信对端ip,通信对端端口)和TCP-IP链路状态机机制,使得入栈数据的IP包头与TCP包头在同层拆解,然后将TCP-IP层模块处理后的应用数据交给嵌入操作系统内核(即内核态)协议栈的内核应用数据处理层处理,处理过程始终运行在操作系统内核态,不做内核态和用户态的状态切换。应用本发明,能够提高现有大并发SSL VPN业务的处理速度,并保证SSL VPN服务器的性能,这将极大的推进SSL VPN的普及应用。
附图说明
图1是现有技术中使用传统TCP/IP协议栈处理SSL VPN业务数据的结构示意图;
图2是本发明实施例的用于SSL VPN的协议栈系统的示意图;
图3是本发明实施例的用于SSL VPN的协议栈系统中TCP-IP层的状态变迁图;
图4是本发明实施例的用于SSL VPN的协议栈系统的数据处理方法流程图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
本发明的核心思想是:本发明所述的协议栈系统自下而上包括:设备驱动层模块(即物理层)、数据链路层模块、TCP-IP层模块和内核应用处理层模块,在TCP-IP层模块中,对入栈数据通过五元组(协议,本地ip,本地端口,通信对端ip,通信对端端口)和TCP-IP链路状态机机制,使得入栈数据的IP包头与TCP包头在同层拆解,然后将TCP-IP层模块处理后的应用数据交给嵌入操作系统内核(即内核态)协议栈的内核应用数据处理层处理,处理过程始终运行在操作系统内核态,不做内核态和用户态的状态切换。
图2是本发明所述用于SSL VPN的协议栈系统的示意图;如图2所示,所述用于SSL VPN的协议栈系统自下而上包括:设备驱动层模块(即物理层)、数据链路层模块、TCP-IP层模块和内核应用处理层模块;
设备驱动层模块用于将网卡捕获的入栈数据进行相应处理后发送给数据链路层模块,或,将接收自数据链路层模块的出栈数据经过相应处理后发送到安全套接层虚拟专用网络(SSL VPN)中,设备驱动层模块对入栈数据和出栈数据的处理为现有技术;
数据链路层模块用于将接收自设备驱动层模块的入栈数据根据端口号和协议类型进行分类,将SSL VPN需要处理的入栈数据转交给TCP-IP层模块,并丢弃其他无关的入栈数据,或将接收自TCP-IP层模块的出栈数据发送给设备驱动层模块;
比如SSL VPN需要处理443端口的IP数据,则数据链路层模块丢弃其他协议类型的入栈数据或发往其他端口的IP数据以及损坏的入栈数据。
TCP-IP层模块用于将接收自数据链路层模块的SSL VPN需要处理的入栈数据分解,依次剥去IP包头和TCP包头,将所述剥去IP包头和TCP包头的SSL VPN需要处理的入栈数据转交给内核应用处理层模块;或,将接收自内核应用处理层模块的出栈数据分段并为每个数据段依次封装TCP包头和IP包头,然后将封装了TCP包头和IP包头的出栈数据段转发给数据链路层模块;以及链路的发起,建立与关闭;
TCP-IP层模块包括入栈数据处理模块和出栈数据处理模块;
所述入栈数据处理模块用于检查接收自数据链路层模块的所述SSL VPN需要处理的入栈数据的校验码,将通过校验码检查的所述SSL VPN需要处理的入栈数据依次剥去IP包头和TCP包头,并依据五元组(协议、本地IP、本地端口、通信对端IP、通信对端端口)来查找保存在内核内存里的网络连接信息表(Network ConnectionInformation Table,NCIT),找出所述SSL VPN需要处理的入栈数据对应的网络数据控制块(Network Data Control Piece,NDCP),如果没有找到则在NCIT中添加对应的网络数据控制块。其中网络连接信息表是由网络数据控制块组成的一个散列数据表,而网络数据控制块则包含具体每一条网络连接的控制信息,该控制信息包含:通信对端的IP、端口号、最大传输数据单元(Maximum Segment Size,MSS)、标识、状态信息、接收及发送数据缓冲区,上层应用处理句柄和相关定时器等元素;其中通信对端的IP和端口号用来标识数据处理后发送的目的地址和端口,最大传输数据单元MSS用来标识数据出栈前分段的大小,标识和状态信息构成协议栈处理模块表,上层应用处理句柄标示数据出栈后的上层应用处理方法,定时器用来判断重传、超时等信息。
从对应的NDCP中提取所述SSL VPN需要处理的入栈数据的相关控制信息,依据所述SSL VPN需要处理的入栈数据所处网络连接的状态和标识查找协议栈处理模块表,找出所述SSL VPN需要处理的入栈数据当前状态下对应的协议栈处理模块。协议栈处理模块表是一个二维数组表,由NDCP中的标识和状态信息共同确定对应的协议栈处理模块,它同时也是状态变迁表,标识TCP-IP层的状态变迁,所述TCP-IP协议层的状态变迁图如图3所示。状态图状态变迁过程包括上层应用被动打开和主动打开链路两部分;其中上层应用被动打开链路过程包括:
1、在链路关闭状态,如接收到客户端发来的连接请求,则表示上层应用(APP)被动打开,链路进入链路建立状态;
2、在链路建立状态如收到客户端数据,则保持在链路建立状态;
3、在链路建立状态如收到客户端发来的关闭连接(fin)包,则进入握手关闭状态;
4、在链路建立状态如是APP主动关闭,则发送fin包给客户端,并进入主动关闭状态;
5、在链路建立状态如果APP发起链路合并请求,则进入链路合并状态;
6、在链路合并状态,如接收到客户端数据将忠实的转发到服务端,并维持在链路合并状态;
7、在链路合并状态,如APP发起链路分拆请求,则转回到链路建立状态;
8、在链路合并状态,如接收到服务端发来的fin包,则向客户端发送fin包,并经过TCP的四次握手关闭后,进入超时等待状态;
9、在主动关闭状态,如接收到客户端发来的fin包,则经过TCP四次握手关闭后,进入超时等待状态。
10、在超时等待状态,如经过了两倍的最大分段生存期(2MSL)的超时等待时间,则回到链路关闭状态。
上层应用主动打开链路过程包括:
1’、在链路关闭状态,APP主动向服务端发起连接请求,链路进入SYN发送状态;
2’、在SYN发送状态,将接收到服务端发来的SYN和ACK包,经过3次TCP握手打开,进入链路建立状态;
3’、在链路建立状态,如接收到服务端的应用数据,则维持在链路建立状态;
4’、在链路建立状态,如主动向服务端发送fin包则进入握手关闭状态;
5’、在链路建立状态,如接收到服务端发来的fin包,则进入被动关闭状态;
6’、在链路建立状态,如果APP向客户端发起了链路合并请求,则也进入链路合并状态;
7’、在链路合并状态,如接收到服务端的应用数据,则忠实转发给客户端;
8’、在链路合并状态,如接收到服务端发送的fin包,则进入链路关闭状态;
9’、在被动关闭状态,APP关闭链路,并向服务端返回fin包,进入链路关闭状态;
10’、在超时等待状态,如果在2MSL的等待时间内,又收到服务端发来的请求连接包,则回到链路建立状态(一般在数据重传时会碰到这种情况)。
进入协议栈处理模块后,则对所述SSL VPN需要处理的入栈数据进行当前状态下的协议栈处理,如链路的打开、关闭、合并、建立等。协议栈处理完成后则通过调用上层应用处理句柄,所述SSL VPN需要处理的入栈数据进入内核应用处理层模块,进行实际的应用数据处理,如SSL的数据的加解密,数据的转发等;
所述出栈数据处理模块用于依据网络控制信息中的最大传输数据单元(MSS)把接收自内核应用处理层模块的出栈数据分成多段,除最后一段的剩余部分外,每段均为MSS长度,然后为每段依次封装TCP包头和IP包头,并将封装了TCP包头和IP包头的出栈数据段发送到数据链路层模块。
所述内核应用处理层模块用于对接收自TCP-IP层模块的入栈数据进行实际的内核态数据处理进程,如SSL数据的加解密和数据的转发等;或,将处理后需要发送回SSL VPN的出栈数据发送到TCP-IP层模块。
所述协议栈系统还可以包括TCP-IP入栈数据队列存储模块,其保存在内核内存中的,用于保存入栈数据;
所述数据链路层模块进一步用于将接收自设备驱动层模块的入栈数据根据端口号和协议类型进行分类,将SSL VPN需要处理的入栈数据放入所述TCP-IP入栈数据队列存储模块中,并丢弃其他无关的入栈数据;
所述TCP-IP层模块中进一步包括入栈数据提取模块,所述入栈数据提取模块用于从所述TCP-IP入栈数据队列存储模块中按照先进先出的原则提取待处理的入栈数据。每隔一个硬件时钟(例如,1毫秒)进行一次这样的操作,如果队列中无数据,则不提取。
所述TCP-IP层模块进一步用于将所述入栈数据提取模块提取的入栈数据依次剥去IP包头和TCP包头,将所述剥去IP包头和TCP包头的SSL VPN需要处理的入栈数据转交给内核应用处理层模块。
所述协议栈系统还可以包括TCP-IP出栈数据队列存储模块,其保存在内核内存中的,用于保存出栈数据;
所述TCP-IP层模块进一步用于将接收自内核应用处理层模块的出栈数据分段并为每个数据段依次封装TCP包头和IP包头,然后将封装了TCP包头和IP包头的出栈数据段放入所述TCP-IP出栈数据队列存储模块中。
所述数据链路层模块进一步用于从所述TCP-IP出栈数据队列存储模块中提取出栈数据,并将所述出栈数据发送到所述设备驱动层模块。
图4是本发明所述用于SSL VPN的协议栈系统的数据处理方法流程图。如图4所示,所述数据处理方法包括:
步骤A:设备驱动层模块对网卡捕获的入栈数据进行相应处理后发送给数据链路层模块;设备驱动层模块对入栈数据的处理为现有技术;
步骤B:从设备驱动层模块接收到入栈数据后,数据链路层模块根据端口号和协议类型对所述入栈数据进行分类,将SSL VPN需要处理的入栈数据转交给TCP-IP层模块,并丢弃其他无关的入栈数据;
在本步骤中,还可以将SSL VPN需要处理的协议类型和端口号对应的入栈数据放入保存在内核内存中的TCP-IP入栈数据队列存储模块,;
比如SSL VPN需要处理443端口的IP数据,则数据链路层模块丢弃其他协议类型的入栈数据或发往其他端口的IP数据以及损坏的入栈数据。由于在传统的TCP/IP协议栈中,从网络中接收的发往任何端口的任何协议类型的数据都会完整的经过一遍TCP/IP协议栈处理,所以,本步骤经过对入栈数据的分类,只保留SSL VPN需要处理的入栈数据,而直接丢弃其他入栈数据,可以提高SSL VPN服务器的处理性能,大大减少了无谓操作对处理器资源的占用。
步骤C:从数据链路层模块接收到SSL VPN需要处理的入栈数据后,TCP-IP层模块剥去所述SSL VPN需要处理的入栈数据的IP包头和TCP包头,将所述剥去IP包头和TCP包头的SSL VPN需要处理的入栈数据转交给内核应用处理层模块;
在本步骤中所述TCP-IP层模块还可以从所述TCP-IP入栈数据队列存储模块中按照先进先出的原则提取待处理的入栈数据。每隔一个硬件时钟(例如,1毫秒)进行一次这样的操作,如果队列中无数据,则不提取,提取到入栈数据后,发出一个软中断信号触发对入栈数据进行处理。
本步骤具体包括:检查接收自数据链路层模块或从TCP-IP入栈数据队列存储模块中提取的所述SSL VPN需要处理的入栈数据的校验码,将通过校验码检查的所述SSL VPN需要处理的入栈数据依次剥去IP包头和TCP包头,并依据五元组(协议,本地IP,本地端口,通信对端IP,通信对端端口)来查找保存在内核内存里的网络连接信息表(Network Connection Information Table,NCIT),找出该数据对应的网络数据控制块(Network Data Control Piece,NDCP),如果没有找到则在NCIT中添加对应的网络数据控制块。其中网络连接信息表是由网络数据控制块组成的一个散列数据表,而网络数据控制块则包含具体每一条网络连接的控制信息,该控制信息包含:通信对端的IP、端口号,最大传输数据单元(Maximum Segment Size,MSS)、标识、状态信息、接收及发送数据缓冲区、上层应用处理句柄和相关定时器等元素;其中通信对端的IP和端口号用来标示数据处理后发送的目的地址和端口,最大传输数据单元MSS用来标示数据出栈前分段的大小,标识和状态信息构成协议栈处理模块表,上层应用处理句柄标示数据出栈后的上层应用处理方法,定时器用来判断重传、超时等信息。
从对应的NDCP中提取该数据包的相关控制信息,依据该数据包所处网络连接的状态和标识查找协议栈处理模块表,找出该数据包当前状态下对应的协议栈处理模块。协议栈处理模块表是一个二维数组表,由NDCP中的标识和状态信息共同确定对应的协议栈处理模块,它同时也是状态变迁表,标识TCP-IP层的状态变迁,所述TCP-IP协议层的状态变迁图如图3所示。进入协议栈处理模块后,则对该数据包进行当前状态下的协议栈处理,如链路的打开、关闭、合并、建立等。协议栈处理完成后则通过调用上层应用处理句柄,数据进入内核应用处理层模块,进行实际的应用数据处理,如SSL的数据的加解密,数据的转发等;
步骤D:从TCP-IP层模块接收到所述剥去IP包头和TCP包头的SSL VPN需要处理的入栈数据后,内核应用处理层模块进行相应内核态的数据处理,例如SSL数据的加解密和数据的转发等。
步骤E:内核应用处理层模块将处理后的出栈数据转发给TCP-IP层模块;
步骤F:从内核应用处理层模块接收到所述处理后的出栈数据后,TCP-IP层模块依据网络控制信息中的最大传输数据单元(MSS)把接收自内核应用处理层模块的出栈数据分成多段,除最后一段的剩余部分外,每段均为MSS长度,并为每个出栈数据段依次封装TCP包头和IP包头,然后将封装了TCP包头和IP包头的出栈数据段转发给数据链路层模块;
在本步骤中,TCP-IP层模块还可以将封装了TCP包头和IP包头的出栈数据段放入TCP-IP出栈数据队列存储模块中。
步骤G:从TCP-IP层模块接收到或从所述TCP-IP出栈数据队列存储模块中提取封装了TCP包头和IP包头的出栈数据段后,数据链路层模块将所述封装了TCP包头和IP包头的出栈数据段通过设备驱动层模块发送到SSL VPN网络中。设备驱动层模块对出栈数据的处理为现有技术。
本发明实施例公开了一种用于SSL VPN的协议栈系统及数据处理方法;本发明所述的协议栈系统自下而上包括:设备驱动层模块(即物理层)、数据链路层模块、TCP-IP层模块和内核应用处理层模块,在TCP-IP层模块中,对入栈数据通过五元组(协议,本地ip,本地端口,通信对端ip,通信对端端口)和TCP-IP链路状态机机制,使得入栈数据的IP包头与TCP包头在同层拆解,然后将TCP-IP层模块处理后的应用数据交给嵌入操作系统内核(即内核态)协议栈的内核应用数据处理层处理,处理过程始终运行在操作系统内核态,不做内核态和用户态的状态切换。应用本发明,能够提高现有大并发SSL VPN业务的处理速度,并保证SSL VPN服务器的性能,这将极大的推进SSLVPN的普及应用。同时,如果把协议栈系统中的内核应用数据处理层的内核态数据处理进程功能扩展开来,这项技术还能延伸到其它网络安全产品领域,如防火墙、入侵检测、负载均衡等设备。
以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。
Claims (7)
1.一种用于SSL VPN的协议栈系统,其特征在于,所述协议栈系统自下而上包括:设备驱动层模块、数据链路层模块、TCP-IP层模块和内核应用处理层模块;其中,
所述设备驱动层模块用于将网卡捕获的入栈数据发送给数据链路层模块,或,将接收自数据链路层模块的出栈数据发送到安全套接层虚拟专用网络SSL VPN中;
所述数据链路层模块用于将接收自设备驱动层模块的入栈数据根据端口号和协议类型进行分类,将SSL VPN需要处理的入栈数据转发给所述TCP-IP层模块,并丢弃其他的入栈数据,或将接收自所述TCP-IP层模块的出栈数据发送给所述设备驱动层模块;
所述TCP-IP层模块用于将接收自数据链路层模块的SSL VPN需要处理的入栈数据剥去IP包头和TCP包头,将剥去IP包头和TCP包头之后的SSL VPN需要处理的入栈数据转发给所述内核应用处理层模块;或,将接收自所述内核应用处理层模块的出栈数据分段,并为每个出栈数据段封装TCP包头和IP包头,然后将封装了TCP包头和IP包头的出栈数据段转发给所述数据链路层模块;
所述内核应用处理层模块用于对接收自所述TCP-IP层模块的入栈数据进行内核态数据处理进程;或,将处理后需要发送回SSL VPN的出栈数据发送到所述TCP-IP层模块,所述内核态数据处理进程为运行在操作系统内核中,成为操作系统的一个组成部分的程序;
所述TCP-IP层模块包括:入栈数据处理模块和出栈数据处理模块;其中,
所述入栈数据处理模块用于检查接收自数据链路层模块的所述SSL VPN需要处理的入栈数据的校验码,将通过校验码检查的所述SSL VPN需要处理的入栈数据剥去IP包头和TCP包头,并查找网络连接信息表NCIT,查找所述SSL VPN需要处理的入栈数据对应的网络数据控制块NDCP,如果没有找到,则在NCIT中添加对应的网络数据控制块,其中网络连接信息表是由网络数据控制块组成的散列数据表,网络数据控制块包括每一条网络连接的控制信息,该控制信息包括:通信对端的IP、端口号、最大传输数据单元MSS、标识、状态信息、接收及发送数据缓冲区、上层应用处理句柄和相关定时器;从对应的NDCP中提取所述SSL VPN需要处理的入栈数据的相关控制信息,依据所述SSL VPN需要处理的入栈数据所处网络连接的状态和标识查找协议栈处理模块表,找出所述SSL VPN需要处理的入栈数据当前状态下对应的协议栈处理模块,其中协议栈处理模块表是二维数组表,用于根据NDCP中的标识和状态信息确定对应的协议栈处理模块,并标识TCP-IP层模块的状态变迁;进入协议栈处理模块后,则对所述SSL VPN需要处理的入栈数据进行当前状态下的协议栈处理,其中协议栈处理包括链路的打开、关闭、合并或建立;协议栈处理完成后则通过调用上层应用处理句柄,所述SSL VPN需要处理的入栈数据进入所述内核应用处理层模块;
所述出栈数据处理模块用于依据最大传输数据单元MSS把接收自内核应用处理层模块的出栈数据分成多段,然后为每段封装TCP包头和IP包头,并将封装了TCP包头和IP包头的出栈数据段发送到所述数据链路层模块。
2.如权利要求1所述的协议栈系统,其特征在于,所述协议栈系统进一步包括TCP-IP入栈数据队列存储模块,用于保存入栈数据;
所述数据链路层模块进一步用于将SSL VPN需要处理的入栈数据放入所述TCP-IP入栈数据队列存储模块中;
所述TCP-IP层模块中进一步包括入栈数据提取模块,所述入栈数据提取模块用于从所述TCP-IP入栈数据队列存储模块中提取待处理的入栈数据,如果队列中无数据,则不提取;
所述TCP-IP层模块进一步用于将所述入栈数据提取模块提取的入栈数据剥去IP包头和TCP包头,将剥去IP包头和TCP包头的SSLVPN需要处理的入栈数据转发给所述内核应用处理层模块。
3.如权利要求1所述的协议栈系统,其特征在于,所述协议栈系统进一步包括TCP-IP出栈数据队列存储模块,用于保存出栈数据;
所述TCP-IP层模块进一步用于将封装了TCP包头和IP包头的出栈数据段放入所述TCP-IP出栈数据队列存储模块中;
所述数据链路层模块进一步用于从所述TCP-IP出栈数据队列存储模块中提取出栈数据,并将所述出栈数据发送到所述设备驱动层模块。
4.如权利要求1-3中任一项所述的协议栈系统,其特征在于,所述TCP-IP层模块进一步用于链路的发起,建立与关闭。
5.一种应用如权利要求1-4中任一项所述的协议栈系统的数据处理方法,其特征在于,所述数据处理方法包括:
步骤A:设备驱动层模块将网卡捕获的入栈数据发送给数据链路层模块;
步骤B:从设备驱动层模块接收到入栈数据后,数据链路层模块根据端口号和协议类型对所述入栈数据进行分类,将SSL VPN需要处理的入栈数据转交给TCP-IP层模块,并丢弃其他的入栈数据;
步骤C:从数据链路层模块接收到SSL VPN需要处理的入栈数据后,TCP-IP层模块剥去所述SSL VPN需要处理的入栈数据的IP包头和TCP包头,将剥去IP包头和TCP包头的SSL VPN需要处理的入栈数据转发给内核应用处理层模块;
步骤D:从TCP-IP层模块接收到所述剥去IP包头和TCP包头的SSL VPN需要处理的入栈数据后,内核应用处理层模块进行相应内核态的数据处理;
步骤E:内核应用处理层模块将处理后的出栈数据转发给TCP-IP层模块;
步骤F:从内核应用处理层模块接收到所述处理后的出栈数据后,TCP-IP层模块将所述出栈数据分段并为每个数据段依次封装TCP包头和IP包头,然后将封装了TCP包头和IP包头的出栈数据段转发给数据链路层模块;
步骤G:从TCP-IP层模块接收到封装了TCP包头和IP包头的出栈数据段后,数据链路层模块将所述封装了TCP包头和IP包头的出栈数据段通过设备驱动层模块发送到SSL VPN中;
所述步骤C具体包括:
所述TCP-IP层模块检查接收自数据链路层模块的SSL VPN需要处理的入栈数据的校验码,将通过校验码检查的所述SSL VPN需要处理的入栈数据依次剥去IP包头和TCP包头,并查找网络连接信息表NCIT,找出SSL VPN需要处理的入栈数据对应的网络数据控制块NDCP,如果没有找到,则在NCIT中添加对应的网络数据控制块;从对应的NDCP中提取SSL VPN需要处理的入栈数据的相关控制信息,依据SSL VPN需要处理的入栈数据所处网络连接的状态和标识查找协议栈处理模块表,找出SSL VPN需要处理的入栈数据当前状态下对应的协议栈处理模块;进入协议栈处理模块后,则对SSL VPN需要处理的入栈数据进行当前状态下的协议栈处理;协议栈处理完成后则通过调用上层应用处理句柄,SSL VPN需要处理的入栈数据进入所述内核应用处理层模块;
所述步骤F具体包括:所述TCP-IP层模块依据最大传输数据单元MSS把接收自内核应用处理层模块的出栈数据分成多段,然后为每段封装TCP包头和IP包头,并将封装了TCP包头和IP包头的出栈数据段发送到所述数据链路层模块。
6.如权利要求5所述的数据处理方法,其特征在于,所述步骤B进一步包括:所述数据链路层模块将SSL VPN需要处理的入栈数据放入TCP-IP入栈数据队列存储模块中;
所述步骤C进一步包括:从所述TCP-IP入栈数据队列存储模块中提取待处理的入栈数据,如果队列中无数据,则不提取;将所提取的入栈数据剥去IP包头和TCP包头,将剥去IP包头和TCP包头的SSL VPN需要处理的入栈数据转发给内核应用处理层模块。
7.如权利要求5所述的数据处理方法,其特征在于,所述步骤F进一步包括:所述TCP-IP层模块将封装了TCP包头和IP包头的出栈数据段放入TCP-IP出栈数据队列存储模块中;
所述步骤G进一步包括:所述数据链路层模块从所述TCP-IP出栈数据队列存储模块中提取出栈数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010292474XA CN101951378B (zh) | 2010-09-26 | 2010-09-26 | 用于ssl vpn的协议栈系统及数据处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010292474XA CN101951378B (zh) | 2010-09-26 | 2010-09-26 | 用于ssl vpn的协议栈系统及数据处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101951378A CN101951378A (zh) | 2011-01-19 |
CN101951378B true CN101951378B (zh) | 2013-09-18 |
Family
ID=43454739
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010292474XA Expired - Fee Related CN101951378B (zh) | 2010-09-26 | 2010-09-26 | 用于ssl vpn的协议栈系统及数据处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101951378B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102111321A (zh) * | 2011-03-01 | 2011-06-29 | 汉柏科技有限公司 | 一种用于vpn的加解密芯片驱动方法 |
CN103379009B (zh) * | 2012-04-20 | 2017-02-15 | 南京易安联网络技术有限公司 | 基于数据链路层的ssl vpn通信方法 |
CN102685243B (zh) * | 2012-05-22 | 2015-03-04 | 清华大学 | 一种轻量级tcp/ip协议栈的实现方法 |
CN103840994B (zh) * | 2012-11-23 | 2017-06-06 | 华耀(中国)科技有限公司 | 一种用户端通过vpn访问内网的系统及方法 |
CN108268328B (zh) * | 2013-05-09 | 2022-04-22 | 华为技术有限公司 | 数据处理装置及计算机 |
CN104010049B (zh) * | 2014-04-30 | 2017-10-03 | 易云捷讯科技(北京)股份有限公司 | 基于sdn的以太网ip报文封装方法及网络隔离和dhcp实现方法 |
CN104994061A (zh) * | 2015-05-19 | 2015-10-21 | 中国南方电网有限责任公司 | 智能变电站过程层交换机mms安全通信的装置及方法 |
CN106339325B (zh) * | 2016-08-30 | 2020-05-05 | 广东美的制冷设备有限公司 | WiFi模块的内存分配方法及装置 |
CN106603376B (zh) * | 2016-12-14 | 2019-09-13 | 东软集团股份有限公司 | 报文处理方法和虚拟专用网络sslvpn服务器 |
CN106888145B (zh) * | 2017-03-17 | 2019-11-12 | 新华三技术有限公司 | 一种vpn资源访问方法及装置 |
CN109150688B (zh) * | 2018-10-22 | 2021-07-09 | 网宿科技股份有限公司 | IPSec VPN数据传输方法及装置 |
CN110401645B (zh) * | 2019-07-15 | 2021-11-19 | 珠海市杰理科技股份有限公司 | 数据穿透传输方法、装置、系统、客户端和存储介质 |
CN111831458B (zh) * | 2020-06-11 | 2024-04-26 | 武汉烽火技术服务有限公司 | 一种高并发高解耦数据处理方法及数据中台系统 |
CN114143061B (zh) * | 2021-11-25 | 2023-06-02 | 郑州信大信息技术研究院有限公司 | 基于用户态协议栈实现数据安全可靠传输的方法及系统 |
CN115174206B (zh) * | 2022-07-01 | 2024-04-02 | 江苏深网科技有限公司 | 透明网桥模式下的用户态应用安全检测方法及检测系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101217493A (zh) * | 2008-01-08 | 2008-07-09 | 北京大学 | 一种tcp数据包的传输方法 |
CN101778045A (zh) * | 2010-01-27 | 2010-07-14 | 成都市华为赛门铁克科技有限公司 | 报文传输方法、装置及网络系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8639813B2 (en) * | 2008-11-25 | 2014-01-28 | Citrix Systems, Inc. | Systems and methods for GSLB based on SSL VPN users |
-
2010
- 2010-09-26 CN CN201010292474XA patent/CN101951378B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101217493A (zh) * | 2008-01-08 | 2008-07-09 | 北京大学 | 一种tcp数据包的传输方法 |
CN101778045A (zh) * | 2010-01-27 | 2010-07-14 | 成都市华为赛门铁克科技有限公司 | 报文传输方法、装置及网络系统 |
Also Published As
Publication number | Publication date |
---|---|
CN101951378A (zh) | 2011-01-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101951378B (zh) | 用于ssl vpn的协议栈系统及数据处理方法 | |
CN101267437B (zh) | 网络设备的报文访问控制方法及系统 | |
US7685254B2 (en) | Runtime adaptable search processor | |
US7631107B2 (en) | Runtime adaptable protocol processor | |
CN101495993B (zh) | 用于分布式多重处理安全网关的系统和方法 | |
CN101217493B (zh) | 一种tcp数据包的传输方法 | |
US8181239B2 (en) | Distributed network security system and a hardware processor therefor | |
CN105162883B (zh) | 网络负载均衡处理系统及其方法和装置 | |
CN102075421B (zh) | 服务质量处理方法及装置 | |
WO2018032399A1 (en) | Server and method having high concurrency capability | |
CN111614631B (zh) | 一种用户态流水线架构防火墙系统 | |
WO2006060571A2 (en) | A runtime adaptable security processor | |
CN102123082A (zh) | 数据包转发方法和设备 | |
CN106464596B (zh) | 开放流通信方法、系统、控制器和业务网关 | |
CN107787570A (zh) | 轻量传送协议 | |
CN107528923A (zh) | 一种网络适配器的数据传输方法及网络适配器 | |
CN1275443C (zh) | 网络处理器内部实现分布式应用层转换网关的方法 | |
CN102843362A (zh) | 一种使用tcam进行arp防御的方法 | |
CN104243338B (zh) | 报文处理方法、设备和系统 | |
CN113453278B (zh) | 一种基于5g upf下的tcp包分段组包方法及终端 | |
CN108234323A (zh) | 一种安全可控性能可达线速的网络处理及转发方法 | |
CN105162751B (zh) | 一种基于lwIP协议栈多网口多连接的通讯系统 | |
WO2015048999A1 (en) | Method and proxy node for source to destination packet transfer | |
CN1391380A (zh) | 无线传输层网关 | |
CN114760266B (zh) | 虚拟地址生成方法、装置和计算机设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130918 Termination date: 20190926 |