用于卸载对多个网络业务流的密码处理的技术的制作方法

文档序号:7741205阅读:156来源:国知局
专利名称:用于卸载对多个网络业务流的密码处理的技术的制作方法
技术领域
本发明一般地涉及对数据流进行密码操作。具体而言,本发明涉及IP安全卸载。
背景技术
IP安全(IPSec)标准提供了用于保护在网络上传送的数据的保密性和完整性的技术。在1998年11月出版的IP Security Internet EngineeringTask Force(IETF)Request for Comments(RFC)2401(IP安全互联网工程任务组请求审议2401)中对IPSec进行了描述。由于IPSec提供了一种在传输控制协议(TCP)/用户数据报协议(UDP)层之下加密和解密数据的方法,所以该保护对于那些传送数据的应用来说是透明的。这样,系统可以利用IPSec而不需在应用级别改变。但是,用于对IPSec数据的密码技术(密码)操作(例如,加密、解密、认证)的算法需要很多处理器周期来执行。用于密码操作的处理器周期减少了应用和协议栈的其它部分可用的周期。这则降低了系统中的总处理能力。
对于这种问题的一个方案是将该密码操作卸载到处理器外部的硬件,例如,网络接口卡(NIC)。一种卸载技术是在数据刚离开网络连接被传送到主机存储器之前就解密该数据。通常,NIC和主机存储器之间的数据传送使用直接存储器访问(DMA)设备来完成。在进入的数据被传送到主机存储器之前的对其解密和认证的处理被称为“在线(inline)接收”。
在线接收的一种替代是被称为“二次使用”的技术,该“二次使用”技术使用带外加速技术来解密收到的分组。所有从网络接收到的分组都经由DMA传送被传送到主机存储器。网络驱动器然后解析每个接收到的分组以将其与对应的安全性关联(security association,SA)匹配。安全性关联是一种包含了加密、解密和/或认证一个分组的数据所必需的信息的数据结构。
假设密码操作处理器位于NIC上,该驱动器必须指示NIC处理器去通过总线传送分组,对该分组进行密码操作然后通过总线将分组发送回主机存储器。结果分组三次通过总线被传送,这是一种对主机资源的低效使用。二次使用技术还引入了延时,该延时可能降低了那些对往返时间延迟敏感的协议的总处理能力,所述协议例如为TCP。
与二次使用相比,在线接收以增大了的复杂度和网络接口开销为代价提供了更好的总体性能。造成开销增大的一个因素是,对于在线接收,网络接口一般为进入的数据流存储SA。为了支持大量的进入数据流,网络接口将存储大量的SA,所述SA一般存储在网络接口的高速缓存存储器中。增大该高速缓存的大小就增大了网络接口的开销。


本发明在附图的图形中以示例方式而非限制方式被示出,其中在所述附图中相似标号表示类似部件。
图1是电子系统的一个实施例的方框图;图2是网络接口的一个实施例的方框图,所述网络接口耦合到网络上;图3是数据分组的一个实施例的方框图;图4是用于对经由网络连接接收到的一个分组的数据进行密码操作的技术的一个实施例的流程图;图5示出了用于从外部存储器取回SA的基址和偏移量寻址技术的一个实施例。
具体实施例方式
本发明描述了用于卸载对多个网络流的密码处理的技术。在以下描述中,为了便于说明,陈述了很多具体细节以便提供对本发明的全面的理解。但是很显然,对于本领域的技术人员本发明可以不利用这些具体细节来实现。而在其它情况下,结构和设备示以方框图形式以避免使本发明不清晰。
说明书中对“一个实施例”或者“实施例”的引用意为结合本实施例描述的特定特征、结构或者特点被包括在本发明的至少一个实施例中。在说明书各个地方出现的短语“在一个实施例中”未必都指同一个实施例。
在一个实施例中,在网络接口处维持一个安全性关联(SA)查询表。SA被存储于网络接口外部的存储器中,例如,存储在主机电子系统的存储器中,该网络接口在该主机电子系统中提供网络访问。该查询表为网络接口控制电路、或者其它系统组件存储足够的信息(例如,唯一密钥和SA数据的位置,或者基址和偏移量)以取回该SA并将该SA用于密码操作。
当要执行密码操作时,SA数据被从外部存储器取回并递送给进行该密码操作的组件。IPSec标准需要检验目的地的互联网协议(IP)地址和IPSec协议以保证匹配。在一个实施例中,在从外部存储器接收到SA数据之后检验这些值。这样,在一个实施例中,查询表条目仅包括SPI(安全参数索引)和足够的寻址信息访问外部存储器中的SA。
图1是电子系统的一个实施例。电子系统100可以是,例如,计算机、个人数字助理(PDA)、机顶盒或者任何其它访问网络的电子系统。系统100包括总线101或者其它通信设备以交流信息,系统100还包括与总线101耦合以处理信息和执行指令的处理器102。系统100还包括存储器103,该存储器103耦合到总线101以存储信息和处理器102要执行的指令。存储器103还可以被用来在处理器102执行指令期间存储临时变量或者其它中间信息。存储器103可以包括随机访问存储器(RAM)、只读存储器(ROM)、闪存或者其它静态或者动态存储介质。
用户接口104耦合到总线101以允许与用户的交互。大容量存储装置105可以耦合到系统100以向存储器103提供指令。大容量存储装置105可以是,例如,磁盘或者光盘及其对应的驱动、存储卡或者其它能够存储机器可读指令的设备。网络接口106可以耦合到总线101以使能系统100经由网络与其它电子系统通信。驱动器代理107可以耦合到系统100以利用硬件完成驱动器功能。驱动器代理107可以是专用集成电路(ASIC)、特殊功能控制器或者处理器、现场可编程门阵列(FPGA)或者其它用来完成驱动器功能的硬件设备。驱动器代理107不是系统100的必要部分。
指令可以从例如磁盘、CD-ROM、DVD的存储装置经由远程连接(例如,通过网络)等被提供给存储器103。在另一个实施例中,硬连线电路可以被用来替代软件指令或者与之结合。指令可以从一种形式的机器可访问介质被提供给存储器103。机器可访问介质包括以机器(例如,计算机)可读形式提供(即,存储并/或传输)信息的任何机制。例如,机器可访问介质包括只读存储器(ROM)、随机访问存储器(RAM)、磁盘存储介质、光存储介质、闪存设备、电、光、声或者其它形式的传播信号(例如,载波、红外信号、数字信号)等。
图2是耦合于网络上的网络接口的一个实施例的方框图。在一个实施例中,网络接口(NI)210是通信接口,其使得电子系统能够与耦合到网络220的其它电子系统通信。例如,NI 210可以是网络接口卡(NIC)。在一个实施例中,业务流被从网络220接收到NI 210的缓冲器211中。
网络接口210还包括控制电路215,该控制电路215提供密码服务216并被耦合到缓冲器211和SA查询表212。控制电路215可以是,例如,硬连线电路、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、通用处理器或者控制器电路或者任何其它类型的逻辑电路。控制电路215的部分功能部件也可以作为电路元件所执行的指令序列被提供。密码服务216提供密码操作(例如,加密、解密、认证)并可以以任何本领域已知的方式实现为任何硬件和软件的组合。
SA查询表212存储指明SA的存储器位置的信息。由于SA查询表212只存储SA的存储器位置,所以网络接口210所能支持的SA的数量与用于SA数据的高速缓存的相同大小的存储器相比是提高了。控制电路215基于从SA查询表212取回的信息从存储器103中的安全性关联表234取回SA。
存储器103包括操作系统(OS)231,该操作系统231控制到处理器102的指令流。在一个实施例中,OS 231是电子系统的最高层的控制。驱动器代理233是较低层的系统控制。驱动器代理233被用来控制网络接口210的操作。应用232可以包括电子系统100能够执行的程序(例如,一个或者多个字处理器、电子邮件(e-mail)程序)。存储器103还包括SA表234,该SA表234为SA的一个数据结构。在一个实施例中,控制电路215访问SA表234以取回SA数据用于在进行密码操作中使用。
图3是数据分组的一个实施例的方框图。在一个实施例中,数据分组301被嵌入到业务流300中。例如,业务流300可以是被多个联网的电子系统用来通信的安全业务流。例如,业务流300可以是两个电子系统之间使用IPSec加密标准来通过互联网传送安全信息的网络业务流。
在一个实施例中,数据分组301由头部310、密码信息320和数据330构成。在一个实施例中,密码信息320由网络协议321、安全性参数索引(SPI)322、源标识符323和目的地标识符324构成。网络协议321、SPI 322、源标识符323和目的地标识符324可以独立于密码信息320存在或者在其外部存在。这样,密码信息由图3所示部件中的一些或者全部构成,或者还包括其它部件,可能更复杂或更简单。
在一个实施例中,密码信息320对于电子系统处理数据分组301来说是必需的。例如,利用IPSec接收数据分组301的电子系统将寻找密码信息320的位置以认证该分组并确定如何对数据330解密。
图4是用于对经由网络连接接收到的一个分组的数据进行密码操作的技术的一个实施例的流程图。图4的处理流是依据IPSec协议来描述的,但是,也可以使用其它协议。
在405处接收网络分组。例如,网络分组可以经由网络接口被接收并存储在网络接口卡的缓冲器中。该分组可以被存储在缓冲器中直到网络处理器或者其它处理设备从该缓冲器取回该分组。
在410处对网络分组头部进行解析。分析网络分组的非有效负载部分以确定该网络分组的各种特性。头部信息可以包括,例如,源地址、目的地地址、SPI、一个或者多个协议类型等。当对IPSec分组进行解密时,头部信息被用来确定所接收的分组是否为IPSec分组。
在一个实施例中,如果在415处分组不是IPSec分组,则网络接口不利用从外部存储器取回的SA对该分组进行解密,455。如果在415处分组是IPSec分组,则网络处理器或者其它处理设备抽取SPI、目的地地址和用来加密该分组的IPSec协议。
在425处,网络处理器所抽取的信息被用来在网络接口上搜索SA查询表。在IPSec实现中,所接收的分组的SPI是唯一的并且可以被用作搜索SA查询表的关键字。SA查询表中的条目提供了关于网络接口外部的存储器中的SA位置的信息。该外部存储器可以是,例如,具有提供SA查询表的网络接口卡的计算机系统主存储器。类似地,任何具有网络接口的电子系统(例如,计算机、机顶盒、个人数字助理、蜂窝式手机),不论是有线的还是无线的,都可以在不同存储位置提供SA查询信息和SA信息。
在一个实施例中,网络接口是64位兼容的,这意味着SA的地址可以在64位地址空间的任何地方。在一个实施例中,为了避免每个查询表条目使用8字节(64位),SA查询表存储每个条目的基址和偏移量。
存在有若干实现偏移量的可替换的实施例。在一个实施例中,SA具有可变大小并且定义每个SA的大小。如果,例如,支持5,000个SA,19位被提供用于偏移量而8位被提供用于表示大小(假设最大为128字节)。这样,总的条目大小是27位。
在另一个实施例中,如果SA大小上是固定的,则只需要“SA索引”。支持64k SA导致16位用于偏移量。如果SA实际上大小并不固定,则假设SA大小固定,外部存储器就没有被最优的利用;但是,查询存储器大小相比支持可变SA大小的情况是被减小了。一般,外部存储器比用来提供SA查询表的存储器要便宜。所以,假设固定的SA大小可以比假设可变SA大小提供更为有效的实现。
根据特定的位大小描述了存储器寻址、SA查询表条目和SA,但是这里所描述的技术可以被用于任何位大小。例如,可以支持128位寻址。SA查询表偏移量值可以大于16位。其它的位大小变化也可以被支持。以下更详细地描述一个用于提供基址和偏移量值作为SA查询表条目的实施例。
如果在430处没有找到SA查询表中对应于所接收的分组的条目,则网络接口不会利用从外部存储器取回的SA来解密该分组,455。如果在430处找到了SA查询表对应所接收到的分组的SPI的条目,则在435处从外部存储器取回一个SA。
在435处将从分组头部取回的目的地IP地址和IPSec协议比较。如果在445处目的地IP地址和IPSec协议不匹配,则在网络接口处不会利用从外部存储器取回的SA解密该分组,455。如果目的地IP地址和IPSec协议在445处匹配,则在450处网络接口利用从外部存储器取回的SA解密该分组。
图5示出了用于从外部存储器取回SA的基址和偏移量寻址技术的一个实施例。图5的SA查询表条目是16位值;但是,可以使用任何查询表条目大小。同样,图5是按照具有四个基址寄存器来描述的;但是,可以支持任何数量的基址寄存器。在一个实施例中,基址寄存器的数量是二的指数(例如,2、4、8、16)。
条目500表示示例的SA查询表条目。条目500具有两个字段,寄存器选择(RS)字段和索引(SA_INDEX)字段。RS字段被用来确定多个基址寄存器(例如,510、512、514、516)中的哪个提供外部存储器中的基址以对存储在该外部存储器中的SA块进行寻址。
使用基址寄存器和索引值所带来的一个优点是外部存储器中被用来存储SA的存储单元的块不需要对于所有SA连续的。当必须支持大量SA时这是很有利的,因为对于网络驱动器要分配大量物理上连续的存储器是很困难的。
条目500中的SA_INDEX提供了相对于由适当的基址寄存器提供的基址的偏移量。在一个实施例中,该偏移量以SA来提供。换句话说,假设128字节的SA,则索引值的每次增加表示128字节的存储器块。
基址寄存器510、512、514和516存储分别对应于所关联的存储器块,存储器520、522、524和526的地址。在一个实施例中,每个存储器块都位于主机电子系统的主存储器中;但是,存储器块可以是其它类型的存储器,例如,闪存。存储器块还可以位于不同存储器系统中,例如,一些基址可以在主机系统的主存储器中而其它基址可以在其它存储器系统中。
例如,如果条目500的RS字段包括二进制“11”,基址寄存器516中的地址可以被用来对外部存储器块进行寻址。基址寄存器510、512、514和516可以是网络接口上的硬件寄存器,或者该基址寄存器可以是网络接口上的存储器中的存储单元,或者该基址寄存器可以是主机电子系统内的寄存器和/或存储单元。
基址寄存器516存储指向外部存储器块526的指针或者其开始地址。条目500的SA_INDEX字段指明自存储于基址寄存器516中的基址的偏移量。基址和偏移量值的组合所指明的存储单元是对应于SA查询表条目500的SA的存储单元。SA可以被网络接口处理器所取回用于在进行密码操作中使用。
在以上说明书中,本发明已经参照其具体实施例被描述了。但是显然,可以对本发明作出各种修改和改变而不背离本发明的广泛的精神和范围。因此,本说明书和附图被视为是说明性的,而非限制性的。
权利要求
1.一种方法,包括在网络接口处存储对应于网络流的安全性关联的查询信息,所述查询信息用来标识网络接口可访问的外部存储器中所述安全性关联的位置;在所述网络接口可访问的外部存储器中存储所述安全性关联;以及基于所述查询信息从所述网络接口可访问的外部存储器取回所述安全性关联。
2.如权利要求1所述的方法,其中所述查询信息包括基址和偏移量值。
3.如权利要求1所述的方法,其中所述查询信息是基于安全性参数索引被搜索的。
4.如权利要求1所述的方法,所述网络接口可访问的外部存储器包括主机电子系统的存储器系统的一个或者多个部分。
5.如权利要求4所述的方法,其中所述主机电子系统包括耦合到网络的计算机系统。
6.如权利要求1所述的方法,其中所述网络接口包括耦合在主机电子系统的总线和网络之间的网络接口卡。
7.一种包括计算机可访问介质以提供指令的物品,所述指令当被一个或者多个处理器所执行时引起一个或者多个电子设备在网络接口处存储对应于网络流的安全性关联的查询信息,所述查询信息用来标识网络接口可访问的外部存储器中所述安全性关联的位置;在所述网络接口可访问的外部存储器中存储所述安全性关联;以及基于所述查询信息从所述网络接口可访问的外部存储器取回所述安全性关联。
8.如权利要求7所述的物品,其中所述查询信息包括基址和偏移量值。
9.如权利要求7所述的物品,其中所述查询信息是基于安全性参数索引被搜索的。
10.如权利要求7所述的物品,所述网络接口可访问的外部存储器包括主机电子系统的存储器系统的一个或者多个部分。
11.如权利要求10所述的物品,其中所述主机电子系统包括耦合到网络的计算机系统。
12.如权利要求7所述的物品,其中所述网络接口包括耦合在主机电子系统的总线和网络之间的网络接口卡。
13.一种方法,包括基于存储在接收网络流的网络接口的查询信息从所述网络接口外部的存储器取回对应于所述网络流的安全性关联;以及利用从所述外部存储器取回的所述安全性关联对所述网络流进行密码操作。
14.如权利要求13所述的方法,其中所述查询信息包括基址和偏移量值。
15.如权利要求13所述的方法,其中所述查询信息是基于安全性参数索引被搜索的。
16.如权利要求13所述的方法,其中所述网络接口可访问的外部存储器包括主机电子系统的存储器系统的一个或者多个部分。
17.如权利要求16所述的方法,其中所述主机电子系统包括耦合到网络的计算机系统。
18.如权利要求13所述的方法,其中所述网络接口包括耦合在主机电子系统的总线和网络之间的网络接口卡。
19.一种包括计算机可访问介质以提供指令的物品,所述指令当被一个或者多个处理器所执行时引起所述一个或者多个处理器基于存储在接收网络流的网络接口的查询信息从所述网络接口外部的存储器取回对应于所述网络流的安全性关联;以及利用从所述外部存储器取回的安全性关联对所述网络流进行密码操作。
20.如权利要求19所述物品,其中所述查询信息包括基址和偏移量值。
21.如权利要求19所述的方法,其中所述查询信息是基于安全性参数索引被搜索的。
22.如权利要求19所述的方法,其中所述网络接口可访问的外部存储器包括主机电子系统的存储器系统的一个或者多个部分。
23.如权利要求22所述的方法,其中所述主机电子系统包括耦合到网络的计算机系统。
24.如权利要求19所述的方法,其中所述网络接口包括耦合在主机电子系统的总线和网络之间的网络接口卡。
25.一种方法,包括从网络流接收网络分组,以及基于存储在接收所述网络流的网络接口的查询信息从所述网络接口外部的存储器取回对应于所述网络流的安全性关联。
26.如权利要求25所述的方法,其中所述接收所述网络分组包括从操作系统接收所述网络分组。
27.如权利要求25所述的方法,其中所述接收所述网络分组包括从网络接收所述网络分组。
28.如权利要求25所述的方法,其中所述查询信息包括基址和偏移量值。
29.如权利要求28所述的方法,其中所述查询信息是基于安全性参数索引被搜索的。
30.如权利要求25所述的方法,其中所述网络接口可访问的外部存储器包括主机电子系统的存储器系统的一个或者多个部分。
31.如权利要求30所述的方法,其中所述主机电子系统包括耦合到网络的计算机系统。
32.如权利要求25所述的方法,其中所述网络接口包括耦合在主机电子系统的总线和网络之间的网络接口卡。
33.一种包括计算机可访问介质以提供指令的物品,所述指令当被一个或者多个处理器所执行时引起一个或者多个电子设备从网络流接收网络分组,以及基于存储在接收所述网络流的网络接口的查询信息从所述网络接口外部的存储器取回对应于所述网络流的安全性关联。
34.如权利要求33所述的物品,其中引起一个或者多个电子设备接收所述网络分组的所述指令序列包括当被一个或者多个处理器执行时引起一个或者多个电子设备从操作系统接收所述网络分组的指令。
35.如权利要求33所述的物品,其中引起一个或者多个电子设备接收所述网络分组的所述指令序列包括当被一个或者多个处理器执行时引起一个或者多个电子设备从网络接收所述网络分组的指令。
36.如权利要求33所述的物品,其中所述查询信息包括基址和偏移量值。
37.如权利要求33所述的物品,其中所述查询信息是基于安全性参数索引被搜索的。
38.如权利要求33所述的物品,其中所述网络接口可访问的外部存储器包括主机电子系统的存储器系统的一个或者多个部分。
39.如权利要求33所述的物品,其中所述网络接口包括耦合在主机电子系统的总线和网络之间的网络接口卡。
40.一种装置,包括网络接口,用来接收通过网络传播的表示一个分组的数据的信号;耦合到所述网络接口的缓冲器,所述缓冲器用来存储该分组的数据;耦合到所述缓冲器的控制电路,所述控制电路用来从所述分组的数据取回信息;和耦合到所述处理器的高速缓存存储器,所述高速缓存存储器用来存储标识外部存储器中的存储单元的地址信息,其中对应于所述分组的数据的安全性关联存储在所述外部存储器中,存储在所述高速缓存中的所述标识信息的位置由从所述分组的数据取回的信息来标识,其中所述控制电路基于存储在所述高速缓存中的标识信息从所述外部存储器取回所述安全性关联。
41.如权利要求40所述的装置,其中所述查询信息包括基址和偏移量值。
42.如权利要求40所述的方法,其中所述查询信息是基于安全性参数索引被搜索的。
43.如权利要求40所述的方法,其中所述网络接口可访问的外部存储器包括主机电子系统的存储器系统的一个或者多个部分。
全文摘要
在网络接口处维持一个安全性关联(SA)查询表。SA数据被存储在该网络接口外部的存储器中,例如,存储在主机电子系统的存储器中,在该主机电子系统中网络接口提供网络访问。查询表为该网络接口或者其它系统组件存储足够的信息用来访问所述SA数据。当进行密码操作时,SA数据被从外部存储器取回并被递送给进行该密码操作的处理器。在一个实施例中,在从外部存储器取回SA数据之后检验目的地互联网协议(IP)地址和IPSec协议。在一个实施例中,查询表条目只包含自基址值的偏移量值,用来定位所述SA数据。
文档编号H04L29/06GK1552149SQ02817495
公开日2004年12月1日 申请日期2002年8月2日 优先权日2001年9月6日
发明者林登·米恩尼克, 林登 米恩尼克 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1