用于sslvpn的协议栈体系结构及数据处理方法

文档序号:7760782阅读:175来源:国知局
专利名称:用于ssl vpn的协议栈体系结构及数据处理方法
技术领域
本发明涉及网络通信技术领域,特别涉及一种用于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的协议栈体系结构,所述
5协议栈体系结构自下而上包括设备驱动层、数据链路层、TCP-IP层和内核应用处理层;其 中,所述设备驱动层用于将网卡捕获的入栈数据发送给数据链路层,或,将接收自数 据链路层的出栈数据发送到安全套接层虚拟专用网络SSL VPN中;所述数据链路层用于将接收自设备驱动层的入栈数据根据端口号和协议类型进 行分类,将SSL VPN需要处理的入栈数据转发给所述TCP-IP层,并丢弃其他的入栈数据,或 将接收自所述TCP-IP层的出栈数据发送给所述设备驱动层;所述TCP-IP层用于将接收自数据链路层的SSL VPN需要处理的入栈数据剥去IP 包头和TCP包头,将剥去IP包头和TCP包头之后的SSLVPN需要处理的入栈数据转发给所 述内核应用处理层;或,将接收自所述内核应用处理层的出栈数据分段,并为每个出栈数据 段封装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包头的SSL VPN需要处理的入栈数据转发给所述内核应
用处理层。优选地,所述协议栈体系结构进一步包括TCP-IP出栈数据队列,用于保存出栈数 据;所述TCP-IP层进一步用于将封装了 TCP包头和IP包头的出栈数据段放入所述 TCP-IP出栈数据队列中;所述数据链路层进一步用于从所述TCP-IP出栈数据队列中提取出栈数据,并将 所述出栈数据发送到所述设备驱动层。优选地,所述TCP-IP层包括入栈数据处理模块和出栈数据处理模块;其中,所述入栈数据处理模块用于检查接收自数据链路层的所述SSLVPN需要处理的入 栈数据的校验码,将通过校验码检查的所述SSLVPN需要处理的入栈数据剥去IP包头和TCP 包头,并查找网络连接信息表NCIT,查找所述SSL VPN需要处理的入栈数据对应的网络数 据控制块NDCP,如果没有找到,则在NCIT中添加对应的网络数据控制块;从对应的NDCP中 提取所述SSL VPN需要处理的入栈数据的相关控制信息,依据所述SSL VPN需要处理的入 栈数据所处网络连接的状态和标识查找协议栈处理模块表,找出所述SSL VPN需要处理的 入栈数据当前状态下对应的协议栈处理模块;进入协议栈处理模块后,则对所述SSL VPN 需要处理的入栈数据进行当前状态下的协议栈处理;协议栈处理完成后则通过调用上层应用处理句柄,所述SSL VPN需要处理的入栈数据进入所述内核应用处理层;所述出栈数据处理模块用于依据最大传输数据单元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包头的SSLVPN需要处理的入 栈数据后,内核应用处理层进行相应内核态的数据处理;步骤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需要处理的入栈数据进行当前状态
7下的协议栈处理;协议栈处理完成后则通过调用上层应用处理句柄,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业务的处理速度,并保证SSLVPN服务 器的性能,这将极大的推进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层,并丢弃其他无关的入栈数据,或将接
8收自TCP-IP层的出栈数据发送给设备驱动层;比如SSL VPN需要处理443端口的IP数据,则数据链路层丢弃其他协议类型的入 栈数据或发往其他端口的IP数据以及损坏的入栈数据。TCP-IP层用于将接收自数据链路层的SSL VPN需要处理的入栈数据分解,依次剥 去IP包头和TCP包头,将所述剥去IP包头和TCP包头的SSL VPN需要处理的入栈数据转 交给内核应用处理层;或,将接收自内核应用处理层的出栈数据分段并为每个数据段依次 封装TCP包头和IP包头,然后将封装了 TCP包头和IP包头的出栈数据段转发给数据链路 层;以及链路的发起,建立与关闭;TCP-IP层包括入栈数据处理模块和出栈数据处理模块;所述入栈数据处理模块用于检查接收自数据链路层的所述SSLVPN需要处理的入 栈数据的校验码,将通过校验码检查的所述SSLVPN需要处理的入栈数据依次剥去IP包头 和TCP包头,并依据五元组(协议、本地IP、本地端口、通信对端IP、通信对端端口)来查 找保存在内核内存里的网络连接信息表(Network Connection InformationTable,NCIT), 找出所述SSLVPN需要处理的入栈数据对应的网络数据控制块(Network Data Control Piece, NDCP),如果没有找到则在NCIT中添加对应的网络数据控制块。其中网络连接信息 表是由网络数据控制块组成的一个散列数据表,而网络数据控制块则包含具体每一条网络 连接的控制信息,该控制信息包含通信对端的IP、端口号、最大传输数据单元(Maximum Segment Size, MSS)、标识、状态信息、接收及发送数据缓冲区,上层应用处理句柄和相关定 时器等元素;其中通信对端的IP和端口号用来标识数据处理后发送的目的地址和端口,最 大传输数据单元MSS用来标识数据出栈前分段的大小,标识和状态信息构成协议栈处理模 块表,上层应用处理句柄标示数据出栈后的上层应用处理方法,定时器用来判断重传、超时 ^fn 息。从对应的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包头的SSLVPN需要处理的入栈数据转交给内 核应用处理层。所述协议栈体系结构还可以包括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入栈数据队列中提取的所 述SSLVPN需要处理的入栈数据的校验码,将通过校验码检查的所述SSL VPN需要处理的 入栈数据依次剥去IP包头和TCP包头,并依据五元组(协议,本地IP,本地端口,通信对 端IP,通信对端端口)来查找保存在内核内存里的网络连接信息表(NetworkCormection Information Table,NCIT),找出该数据对应的网络数据控制块(Network Data Control Piece, NDCP),如果没有找到则在NCIT中添加对应的网络数据控制块。其中网络连接信息
11表是由网络数据控制块组成的一个散列数据表,而网络数据控制块则包含具体每一条网络 连接的控制信息,该控制信息包含通信对端的IP、端口号,最大传输数据单元(Maximum Segment Size, MSS)、标识、状态信息、接收及发送数据缓冲区、上层应用处理句柄和相关定 时器等元素;其中通信对端的IP和端口号用来标示数据处理后发送的目的地址和端口,最 大传输数据单元MSS用来标示数据出栈前分段的大小,标识和状态信息构成协议栈处理模 块表,上层应用处理句柄标示数据出栈后的上层应用处理方法,定时器用来判断重传、超时 ^fn 息。从对应的NDCP中提取该数据包的相关控制信息,依据该数据包所处网络连接的 状态和标识查找协议栈处理模块表,找出该数据包当前状态下对应的协议栈处理模块。协 议栈处理模块表是一个二维数组表,由NDCP中的标识和状态信息共同确定对应的协议栈 处理模块,它同时也是状态变迁表,标识TCP-IP层的状态变迁,所述TCP-IP协议层的状态 变迁图如图3所示。进入协议栈处理模块后,则对该数据包进行当前状态下的协议栈处理, 如链路的打开、关闭、合并、建立等。协议栈处理完成后则通过调用上层应用处理句柄,数据 进入内核应用处理层,进行实际的应用数据处理,如SSL的数据的加解密,数据的转发等;步骤D 从TCP-IP层接收到所述剥去IP包头和TCP包头的SSLVPN需要处理的入 栈数据后,内核应用处理层进行相应内核态的数据处理,例如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 服务器的性能,这将极大的推进SSL VPN的普及应用。同时,如果把协议栈体系结构中的内 核应用数据处理层的内核态数据处理进程功能扩展开来,这项技术还能延伸到其它网络安 全产品领域,如防火墙、入侵检测、负载均衡等设备。以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通 技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。
权利要求
一种用于SSL VPN的协议栈体系结构,其特征在于,所述协议栈体系结构自下而上包括设备驱动层、数据链路层、TCP IP层和内核应用处理层;其中,所述设备驱动层用于将网卡捕获的入栈数据发送给数据链路层,或,将接收自数据链路层的出栈数据发送到安全套接层虚拟专用网络SSL VPN中;所述数据链路层用于将接收自设备驱动层的入栈数据根据端口号和协议类型进行分类,将SSL VPN需要处理的入栈数据转发给所述TCP IP层,并丢弃其他的入栈数据,或将接收自所述TCP IP层的出栈数据发送给所述设备驱动层;所述TCP IP层用于将接收自数据链路层的SSL VPN需要处理的入栈数据剥去IP包头和TCP包头,将剥去IP包头和TCP包头之后的SSLVPN需要处理的入栈数据转发给所述内核应用处理层;或,将接收自所述内核应用处理层的出栈数据分段,并为每个出栈数据段封装TCP包头和IP包头,然后将封装了TCP包头和IP包头的出栈数据段转发给所述数据链路层;所述内核应用处理层用于对接收自所述TCP IP层的入栈数据进行内核态数据处理进程;或,将处理后需要发送回SSL VPN的出栈数据发送到所述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所述的协议栈体系结构,其特征在于,所述TCP-IP层包括入栈数据 处理模块和出栈数据处理模块;其中,所述入栈数据处理模块用于检查接收自数据链路层的所述SSLVPN需要处理的入栈数 据的校验码,将通过校验码检查的所述SSLVPN需要处理的入栈数据剥去IP包头和TCP包 头,并查找网络连接信息表NCIT,查找所述SSL VPN需要处理的入栈数据对应的网络数据 控制块NDCP,如果没有找到,则在NCIT中添加对应的网络数据控制块;从对应的NDCP中提 取所述SSL VPN需要处理的入栈数据的相关控制信息,依据所述SSL VPN需要处理的入栈 数据所处网络连接的状态和标识查找协议栈处理模块表,找出所述SSLVPN需要处理的入 栈数据当前状态下对应的协议栈处理模块;进入协议栈处理模块后,则对所述SSL VPN需要处理的入栈数据进行当前状态下的协议栈处理;协议栈处理完成后则通过调用上层应用 处理句柄,所述SSL VPN需要处理的入栈数据进入所述内核应用处理层;所述出栈数据处理模块用于依据最大传输数据单元MSS把接收自内核应用处理层的 出栈数据分成多段,然后为每段封装TCP包头和IP包头,并将封装了 TCP包头和IP包头的 出栈数据段发送到所述数据链路层。
5.如权利要求1-4中任一项所述的协议栈体系结构,其特征在于,所述TCP-IP层进一 步用于链路的发起,建立与关闭。
6.一种应用如权利要求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包头的SSLVPN需要处理的入栈数 据后,内核应用处理层进行相应内核态的数据处理;步骤E 内核应用处理层将处理后的出栈数据转发给TCP-IP层;步骤F:从内核应用处理层接收到所述处理后的出栈数据后,TCP-IP层将所述出栈数 据分段并为每个数据段依次封装TCP包头和IP包头,然后将封装了 TCP包头和IP包头的 出栈数据段转发给数据链路层;步骤G 从TCP-IP层接收到封装了 TCP包头和IP包头的出栈数据段后,数据链路层将 所述封装了 TCP包头和IP包头的出栈数据段通过设备驱动层发送到SSL VPN中。
7.如权利要求6所述的数据处理方法,其特征在于,所述步骤B进一步包括所述数据 链路层将SSL VPN需要处理的入栈数据放入TCP-IP入栈数据队列中;所述步骤C进一步包括从所述TCP-IP入栈数据队列中提取待处理的入栈数据,如果 队列中无数据,则不提取;将所提取的入栈数据剥去IP包头和TCP包头,将剥去IP包头和 TCP包头的SSL VPN需要处理的入栈数据转发给内核应用处理层。
8.如权利要求6所述的数据处理方法,其特征在于,所述步骤F进一步包括所述 TCP-IP层将封装了 TCP包头和IP包头的出栈数据段放入TCP-IP出栈数据队列中;所述步骤G进一步包括所述数据链路层从所述TCP-IP出栈数据队列中提取出栈数据。
9.如权利要求6所述的数据处理方法,其特征在于,所述步骤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需要处理的入栈数 据进入所述内核应用处理层。
10.如权利要求6所述的数据处理方法,其特征在于,所述步骤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的普及应用。
文档编号H04L12/46GK101951378SQ20101029247
公开日2011年1月19日 申请日期2010年9月26日 优先权日2010年9月26日
发明者不公告发明人 申请人:北京品源亚安科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1