一种用于vpn的加解密芯片驱动方法

文档序号:7596880阅读:274来源:国知局
专利名称:一种用于vpn的加解密芯片驱动方法
技术领域
本发明涉及计算机网络技术领域,特别是涉及一种用于防火墙VPN的Nitrox系列 加解密芯片的改进的驱动方法。
背景技术
VPN(Virtual Private Network,虚拟专用网络)是指通过特殊的、加密的通讯协 议在Internet上位于不同地方的两个或多个企业内部网之间建立一条专有的通讯线路, 它的主要功能包括防火墙功能、认证、加密和隧道化。VPN是对企业内部网的扩展,可以帮助远程用户、公司分支机构、商业伙伴及供应 商同公司的内部网建立可信的加密传输通道,以保证数据的安全传输。建立和保持该加密 传输通道需要用到一些复杂的加解密算法,如3DES (Triple DES,三重DES)、AES (Advanced Encryption Standard,高级加密标准)等。这些加密算法功能既可以由纯软件来实现,也 可以由一些硬件,例如加速芯片来完成。加解密加速芯片可以大大加速VPN的加解密运算 速度,从而提高防火墙产品的VPN性能。图1为Cavium公司的Nitrox系列加解密加速芯片的驱动程序示意图。图中Core 部分为内核态驱动部分,NPX指加解密芯片硬件,操作系统相关接口(Operating System Dependent Interface)之上的部分为用户态 API (Application Programming Interface, 应用程序接口)函数,提供给上层业务,例如IPSec (Internet协议安全性)或SSL (Secure Sockets Layer,安全套接层)协议栈进行调用。具体地,如图1所示,Nitrox芯片的原有驱动程序的内核态部分可以编译成内核 模块,或者直接编译到Linux内核中。这样,在加载模块文件或者内核启动时就会调用该内 核态驱动的初始化函数进行包括缓存管理、上下文管理、密匙存储管理等芯片初始化/配 置操作;芯片初始化成功后,可以通过打开Linux设备的方式获得芯片的操作权限,使用设 备控制接口就可以对芯片进行访问;建立VPN通道时,首先通过协商写入通道的SA (system administrator,超级用户),调用内核态驱动提供的用户态SA写入接口就可以将SA写入 芯片;通道建立后就可以利用内核态驱动提供的用户态报文处理接口对报文进行加解密处 理。以上接口都是通过设备控制接口的方式调用Nitrox芯片的原有驱动程序的内核态部 分的请求管理(Request Manager)模块对芯片进行访问。在Request Manager模块的处 理中,要把报文从用户态内存空间拷贝到内核态内存空间,再交给芯片处理,芯片处理完成 后,通过响应管理(Response Manager)模块通知用户态程序,再把报文由内核态内存空间 拷贝回用户态内存空间。对于基于Linux操作系统并且工作在Linux用户态的防火墙产品,若直接使 用Nitrox芯片的原有驱动程序,虽然也可以实现防火墙的VPN硬件加解密功能,但经过 Nitrox芯片处理的数据报文都要经由Linux内核态再到用户态程序,这样就必须经过一次 内核态到用户态的数据报文拷贝。数据报文拷贝增加了处理开销,使得整个系统的VPN吞 吐性能大大下降。同时,工作在Linux内核态的驱动程序也存在着调试困难,容易造成操作系统崩溃等弊病。

发明内容
(一 )、要解决的技术问题本发明要解决的技术问题在于如何实现在Linux用户态对加解密芯片进行驱动 控制,以提高防火墙系统的VPN转发性能。(二)、技术方案为解决上述技术问题,本发明的技术方案提供了一种用于VPN的加解密芯片驱动 方法,该方法包括以下步骤Sl 在Linux用户态通过设备控制接口的方式实现PCI访问接口 ;S2 在Linux用户态通过所述PCI访问接口对加解密芯片进行访问,并进行加解密 芯片的初始化;S3 通过在用户态对芯片控制寄存器的直接访问的方式将SA写入加解密芯片,以 建立VPN通道;S4:通过在用户态对芯片控制寄存器的直接访问对报文进行加解密处理。优选地,所述步骤Sl通过为Linux操作系统内核打上用户态驱动补丁来实现。优选地,所述步骤S2通过设置从芯片控制寄存器到Linux操作系统用户态空间的 映射来实现。(三)、有益效果根据本发明的技术方案,可以方便地在用户态下对加解密芯片的初始化、加解密 运算操作进行调试,提高了防火墙系统的VPN转发性能。


图1为现有的Nitrox系列加解密加速芯片的驱动方法示意图;图2为本发明的加解密芯片驱动方法的流程图。
具体实施例方式下面结合附图和实施例,对本发明的具体实施方式
作进一步详细描述。以下实施 例用于说明本发明的目的,但不用来限定本发明的范围。如图2所示,本发明的用于防火墙VPN的加解密芯片驱动方法包括下述步骤 S1-4 Sl 在Linux用户态通过设备控制接口的方式实现PCI访问接口 ;具体地,可以为Linux操作系统内核打上用户态驱动补丁,该补丁的主要作用包 括为Linux操作系统内核提供访问PCI (PeripheralComponent Interconnect,外设组件 互连)配置空间的设备控制接口,由此在Linux用户态实现了 PCI访问接口。本步骤的目的是使得可以从Linux用户态访问PCI内存空间。S2 在Linux用户态通过所述PCI访问接口对加解密芯片进行访问,并进行加解密 芯片的初始化;具体地,可以设置从加解密加速芯片控制寄存器到Linux操作系统用户态空间的映射;优选地,使用标准的C库函数完成芯片寄存器到用户态空间的映射。本步骤的目的是使得可以从Linux用户态访问加解密芯片。S3 通过在用户态对芯片寄存器的直接访问的方式将SA写入加解密芯片,以建立 VPN通道;本步骤中由用户态建立VPN通道的步骤与原驱动中内核态操作方式不同,可以提 高与上层软件的结合型,并方便调试。S4 通过在用户态对芯片寄存器的直接访问对报文进行加解密处理。与原驱动中内核态操作方式不同的是,本步骤中,整个报文处理流程都在用户态, 减少了系统调用,从而提高了 VPN的处理性能,同时也可以防止出现问题时造成的内核崩溃。为实现上述加解密芯片驱动方法,还需要事先对现有的Nitrox芯片的驱动程序 进行改进,具体改进方法包括A、对原Nitrox驱动中的目录结构进行修改,将树状结构修改为扁平式结构。即 将原Nitrox驱动程序中的所有Makefile文件放置在同一个目录下,并将文件格式修改为 预置的统一格式。本步骤的目的是为Linux操作系统内核态设置唯一的驱动目录,所述驱动目录包 括重新编译后的原Nitrox驱动目录中的所有Makefile文件。然后可以将设置于Linux内 核态的Mtrox驱动程序全部移植到用户态。其中,Makefile文件是指工程的自动化批量 编译工具“make”所需要的配置文件。B、设置内核态与用户态之间的普通函数调用具体地,如A所述将原Linux内核态的Nitrox驱动程序全部移植到用户态,需要 将原驱动程序中内核态与用户态之间所有的设备控制接口修改为普通的函数调用,例如, 初始化、报文加解密处理接口等。即将系统调用修改为函数调用。经过以上修改,可以通过步骤S1-4方便地在用户态下对加解密芯片的初始化、加 解密运算操作进行调试。以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通 技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有 等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。
权利要求
1.一种用于VPN的加解密芯片驱动方法,其特征在于,所述方法包括以下步骤51在Linux用户态通过设备控制接口的方式实现PCI访问接口 ;52在Linux用户态通过所述PCI访问接口对加解密芯片进行访问,并进行加解密芯片 的初始化;53通过在用户态对芯片控制寄存器的直接访问的方式将SA写入加解密芯片,以建立 VPN通道;S4:通过在用户态对芯片控制寄存器的直接访问对报文进行加解密处理。
2.如权利要求1所述的用于VPN的加解密芯片驱动方法,其特征在于,所述步骤Sl通 过为Linux操作系统内核打上用户态驱动补丁来实现。
3.如权利要求1所述的用于VPN的加解密芯片驱动方法,其特征在于,所述步骤S2通 过设置从芯片控制寄存器到Linux操作系统用户态空间的映射来实现。
全文摘要
本发明提供了一种用于VPN的加解密芯片驱动方法,包括以下步骤S1在Linux用户态通过设备控制接口的方式实现PCI访问接口;S2在Linux用户态通过所述PCI访问接口对加解密芯片进行访问,并进行加解密芯片的初始化;S3通过在用户态对芯片控制寄存器的直接访问的方式将SA写入加解密芯片,以建立VPN通道;S4通过在用户态对芯片控制寄存器的直接访问对报文进行加解密处理。通过该方法可以方便地在Linux用户态下对加解密芯片的初始化、加解密运算操作进行调试。
文档编号H04L29/06GK102111321SQ201110048530
公开日2011年6月29日 申请日期2011年3月1日 优先权日2011年3月1日
发明者殷建儒, 王博, 王琳 申请人:汉柏科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1