CN102780625B - 一种实现ipsec vpn加解密处理的方法及装置 - Google Patents

一种实现ipsec vpn加解密处理的方法及装置 Download PDF

Info

Publication number
CN102780625B
CN102780625B CN201210264843.3A CN201210264843A CN102780625B CN 102780625 B CN102780625 B CN 102780625B CN 201210264843 A CN201210264843 A CN 201210264843A CN 102780625 B CN102780625 B CN 102780625B
Authority
CN
China
Prior art keywords
data
pointer
encryption
decryption
buffer queue
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
Application number
CN201210264843.3A
Other languages
English (en)
Other versions
CN102780625A (zh
Inventor
罗俊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Chengdu Westone Information Industry Inc
Original Assignee
Chengdu Westone Information Industry Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Chengdu Westone Information Industry Inc filed Critical Chengdu Westone Information Industry Inc
Priority to CN201210264843.3A priority Critical patent/CN102780625B/zh
Publication of CN102780625A publication Critical patent/CN102780625A/zh
Application granted granted Critical
Publication of CN102780625B publication Critical patent/CN102780625B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明属于数据通信领域,尤其涉及一种采用异步机制高速实现IPSEC VPN加解密处理的方法及装置。本发明针对现有技术的问题,提供一种实现IPSEC VPN加解密处理的方法及装置,采用三个内核线程共享对网卡输入的数据进行异步处理,同时几个线程(模块)还可同时并行工作,从而实现数据报文的处理率及协处理器的利用效率的大幅提高。本发明主要包括数据加解密处理线程、数据加解密处理线程、数据发送处理线程,通过数据接收处理线程将网卡接收到未经加密协处理器处理的数据报文经生产者指针存入环形缓冲队列,并触发数据加解密处理线程工作等完成本设计,本发明主要应用于IPSEC VPN数据处理领域。

Description

一种实现IPSEC VPN加解密处理的方法及装置
技术领域
本发明属于数据通信领域,尤其涉及一种采用异步机制高速实现IPSEC VPN加解密处理的方法及装置。
背景技术
术语解释:
IPESC:Internet Protocol Security的缩写,表示Internet 协议安全性。是一种开放标准的框架结构,通过使用加密的安全服务以确保在 Internet 协议 (IP) 网络上进行保密而安全的通讯;
VPN:虚拟专用网络(Virtual Private Network ,简称VPN)指的是在公用网络上建立专用网络的技术。其之所以称为虚拟网,主要是因为整个VPN网络的任意两个节点之间的连接并没有传统专网所需的端到端的物理链路,而是架构在公用网络服务商所提供的网络平台,如Internet、ATM(异步传输模式〉、Frame Relay (帧中继)等之上的逻辑网络,用户数据在逻辑链路中传输。它涵盖了跨共享网络或公共网络的封装、加密和身份验证链接的专用网络的扩展。VPN主要采用了隧道技术、加解密技术、密钥管理技术和使用者与设备身份认证技术。
目前,市场上的IPSEC VPN设备在处理数据报文加解密的时候,通常是分别为加解密协处理器和网卡维持单独的数据队列,并采用生产者-消费者模型实现数据报文的处理,其处理模型如图1所示:
在网络处理器中,分别用网卡接收队列、网卡发送队列管理网卡接收的未经加解密协处理器处理的数据报文和经加解密协处理器处理后可立即由网卡发送的数据报文,在加解密协处理器中,则用协处理器队列管理等待处理的数据报文,这三个队列都分别配置有生产者和消费者两个队列指针。
在中央处理器的调度下,网卡接收的数据报文经指针生产者1指示按序存入网卡接收队列,再经指针消费者1指示从网卡接收队列中按序读取数据报文,同步传输至协处理器,在指针生产者2的指示下按序存入协处理器队列,协处理器经指针消费者2从协处理器队列中读取数据报文进行处理,此时中央处理器需等待协处理器的加解密结果才能继续下一流程,即触发数据发送处理线程工作。处理完的报文同步传输给网卡,在指针生产者3的指示下按序存入网卡发送队列,网卡再在指针消费者3的指示下从网卡发送队列中按序读取数据报文进行发送。
现有的这种网络数据报文的处理方法,由于其不但要维持各队列内的数据报文处理,还要时刻维持队列间的同步以及系统内部的实时数据传输,中央处理器经常处于等待状态,造成数据报文的处理效率以及协处理器的利用效率都非常低,而且还需要占用很多的内存资源和中央处理器的开销,数据报文的处理效率(即吞吐率)最高还不到30%
发明内容
本发明所要解决的技术问题是:针对现有技术中用多个单独的数据队列来分别管理加解密协处理器和网卡中的数据报文,从而为了维持各队列内的数据报文处理,以及维持队列间的同步和系统内部的实时数据传输,使得数据报文的处理效率及协处理器的利用效率很低,且内存资源和中央处理器的开销过大的问题提供一种采用异步机制高速实现IPSEC VPN加解密处理的方法及装置,采用内核线程共享的数据接收处理线程(数据接收处理模块)、数据加解密处理线程(数据加解密处理模块)、数据发送处理线程(数据发送处理模块)对网卡输入的数据进行异步处理,同时几个线程(模块)还可同时并行工作,操作队列的生产者、操作者、消费者三个指针实现数据报文的互斥、协同处理,顺序协调队列中数据报文的进出以及与加解密协处理器的通信,加解密协处理器工作时收发网络数据和其他的数据处理工作仍然可以同时进行,从而可以极大地减少数据传输和同步维持带来的开销,实现数据报文的处理率及协处理器的利用效率的大幅提高。除此之外,通过设定生产者指针、操作者指针、消费者指针相对的位置关系,使得对环形缓冲队列中数据的处理效率进一步提高,除此之外,对网卡输入的不同的数据报文处理采用并行处理,除此之外,在环形缓冲队列中的报文数据经过数据发送处理线程处理后对数据报文的数据缓冲区进行清空,确保下一帧存储在此数据缓冲区的数据的准确性。
本发明采用的技术方案如下:
一种实现IPSEC VPN加解密处理的方法包括步骤:
步骤一:网卡中断发生时,数据接收处理线程将网卡接收到未经加密协处理器处理的数据报文经生产者指针存入环形缓冲队列,并触发数据加解密处理线程工作;
步骤二:数据加解密处理线程通过操作者指针从所述环形缓冲队列中获取数据报文发送给加解密协处理器进行处理后,在经由操作者指针存入环形缓冲队列,并触发数据发送处理线程工作;
步骤三:数据发送处理线程通过消费者指针从环形缓冲队列获取数据报文发送给网卡;
所述数据接受处理线程、数据加解密处理线程、数据发送处理线程采用异步方式分别对所述网卡输入的数据报文进行处理后,再通过网卡输出;同时对网卡输入的不同的数据报文处理采用并行处理,数据接受处理线程、数据加解密处理线程、数据发送处理线程对环形缓冲队列共享。
所述步骤一中当所述生产者指针将数据存入环形缓冲队列,所述生产者指针地址加一位不超过消费者指针地址时,数据接收处理线程将网卡接收到的未经加解密协处理器处理的数据报文经生产者指针将数据报文存入环形缓冲队列缓存区,设置缓存区当前状态为FULL状态。
所述步骤二中当操作者指针地址加一位不超过生产者指针地址时,数据加解密处理线程经操作者指针将环形缓冲队列缓冲区为FULL状态的数据交加密协处理器进行加解密处理,完成处理的数据报文经操作者指针存回环形缓冲队列并设置环形缓冲队列缓冲区当前状态为DIRTY状态。
所述步骤三中当消费者指针地址加一位不超过操作者指针地址时,数据发送处理线程经消费者指针从环形缓冲队列中获取已经加解密协处理器处理的数据报文交网卡进行发送,并设置环形缓冲队列缓冲区当前状态为EMPTY状态。
所述对已发送给网卡的已经加解密协处理器处理的数据报文在所述环形缓冲队列中对应的数据缓冲区进行清空,所述生产者指针、操作者指针、消费者指针为互斥、协同的指针变量,数据接收处理线程、数据加解密处理线程、数据发送处理线程之间进行流量控制。
所述触发数据加解密处理线程工作、触发数据发送线程工作中触发机制是异步软中断方式(区别于常见的同步等待查询方式),网卡发生中断指的是当网卡有接收到来自VPN设备的未经协处理器处理的数据报文或来自网络的数据报文。
一种实现IPSEC VPN加解密处理的方法,还包括初始化步骤,所述初始化步骤具体为:初始化数据接收处理线程、数据加解密处理线程、数据发送处理线程、生产者指针、操作者指针及消费者指针,构建环形缓冲队列,启动数据接收处理线程、数据加解密处理线程、数据发送处理线程,所述数据接收处理线程、数据加解密处理线程、数据发送处理线程分别对应生产者指针、操作者指针、消费者指针,初始化加解密协处理器,将生产者指针、操作者指针、消费者指针置位,指向环形队列首项,队列中的所有数据状态皆置为EMPTY;
一种实现IPSEC VPN加解密处理的装置包括:
数据接收处理模块,用于接收网卡传送的未经加解密协处理器处理的数据报文,将该数据报文存入所述环形缓冲队列;
数据加解密处理模块,用于将所述环形缓冲队列中的数据报文发送给加解密协处理器处理,然后将加解密协处理器处理完的数据报文存回所述环形缓冲队列; 
数据发送处理模块,用于将所述环形缓冲队列中已经加解密协处理器处理的数据报文发送给网卡。
所述生产者指针、操作者指针及消费者指针为互斥的指针变量。
所述数据发送模块还用于对已发送给网络处理器的已经协处理器处理的数据报文在所述环形缓冲队列中对应的数据缓冲区进行清空。
综上所述,由于采用了上述技术方案,本发明的有益效果是:
1)                 采用异步机制高速实现IPSEC VPN加解密处理的方法及装置,采用内核线程共享的数据接收处理线程(数据接收处理模块)、数据加解密处理线程(数据加解密处理模块)、数据发送处理线程(数据发送处理模块)对网卡输入的数据进行异步处理,操作队列的生产者、操作者、消费者三个指针实现数据报文的互斥、协同处理,顺序协调队列中数据报文的进出以及与加解密协处理器的通信,加解密协处理器工作时收发网络数据和其他的数据处理工作仍然可以同时进行,从而可以极大地减少数据传输和同步维持带来的开销,实现数据报文的处理率及协处理器的利用效率的大幅提高;
2)                 通过设置当所述生产者指针将数据存入环形缓冲队列,所述生产者指针地址加一位不超过消费者指针地址时,数据接收处理线程将网卡接收到的未经加解密协处理器处理的数据报文经生产者指针将数据报文存入环形缓冲队列缓存区,设置缓存区当前状态为FULL状态;当操作者指针地址加一位不超过生产者指针地址时,数据加解密处理线程经操作者指针将环形缓冲队列缓冲区为FULL状态的数据交加密协处理器进行加解密处理,完成处理的数据报文经操作者指针存回环形缓冲队列并设置环形缓冲队列缓冲区当前状态为DIRTY状态,当消费者指针地址加一位不超过操作者指针地址时,数据发送处理线程经消费者指针从环形缓冲队列中获取已经加解密协处理器处理的数据报文交网卡进行发送,并设置环形缓冲队列缓冲区当前状态为EMPTY状态,以上生产者指针、操作者指针、消费者指针分别对应与数据接收处理线程、数据加解密处理线程、数据发送处理线程的配合准确的处理未经加密协处理器处理的数据,使得处理过程中队环形缓冲队列的处理效率进一步提高;
3)                 对网卡输入的不同的数据报文处理采用并行处理;
4)                 在环形缓冲队列中的报文数据经过数据发送处理线程处理后对数据报文的环形缓冲队列缓冲区进行清空,确保下一帧存储在此数据缓冲区的数据的准确性。
附图说明
本发明将通过例子并参照附图的方式说明,其中:
图1是现有的网络数据报文处理模型;
图2是本发明网络数据报文处理方法的实现流程图;
图3是本发明网络数据报文处理模型;
图4是本发明网络数据报文处理装置的结构图
图中41-网卡              42-处理系统 
43-加解密协处理器           44-中央处理器
421-初始化模块              422数据接收处理模块
423-数据发送处理模块         424-数据加解密处理模块        。
具体实施方式
本说明书中公开的所有特征,或公开的所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合。
本说明书(包括任何附加权利要求、摘要和附图)中公开的任一特征,除非特别叙述,均可被其他等效或具有类似目的的替代特征加以替换。即,除非特别叙述,每个特征只是一系列等效或类似特征中的一个例子而已。
本发明相关术语解释
生产者及生产者指针:分别与生产者-消费者模型中生产者及生产者指针定义相同。
消费者及消费者指针:分别与生产者-消费者模型中消费者及消费者指针定义相同。
操作者指针:在生产者和消费者之间对等待加解密以及完成加解密处理的数据报文进行传递的指针。
FULL状态:表示该缓冲区已填入等待加解密处理的数据报文。
DIRTY状态:表示该缓冲区的数据报文已经完成加解密处理,可以发送。
EMPTY状态:表示该缓冲区的数据报文已经被发送,可填入新的等待加解密处理的数据报文。
数据接收处理线程、数据加解密处理线程、数据发送处理线程异步的方式独立工作,上一线程的处理结果存入环形缓冲队列并通知下一线程即可,例如数据接收处理线程处理结果存入环形缓冲队列并通知数据加解密处理线程;数据加解密处理线程处理结果存入环形缓冲队列并通知数据发送处理线程;数据发送处理线程处理结果存入环形缓冲队列并通知数据接收处理线程。
生产者指针、操作者指针、消费者指针进行协同和互斥,通过内核消息互相通知。
工作原理:本发明采用异步机制高速实现IPSEC VPN加解密处理的方法及装置,通过采用环形缓冲队列统一管理网络数据报文,并通过生产者指针、操作者指针、消费者指针以及对应的数据接收处理线程、数据加解密处理线程、数据发送处理线程来实现网络数据报文收发以及加解密处理的并行,从而可以极大地减少数据传输和同步维持带来的开销,实现数据报文的处理率及加解密协处理器的利用效率的大幅提高。
实施例一:一种实现IPSEC VPN加解密处理的方法,包括步骤:
步骤一:网卡中断发生时,数据接收处理线程将网卡接收到未经加密协处理器处理的数据报文经生产者指针存入环形缓冲队列,并触发数据加解密处理线程工作;
步骤二:数据加解密处理线程通过操作者指针从所述环形缓冲队列中获取数据报文发送给加解密协处理器进行处理后,在经由操作者指针存入环形缓冲队列,并触发数据发送处理线程工作;
步骤三:数据发送处理线程通过消费者指针从环形缓冲队列获取数据报文发送给网卡;
所述数据接受处理线程、数据加解密处理线程、数据发送处理线程采用异步方式分别对所述网卡输入的数据报文进行处理后,再通过网卡输出;同时对网卡输入的不同的数据报文处理采用并行处理,数据接受处理线程、数据加解密处理线程、数据发送处理线程对环形缓冲队列共享。
实施例二: 在实施例一基础上,所述步骤一中当所述生产者指针将数据存入环形缓冲队列,所述生产者指针地址加一位不超过消费者指针地址时,数据接收处理线程将网卡接收到的未经加解密协处理器处理的数据报文经生产者指针将数据报文存入环形缓冲队列缓存区,设置缓存区当前状态为FULL状态。
实施例三:在实施例二基础上,所述步骤二中当操作者指针地址加一位不超过生产者指针地址时,数据加解密处理线程经操作者指针将环形缓冲队列缓冲区为FULL状态的数据交加密协处理器进行加解密处理,完成处理的数据报文经操作者指针存回环形缓冲队列并设置环形缓冲队列缓冲区当前状态为DIRTY状态。
实施例四,在实施例三基础上,所述步骤三中当消费者指针地址加一位不超过操作者指针地址时,数据发送处理线程经消费者指针从环形缓冲队列中获取已经加解密协处理器处理的数据报文交网卡进行发送,并设置环形缓冲队列缓冲区当前状态为EMPTY状态。
实施例五,在实施例基础上,所述对已发送给网卡的已经加解密协处理器处理的数据报文在所述环形缓冲队列中对应的数据缓冲区进行清空,所述生产者指针、操作者指针、消费者指针为互斥、协同的指针变量,数据接收处理线程、数据加解密处理线程、数据发送处理线程之间进行流量控制。
实施例六,在实施例四或五基础上,所述触发数据加解密处理线程工作、触发数据发送线程工作中触发机制是异步软中断方式,网卡发生中断指的是当网卡有接收到来自VPN设备的未经协处理器处理的数据报文或来自网络的数据报文。
实施例七:在实施例一至六之一基础上,所述步骤一之前还包括初始化步骤,所述初始化步骤具体为:初始化数据接收处理线程、数据加解密处理线程、数据发送处理线程、生产者指针、操作者指针及消费者指针,构建环形缓冲队列,启动数据接收处理线程、数据加解密处理线程、数据发送处理线程,所述数据接收处理线程、数据加解密处理线程、数据发送处理线程分别对应生产者指针、操作者指针、消费者指针,初始化加解密协处理器,将生产者指针、操作者指针、消费者指针置位,指向环形队列首项,队列中的所有数据状态皆置为EMPTY。
实施例八,图2示出了本发明实现IPSEC VPN加解密处理方法的实现流程,详述如下:
在步骤一(S201)中,构建环形缓冲队列,并为该队列配置三个指针,分别设为生产者指针、操作者指针、消费者指针,同时启动数据接收处理线程、数据加解密处理线程、数据发送处理线程三个内核线程,所述启动数据接收处理线程、数据加解密处理线程、数据报文发送处理线程分别对应生产者指针、操作者指针、消费者指针。
加解密协处理器/网卡初始化时,预分配n个缓冲区,通过双向指针将该n个缓冲区连接成环形队列,并为该队列配置三个互斥的指针,分别设为生产者指针、操作者指针、消费者指针,同时,将生产者指针、操作者指针、消费者指针置位,指向环形队列首项,队列中的所有数据状态皆置为EMPTY。
在步骤二(S202)中,网卡中断发生时,网卡接收的数据报文经生产者指针存入环形缓冲队列。
当网卡有接收到来自设备内部的未经协处理器处理的数据报文,或来自网络的数据帧时,网卡中断发生,继而通知数据报文接收处理线程,将网卡接收的本地数据报文解析后的数据报文在生产者指针的指示下按序存入上述环形缓冲队列,并将队列中相应数据状态置为FULL。
在步骤三(S203)中,数据加解密处理线程经操作者指针从环形缓冲队列中获取数据报文交加解密协处理器进行处理,加解密协处理器工作时收发网络数据和其他的数据处理工作仍然可以同时进行,协处理器处理完的报文再经操作者指针存入队列,并将队列中相应数据状态置为DIRTY。
在步骤四(S204)中,数据发送处理线程经消费者指针从队列中获取处理完的数据报文交网卡进行发送。
基于上述方法的网络数据报文处理模型如图3所示:
在本发明实施例中,缓冲区1、缓冲区2、缓冲区3、…、缓冲区n3、…、缓冲区n2、…、缓冲区n1、…、缓冲区n、缓冲区1依次被连接成环形缓冲队列,缓冲区1的首地址为队列首项,初始化时,指针生产者指针、操作者指针、消费者指针均指向环形缓冲队列首项,环形缓冲队列所有数据的初始状态皆置为EMPTY,其中生产者指针、操作者指针、消费者指针依次通过环形缓冲队列。
网卡中断发生时,数据接收处理线程在生产者指针的指示下,将数据报文依次存入缓冲区1、缓冲区2、……并将其状态一一置为FULL;当有一个或者多个数据报文完成存入队列时,即可通过异步软中断事件等方式触发下一过程,即数据加解密处理线程在操作者指针的指示下,从缓冲区1的首个存储地址开始,逐个获取队列中的状态为FULL的数据报文交加解密协处理器进行相应处理,完成处理的数据报文则实时地经操作者指针存回队列并置状态为DIRTY;当队列中有一个或者多个数据报文完成处理时,即可触发处理该数据报文的下一过程,即数据发送处理线程在消费者指针的指示下,从缓冲区1的首个存储地址开始,逐个获取队列中已经过处理即状态为DIRTY的数据报文进行发送,同时,对该数据报文在队列中对应的数据缓冲区进行清空并置状态为EMPTY。
在上述过程中,生产者指针、操作者指针及消费者指针沿着环形队列移动,且操作者指针地址加一位不超过生产者指针地址,消费者指针地址加一位不超过操作者指针地址,生产者指针加一位不超过消费者指针地址,数据接收处理线程只能将数据存入状态为EMPTY的环形缓冲队列数据,数据加解密处理线程只能对状态为FULL的环形缓冲队列数据进行操作,数据发送处理线程只能发送状态为DIRTY的环形缓冲队列数据。而网卡接收数据报文、加解密协处理器处理数据报文以及网卡发送数据报文这三个过程在满足以上条件的前提下则可以并行,在同一时间处理不同数据报文的不同流程(接收、发送、加解密),从而形成流水线的处理机制,各个过程之间无需等待与同步维持,也不需要数据传输。
图4是本发明实现IPSEC VPN加解密处理装置,其中处理系统42即示出了本发明实现IPSEC VPN加解密处理装置,为了便于说明,仅示出了与本发明实施例相关的部分,这些部分可以是软件、硬件或软硬件结合的模块:
实施例一, 一种实现IPSEC VPN加解密处理的装置(处理系统42)包括初始化模块421、数据接受处理模块422、数据处理模块423以及数据发送处理模块424。
初始化模块421用于构建环形缓冲队列,设置并初始化生产者、操作者及消费者指针,启动数据接收处理线程、数据加解密处理线程、数据发送处理线程三个内核线程。其中生产者指针、操作者指针、消费者指针依从缓冲区1、缓冲区2、缓冲区3、…、缓冲区n3、…、缓冲区n2、…、缓冲区n1、…、到缓冲区n,生产者指针、操作者指针、消费者指针地址分别依次增加一位,当各个指针地址从缓存区n的地址加一位后默认成为缓存区1的地址。
数据接收处理模块422(用于接收网卡传送的未经加解密协处理器处理的数据报文,将该数据报文存入所述环形缓冲队列)在中央处理器 44的信号启动下,接收网卡41传送的需经加解密协处理器43处理的数据报文,通过生产者指针将数据报文按序存入环形缓冲队列,并控制生产者指针不超过消费者指针(生产者指针地址加一位不超过消费者指针地址),置FULL状态,并向中央处理器 44发送中断信号,以启动处理该数据报文的数据报文加解密处理模块。
中央处理器 44则根据上述中断信号发送启动信号至数据加解密处理模块424(用于将所述环形缓冲队列中的数据报文发送给加解密协处理器处理,然后将加解密协处理器处理完的数据报文存回所述环形缓冲队列),由数据加解密处理模块424通过操作者指针将环形缓冲队列中的数据报文发送给加解密协处理器43处理,并将处理完的数据报文再通过操作者指针存回环形缓冲队列,以及控制操作者指针不超过生产者指针(操作者指针地址加一位不超过生产者指针),置DIRTY状态,并发送中断信号至中央处理器44。
数据发送模块423(数据发送处理模块,用于将所述环形缓冲队列中已经加解密协处理器处理的数据报文发送给网卡)在中央处理器 44的信号启动下,通过消费者指针将环形缓冲队列中已经加解密协处理器43处理的数据报文发送给网卡41,以及控制消费者指针不超过操作者指针(消费者指针地址加一位不超过操作者指针地址),并清空队列中完成发送的数据缓冲区,置EMPTY状态。
在本发明实施例中,上述数据接受处理模块422、数据加解密处理模块424、数据发送处理模块423一旦启动后,各模块对数据报文的处理可以并行,在同一时间处理不同数据报文的不同流程(接收、发送、加解密),从而形成流水线的处理机制。
本发明实施例通过将现有技术中的三个独立的数据报文处理队列统一为一个环形队列,并通过操作队列的三个指针(生产者指针、操作者指针、消费者指针)和环形缓冲队列数据缓冲区的三个状态(FULL、DIRTY、EMPTY)实现与网卡和加解密协处理器间的数据高效传递,数据报文只在环形队列中维持一份拷贝,不但可以节省大量的内存资源,而且还可以消除现有技术中因为频繁分配和释放内存资源所带来的时间、内存与中央处理器的消耗,并且可以将等待和同步带来的时间延迟和中央处理器的资源消耗减小到最低,同时,利用指针生产者指针、操作者指针、消费者指针之间的互斥以及FULL、DIRTY、EMPTY三个状态之间的迁移可以实现对流量的控制,利用三个内核处理线程的并行工作可以实现快速流水线处理流程,从而使数据报文处理的吞吐率达到最佳,从而实现对网络数据报文进行快速的安全处理和转发处理。
经实践检测,采用本发明实施例提供的高速实现IPSEC VPN加解密处理的方法及系统进行优化后的IPSEC VPN设备,数据报文的处理效率可达到90%以上。可以通过实验表格进行证明。
实施例二:在实施例一基础上,所述生产者指针、操作者指针及消费者指针为互斥的指针变量。
实施例三:所述数据发送模块还用于对已发送给网络处理器的已经协处理器处理的数据报文在所述环形缓冲队列中对应的数据缓冲区进行清空。
本发明并不局限于前述的具体实施方式。本发明扩展到任何在本说明书中披露的新特征或任何新的组合,以及披露的任一新的方法或过程的步骤或任何新的组合。 

Claims (5)

1.一种实现IPSEC VPN加解密处理的方法,其特征在于,包括步骤:
步骤一:网卡中断发生时,数据接收处理线程将网卡接收到未经加密协处理器处理的数据报文经生产者指针存入环形缓冲队列,并触发数据加解密处理线程工作; 
步骤二:数据加解密处理线程通过操作者指针从所述环形缓冲队列中获取数据报文发送给加解密协处理器进行处理后,在经由操作者指针存入环形缓冲队列,并触发数据发送处理线程工作;
步骤三:数据发送处理线程通过消费者指针从环形缓冲队列获取数据报文发送给网卡;
所述数据接收处理线程、数据加解密处理线程、数据发送处理线程采用异步方式分别对所述网卡输入的数据报文进行处理后,再通过网卡输出;同时对网卡输入的不同的数据报文处理采用并行处理,数据接收处理线程、数据加解密处理线程、数据发送处理线程对环形缓冲队列共享;所述步骤一中当所述生产者指针将数据存入环形缓冲队列,所述生产者指针地址加一位不超过消费者指针地址时,数据接收处理线程将网卡接收到的未经加解密协处理器处理的数据报文经生产者指针将数据报文存入环形缓冲队列缓存区,设置缓存区当前状态为FULL状态;所述步骤二中当操作者指针地址加一位不超过生产者指针地址时,数据加解密处理线程经操作者指针将环形缓冲队列缓冲区为FULL状态的数据交加密协处理器进行加解密处理,完成处理的数据报文经操作者指针存回环形缓冲队列并设置环形缓冲队列缓冲区当前状态为DIRTY状态;所述步骤三中当消费者指针地址加一位不超过操作者指针地址时,数据发送处理线程经消费者指针从环形缓冲队列中获取已经加解密协处理器处理的数据报文交网卡进行发送,并设置环形缓冲队列缓冲区当前状态为EMPTY状态;所述对已发送给网卡的已经加解密协处理器处理的数据报文在所述环形缓冲队列中对应的数据缓冲区进行清空,所述生产者指针、操作者指针、消费者指针为互斥、协同的指针变量,数据接收处理线程、数据加解密处理线程、数据发送处理线程之间进行流量控制;所述触发数据加解密处理线程工作、触发数据发送线程工作中触发机制是异步软中断方式,网卡发生中断指的是当网卡有接收到来自VPN设备的未经协处理器处理的数据报文或来自网络的数据报文;所述步骤一之前还包括初始化步骤,所述初始化步骤具体为:初始化数据接收处理线程、数据加解密处理线程、数据发送处理线程、生产者指针、操作者指针及消费者指针,构建环形缓冲队列,启动数据接收处理线程、数据加解密处理线程、数据发送处理线程。
2.根据权利要求1所述的一种实现IPSEC VPN加解密处理的方法,其特征在于所述所述数据接收处理线程、数据加解密处理线程、数据发送处理线程分别对应生产者指针、操作者指针、消费者指针,初始化加解密协处理器,将生产者指针、操作者指针、消费者指针置位,指向环形队列首项,队列中的所有数据状态皆置为EMPTY。
3.根据权利要求1所述的一种实现IPSEC VPN加解密处理的装置,其特征在于包括:
初始化模块用于构建环形缓冲队列,设置并初始化生产者、操作者及消费者指针,启动数据接收处理线程、数据加解密处理线程、数据发送处理线程三个内核线程,其中生产者指针、操作者指针、消费者指针依次通过环形缓冲队列,生产者指针、操作者指针、消费者指针地址分别依次增加一位,当各个指针地址从缓存区n的地址加一位后默认成为缓存区1的地址;
数据接收处理模块,用于接收网卡传送的未经加解密协处理器处理的数据报文,将该数据报文存入所述环形缓冲队列;
数据加解密处理模块,用于将所述环形缓冲队列中的数据报文发送给加解密协处理器处理,然后将加解密协处理器处理完的数据报文存回所述环形缓冲队列; 
数据发送处理模块,用于将所述环形缓冲队列中已经加解密协处理器处理的数据报文发送给网卡。
4.根据权利要求3所述的一种实现IPSEC VPN加解密处理的装置,其特征在于所述生产者指针、操作者指针及消费者指针为互斥的指针变量。
5.根据权利要求4所述的一种实现IPSEC VPN加解密处理的装置,其特征在于所述数据发送模块还用于对已发送给网络处理器的已经协处理器处理的数据报文在所述环形缓冲队列中对应的数据缓冲区进行清空。
CN201210264843.3A 2012-07-30 2012-07-30 一种实现ipsec vpn加解密处理的方法及装置 Expired - Fee Related CN102780625B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210264843.3A CN102780625B (zh) 2012-07-30 2012-07-30 一种实现ipsec vpn加解密处理的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210264843.3A CN102780625B (zh) 2012-07-30 2012-07-30 一种实现ipsec vpn加解密处理的方法及装置

Publications (2)

Publication Number Publication Date
CN102780625A CN102780625A (zh) 2012-11-14
CN102780625B true CN102780625B (zh) 2014-12-17

Family

ID=47125386

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210264843.3A Expired - Fee Related CN102780625B (zh) 2012-07-30 2012-07-30 一种实现ipsec vpn加解密处理的方法及装置

Country Status (1)

Country Link
CN (1) CN102780625B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105991475B (zh) * 2015-02-27 2020-01-07 中兴通讯股份有限公司 报文接收方法、装置及中央处理器
CN105991350A (zh) * 2015-06-29 2016-10-05 杭州迪普科技有限公司 业务处理方法、装置以及网络设备
CN107169064A (zh) * 2017-05-04 2017-09-15 聚好看科技股份有限公司 数据异步处理方法及装置
CN107172072B (zh) * 2017-06-09 2020-11-06 中国电子科技集团公司第四十一研究所 一种基于FPGA的IPSec数据流高速处理系统及方法
CN108664233A (zh) * 2018-03-29 2018-10-16 百度在线网络技术(北京)有限公司 无人驾驶车辆中的数据处理方法、装置、系统及存储介质
CN109040790B (zh) * 2018-06-28 2020-12-22 苏州科达科技股份有限公司 数据加解密方法、装置及电子设备
CN109729024B (zh) * 2018-12-29 2023-05-12 中盈优创资讯科技有限公司 数据包处理系统及方法
CN110287023B (zh) * 2019-06-11 2021-12-10 广州海格通信集团股份有限公司 消息处理方法、装置、计算机设备和可读存储介质
CN113014528B (zh) * 2019-12-19 2022-12-09 厦门网宿有限公司 报文处理方法、处理单元及虚拟专用网络服务器
CN112543197B (zh) * 2020-12-04 2022-09-06 中船重工(武汉)凌久电子有限责任公司 一种xfrm框架下对ipsec实现硬件加解密的方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004247810A (ja) * 2003-02-12 2004-09-02 Mitsubishi Electric Corp 暗号化装置及び通信装置及び復号装置及び暗号化方法及び復号方法及び暗号化プログラム及び復号プログラム
CN101471839A (zh) * 2007-12-29 2009-07-01 北京天融信网络安全技术有限公司 多核异步实现IPSec vpn的方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040039936A1 (en) * 2002-08-21 2004-02-26 Yi-Sern Lai Apparatus and method for high speed IPSec processing

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004247810A (ja) * 2003-02-12 2004-09-02 Mitsubishi Electric Corp 暗号化装置及び通信装置及び復号装置及び暗号化方法及び復号方法及び暗号化プログラム及び復号プログラム
CN101471839A (zh) * 2007-12-29 2009-07-01 北京天融信网络安全技术有限公司 多核异步实现IPSec vpn的方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
一种Linux网络硬件加密高性能并发调度方法;董贵山等;《计算机应用》;20080131;第28卷(第1期);第66-70页、图4 *

Also Published As

Publication number Publication date
CN102780625A (zh) 2012-11-14

Similar Documents

Publication Publication Date Title
CN102780625B (zh) 一种实现ipsec vpn加解密处理的方法及装置
CN101114903B (zh) 一种吉比特无源光网络系统中高级加密标准加密装置及其实现方法
CN105515758B (zh) 基于Modbus协议的数据并行加密通信方法和系统
CN110289952B (zh) 一种量子数据链保密终端及保密通信网络
CN101969376B (zh) 一种具有语义安全的自适应加密系统及方法
CN103716166A (zh) 一种自适应混合加密方法、装置以及加密通信系统
CN101309261B (zh) 一种网络数据报文处理方法及系统、设备
CN104780333A (zh) 基于fpga的高带宽视频源接口适配装置
CN102664729A (zh) 一种基于fpga的aes加解密网络通讯装置及其实现方法
CN102104544A (zh) 硬件加速的多核处理器ip隧道分片报文流保序方法
IN2013MU03527A (zh)
CN103413094A (zh) 一种适用于航天器ctu的遥测加密系统
CN105681131B (zh) 主备系统及其并行输出方法
CN103346878B (zh) 一种基于fpga高速串行io的保密通信方法
CN102739393B (zh) 基于apb总线的硬件加密uart装置
CN102984235A (zh) 一种屏幕数据的共享方法及系统
CN103207775B (zh) 采用gpu加速进行实时网络流应用程序的处理方法
CN102970134B (zh) 将硬件密码设备的算法用于pkcs#7数据封装的方法及系统
CN106453258B (zh) 高速数据加解密系统
CN103944738B (zh) 一种支持功能扩展的交换机
CN208861323U (zh) 一种高速安全加密Micro SD卡
CN102843235A (zh) 一种报文加/解密方法
CN107395338A (zh) 基于非线性标称矩阵的视频混沌保密通信设备及方法
CN203251310U (zh) 量子密钥发送接收一体控制器
CN103220273B (zh) 一种cpu快速转发报文的方法及系统

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: 20141217

Termination date: 20210730