用于高速传输网际网络协议安全(ipsec)处理之两个并行引擎的制作方法

文档序号:7634079阅读:391来源:国知局
专利名称:用于高速传输网际网络协议安全(ipsec)处理之两个并行引擎的制作方法
技术领域
本发明大体上系关于计算机装置之领域,而尤系关于接口连接主装置或系统与网络之方法和系统。
背景技术
譬如个人计算机之主计算系统,在通讯网路上时常操作为节点,而各节点能够从网络上接收数据和发送数据至网络。数据经由网络以群组(group)或分段(segment)之方式传送,其中数据之结构和分段系由网络操作系统协议所支配,并存在有许多不同之协议。事实上,对应于不同协议之数据分段能够共同存在于相同之通讯网路。为了使节点接收和发送信息封包,节点装备了负责传送信息于通讯网路和主系统之间之周边网络接口装置。为了传输,于主系统中的处理器单元依照网络操作系统协议而构成数据或信息封包,并将该等数据或信息封包传送至网络周边装置。于接收时,处理器单元撷取并译码由该网络周边装置所接收之封包。处理器单元反应于从关联于网络周边装置之中断服务例程(interrupt service routine)来之指令,而执行许多其发送和接收功能。当接收之封包需要作处理时,可由该网络接口设备发出中断指令至该主系统。习用上在封包中之所有的字节或于封包中之一些固定数目之字节由网络周边装置所接收后,会发出中断指令。
网络一般操作为一系列或堆栈之各层,而各层提供服务于正上方之层。可能有许多不同网络层之架构,而对于不同之网络,层数、各层之功能和内容可能不同。国际标准组织(ISO)已发展出一种开放系统互连(OSI)模式,定义7层协议堆栈,包括应用层(例如,第7层)、表达层、对话层、传输层、网络层、数据链路层、以及实体层(例如,第1层),其中在通讯站中,由应用层开始将控制从一层传递至下一层,进行至底部层,经过频道至次一个通讯站,并备份(back up)此阶层(hierarchy)。主系统之用户通常与执行于最上层(例如,应用层)之软件程序互动,并且该等讯号由最下层(例如,实体层)送至网络另一边。
TCP/IP堆栈为一种受欢迎的网络架构,其中应用层为档案传输协议(FTP)、超文件传输协议(hyper text transfer protocol;HTTP)、或安全壳(secure shell;SSH)其中之一。于该等网络中,典型之传输层协议为传输控制协议(TCP)或用户数据报协议(user datagram protocol;UDP),而网络层使用譬如网际网络协议(IP)、地址解析协议(addressresolution protocol;ARP)、反转地址解析协议(RARP)、或网际网络控制讯息协议(internet control message protocol;ICMP)之各协议。数据链路层通常分成二个次层,包括媒体存取控制(MAC)次层,用来控制于网络中之计算机如何获得数据之存取并允许发送该数据;以及逻辑链接控制(LLC)次层,用来控制讯框同步(frame synchronization)、数据流控制、和错误检核。实体层传送如电脉冲、光讯号、和/或射频讯号之比特流之数据经过网络于实体(例如电和机械)级。实体层执行以太网、RS232、异步传输模式(ATM)、或其它具有实体层组件之协议,其中以太网为由IEEE 802.3所界定之受欢迎的局域网络(LAN)。
于网络协议堆栈中之一层或多层时常提供用于误差侦测之工具,包括核对和(checksumming),其中传送的讯息包括典型依照讯息中设定位(set bit)之数目来计算而得出以数字表示的核对和之值。接收网络节点藉由使用与发送器相同之算法来计算核对和并将所得结果与接收讯息中之核对和数据相比较而验证核对和之值。若为不相同之值,则接收器能够假定于传输过网络期间已发生错误。于一个例子中,TCP和IP层(例如,分别为第4层和第3层)典型使用核对和于网络应用中之错误侦测。
于网络协议堆栈中亦可将数据划分或分段于一层或多层。例如,TCP协议提供将从应用层所接收之数据划分成该等分段,其中标头(header)附加至各分段。分段标头包含发送器(sender)和接收埠(recipient ports)、分段排序信息、以及核对和。例如,使用分段,其中下层(lower layer)限制数据讯息要小于从上层(upper layer)来的讯息大小。于一个实施例中,TCP讯框可以是64千字节(kbytes)大小,反之以太网络(Ethernet)于实体层仅可允许更小之讯框。于此情况,TCP层可将大的TCP讯框分段成较小之分段讯框,以适应以太网络之大小限制。
一个或多个网络协议层可使用譬如加密(encryption)和鉴别(authentication)之安全机制,以防止未授权之系统或使用者读取数据,和/或确定数据是从所期望之来源来。例如,已采用于IP层(例如,OSI模式之第3层)之IP安全(IPsec)标准以促进数据之安全交换,该IPsec已广泛使用来执行虚拟私人网络(VPN)。IPsec支持二个操作模式,包括传输模式(transport mode)和信道模式(tunnel mode)。于传输模式,发送器加密IP讯息之数据酬载部分,而不加密IP标头,反之于信道模式,加密标头和酬载。于接收器系统,于IP层解密讯息,其中发送器和接收器系统经由安全关联(security association;SA)而共享公开密码钥匙(public key)。密码钥匙之共享一般经由网际网络安全关联和密码钥匙管理协议(ISAKMP)而完成,该ISAKMP允许接收器获得公开密码钥匙,并使用数字认证(digital certificate)确认发送器。
于传统网络,上和中层之任务执行于主系统软件。当于主计算机中之应用软件程序需要转移数据至网络上之另一装置时,该应用传送如封包之数据至主操作系统(OS)之TCP层软件。该TCP层软件创造包括数据包和TCP标头之TCP讯框,并亦实施任何所需之TCP分段和产生核对和。然后主IP层软件创造IP标头和标尾(trailer)、以及以太网(MAC)标头,并执行任何选择之IPsec安全处理。所得到的IP讯框然后提供至网络接口以传送至网络。于接收器主机,接收之讯框然后藉由于接收器主CPU中之IP软件解密和/或鉴别,并验证该IP核对和。接收器TCP层软件然后验证该TCP核对和,并再组合分段之TCP讯框成为用于上层软件应用目的地之讯息。然而,此种习知之系统要求主软件执行许多(若非所有)之第3层和第4层(例如,IP和TCP/DUP)功能,包括分段、核对和、和安全处理。这些功能是典型计算密集的、需要相当数量之主处理耗用时间(overhead)。因此,需要在连上网络之主系统中减少处理负载以改进网络系统和方法。

发明内容
下列表示本发明之简化概述,以便提供本发明之一些态样之基本了解。此概述并不扩张本发明之总和观点。此概述既非要证明本发明之密码钥匙或关键组件,亦非要描述本发明之范围。更确切地说,此概述之主要目的是要以简化之形式表示本发明之一些概念,作为将陈述于后之本发明之更详细说明之序文。本发明系关于接口连接主系统与网络之系统和方法。
本发明之一个态样系关于用来接口连接主系统与网络的网络接口系统。此网络接口系统包括总线接口系统、媒体存取控制系统、和安全系统。此安全系统系操作选择地加密和鉴别输出数据。依照本发明,安全系统包括二个处理器,用来加密和鉴别输出数据。输出数据包系以交替方式送至一个处理器,或至另一个处理器。
本发明消除了当从主处理器卸除(offloading)安全处理时可能发生之瓶颈。于习知的安全处理,加密后接着鉴别。此意味着虽然在接收侧能够同时实施加密和鉴别,但是在发送侧却不能够同时实施加密和鉴别。在发送侧设有多个并行的处理器以防止传输较接收为慢。
本发明之另一个态样系关于包含调适以执行IPsec处理之安全系统之单一集成电路。此安全系统包括至少两个发送IPsec处理器。
欲完成上述和相关之目的,下列之说明和所附图式详细提出本发明之某些显示态样和实施情形。此等显示态样和实施情形表示使用了本发明之原理,但稍许变化之方法。从下列本发明之详细说明,当考虑结合图式,则本发明之其它目的、优点和新颖特征将变得很清楚。


图1A显示依照本发明之一个或多个态样例示网络接口系统之示意图;图1B显示发送安全处理器范例之示意图;图1C显示依照本发明之另一个态样例示发送IPsec输入数据流控制器之操作之流程图;图1D显示依照本发明之又另一个态样例示发送IPsec输出数据流控制器之操作之流程图;图2显示实施本发明之各种态样之另一个范例网络接口系统之示意图;
图3显示实施图2的网络接口系统范例单晶网络控制器之示意图;图4显示使用图3之范例网络控制器与网络接口连接之主系统之示意图;图5A显示于图2之主系统中于具有指针指至描述符环及接收状态环之主系统存储中控制状态区块之示意图;图5B显示于图2之主系统之主存储器中控制器状态区块之示意图;图5C显示于图2的网络接口系统中描述符管理单元缓存器之示意图;图5D显示于图2的网络接口系统之描述符管理单元中于主系统存储和指针缓存器中之范例发送描述符环之示意图;图5E显示于图2的网络接口系统中范例发送描述符之示意图;图5F显示于图5E之发送描述符中发送旗标字节之示意图;图5G显示于图2的网络接口系统中范例接收描述符之示意图;图5H显示于图2的网络接口系统之描述符管理单元中于主系统存储中之范例接收描述符环和接收状态环,以及指针缓存器之示意图;图5I显示于图2的网络接口系统中于主系统存储中之范例接收状态环和于描述符管理单元中之指针缓存器之示意图;图5J显示于主系统存储中范例接收状态环登录之示意图;图6A及图6B分别显示从TCP经由传输模式ESP处理用于IPv4和IPv6之输出数据之示意图;图6C及图6D分别显示从TCP经由信道模式ESP处理用于IPv4和IPv6之输出数据之示意图;图6E显示范例ESP标头、ESP标尾、鉴别数据、和保护数据之示意图;图7A及图7B分别显示用于IPv4和IPv6之范例TCP讯框格式示意图;图8A及图8B分别显示于图2的网络接口系统中,藉由输出ESP和AH处理修正讯框栏之表;图8C及图8D分别显示于图3的网络接口系统中用于IPv4和IPv6之虚拟标头核对和计算之示意图;
图9显示于图3的网络接口系统中输出数据之安全处理之示意图;图10显示于图3的网络接口系统中输入网络数据之安全处理之示意图;图11A显示于图3的网络接口系统中范例安全关联表写入存取之示意图;图11B显示于图3的网络接口系统中范例SA地址缓存器格式之示意图;图11C显示于图3的网络接口系统中范例SPI表登录格式之示意图;图11D显示于图3的网络接口系统中范例SA存储登录格式之示意图;图12显示于图3的网络接口系统中用于输出发送讯框之第4层之核对和更详细计算之示意图;以及图13A及图13B提供依照本发明之另一态样于图3的网络接口系统中第4层之核对和之流程图。
具体实施例方式
现将参照图式而说明本发明之一个或多个实施例,其中各图中相同之号码系用来参照相同的组件。
图1A显示接口连接主系统6与网络8之范例网络接口系统2,其中网络接口系统2可操作以提供从主系统6来之输出数据至网络8,以及提供从网络8来之输入数据至主系统6。网络接口系统2包括能够操作而与主系统6耦接(譬如经由于主系统中之总线)之总线接口系统4,其中调适该总线接口系统4以在网络接口系统2与主系统6之间传输数据。于网络接口系统2中之媒体存取控制(MAC)系统10可操作而譬如经由兼容之收发器(图中未显示)之媒体独立接口(例如,MII、GMII、等等)而与网络8耦接,其中MAC系统10可操作而在网络接口系统2与网络8之间传输数据。可使用任何之电路或配置之组件,或可配置以传输数据至网络接口系统2和从网络接口系统2传输数据,而构成总线接口系统4和MAC系统10。详言之,系统4和10可包括任何硬件组合,譬如逻辑装置、模拟电路、电连接器、等等,该等组件可藉由于该接口系统2中之软件和/或韧体而程序化或可配置。
网络接口2复包括与总线接口系统4和MAC系统10耦接的存储系统12,以及与存储系统12耦接的安全系统14。存储系统12储存传输于网络8与主系统6之间的输入和输出数据。存储系统12包括第一和第二存储,存储A 16和存储B 18。该第一存储16与总线接口系统4及安全系统14耦接,用来于安全处理之前储存输出数据,并于安全处理之后储存输入数据。第二存储18与MAC系统10及安全系统14耦接,用来于安全处理之前储存输入数据,并于安全处理之后储存输出数据。存储系统12与其第一和第二存储16和18可以是任何形式之存储电路,挥发性或非挥发性,包括但不限于配置为具有适当控制电路之先入先出(FIFO)存储之随机存取存储(RAM)电路。虽然分别显示为第一和第二存储16和18,但是存储系统12可以是分别划分成第一和第二存储区域16和18之分离之存储或单元存储系统。再者,存储16和18其中之一或二者可包括用来处理输入和输出数据之分离之存储电路,或可选择使用划分(例如,以静态或动态方式)成储存输入和输出数据及控制信息之单一存储电路。
配置或可配置安全系统14,以选择性地执行安全处理于网络接口系统2中之输入和/或输出数据。可以使用任何适当之电子装置,譬如模拟和逻辑电路,来构成安全系统14,配置或可配置以执行安全处理用于接口系统2中之输入和/或输出数据。于一个执行中,安全系统14为IPsec系统,调适而选择地提供输入和输出数据之鉴别、加密、和解密功能,如下文中将进一步说明和描述。然而,在本发明范围内可构思其它形式之安全系统和其它型式之安全处理。
于网络接口系统2中之系统4、10、12、和14可以经由软件和/或韧体而选择地配置或程序化。举例而言,网络接口系统2之系统4、10、12、和14之其中一个、一些、或全部可藉由在主系统6中之软件和/或经由譬如于系统2中之编码EEPROM或外部EEPROM之韧体、或于系统2外部之其它存储装置藉由EEPROM接口而予配置。
各种之系统4、10、12、和14可以依照从主系统6所获得之控制或其它的型式之信息而选择地操作,其中此种信息可与一个或多个处理和/或传输于主系统6和网络8之间之数据部分相关联。举例而言,网络接口系统2可从相关于将传送到网络8之输出数据讯框之主系统6获得控制信息。再者,系统4、10、12、和14可以提供控制、状态、或其它型式之信息至该主系统6。
安全系统14包括接收IPsec处理器22、发送IPsec输入数据流控制器28、二个具有对应于输入缓冲器26和27以及输出缓冲器24和25之发送IPsec处理器20和21、以及发送IPsec输出数据流控制器30。输入数据流控制器28从存储16读取数据,并交替地发送数据包至输入缓冲器26和27。发送IPsec处理器20和21本质上并行操作,从其对应之输入缓冲器26和27读取数据,执行数据之安全处理,并将该处理之数据写入其对应之输出缓冲器24和25。输出数据流控制器30交替地从输出缓冲器24和25读取处理之数据,并使用与从存储16读取封包相同之次序,将处理之数据写入到存储18。
因为当数据藉由习用之执行于加密数据之鉴别而予以加密时,二个发送IPsec处理器与范例网络接口系统2中之一个接收IPsec处理器相匹配。于接收时,此情况致能并行实施解密和鉴别。然而,于传输时,于鉴别能够开始之前,加密之数据必须可用。习知之鉴别和加密算法,譬如以下所示之例子,系为递归(resursive)。由于他们的递归性质,而除了对于每一字节处理时间外,尚具有关联用于各数据包之各鉴别和加密之耗用时间。甚至当鉴别和加密操作为管线连接(pipelined)时,对于加密和鉴别之耗用时间附加到发送侧。这些耗用时间显著地增加处理时间,尤其是对于小的数据包。本发明透过使用二个或多个发送IPsec处理器并行操作,而减少于发送侧之IPsec处理时间,因此创造于接收侧之较佳之匹配处理速度。
图1B显示范例发送IPsec处理器50之示意图。范例发送IPsec处理器50包括发送安全处理控制模块54、ESP鉴别引擎56、AH鉴别引擎58、和ESP加密引擎60。发送安全处理控制模块54从输入缓冲器52经由ESP鉴别引擎56、AH鉴别引擎58、和ESP加密引擎60之其中无任何一个、其中一个、或其中多个,而选择地引导数据包。当需要加密和鉴别时,ESP加密引擎之输出路由(routed)至一个或多个鉴别引擎。范例IPsec处理器50能够于封包同时执行ESP和AH鉴别,并当实施时,二者执行并行操作。一旦完成处理,处理之数据放在输出缓冲器62中。
引擎包括各有其功能之专用硬件。此外,引擎包括串行之多级,各级以相同的速率处理数据。供应至引擎之序列数据经由从引擎之开始至其结束之串行级而传送数据,因此于某些义意上能够认为是管线。串行之各级有可能其所有皆于相同之时间操作于分离之数据块。管线较之于使用中央处理者提供了更快速之数据处理。
图1A之输入缓冲器26和27以及输出缓冲器24和25能够是任何适当的大小和配置。例如,缓冲器能够形成从大约32字节至大约1024字节,而最好是有256个字节。该等缓冲器能够是二个分离之存储,或是单一个划分之存储。较理想之情况是,缓冲器足够的大,由此当网络接口系统12发送一系列之短数据包时(对于该等数据包于IPsec处理之耗用时间是很显著的),该发送IPsec处理器20和21保持继续操作。
输入数据流控制器28读取从存储16来用于传输之数据包,并以交替方式引导该等封包于二个IPsec处理器20和21之输入缓冲器26和27之间。图1C显示用于输入数据流控制器28之范例作业程序70之流程图。数据流控制器28切换于输入缓冲器26和27之间,由此于任何给定之时间仅有一个为“现用的(current)”缓冲器。于步骤71开始,数据流控制器28检核于存储16中将传输之数据。若无数据存在,则控制器28于步骤72中等候,然后再检核。或者情况是,当数据正等待传输时,另一个处理器或电路能够发讯号给该控制器28。
当发送大的数据包时,可能对于输入缓冲器变得存满。因此,于步骤75中控制器28读取从存储16来之数据块,并于步骤76中将数据写至现用之缓冲器中之前,先于步骤73中检核于现用缓冲器中之空间。若输入缓冲器存满了,则于步骤73中再检核所留空间之前,控制器28先于步骤74中等候。于步骤76中将数据写入现用缓冲器之后,于步骤77中控制器28检核是否已经到达封包之末端。若已经到达了封包之末端,则于步骤78中切换现用缓冲器,且控制器28进行至步骤71,于该步骤71控制器28寻找次一个数据包。倘若尚未到达封包之末端,则控制器返回至步骤73,并准备从存储16中读取另一个数据块。范例作业程序70于切换至另一个缓冲器之前,造成了将整个封包送至现用缓冲器。
输出数据流控制器30读取从输出缓冲器24和25来之处理数据,并将处理之数据写入到存储18中。图1D显示用于输出数据流控制器30之范例作业程序80之流程图。数据流控制器30在输出缓冲器24和25之间切换,由此于任何给定的时间仅一个是“现用的”缓冲器。
输出数据流控制器30可较发送IPsec处理器24和25操作快速,因此,输出数据流控制器30藉由于步骤81中检核在现用输出缓冲器中之数据而开始。若有数据,则于步骤83中控制器30从现用输出缓冲器中读取数据块,并于步骤84将数据写入存储18中。然后于步骤85中控制器30检核是否已经到达封包之末端。若已经到达封包之末端,则于步骤86中控制器30切换现用之输出缓冲器,并于步骤81准备读取更多的数据。若尚未到达封包之末端,则于步骤81中控制器30继续从现用之输出缓冲器读取数据。作业程序80造成从另一个输出缓冲器读取次一个封包之前,整个封包将要从一个输出缓冲器读取并写至存储18。
因此本发明促进网络8与主系统6之间的输入和输出数据透过安全处理之卸除而迅速地传输和处理。而且,设有二个发送IPsec处理器以加速IPsec处理。依照本发明之范例网络控制器之结构/功能和操作概述,将结合图2至图4而说明于后,以便促使能完全了解本发明。依照本发明之一个范例态样,上述特征有利地促进具有安全处理的网络接口于千兆位(gigabit)导线速度之操作。
图2显示依照本发明之一个或多个态样的网络接口周边或网络控制器102,而图3和图4显示网络控制器102之范例单芯片之实施情形102a。范例单芯片网络控制器102a包括所有于此说明书中说明之相关于网络接口系统102之功能和组件。可使用任何适当之模拟和/或数字电路而执行于此说明之各种区块、系统、模块、引擎、等等,其中描述于说明书中之一个或多个区块等,可依照本发明而与其它的电路结合。
网络控制器102包括用来与主PCI或PCI-X总线106连接之64位PCI-X总线接口104,该主PCI或PCI-X总线106于PCI-X模式操作于达133MHz之时脉速度,或于标准PCI模式达66MHz之时脉速度。网络控制器102可操作为总线主控器或受控器。当网络控制器102例如经由EEPROM接口114(图3)读取选用之EEPROM时(图中未显示),则该网络控制器102可以自动地完成许多的初始化。网络控制器102能够经由IEEE 802.3兼容媒体独立接口(MII)或千兆位媒体独立接口(GMII)110而连接至IEEE 802.3或适当的网络108,该接口110藉由外部收发器装置111而接口连接控制器102与网络108。对于1000Mb/s操作,控制器102支持用于1000BASE-T实体装置111之字节宽IEEE 802.3千兆位媒体独立接口(GMII),或用于1000BASE-X装置111之IEEE 802.3十位接口(TBI)二者其中任一者。网络控制器102于10和100Mb/s速率支持半双工和全双工操作,以及于1000Mb/s支持全双工操作。
譬如于主系统180中之主PCI-X总线106上之主处理器112之主装置,可以经由总线106与主桥接器117而与网络控制器102接口连接。主处理器112包括一个或多个能操作于坐标方式(coordinatedfashion)的处理器。亦参照图4,网络单芯片网络控制器102a可设于网络适配卡或电路板182上,搭配着用来经由主桥接器117、主总线106、和收发器111接口连接主处理器112与网络108之实体收发器111。PCI-X总线接口104包括用来辨识网络控制器102a与于PCI总线上其它装置,以及配置该装置之PCI配置缓存器。一旦完成了初始化,主处理器112具有直接存取至网络控制器102之I/O缓存器,用来执行调谐(tuning)、选择选用项、搜集统计值、以及开始经由主桥接器117和总线106之传输。主处理器112以操作方式经由存储/快取控制器113而与主系统存储128和高速缓存115耦接。一个或多个执行于主处理器112之应用软件程序184可经由第4层(例如,传输层)之譬如传输控制协议(TCP)层软件186、第3层(例如,网络层)之譬如网际网络协议(IP)软件188、以及亦执行于主处理器112之软件网络驱动程序190,而提供网络服务。当如下文中讨论之,网络驱动程序软件190与主存储器128和网络控制器102相互作用,以促进应用软件184与网络108之间之数据传输。
如图2中所示,范例网络控制器102包括第一与第二内部随机存取存储“存储A 116”与“存储B 118”,组构成先入先出(FIFO)存储,用来储存讯框。存储控制单元120提供存储116和118之控制和操作。网络控制器102亦包括媒体存取控制(MAC)引擎122,满足操作为以太网络/IEEE 802.3兼容节点之需求,并提供存储118和GMII110之间之接口。MAC引擎122可操作于全或半双工模式。与存储116和118耦接的网际网络协议安全(IPsec)引擎124提供鉴别和/或加密功能。
PCI-X总线接口104包括直接存储存取(DMA)控制器126,该DMA控制器126经由主总线106自动传输网络控制器102和于主系统存储128中缓冲器之间之网络讯框数据。DMA控制器126之操作,系依照称之为描述符192之数据结构,而由描述符管理单元130所引导,该描述符192包括指至系统存储128中一个或多个数据缓冲器194之指针,以及控制信息。描述符192以称之为描述符环之队列(queue)方式,而储存于主系统存储128中。对应于所例示控制器102中之网络通讯量之4个优先通讯,提供4个发送描述符环用来发送讯框,以及4个接收描述符环用来接收讯框。此外,提供了4个接收状态环,一个用于各优先层次(priority level),该优先层次促使网络控制器102与主系统之间之同步。发送描述符192控制从系统存储128至控制器102之讯框数据之传输,而接收描述符192控制于另一方向之讯框数据之传输。于范例控制器102中,各发送描述符192对应于一个网络讯框,反之各接收描述符192对应于一个或多个主存储器缓冲器,从网络108所接收之讯框可储存于该等缓冲器中。
软件接口分配相连的记忆区块用于描述符192、接收器状态、和数据缓冲器194。该等记忆区块于正常网络操作期间由软件(例如,网络驱动程序190)和网络控制器102之间共享。描述符空间包括指向缓冲器194中网络讯框数据之指针,接收器状态空间包括从控制器102传送至主处理器112中之软件之信息,以及用于储存将发送之讯框数据(例如,输出数据)和已接收之讯框数据(例如,输入数据)之数据缓冲器区域194。
藉由储存于控制器102中之硬件缓存器132中之指针、储存于主系统存储128中之控制器状态区块(CSB)196中之指针、和中断指令,而可维持控制器102和主处理器112之间之同步。CSB 196为主系统存储128之区块,该主系统存储128包括进入描述符中之指针,和状态环,和控制器之中断缓存器之内容的复本。藉由网络控制器102而写入CSB 196,并由主处理器112读取。每次于主处理器112中之软件驱动程序190将描述符或一组之描述符192写入描述符环中,该软件驱动程序190亦写至控制器102中之指针缓存器。若尚未传输,则写至此缓存器使得控制器102开始传输处理。一旦控制器已完成处理发送描述符192,则该控制器将此信息写入CSB 196。于接收网络讯框并将讯框储存于主系统存储128之接收缓冲器194中后,控制器102写至接收状态环并写至写入指针,该驱动程序软件190用该写入之内容来决定哪些接收缓冲器194已经存满。于接收讯框中之错误经由状态产生器134报告至主存储器128。
IPsec模块或引擎124提供用来发送和接收讯框之标准鉴别、加密、和解密功能。对于鉴别,IPsec模块124执行定义于RFC 2403(由网际网络工程任务推动小组提出之规格组)之HMAC-MD5-96算法,和定义于RFC 2404之HMAC-SHA-1-96算法。对于加密,模块执行ESPDES-CBC(RFC 2406)、3DES-CBC、以及AES-CBC加密算法。对于发送讯框,由储存于由安全关联(Security Associations;SAs)专用区域SA存储140中之SAs所特定时,控制器102应用IPsec鉴别和/或加密,该发送讯框由IPsec系统124经由SA存储接口142而存取。SAs由主处理器112所协商和设定。SAs包括各IPsec密码钥匙,该等密码钥匙由各种鉴别、加密、和解密算法所需求,藉由主处理器112执行IPsec密码钥匙交换处理。主处理器112协商SAs与远程站,并写入SA数据于SA存储140中。主处理器112亦维持IPsec安全策略数据库(Security Policy Database;SPD)于主系统存储128中。
关联于MAC引擎122之接收(RX)剖析器144检查接收讯框之标头,以决定要作什么样的处理。若接收剖析器144发现到IPsec标头,则其使用包含于标头中包含有安全参数索引(SPI)、IPsec协议类型、和使用SA查询逻辑146搜寻SA存储140之IP目的地地址之信息,并撷取该可应用之安全关联信息。将结果写至SA指针FIFO存储148,该SA指针FIFO存储148经由SA存储接口142耦接至查询逻辑146。取得对应于SA之密码钥匙,并储存于RX密码钥匙FIFO 152中。接收(RX)IPsec处理器150藉由使用密码钥匙之可适用之SA而执行处理需求。控制器102报告其已作了哪些安全处理,而使得主处理器112能检核SPD以验证讯框符合策略。处理之讯框储存于存储116中。
关联于IPsec处理器150之接收IPsec剖析器154执行封包解密之前不能实施之剖析。藉由接收(RX)核对和和填补(pad)检核系统156而使用一些此信息,填补检核系统156计算由已加密之标头所特定之核对和,并亦检核可能已加密之填补位以验证他们遵循用于填补位之预定序列。当接收之讯框经由FIFO 158传送至PCI-X总线104时,实行这些操作。核对和以及填补检核结果报告至状态产生器134。
于发送路径,设有组合RAM 160以接收从系统存储128来之讯框数据,并传送该数据至存储116。发送讯框之内容能散布于主存储器128中多个数据缓冲器194之间,其中撷取讯框可藉由描述符管理单元130而包含多个至系统存储128之请求。这些请求不总是满足于与他们发送相同之次序。组合RAM 160确保接收之大块数据系提供至存储116中适当的位置。对于发送讯框,主处理器112检核SPD(IPsec SecurityPolicy Database),以判定需要什么安全处理,并用至SA存储140中适当SA之指针之形式传送此信息至讯框之描述符192中之控制器102。于主系统存储128中之讯框数据提供空间于IPsec标头和标尾中,以用于控制器102所产生之鉴别数据。同样的情况,当讯框储存于主系统存储缓冲器194中时提供用于填补(使酬载有整数之区块)之空间,但是由控制器102写入填补位。
当数据从组合RAM 160送出时,数据亦传送入第一发送(TX)剖析器162,该剖析器162读取MAC标头、IP标头(如果存在)、TCP或UDP标头,并决定该数据是何种讯框,以及查看于相关描述符中之控制位。此外,从组合RAM 160来的数据提供至发送核对和系统164,用来计算IP标头和/或TCP核对和,然后该等值将插置于存储116中适当位置。描述符管理单元130发送请求指令至SA存储接口142,以取得SA密码钥匙,该SA密码钥匙然后提供至供应一对TX IPsec处理器174a和174b之密码钥匙FIFO 172。讯框分别经由TX IPsec FIFO176a和176b而选择性地提供至一对用来加密和鉴别之TX IPsec处理器174a和174b之其中之一,其中发送IPsec剖析器170选择地从存储116提供讯框数据至选择之其中一个处理器174。二个发送IPsec处理器174并行提供,因为直到在进行加密处理后,方能开始鉴别处理。藉由同时使用二个处理器174,速度可与接收侧相比较。
鉴别不包含易变之字段,譬如发生于IP标头者。因此发送IPsec剖析器170寻找于讯框数据中易变之字段,并识别于处理器174a和174b中之该等字段。处理器174a和174b之输出分别经由FIFO 178a和178b而提供至第二存储118。当讯框数据从存储118传送至MAC引擎122以便传输至网络108时,由鉴别处理所获得的完整检核值(Integrity Check Value;ICV)藉由插入单元179插入适当的IPsec标头。
于图3之单芯片实施情况中,控制器102a包括网络端口管理器182,该网络端口管理器182可藉由管理数据时脉(MDC)与管理数据I/O(MDIO)讯号自动与外部实体收发器协商。网络端口管理器182亦可设立将与协商架构一致之MAC引擎122。藉由LED控制器171而提供接口连接LED指示器之电路板,该LED控制器171产生LED驱动器讯号LED0′至LED3′,以指示各种网络状态信息,譬如工作中链路连接、于网络上之接收或发送活动、网络位率、和网络碰撞(collision)。时脉控制逻辑173接收闲置执行(free-running)125MHz输入时脉讯号作为时序参考,并提供各种之时脉讯号用于控制器102a之内部逻辑。
当装置是在非工作中(inactive)时,能够使用与描述符管理单元130和MAC引擎122耦接的电源管理单元175以保存电源。当侦测到请求改变于电源位准之事件时,譬如经由MAC引擎122之链路中之改变,电源管理单元175提供讯号PME′表示发生了电源管理事件。外部串行EEPROM接口114执行标准EEPROM接口,例如,93Cxx EEPROM接口协议。外部串行EEPROM接口114之引线包括EEPROM芯片选择(EECS)接脚、EEPROM数据输入和数据输出(分别为EEDI和EEDO)接脚、和EEPROM串行时脉(EESK)接脚。
于总线接口单元104中,地址和数据于总线接口接脚AD〔63:0〕多任务处理。可确立重设输入RST′以引起网络控制器102a执行内部系统重设。当网络控制器是总线主控器指示异动(transaction)之开始和持续时间时,可藉由网络控制器而驱动循环讯框I/O讯号FRAME′,以及PCI时脉输入PCI_CLK用来于PCI总线上(例如,主总线106)于15至133MHz频率范围,驱动系统总线接口。网络控制器102a亦支持具有64位寻址系统之双地址循环(Dual Address Cycles;DAC),其中低次序地址位于第一时脉循环期间出现于AD〔31:0〕总线,而高次序位于第二时脉循环期间出现于AD〔63:32〕。当作用为总线主控制器之装置要初始64位数据传输时,由该装置确立REQ64′讯号,而该传输之目标装置确立64位传输鉴别接收(acknowledge)讯号ACK64′,以表示该目标装置将要用64位传输数据。同位讯号PAR64为保护AD〔63:32〕之偶8字节同位讯号。总线主控制器驱动用于地址和写入数据相位之PAR64,而目标装置驱动用于读取数据相位之PAR64。
网络控制器102a确立总线请求讯号REQ′以表示该网络控制器102a希望变成主控制器,以及总线允许输入讯号GNT′表示存取至总线已经允许至网络控制器。初始装置选择输入讯号IDSEL于配置读取与写入异动期间使用为用于网络控制器之芯片选择。总线命令和字节致能讯号C/BE〔7:0〕用来传输总线命令并指示哪些数据线AD〔63:0〕之实体字节载送有意义之数据。同位I/O讯号PAR指示并验证遍及AD〔31:0〕与C/BE〔3:0〕之偶同位。
当网络控制器侦测到选择该网络控制器102a为目标装置之异动时,该网络控制器驱动驱动选择I/O讯号DEVEL′。网络控制器102a检核DEVEL′以了解是否目标装置已请求该网络控制器所初始之异动。TRDY′用来指示异动之目标装置完成现用之数据相位之能力,以及IRDY′指示异动之初始器完成现用之数据相位之能力。中断请求输出讯号INTA′指示设定一个或多个致能中断旗标位(enabled interrupt flagbits)。当网络控制器102a侦测数据同位错误时,该网络控制器102a确立同位错误I/O讯号PERR′,以及当他侦测到地址同位错误时,该网络控制器102a确立系统错误输出讯号SERR′。此外,控制器102a确立中止I/O讯号STOP′,以通知总线主控器停止现用之异动。
于MAC引擎122中,使用实体接口重设讯号PHY_RST以重设外部PHY 111(MII、GMII、TBI),使用PHY回路(loop-back)输出PHY_LPBK以强迫外部PHY装置111进入回路模式以用于系统测试,以及当MAC发送流量控制讯框时,流量控制输入讯号FC进行控制。网络控制器102a提供可与根据IEEE Std 802.3之媒体独立接口(MII)、千兆位媒体独立接口(GMII)、或十位接口(TBI)之任一者兼容之外部PHY接口110。使用接收数据输入讯号RXD〔7:0〕和输出讯号TXD〔7:0〕以分别接收和发送数据交换。当网络控制器102a操作于GMII或MII模式时,TX_EN/TXD〔8〕使用为发送致能讯号。于TBI模式,此讯号为发送数据总线之第8位。RX_DV/RXD〔8〕为用以表示有效接收数据正出现于RX接脚之输入。于TBI模式,此讯号为接收数据总线之第8位。
当网络控制器102a操作于GMII或MII模式时,RX_ER/RXD〔9〕为表示外部收发器装置已侦测得于正传输于RXD接脚之接收讯框中之编码错误之输入。于TBI模式,此讯号为接收数据总线之第9位。MII发送时脉输入TX_CLK为连续之时脉输入,该时脉输入提供用来传输离开于MII模式之网络控制器102a之TX_EN和TXD〔3:0〕讯号之时序参考。GTX_CLK为连续之125MHz之时脉输出,该时脉输出提供当该装置操作于GMII或TBI模式时从网络控制器来之TX_EN和TXD讯号之时序参考。RX_CLK为时脉输入,提供当装置操作于MII或GMII模式时,传输讯号进入网络控制器之时序参考。COL为表示于网络媒体上已侦测得碰撞之输入,而载波感测输入讯号CRS表示已侦测得由于发送或接收活动其中任一之非闲置之媒体(当装置以全双工模式操作时忽略CRS)。于TBI模式,10位码字组(code group)表示8位数据包。一些10位码字组用来表示命令。偶和奇码字组之发生以及称之为间歇(commas)之特定序列全部用来获得并维持与PHY 110同步。RBCLK〔0)为用来锁住从PHY装置来之奇数码字组之62.5MHz时脉输入,而RBCLK〔1〕用来锁住偶数码字组。RBCLK〔1〕总是相关于RBCLK〔0〕180度反相。藉由外部PHY 111而确立COM_DET,以表示于RXD〔9:0〕输入之码字组包括有效间歇。
IPsec模块124包括接口连接于存储116和118之外部RAM接口。当驱动CKE为高时,使用内部RAM时脉以提供同步,否则使用差别(differential)时脉输入CK和CK_L。RAM具有命令译码器,当驱动芯片选择输出CS_L为低时,致能该命令译码器。于WE_L、RAS_L、和CAS_L接脚之样式(pattern)定义发出至RAM之命令。使用库地址输出讯号BA〔1:0〕,以选择应用了命令之存储,以及由RAM地址输出接脚A〔10:0〕所提供之地址选择将要存取之RAM字符。RAM数据选通(strobe)I/O讯号DQS提供指示当数据能够读取或写入之时序,以及从存储116或118其中任一写入或读取于RAM数据I/O接脚DQ〔31:0〕上之数据。
再回到图2,以下提供网络控制器102之接收和发送操作之运作讨论。从网络媒体108(例如,光纤)接收数据讯框开始,讯框输送到GMII 110(千兆位媒体独立接口),例如,并行之串行字节或字符。GMII110依照接口协议传送讯框至MAC 122,而MAC 122提供一些讯框管理功能。举例而言,MAC 122识别讯框间之间隙(gap),处理半双工之问题、碰撞和再试(retries),以及执行其它譬如地址匹配和一些核对和计算之标准以太网功能。MAC 122亦过滤(filter)讯框,检核他们的目的地地址,并依于一组所建立之规则而接受或拒绝讯框。
MAC 122能够接受和剖析几个标头格式,包括例如IPv4和IPv6标头。MAC 122从讯框标头中萃取某一信息。根据所萃取之信息,MAC122判定哪几个优先队列(priority queue)(图中未显示)放置于讯框中。MAC放置一些信息,譬如讯框长度和优先信息,于控制字符中于讯框之前面,以及其它的信息,譬如是否通过核对和,于状态字符中于讯框之后面。讯框传送通过MAC 122,并储存于存储118(例如,32KB RAM)中。于此例子中,整个讯框储存于存储118中。讯框接续着依照于主存储器128中之描述符192(图4)下载至系统存储128由描述符管理单元130所决定之位置,其中各接收描述符192包括指向系统存储128中数据缓冲器194之指针。发送描述符包括指针或一系列之指针,如将于下文中作更详细之讨论。描述符管理单元130使用DMA 126以读取接收描述符192并撷取指针至缓冲器194。将讯框写至系统存储128后,状态产生器134创造状态字符并将状态字符写至系统存储128中之另一个区域,该状态字符于本例子中为状态环。然后状态产生器134中断处理器112。然后系统软件(例如,图4中之网络驱动程序)能检核已经在系统存储128中之状态信息。状态信息包括,例如,讯框之长度、作了什么处理、以及是否传送了各种之核对和。
于发送操作中,主处理器112最初命令沿着网络108之讯框传输,而于主处理器112中操作系统(OS)之TCP层186初始并建立连接至目的地。然后TCP层186创造可以是十分大之TCP讯框,包括数据包和TCP标头。IP层188创造IP标头,并亦创造以太网(MAC)标头,其中数据包,以及TCP、IP、和MAC标头可以储存于主存储器128中不同位置。然后于主处理器112中之网络驱动程序190可以组合数据包和标头于传输讯框中,而且讯框储存于主存储器128中之一个或多个数据缓冲器194中。举例而言,典型之发送讯框可以存在于4个缓冲器194中,第一个包含以太网或MAC标头,第二个具有IP标头,第三个具有TCP标头,以及第四个缓冲器包含数据。网络驱动程序190产生包括一系列指向所有数据缓冲器194之指针之发送描述符192。
讯框数据从缓冲器194读取入控制器102中。要执行此读取,描述符管理单元130读取发送描述符192并发出一系列之读取请求于使用DMA控制器126的主总线106上。然而,请求之数据部分可不按他们所请求之次序到达,其中PCI-X接口104表示DMU 130与数据相关联之该请求。使用此信息,组合RAM逻辑160组织并适当地排序此数据以重新构成此讯框,并且亦可执行一些包装操作(packing operation)而配适(fit)各种数据件(data piece)在一起,并去除间隙。于组合RAM 160中经组合后,讯框传送至存储116中(例如,于例示范例中之32KB RAM)。当数据从组合RAM 160传送时,该数据亦传送至发送剖析器162。发送剖析器162读取标头,例如,MAC标头、IP标头(若有一个的话)、TCP或UDP标头,并且判定是哪一种之讯框,并亦看看关联于发送描述符192中之控制位。数据讯框亦传送至用来计算TCP和/或IP层核对和之发送核对和系统164。
发送描述符192可包括含有指示发送核对和系统164是否计算IP标头核对和和/或TCP核对和之位之控制信息。若设定了该等控制位,以及剖析器162识别或认出该标头,则剖析器162告诉发送核对和系统164执行核对和计算,以及将计算结果放在存储116中讯框中之适当位置。于整个讯框加载于存储116中后,MAC 122能够开始发送讯框,或于发送至网络108之前,能够于IPsec 124中执行输出安全处理(例如,加密和/或鉴别)。
藉由卸除发送核对和功能于本发明之网络控制器102上,主处理器112有益地解除任务。为了主处理器112执行核对和,必须花费重要资源。虽然核对和之计算相当简单,但是包含了整个讯框之核对和必须插入于讯框之开始处。于习知之架构中,主计算机使一个“传递(pass)”通过讯框以计算核对和,然后插入于讯框开始处。然后当数据加载控制器中时,再一次读取数据。网络控制器102复藉由使用经由描述符192和DMA控制器126直接存取于系统存储128之组合讯框,而减少加载于主处理器112。因此,网络控制器102免除主处理器112之数次消耗存储存取操作。
除了由上述识别之接收和发送功能外,网络控制器102于发送操作期间亦可程序化以执行各种之分段功能。举例而言,TCP协议允许TCP讯框有64,000字节之大小。以太网协议并不允许如此大之数据传输,但是却限制网络讯框大约1500字节加上一些标头。甚至在允许有16,000字节网络讯框之巨大讯框之例子中,协议并不支持64KB讯框大小。一般而言,发送讯框初始存在于系统存储128之一个或多个数据缓冲器194中,具有MAC标头、IP标头、和TCP标头,伴随着上达64KB之数据。使用描述符管理单元130读取讯框标头,并取得和发送适当数量之数据(当由以太网或网络协议所允许)。描述符管理单元130追踪于较大TCP讯框中现用位置,并藉由区块发送数据块,各区块具有其自己的标头组。
举例而言,当发生发送数据,主处理器112写入描述符192并通知控制器102。描述符管理单元130接收全部表列之指针,该等指针识别数据缓冲器194,并判定是否TCP区段经过授权。然后描述符管理单元130读取标头缓冲器并判定能够读取多少数据。标头和适当数量之数据读入组合RAM 160中,并且组合和发送讯框。然后控制器102再读取标头和次一个区块或未发送数据之部分,适当地修正标头,并形成次一个讯框于序列中。然后以各发送部分于IPsec系统124中经过任何选择之安全处理,重复此处理直到整个讯框已发送完为止。
本发明之网络控制器102亦较佳地于其中并有IPsec处理。对照于卸除IPsec处理之习知系统,本发明使用板上(on-board)IPsec处理,该板上IPsec处理可用单芯片装置102a执行(图3)。于习知系统中,无论是主处理器执行IPsec处理或共同处理器(co-processor),皆使用与网络控制器分离。使用主处理器非常慢,以及于任何其中一种情况,讯框至少三次经过存储总线传送。举例而言,当使用共同处理器时,当从存储读取讯框并送至共同处理器时,该讯框传送经过总线一次,当传送回系统存储时,讯框再经过总线一次,以及当讯框送至网络控制器时,其经过总线第三次。此处理耗费PCI总线上相当的频宽,并不利地冲击到系统性能。于接收方向实现相似的性能丧失。
IPsec处理有二个主要目标第一个目标是加密、或拌码(scramble)处理该数据,而使得未经授权之人或系统不能读取该数据。第二个目标是鉴别,以确保封包未讹误和封包是从所期望之人或系统传来。以下进行板上IPsec处理之简短讨论。本发明之网络控制器102具有使用SA存储接口142、SA查询146、和SA存储140之安全关联(SAs)之优点。以上简短的强调,安全关联事项为收集描述特定安全协议之位,例如,是否IPsec部分124为执行加密或鉴别,或是此二者,以及复描述使用了什么样的算法。有数种标准之加密和鉴别算法,如此SA接口142和SA查询146指示哪一个用于特定之讯框。于本例子中之SA存储140为专用存储,储存加密之密码钥匙。依照IPsec协议而获得该等SA,由此交换充分的信息与网络上之使用者或系统,以决定使用哪些算法,并允许二个部件产生相同之密码钥匙。于完成信息交换后,软件呼叫驱动程序190,该驱动程序190将结果写入SA存储140中。
一旦完成了密码钥匙交换,适当的位存在于SA存储140中,该等位指示将使用哪一个密码钥匙,和哪一个鉴别算法,以及实际的密码钥匙。于发送模式,关联于给定输出讯框之描述符192之部分包括进入SA存储140之指针。当描述符管理单元130读取描述符192时,该描述符管理单元130发送请求讯号至SA存储接口142以取得密码钥匙,然后该描述符管理单元130发送密码钥匙至密码钥匙FIFO 172中,该密码钥匙FIFO 172分别供应TX IPsec处理模块174a和174b。当加密和鉴别将使用于发送时,处理会稍微不同,因为任务并非并行完成。鉴别为杂凑(hash)之加密数据,而结果,鉴别一直要等到至少一部分之加密已完成为止。因为加密可以反复经过一系列之数据块,而因此在加密处理之开始和有效获得第一个加密数据之间可能有延迟。为避免具有此延迟而影响了装置性能,范例网络接口102使用二个TX IPsec处理引擎174a和174b,其中于所例示例子中,一个TX IPsec处理引擎处理奇数号讯框,另一个处理偶数号讯框。
执行IPsec处理之前,TX IPsec剖析器170剖析讯框标头,并寻找其中易变的字段,该等字段为未经鉴别之标头内之字段,因为当讯框行经网络108时,该等字段会改变。举例而言,当讯框从路由器越过网际网络至路由器时,于IP标头内之目的地地址改变。发送IPsec剖析器170识别易变的字段,并传送信息至TX IPsec处理器174,该TXIPsec处理器174选择性地跳过讯框之易变字段部分。处理之讯框送至FIFO 178a和178b,并最终累积于存储118中。鉴别处理之结果为完整检核值(ICV),该值当讯框从存储118传输至网络媒体108时,由插入区块179插入于适当的IPsec标头。
于接收模式,接收之讯框进入MAC 122和RX剖析器144。RX剖析器144剖析进入之讯框上达IPsec标头,并从该讯框萃取信息。对于RX剖析器144为重要字段者为例如于IPsec标头内之目的地IP地址、安全协议索引(Security Protocol Index;SPI)、和指示是否IPsec标头为鉴别标头(AH)或封装安全协议(encapsulation security protocol;ESP)标头之协议位。一些萃取之信息传送至SA查询区块146。SA查询区块146识别适当的SA,并输送信息至SA存储接口142,该SA存储接口142撷取SA并将该SA放置入密码钥匙FIFO 152中。
SA查询区块146使用芯片上SPI表(on-chip SA Table)和不在芯片上(off-chip)之SA存储140。SPI表构成4096个箱(bin),各箱包括4个登录(entry)。该等登录包括32位SPI、杂凑之目的地地址(DA)、表示协议之位、和表示该登录是否已使用之位。于SA存储中之对应登录包含全DAs和SA(当有鉴别和加密时,二个SAs)。藉由杂凑SPI而判定用于各登录之箱。欲查询SA,使用从接收讯框来之杂凑之SPI以判定搜寻哪一个箱。在箱内,SA查询区块146搜寻匹配于全SPI之登录、目的地地址杂凑、和协议位。于搜寻之后,SA查询区块将登录写于SA指针FIFO 148,该SA指针FIFO 148识别匹配登录或指示未发现匹配。就在安全处理之前,执行从SA存储之DA地址检核。若没有匹配,则于有问题之讯框不执行安全处理。基于于SA指针FIFO 148中之登录,取得从外部SA存储140来之密码钥匙,并置放于密码钥匙FIFO 152中。RX IPsec处理器150取得来自于FIFO 152之密码钥匙、读取出自于存储118的对应讯框数据、并当需要时开始处理讯框。对于接收处理,并行处理解密和鉴别(于接收侧,并非依序处理解密和鉴别),而因此于此范例中仅使用一个RX IPsec处理器。
RX IPsec剖析器154剖析跟随着ESP标头之标头。加密跟随着ESP标头之任何标头,一直到产生解密为止,方可剖析此标头。在能计算出TCP/UDP核对和之前,以及能够检核填补位之前,必须完成此剖析。解密数据储存于存储116中。为了执行此TCP/UDP核对和和填补检核而不须再一次储存讯框数据,这些功能当数据从存储116传输至主存储器128时由核对和和填补检核系统156所执行。除了上述强调之板上IPsec处理和TCP分段外,网络控制器102于执行中断时亦提供性能改进。当要求主处理器从网络装置中读取缓存器时,读取潜伏时间(read latency)很长。这些潜伏时间不利地冲击系统性能。尤其是,当主处理器时脉速度继续增加时,时脉速度与从网络控制器经由PCI或其它主总线来之取得反应时间之间的不均等(disparity)变得较大。因此,当主处理器需要从网络装置读取时,处理器必须等待较大量之时脉循环,由此而可能导致损失。
网络接口102藉由用写入操作代替读取操作,而避免许多读取潜伏时间。写入操作并不构成问题,因为他们能发生而不涉及处理器112。因此当写入信息送至FIFO时,只要写入是在小的丛发(burst),则网络控制器102能够花费所需之时间执行写入,而不会不良的加载处理器。为了在发送操作期间避免读取操作,驱动器于系统存储128中创造描述符192,然后将指针写至网络控制器102之缓存器132之该描述符。控制器102之DMU 130看到缓存器132之内容,并直接从系统存储128中读取所需之数据,而不进一步中断处理器112。对于接收操作,驱动程序软件190识别于系统存储128中之空缓冲器194,并将对应之登录写至缓存器132中。描述符管理单元130写至发送描述符环中之指针,以指示已处理了哪些发送描述符192,以及写至于状态环中之指针,以指示已使用了哪些接收缓冲器194。
不像习知之架构,需要主处理器读取于网络控制器中之中断缓存器,本发明产生并使用位于系统存储128之预定区域(例如,依于初始化而决定之位置)之控制状态区块(CSB)196。网络控制器102将任何系统所需之缓存器值写至CSB 196。详言之,已完全处理讯框后,产生中断之前,网络控制器102将中断缓存器之复本写至CSB 196。然后,控制器102确立中断;因此当主处理器112看到缓存器132中之中断时,接收之数据于接收数据缓冲器194中已经可以使用。
下文中将结合图式而提供范例网络接口控制器102之各种操作和结构之详细说明。详言之,下文中更详细显示和描述了描述符管理特征、发送数据讯框分段和核对和、以及安全处理之详细说明,以促使了解本发明之范例控制器102之内容。
描述符管理兹参照图2、图4、和图5A至图5J,以下将显示和说明描述符192之详细说明和范例控制器102之操作。图5A显示主存储器128,包括控制器状态区块(CSB)196、讯框数据缓冲器194、用来发送和接收描述符192之整数“n”描述符环(descriptor ring)DR1…DR n、以及整数“m”接收状态环199,RSR1…RSR m。发送及接收描述符192储存于此处称之为描述符环DR之队列中,以及CSB 196包括指至描述符环DR之描述符环指针DR_PNTR1…DR_PNTRn。于范例控制器102中,对应于4个优先网络通讯量,设有4个发送描述符环,用来发送讯框,和设有4个接收描述符环用来接收讯框。于此执行中之各描述符环DR视为连续之环结构,其中考虑于环中之第一存储位置正来自其最后存储位置之后。图5B显示范例CSB 196之指针和其它的内容,而图5C显示于控制器102中之各种指针和长度缓存器132。图5D显示范例发送描述符环之进一步详细说明。图5H和图5I分别显示相关于范例接收描述符和接收状态环之详细说明。图5E和图5F显示范例发送描述符,图5G显示范例接收描述符,以及图5J显示范例接收状态环登录。
如图5A中所示,描述符192单独包括指至系统存储128中一个或多个数据缓冲器194之指针,以及如图5E至图5G中所示之控制信息。藉由储存于控制器缓存器132中之指针、储存于系统存储128中CSB196中之指针、和中断讯号,而提供控制器102和软件驱动程序190之间的同步。于操作中,于控制器102中之描述符管理单元130经由总线接口104之DMA控制器126而读取描述符192,以便判定将要发送之输出讯框之存储位置(例如,于数据缓冲器194中),和储存接收自网络108之输入讯框之位置。藉由网络控制器102写入CSB 196和藉由于主处理器112中之驱动程序190而读取,以及藉由驱动程序190而写入描述符管理缓存器132和藉由于控制器102中之描述符管理单元130而读取。范例描述符系统一般促进关于软件驱动程序190和控制器102之间发送和接收操作之信息交换。
兹参照图5B,范例CSB 196包括进入描述符和状态环中之指针,以及控制器之中断缓存器之内容复本。发送指针TX_RD_PTR0至TX_RD_PTR3为分别对应于发送优先权3至0之描述符读取指针,该等指针正指向由控制器102从对应之优先发送描述符环所读取之最后64位四字符(quad word;QWORD)。接收状态指针STAT_WR_PTR0至STAT_WR_PTR3为分别对应于发送优先权3至0之描述符写入指针,该等指针正指向由控制器102写至对应之优先接收状态环之最后QWORD。CSB 196亦包括中断0缓存器复本INT0_COPY,该INT0_COPY为控制器102中中断0缓存器之内容复本。
图5C显示相关于控制器102中描述符管理单元130之缓存器132。发送描述符基底指针TX_RING[3:0]_BASE包括对应于优先权之发送描述符环之开始之存储地址,以及提供发送描述符环之长度于TX_RING[3:0]_LEN缓存器中。储存发送描述符写入指针于缓存器TX_WR_PTR[3:0]中,其中该驱动程序软件190更新这些缓存器正指向由驱动器写至对应于发送描述符环之最后QWORD。接收描述符基底指针RX_RING[3:0]_BASE包括对应于优先权之接收描述符环之开始之存储地址(例如,于主存储器128中),以及提供这些接收描述符环之长度于RX_RING[3:0]_LEN缓存器中。藉由驱动程序190正指向由驱动器写至对应接收描述符环之最后QWORD,而更新接收描述符写入指针RX_WR_PTR[3:0]。接收状态环基底指针缓存器STAT_RING[3:0]_BASE表示接收状态环之存储地址,而STAT_RING[3:0]_BASE表示于存储128中对应接收状态环199之长度。RX_BUF_LEN表示接收数据缓冲器194之QWORDS之数目,此处所有之接收数据缓冲器194有相同之长度,而CSB_ADDR表示于主存储器128中CSB 196之地址。
欲进一步说明于数据传输中描述符管理操作,图5D显示主存储器128和描述符管理单元130,包括于主存储器128中之范例发送描述符环和于控制器102之描述符管理单元130中之对应描述符缓存器132。此外,图5E和图5F分别显示范例发送描述符192a和控制旗标。于图5E之发送描述符192a中,BUF1_ADR[39:0]包括与描述符192a关联之第一数据缓冲器194之主存储器128中之地址。描述符192a亦包括发送旗标(图5E和图5F之TFLAGS1)193,该发送旗标193包括MORE_CTRL位以指示包含与虚拟局域网络(VLAN)操作和TCP分段操作相关之信息之第二64位控制字符。当选择IPsec安全和第4层处理时,ADD_FCS/IVLEN1位和IVLEN0位用来控制于不存在IPsec处理时之FCS产生,或表示封装安全协议(ESP)初始化向量(initialization vector;IV)之长度。使用IPCK位以表示控制器102是否产生用于发送讯框之第3层(IP层)核对和,以及L4CK旗标位表示控制器102是否产生第4层(例如,TCP、UDP等)核对和。若与描述符192a相关联之数据缓冲器194之数目少于8个,则以3个缓冲器计数字元BUF_CNT来表示。若与描述符192a相关联之数据缓冲器194之数目多于8个,则缓冲器计数提供于描述符192a之BUF_CNT[7:0]字段。
于描述符192a中之BYTECOUNT1[15:0]栏表示第一数据缓冲器194有多少字节之长度。PAD_LEN栏包括从与讯框相关之ESP标尾来之填补长度值,而若设定了MORE_CTRL位,则NXT_HDR栏提供从ESP标尾来之次一个标头信息(用于IPv4之协议数据)。接着于NXT_HDR栏,ESP_AUTH位195表示讯框于ESP标尾中是否包括鉴别数据域,以及安全关联(SA)指针栏SA_PTR[14:0]指向对应于讯框之外部SA存储140(图2)中之登录。二位VLAN旗标控制命令栏TCC[1:0]197包括引起控制器102相加、修正、或删除VLAN旗标,或发送未改变之讯框之命令,最大分段大小栏MSS[13:0]指定最大分段大小,该最大分段大小使控制器102之TCP分段硬件将产生与描述符192a相关联之讯框。若TCC栏之内容为10或11,则控制器102将发送旗标控制信息栏TCI[15:0]之内容作为输出讯框之第15和16字节。此处讯框数据占据多于一个数据缓冲器194,使用一个或多个额外的缓冲器地址栏BUF_ADR[39:0]以表示该讯框数据之地址,并使用相关之BYTECOUNT[15:0]栏以表示于额外讯框缓冲器194中字节之数目。
当网络软件驱动程序190写描述符192于描述符环时,其亦写至于描述符管理单元缓存器132中之描述符写入指针缓存器132,以通知控制器102可有效使用新的描述符192。驱动器写至给定描述符管理单元缓存器132之值为指至刚写完刚刚通过该描述符192之主存储器128中64位之字符(QWORD)之指针,其中该指针为以QWORDs来测量从描述符环开始之位移值(offset)。控制器102不从此位移值或从任何超过此位移值之值读取。当已经写入发送描述符写入指针缓存器(例如,譬如图5D中之TX_WR_PTR1之DMU缓存器132),而若尚未进行传输,则控制器102开始传输处理。当传输处理开始,则继续传输直到无未处理之发送描述符192维持于发送描述符环为止。当控制器102完成给予之传输描述符192,则控制器102将描述符读取指针(例如,于图5D中之指针TX_RD_PTR1)写至CSB 196。
于此点,描述符读取指针TX_RD_PTR1指向下个控制器102将读取之描述符192之开始。描述符192之值为刚刚超过已读取之最后描述符之末端之QWORD之QWORDs中之位移值。此指针TX_RD_PTR1因此表示能够再使用部分描述符空间之驱动程序190。驱动程序190不写至读取指针指至描述符空间之位置,或不写至该位置与描述符写入指针TX_RD_PTR1所指向位置之前之1QWORD之间之任何事物。当描述符读取指针TX_RD_PTR1相等于对应之描述符写入指针TX_WR_PTR1,则描述符环为空环(ring empty)。欲于空环与满环(ringfull)状况之间作区别,驱动程序190须确保于环中总有至少一个未使用之QWORD。于此方式,当写入指针TX_WR_PTR1为一个小于读取指针TX_RD_PTR1模数(modulo)环大小时,发送描述符环为满环。
再参照图5G,显示范例接收描述符192b,包括指向主系统存储128中接收缓冲器194区块之指针BUF_ADR[39:0],以及计数栏BUF_MULT[7:0],表示于区块中缓冲器194之数目,其中于所示例子中所有之接收缓冲器194为相同之长度而仅有一个缓冲器用于各接收讯框。若该接收讯框太大而不适合于缓冲器104中,则将该讯框作截除,以及TRUNC位设于对应接收状态环登录199。图5H显示范例接收描述符环,包括整数n接收描述符192b,用来储存指向于主存储器128中之n接收数据缓冲器194之地址。于控制器102之描述符管理单元130中之缓存器132包括对应于接收描述符环之环基底和长度缓存器(RX_RING_BASE和RX_RING_LEN),以及接收写入指针缓存器(RX_WR_PTR1)包括于所例示描述符环中之次一个未使用之接收描述符192b之地址,以及接收缓冲器长度缓存器(RX_BUF_LEN)包括所有缓冲器194之长度。描述符管理单元130亦具有相关于接收状态环之位置之缓存器132(STAT_RING1_BASE和STAT_RING1_LEN),该接收状态环在一个或多个缓冲器194内具有对应于接收数据之登录199。于主存储器128中之控制状态区块196亦包括缓存器STAT_WR_PTR1,该缓存器STAT_WR_PTR1之内容提供地址于次一个未使用状态环位置之接收状态环,其中若STAT_WR_PTR1等于RX_WR_PTR1,则该接收状态环考虑为空环。
图5I和图5J分别显示范例接收状态环199和登录之进一步详细说明。图5J之范例接收状态环登录包括从接收讯框复制之VLAN标记(tag)控制信息TCI[15:0],和讯息计数栏MCNT[15:0]表示复制于接收数据缓冲器194中之接收字节数目。三个位IPSEC_STAT[2:0]栏表示从IPsec安全系统124来之编码状态,而TUNNEL_FOUND位表示于接收数据讯框中发现了第二IP标头。AH_ERR位表示鉴别标头(AH)失败,ESPAH_ERR位表示ESP鉴别失败,以及PAD_ERR位表示于接收讯框中ESP填补错误。CRC位表示FCS或调正错误(alignment error)以及TRUNC位表示接收讯框要长于RX_BUF_LEN缓存器132之值(上述图5C),并已经过截除。VLAN标记型式栏TT[1:0]表示是否接收讯框为未予标记、标记了优先权、或标记了VLAN,而RX_MATCH[2:0]栏表示接收地址匹配型式。IP_CK_ERR位表示IPv4标头核对和错误,而IP标头侦测栏IP_HEADER[1:0]表示是否侦测到IP标头,若是如此,则是甚么型式之IP标头(例如,IPv4或IPv6)。L4_CK_ERR位表示于接收讯框中之第4层(例如,TCP或UDP)核对和错误,而若侦测得任何标头的话,第4层标头侦测栏L4_HEADER表示所侦测得第4层标头之型式。此外,接收调正长度栏RCV_ALIGN_LEN[5:0]于用于调正之MAC标头开始之前,提供插入之填补长度。
如图5H和图5I中所示,于接收操作中,控制器102将“接收状态环写入指针STAT_WR_PTR[3:0]”(图5B)写至CSB 196中。网络驱动程序软件190使用此等写入指针,以判定于主存储器128中之哪些接收缓冲器194已经存满。使用接收状态环199来传输关于接收讯框之状态信息,譬如所接收字节之数目和错误信息,其中范例系统提供四个接收状态环199,每一个各有优先权。当控制器102从网络108接收输入讯框时,控制器102使用从适当接收描述符环来之次一个接收描述符192,以判定于主存储器128中何处储存讯框。一旦所接收之讯框已复制于系统存储128中,则控制器102将接收器状态信息写至对应之接收状态环199中。藉由于CSB 196中之接收状态写入指针(STAT_WR_PTR[3:0])而提供控制器102与驱动程序软件190之间之同步。此等指针STAT_WR_PTR[3:0]为以QWORDs从对应环之开始处之位移值。
当控制器102完成从网络108中接收讯框,则控制器102将该状态信息写至于适当接收状态环199中次一个可使用之位置,并更新对应之接收状态写入指针STAT_WR_PTR。控制器102写至此位置之值为指至环中状态登录之指针,该控制器102将写至次一个位置。软件驱动程序190不读取此登录,或任何通过此登录之登录。范例控制器102没有指向于各环中第一个未处理之接收状态登录之缓存器。确切地说,此信息从接收描述符指针RX_WR_PTR间接导得。因此,当软件驱动程序190写至于控制器102中其中一个RX_WR_PTR缓存器132时(图5C),驱动程序190确保于接收状态环199中对应于此缓冲器104可使用足够的空间用于登录。
传输数据讯框兹参照图2至图4和图6A至图6E,控制器102使用上述之发送描述符192从主存储器128中之数据缓冲器194发送讯框200。当执行于主处理器112中之应用软件程序184需要发送数据或信息封包至网络108上之另一个计算机或装置时,提供封包至操作系统第3和4层软件(例如,图4中之TCP层软件186和IP软件188)。此等软件层构成各种标头和标尾以形成发送讯框200。然后网络接口驱动程序软件190组合包括一个或多个标头和数据包之讯框200,成为主存储器数据缓冲器194,并因此更新于控制器102中之描述符和描述符管理单元缓存器132。于数据缓冲器194中之组合讯框包括第3层和第4层标头和对应之核对和(例如,IP和TCP标头和核对和),以及MAC标头,如图7A和图7B中所示者。图6A和图6C分别以示意方式显示使用第4层TCP和第3层网际网络协议第4版(IPv4)形成发送讯框200a和200c用于传输和信道模式,而图6B和图6D分别以示意方式显示使用IPv6形成发送讯框200b和200d用于传输和信道模式。然而,本发明并不限于TCP/IP实施方式,其中亦可以使用其它的协议。例如,亦可使用用户数据报协议(UDP)第4层软件来使用范例控制器102以传输和接收数据。
图6A至图6D,从应用软件184来之原始数据包提供至TCP层186作为TCP数据202。TCP层186储存TCP数据202于主存储器128中,并创造TCP标头204。显示TCP范例TCP标头并于下文中参照图7A和图7B而予说明。提供TCP数据202和TCP标头(例如,或指向那里之指针)至第3层软件(例如,于此例子中之IP层188)。IP层188创造IP标头206(例如,于图6A和图6C中之IPv4标头206a,或于图6B和图6D中之IPv6标头206b)。对于IPv6(图6B和图6D),IP层188亦可以创造选用之延伸标头208。
此处使用发送安全处理,包括ESP加密和鉴别,该IP层188亦创造ESP标头210,和ESP标尾212,和供IPv4使用之ESP鉴别栏214(图6A和图6C)。对于传输模式中之IPv6(图6B),藉由IP层188而创造逐点跃进目的地路由栏(hop-by-hop destination routing field)216和目的地选用栏218。对于信道模式中之IPv4,IP层188亦创造新的IPv4标头220。在ESP标头210之前,对于信道模式中之IPv6(图6D),IP层188复创造新的IPv6标头222和新的延伸标头244。
对于图6A之讯框200a,加密TCP标头204、TCP数据202、和ESP标尾212,其中主软件可执行加密,或可配置范例网络接口控制器210以执行加密。执行鉴别于整个ESP标头210、和加密之TCP标头204、TCP数据202、和ESP标尾212。对于图6B中之传输模式IPv6讯框200b,加密目的地选用(destination option)218、TCP标头204、TCP数据202、和ESP标尾212,以及ESP标头210伴随着加密之TCP标头204、TCP数据202、和ESP标尾212而鉴别。于图6C之信道模式IPv4例子,TCP标头204、TCP数据202、原来的IPv4标头206a、和ESP标尾212被加密,然后可以伴随着ESP标头210而鉴别。对于图6D之IPv6信道模式例子,用经鉴别之该等及ESP标头210,而加密TCP标头204、TCP数据202、ESP标尾212、原来的延伸标头208、和原来的IPv6标头206b。
图6E显示创造ESP标头210和标尾212后之范例发送讯框200a,显示范例ESP标头210之进一步详细说明。ESP标头210包括安全参数索引(security parameters index;SPI),该安全参数索引结合了IP标头206a之目的地IP地址和ESP安全协议,而唯一地识别用于讯框200a之安全关联(SA)。ESP标头210复包括表示由发送器和接收器所使用之计数值之序号栏,以识别个别之讯框,其中当建立了安全关联,初始发送器和接收器计数值至0。若加密算法需要加密同步数据,和TCP数据202以及TCP或其它第4层标头204,则讯框200a之酬载数据包括初始化向量(IV)226。
当需要时加上填补字节230,以填满将用为加密算法之密码块(cipher block)字节之倍数之明码(plain text)数据,和/或分别径直调正(right-align)后续之PAD LENGTH和NEXT HEADER栏232和234于4字节字符内之ESP标尾212中,由此确保跟随着标尾之ESP鉴别数据214调正于4字节边界。于ESP标尾212中,PAD LENGTH栏232表示PAD字节230之数目,而NEXT HEADER栏234识别于受保护之酬载数据中之数据型式,譬如于IPv6中之延伸标头,或上层协议识别符(identifier)(例如,TCP、UDP、等等)。此处,选择安全处理用于讯框200a,IP层188于前面的ESP标头210(例如,于所例示讯框200a中之IPv4标头206a)后立即修正协议标头,使于PROTOCOL栏中(例如,用于IPv6之“NEXT HEADER”栏)具有值(例如,“50”),表示后续之标头210为ESP标头。
图7A及图7B分别显示用于IPv4和IPv6之范例TCP讯框格式200e和200f之示意图,显示各种标头之内容。于图7A中,范例讯框200e显示具有TCP数据包202、TCP标头204、IPv4标头206a和MAC标头240,以及用于讯框检核序列之4字节FCS栏。于图7B中,讯框200f同样包括TCP数据包202、TCP标头204、和MAC标头240,以及4字节FCS栏和IPv6标头206b。于此二种情况,计算遍及TCP数据202和TCP标头204而得到TCP核对和。于IPv4例子200e,计算遍及IPv4标头206a(IPv4标头206a之HEADER CHECKSUM栏)而得到IPv4标头核对和,该IP总长度横越IPv4标头206a、TCP标头204、和TCP数据202(于IPv4标头206a中之TOTAL LENGTH栏),而IEEE802.3长度为IP总长度加上于MAC标头240之选用LLC和SNAP栏中之0至8个字节(于MAC标头中之802.3 LENGTH/TYPE栏)。于图7B之IPv6例子200f,IEEE 802.3长度为TCP数据202加上TCP标头204和任何选用延伸标头(如于图7B之IPv6标头中之最后栏所示),该值进入MAC标头240之LENGTH/TYPE栏,而IP酬载长度为TCP数据202加上TCP标头204和任何选用之延伸标头(IPv6标头206b之PAYLOAD LENGTH栏)。
TCP分段兹参照图8A至图8D及图9,控制器102能够选用执行输出TCP和/或IP层核对和、TCP分段、和/或IPsec安全处理。此处,一个或多个该等功能从主处理器112卸载至控制器102,第3层软件186可用虚拟值(pseudo value)而提供讯框200中之某些栏(例如,核对和、长度、等等)。关于TCP层分段,控制器102能够程序化而自动从主存储器128撷取发送讯框,此处讯框很大,而欲打断该大讯框成为较小之讯框或讯框分段,该等小讯框或讯框分段满足使用TCP分段系统260之网络108之最大传输单元(MTU)需求。分段系统260包括与描述符管理单元130操作耦合之任何电路,配置该描述符管理单元130以实施如此处所说明之分段任务。然后控制器102用适当的MAC、IP、和TCP标头发送该等分段。于所显示之例子中,于主系统存储128中之原有TCP讯框200为(可能过大之)IEEE 802.3或具有MAC、IP、和TCP标头之以太网讯框之形式。于范例控制器102中,IP标头206能够是第4版或第6版其中任何之一,而IP和TCP标头可包括选用栏或延伸标头。网络控制器102将使用于自动产生之各分段讯框中该等标头之适当修正之版本。于范例装置102中,原有之TCP讯框能储存于具任何数目之缓冲器194之主系统存储128中,其中从讯框开始至TCP标头204之所有标头系储存于第一缓冲器194中。
亦参照图7A和图7B,于控制器102中修正IPv4讯框200e(图7)之讯框栏802.3 LENGTH/TYPE、TOTAL LENGTH、IDENTIFICATION、HEADER CHECKSUM、SEQUENCE NUMBER、PSH、FIN、和TCPCHECKSUM栏,而其它各栏直接从原来的讯框中复制。于图7B中,将修正于控制器102中于讯框200f中之LENGTH/TYPE、PAYLOADLENGTH、SEQUENCE NUMBER、PSH、FIN、和TCP CHECHSUM栏,用于各产生之(例如,分段)讯框。欲藉由控制器102致能用于讯框200之自动TCP分段,于主处理器112中之驱动程序190设定对应发送描述符192之MORE_CTRL栏(图5F)中之位,并亦包括用于描述符192之最大分段大小(MSS[13:0])栏之有效值。对于所有对应产生之讯框,除了最后一个讯框外,长度将为MSS[13:0]栏之值加上个别MAC、IP、和TCP标头240、206、和204之长度,对于FCS加上四个字节。依于原来未分段数据之长度,所产生之最后一个讯框之长度可能较短。
图8A显示表250,显示由输出ESP处理所修正之讯框字段,而图8B显示表252,具有由鉴别标头(AH)处理所修正之讯框字段,其中表250和252更表示哪些讯框栏由主处理器软件所创造,以及哪些讯框栏由控制器102所相加。于送出用于自动TCP分段之发送讯框至控制器102之前,IP层188提供调整之虚拟标头核对和于TCP标头204之TCP核对和栏中。图8C和图8D提供表254和256,该表254和256显示藉由产生发送讯框200之IP层软件188所执行之分别用于IPv4和IPv6之虚拟标头核对和。此核对和之值为说明于用于IPv4讯框之“传输控制协议功能规格(Transmission Control Protocol FunctionSpecification)”(RFC 793),第3.1节,和用于IPv6讯框之于网际网络协议中“第6版规格(Version 6 Specification)”(RFC 2460),第8.1节,除了使用0值于计算之TCP长度外之标准TCP虚拟标头核对和。控制器102相加此适合用于各产生分段之TCP长度。
对于IPv4讯框,于图8C中之虚拟标头254包括32位IP来源地址、32位IP目的地地址、由用0填补于左边之从IP标头来之8位协议栏(Protocol Field)所组成之16位字符、和TCP长度(于此情况考虑为0)。对于IPv6讯框,于图8D中之虚拟标头256包括128位IPv6来源地址、128位IPv6目的地地址、16位TCP长度(考虑为0)、和由用0填补于左边之8位协议识别符所组成之16位字符。若延伸标头存在,对于TCP具有值6,则8位协议识别符为IPv6标头或最后IPv6延伸标头之次一个标头栏(Next Header Field)之内容。若致能TCP或UDP核对和产生而没有TCP分段,则于虚拟标头核对和中所使用之TCP长度包括TCP标头加上TCP数据域。然而,当致能了TCP分段,控制器102自动调整虚拟标头核对和以对于各产生之讯框包含适当的长度。
程序化控制器102以执行TCP分段,如下所述之计算各种修正栏之值。于MAC标头240内之LENGTH/TYPE栏,依于是否其值小于600h,而解释为长度或以太网型式其中任何一者。若栏之值为600h或更大,则该栏考虑为以太网型式,于该情况对于所有产生之讯框使用该值于LENGTH/TYPE栏。然而,若值小于600h,则该栏解释为IEEE802.3长度栏,于此情况于控制器102中对于各产生之讯框计算适当的长度值。产生用于长度栏之值将表示包括LENGTH/TYPE栏之后除了FCS之所有字节之发送讯框之LLC数据(LLC Data)部分之位组长度,并且不包括任何相加以延伸讯框至最小讯框大小之填补字节。于控制器102中之Tx剖析器162剖析发送讯框200之标头以判定IP版本(IPv4或IPv6)和各种标头之位置。IPv4 TOTAL LENGTH为IPv4数据报之位组长度,该IPv4数据报包括IPv4标头206a(图7)、TCP标头204、和TCP数据202,不包括MAC标头240或FCS。若IP版本为第4版,则硬件将使用此信息以产生正确的TOTAL LENGTH栏以用于各产生之讯框。对于IPv6,计算PAYLOAD LENGTH栏作为第一IPv6标头和FCS之间包括任何IPv6延伸标头之讯框200f之字节数。对于IPv4和IPv6两者,Tx剖析器162产生对应之TOTAL LENGTH或PAYLOADLENGTH栏值以用于已致能TCP分段之各产生之发送讯框。
因为各产生之TCP分段发送为分离之IP讯框,则各分段讯框之IPv4标头中之IDENTIFICATION栏是唯一的。于第一个此种分段讯框中,藉由Tx剖析器162将IDENTIFICATION栏从输入讯框复制入构成此第一分段讯框之第一存储116中适当的位置。剖析器162藉由将用于前面讯框之值增加1,而产生用于后续分段讯框之IDENTIFICATION栏。对于TCP标头204中之SEQUENCE NUMBER栏,TCP协议软件186建立二个网络节点间之逻辑连接,并处理所有经由此连接发送于一个方向之TCP用户数据作为连续的字节流,其中各此种讯框指定序号(sequence number)。第一TCP封包之TCPSEQUENCE NUMBER栏包括于TCP数据域202中之第一字节之序号。经由此相同逻辑连接发送之次一个TCP封包之SEQUENCE NUMBER栏为前面的封包之序号加上前面的封包之TCP数据域202之位组长度。当致能了自动TCP分段,控制器102之Tx剖析器162使用从原来讯框来之用于第一分段讯框200之TCP SEQUENCE NUMBER栏,以及藉由将前面的讯框200之TCP数据域202之长度加至前面的分段讯框200之SEQUENCE NUMBER栏之值,而获得用于后续讯框200之SEQUENCE NUMBER。
TCP推动(PSH)旗标为送至接收器之指示,该接收器将立即处理接收之讯框而不必等待存满接收器之输入缓冲器,例如,此处输入缓冲器可有多于一个接收讯框之空间。当请求自动TCP分段时,于控制器102中之剖析器162对于所有产生之讯框200除了最后一个讯框200外,皆设定PSH位为0,该最后一个讯框200当由TCP层软件186所设定时,设定成从原来输入讯框来之PSH位值。TCP完成(FIN)旗标为送至接收器之指示,表示发送器没有更多要发送之数据。当请求自动TCP分段时,剖析器162对于所有产生之分段讯框200除了最后一个讯框200外,皆设定FIN位为0。剖析器162插入从原来输入讯框(例如,从TCP层软件186)来之FIN位值,用为最后产生之分段讯框200中之FIN位值。
核对和的产生和验证可以程序化或配置范例控制器102以产生用于发送讯框200之第3层(例如,IP)和/或第4层(例如,TCP、UDP、等等)核对和,并自动验证此等用于输入(例如,接收)讯框200之核对和。范例控制器102调适定义于RFC 791(网际网络协议)之IP核对和、定义于RFC793(传输控制协议)用于IPv4讯框200e之TCP核对和、定义于RFC768(用户数据报协议)用于IPv4讯框之UDP核对和、以及如提出于RFC 2460(网际网络协议,第6版规格)用于IPv6讯框200f之TCP和UDP核对和。关于IP核对和,计算于发送核对和系统164中用于IPv4标头206a中之HEADER CHECKSUM栏之值,作为处理为一系列16位字符之IP标头206a中之所有数据之1之补码(one’scomplement)和之16位1的补码。因为TOTAL LENGTH和IDENTIFICATION栏对于各产生之分段讯框200e为不相同,因此发送核对和系统164计算用于由控制器102产生之各分段讯框之HEADERCHECKSUM栏值。
发送核对和系统164亦可计算用于输出讯框200之TCP层核对和。计算用于TCP标头204中TCP CHECKSUM栏之值,作为TCP标头204、TCP数据202、和包含从IP标头来之信息之虚拟标头之1之补码和之16位1的补码。处理标头和数据域为16位数字序列。当计算核对和时,核对和栏其本身用0来代替。核对和亦包括概念上前置于TCP标头之96位虚拟标头(图8C或图8D)。此虚拟标头包含来源地址、目的地地址、协议、和TCP长度。若TCP数据域(Data Field)包含奇数之字节,则为了核对和计算,用0来填补于最后字节之右侧(此填补字节并不发送)。为了产生用于分段讯框200之TCP核对和,发送核对和系统164更新TCP SEQUENCE NUMBER栏和TCP标头204之PSH和FIN位,并设定TCP CHECKSUM栏为从原来输入讯框200来之TCP CHECKSUM栏之值。此外,发送核对和系统164用TCP标头204之位组长度加上TCP数据域202,而初始化内部16位核对和累加器,相加所有由TCP数据202所跟随之编造修正之TCP标头204用于分段至累加器之16位字符之1之补码和,以及储存于分段讯框200之TCP CHECKSUM栏中所得到之1之补码。
于发送描述符192a(图5F)中之IPCK和L4CK位控制用于控制器102中发送讯框200之核对和之自动产生。设定IPCK位导致将产生和插入于图7A之IPv4讯框200e中适当位置之IP Header Checksum。以同样方式,依于在输出讯框200中发现哪种型式之第4层标头,设定L4CK导致将产生之TCP CHECKSUM或UDP核对和其中一种情况。因为IPv6标头206b(图7B)没有标头核对和栏,则对于IPv6讯框200f忽略描述符中之IPCK位。若对于输出讯框200要求TCP或UDP核对和产生,则第4层软件186亦放置虚拟标头核对和于TCP或UDP核对和中。然后控制器102用计算过整个TCP或UDP分段之核对和取代此值,其中当致能TCP分段时,所产生之TCP或UDP核对和值不同。对于TCP分段,用0值于虚拟标头核对和计算中之TCP TOTALLENDTH。对于TCP或UDP核对和产生,TCP TOTAL LENDTH值为TCP标头204之长度加上TCP数据202之长度,如参照上述于RFC中说明。
亦能藉由主存储器112而配置或程序化控制器102,以藉由核对和和填补检核系统156而验证用于接收讯框之核对和。当要求如此致能或当要求安全(例如,IPsec)处理时,控制器102检查输入(例如,接收)讯框以识别IPv4、IPv6、TCP和UDP标头,并将对应之码写至接收状态环199(图5J)登录之IP_HEADER和L4_HEADER栏,表示该控制器102已辨识了哪些第3层和/或第4层之标头。当装置辨识具有核对和之标头,则接收核对和和填补检核系统156计算适当的核对和如于RFC791、RFC793、RFC768、或RFC2460所述,并将所得结果与于接收讯框中所发现之核对和相比较。若核对和不一致,则装置设定IP_CK_ERR和/或L4_CK_ERR位于对应接收状态环登录199中。
兹参照图12、图13A、和图13B,显示和说明发送核对和产生之更详细情况。于图12中,控制器102之一部分系关于用于输出数据讯框200之TCP核对和值290之产生而显示,该输出数据框200具有ESP安全标头210。图13A和图13B显示范例发送核对和处理方法300,该方法300可执行于网络接口控制器102。用于输出数据之TCP核对和处理开始于图13A中步骤302,其中第3层标头(例如,IP标头)于步骤303剖析,以判定后续标头型式,并于步骤304判定安全标头是否存在于输出数据讯框中。如图12中所示,于组合RAM 160中之范例讯框200包括由ESP安全标头210所跟随之IP标头206。于此情况,IP标头206于其PROTOCOL(IPv4)或NEXT HEADER(IPv6)栏将具有值50,表示后续标头210为ESP安全标头。于控制器102中,当发送核对和剖析器162同时提供至Tx核对和系统164和第一存储216时,该发送核对和剖析器162剖析IP标头206,以确定此栏中之值。若IP标头PROTOCOL/NEXT HEADER栏具有值50,则讯框200包括安全标头(步骤304之”是”),以及方法300进行至步骤306。否则,于图13B中方法进行至步骤340,如下文之讨论。
于步骤306,描述符管理单元130获得从主驱动程序190(例如,经由主存储器106)来之发送描述符192a,并于步骤308获得从描述符来之发送核对和信息。为了计算于讯框200中遍及TCP核对和范围之TCP核对和值290,对于TCP核对和范围(例如,包括TCP标头204和TCP数据包202),发送剖析器162必须分别判定开始和结束点292和294。此可使用提供于发送描述符192a之核对和信息而完成,该描述符192a包括TFLAGS1、PAD_LEN、和NXT_HDR栏(图5E和图5F)。于步骤310,检核TFLAGS1拦之L4CK位。若值为0(于步骤310之”否”),则方法300进行至步骤312,如此值表示对于此讯框200不要求TCP核对和。举例而言,主系统180可以负责计算第4层核对和,于此情况,讯框200被送至控制器102用于传输之前,TCP标头214包括适当的核对和值。
若L4CK位等于1(步骤310之”是”),则方法300进行至步骤313,此处发送剖析器162藉由剖析而判定跟随着安全标头之标头的标头型式。然后于步骤314判定,是否跟随着安全标头之标头为第4层标头(例如,于此例中TCP)。若非为第4层标头(步骤314之”否”),则发送剖析器162经由任何中断标头(例如,譬如显示于图6D中之延伸标头)继续剖析,直到找到第4层标头为止。一旦找到了第4层标头,则于步骤316和步骤318判定是否从描述符192a来之第4层标头型式信息为TCP或DUP。于所示例子中,若从描述符192a来之次一个标头信息既不是TCP,亦非UDP(步骤316和318之”否”),则控制器102假设存有差异,而方法300进行至步骤312(没有第4层核对和被计算)。若从描述符192a来之次一个标头信息表示UDP或TCP标头跟随着安全标头(步骤316和步骤318之”是”),则方法300进行至步骤320和步骤322,此处依着发送核对和信息和剖析之第3层标头信息,而分别开始和结束第4层核对和计算。
详言之,于步骤320使用从发送描述符192a来之次一个标头信息NXT_HDR,以判定用于第4层核对和计算之开始点,以及于步骤322使用从描述符192a来之填补长度PAD_LEN和IV长度信息。剖析器162藉由从剖析之第3层标头(图7A和图7B中之IPv4或IPv6)取得IP总长度或酬载长度信息,并减去安全标头之长度(于步骤303剖析)和任何其它插入标头之长度(于步骤315剖析)之和,以及亦减去ESP标尾212和ESP鉴别栏214之长度,而确定TCP数据域202之结束位置。ESP标尾212包括填补字节230(图6E),该填补字节230之长度已知从发送描述符192a中之PAD_LEN信息来,而ESP鉴别栏214之长度已知从发送描述符192a之TFLAGS1部分193中IVLEN1和IVLEN0位来。计算之结果值为TCP标头204和TCP数据202之长度,于322使用该值来结束TCP核对和计算。
发送剖析器162依照开始和结束点292和294而控制发送核对和系统164开始核对和计算,而该发送核对和系统164因此产生核对和值290(例如,于此实例中TCP核对和值)。一旦完成了核对和值计算,方法300进行至步骤324,此处发送核对和系统164将核对和值290插入第一存储116中适当的位置(例如,在TCP标头204内),完成此动作后于步骤326结束第四层核对和操作。其后,于步骤328执行任何选择之安全处理(例如,使用IPsec系统124),并且于步骤330将输出讯框传输至网络108。若无实施第4层核对和,则方法300于步骤330在传输讯框之前,对于任何所需之安全处理直接从步骤312进行至步骤328。
亦参考图13B,若无安全标头存在于输出数据讯框200(步骤304之”否”),则于图13B中方法300进行至步骤340,于此判定是否从传送描述符192a来之L4CK位等于1。若不等于1(步骤340之”否”),则方法300进行至步骤342且对于讯框200无第4层核对和计算进行。若L4CK位等于1(步骤340之”是”),则于步骤346和步骤348判定是否第4层标头型式是TCP或UDP。若从IP标头206来之次一个标头信息既不是TCP亦非UDP(步骤346和步骤348之”否”),则控制器102假定差异存在,而方法300进行至步骤342(没有第4层核对和值被计算)。若次一个标头信息表示TCP或UDP标头跟随IP标头206,(步骤346或步骤348之”是”),则核对和值计算依照剖析之信息而分别于步骤350和步骤352开始和结束。一旦于步骤352完成第4层核对和计算,则核对和值290插入存储116中之讯框200中,于步骤356完成发送核对和操作,而IPsec系统124传递讯框200至第二存储118(例如,于此情况无安全处理)。然后方法300回到步骤330(图13A),而讯框200传输至网络108。
安全处理兹参照图2至图4、图9、图10、和图11A至图11D,范例IPsec安全系统124可配置依照RFC 2401以提供用于发送和接收讯框200之网际网络协议安全(IPsec)鉴别和/或加密/解密服务。对于鉴别标头(AH)处理,模块执行定义于RFC 2404之HMAC-MD5-96算法和定义于RFC 2404之HMAC-SHA-1-96。HMAC-MD5-96之实施提供截除至96位之128位密码钥匙、512位数据块大小、和128位讯息鉴别码(MAC)。HMAC-SHA-1-96算法之实施提供截除至96位之160位密码钥匙、512位数据块大小、和160位讯息鉴别码(MAC)。对于封装安全酬载(ESP)处理,IPsec模块124亦执行HMAC-MD5-96和HMAC-SHA-1-96算法以用于鉴别,和ESP DES-CBC(RCF 2406)、3DES-CBC、和AES-CBC(draft-ietf-ipsec-ciph-aes-chc-01)封装算法。于IPsec模块124中之DES-CBC算法提供64位密码钥匙(包括8个同位位)、64位数据块大小、以及具有明确初始化向量(IV)之密码块链接(cipher block chaining;CBC)。3DES-CBC算法提供192位密码钥匙(包括24个同位位)、64位数据块大小、和具有明确IV之CBC。依于10、12、或14循环(round)之密码钥匙大小,AES-CBC算法提供128-、192-、或256-位密码钥匙、128位数据块大小、和具有明确IV之CBC。
范例安全系统124提供用于IPv4和IPv6之以密码为基础之IPsec安全服务,包括存取控制、无连接整合(connectionless integrity)、数据起源鉴别、防止回放保护(protection against replay)(部分序列完整之形式)、机密性(加密)、和限制之通讯流量机密性。这些服务提供于第3层(IP层),由此透过使用二个通讯量安全协议,鉴别标头(AH)和封装安全酬载(ESP),以及透过使用加密密码钥匙管理程序和协议,而提供对于IP和/或上层协议之保护。IP鉴别标头(AH)提供无连接整合、数据起源鉴别、和选用之防止回放服务(anti-replay service),以及ESP协议提供机密性(加密)、和限制之通讯流量机密性,以及可提供无连接整合、数据起源鉴别、和防止回放服务。AH和ESP安全特征可单独应用,或结合以提供所希望之安全服务组于IPv4或IPv6中,其中二个协议皆支持传输模式和信道模式。于传输模式,协议提供用于上层协议之初步保护,而于信道模式,协议供应于信道IP封包。
对于输出讯框200,控制器102依照储存于SA存储140中之安全关联(SA)而选择地提供Ipsec鉴别和/或加密处理。若输出讯框200要求Ipsec鉴别,则IPsec单元124计算完整检核值(ICV),并将ICV插入AH标头或ESP标尾212(图6A至图6D)。若讯框200要求加密,则单元124用加密版来代替明码酬载。对于输入(例如,接收)讯框,IPsec单元124剖析IPsec标头以判定须作什么处理。若发现IPsec标头,则IPsec系统124使用从标头来之安全参数索引(SPI)加上IPsec协议型式和IP目的地地址以搜寻SA存储140,以撷取对应于接收之讯框之安全关联。可接收之用于范例控制器102之IPsec标头之结合包括AH标头、ESP标头、和由ESP标头所跟随之AH标头。
对于IPsec密码钥匙交换,主处理器112与远程站台协商SA,并将SA数据写于SA存储140中。此外,主处理器112维持Ipsec安全策略数据库(security policy database;SPD)于系统存储128中。对于各传输讯框200,当指针SA_PTR[14:0]指至于SA存储140中适当的SA,主处理器112检核SPD以判定需要什么样之安全处理,并传递此信息至发送描述符192a中之控制器102(图5E)。对于输入接收之讯框200,控制器102报告在接收状态环登录199中(图5J)已作了什么样之安全处理,以及该主处理器112检核SPD以验证讯框200遵照协商策略。SA包括描述将必须执行之安全处理之型式和将使用之加密密码钥匙之信息。个别之安全关联描述两个网络实体之间之单向连接,其中双向连接需要二个用于输入和输出通讯量之SA。用于输入通讯量之SA部分储存于内部SPI表或存储270(图10),而部分储存于外部存储140。藉由主处理器112而维持此等SA表,该主处理器112藉由首先写入于存储128中SA数据缓冲器,然后将命令写至SA地址缓存器,而间接写至SPI表270和SA存储140。如此导致控制器102将数据复制至外部SA存储140和至内部SPI表存储270。
于SPI表登录中之其中一栏为依照IP目的地地址由主处理器112所计算之杂凑码。此外,主处理器112根据SPI计算杂凑码,以判定于何处写SPI表。若输入或输出SA要求鉴别,则主CPU计算如界定于RFC 2104之HMAC(Keyed-Hashing for Message Authentication)之H(K XOR ipad)和H(K XOR opad)之值,其中主处理器112储存二个结果128或160位值于SA存储140中。若需要的话,于初始化时主CPU能够间接初始化用于IPsec系统124中4个加密引擎之每一个中Cipher Block Chaining之Initialization Vector(IV)缓存器。
参照图2和图9,开始传输处理,主处理器112准备发送讯框200于主存储器128中之一个或多个数据缓冲器194中,写入发送描述符192a(例如,图5E)于其中一个发送描述符环中,并更新对应之发送描述符写入指针(TX_WR_PTR[x])。于数据缓冲器194中之讯框数据包括用于鉴别数据214、用于初始化向量(IV)226、和若适当的话(例如,图6E)用于ESP标尾212之IPsec标头中之空间。将藉由于控制器102中IPsec系统124而产生这些栏之内容。以同样方式,若需要填补(例如,调正或使ESP酬载为整数倍数之加密数据块),则该填补包括于主存储器缓冲器194中,以及用于AH和ESP SEQUENCENUMBER栏之序号藉由主处理器112而提供于数据缓冲器194中。除非亦选用了自动TCP分段,否则IPsec系统124不修正这些栏,于此情况IPsec系统124使用从缓冲器194来之序号用于首先产生之讯框200,然后适当地增加其余产生之分段讯框之数值。若要求IPsec处理于特定输出讯框200,则对应之发送描述符192a包括于SA_PTR栏内指向外部SA存储140中适当SA登录之指针,以及该IPsec系统124使用从SA来之信息,以判定如何处理讯框200。发送剖析器162检查讯框200以判定用来鉴别和/或加密之开始和结束点,以及若需要的话,判定插入鉴别数据214之位置。
若要求ESP加密,则IPsec系统124使用特定于SA中之算法和密码钥匙而加密酬载数据。若要求ESP鉴别,则系统124使用特定于SA中鉴别算法和IPAD/OPAD信息,以计算鉴别数据完整检核值(ICV),并储存结果于鉴别数据域214中。若要求ESP加密和鉴别,则首先执行加密,然后使用加密之酬载数据于鉴别计算中。管线连接加密和鉴别处理,而使得当鉴别引擎正处理前面之数据块时,IPsec处理器174之其中一个加密引擎内正处理一个数据块。除非亦致能了自动TCP分割,否则IPsec系统124不附加填补于酬载数据域。主处理器112提供ESP标尾212适当的填补于系统存储128中讯框数据缓冲器194中,并亦提供适当值于ESP标头210中ESP SEQUENCE NUMBER栏(图6E)。
若ESP处理结合自动TCP分段,则IPsec系统124相加任何所需之填补字节,使加密之数据长度为特定于选择之加密算法之数据块长度之倍数。若ESP处理结合TCP或UDP核对和产生,则主处理器112提供用于ESP标尾212和发送描述符(Transmit Descriptor)192a(图5E)之正确的NEXT HEADER和PAD LENGTH值。若ESP处理结合自动TCP分段,则主处理器112提供与对应之讯框数据缓冲器194相一致之发送描述符192a之NEXT HEADER和PAD LENGTH栏之值。于此结合中,控制器102复制从发送描述符192a来之NEXT HEADER栏进入各产生讯框200之ESP标尾212,并使用描述符192a之PADLENGTH栏以发现于讯框数据缓冲器194中TCP数据域202之末端。此外,减少发送描述符192a之最大分段大小栏MSS[13:0]以补偿IPsec标头、ESP填补、和ICV。
于ESP处理结合TCP分段或结合TCP或UDP核对和产生处,软件驱动程序190因此设定发送描述符192a之ESP_AH、IVLEN0、和IVLEN1位。发送剖析器162使用此信息来定位TCP或UDP标头204,而若不需要TCP或UDP处理,则忽略该等位。对于要求ESP处理之讯框200,图8A显示哪些栏藉由主处理器112而创造并包含于缓冲器194中,以及于安全系统124中由ESP处理硬件所修正之该等字段。
由IPsec系统124所支持之加密算法使用具有明确初始化向量(图6E,IVs 226)之密码块链接(CBC)模式。欲允许某数量之并行处理,IPsec系统124包括二个TX IPSEC处理器系统174a和174b,该系统174a和174b之每一个皆包括DES/3DES(数据加密标准)加密系统和先进的加密标准(AES)加密引擎。于TX IPSEC处理器174中之4个加密引擎之每一个皆包括IV缓存器,于重设时清除该等缓存器为0。当致能控制器102时,关联于加密引擎之IV缓存器之内容使用为用于由该引擎所加密之第一发送讯框之初始化向量226。其后使用从一个讯框200来之最后的加密数据块,作为用于下列讯框200之IV 226。主处理器112能用随机数据初始化于IPsec系统124中之IV缓存器,例如,藉由于酬载栏中具有随机数据之发送讯框200。于一个例子中,主处理器112能将外部PHY装置放置入隔离模式以防止这些随机数据讯框200到达网络108。IPsec系统124插入IV值226于酬载栏之开始。主处理器112于讯框数据缓冲器194中提供空间以用于此拦226。IV226之长度与使用于TX IPSEC处理器174之加密数据块大小相同,例如,64位用于DES和3DES算法,而128位用于AES算法。
选择鉴别标头(AH)处理,安全系统124使用特定于SA之鉴别算法和鉴别ipad和opad数据,以计算鉴别数据完整检核值(ICV),以及该安全系统124储存结果于鉴别数据域214。为了计算ICV之目的,发送IPsec剖析器170侦测易变之字段(如由AH规格,RFC 2402所定义者)并确保此等字段之内容和鉴别数据域214为0。于ICV计算,IPsec系统124使用从SA来之目的地地址,而不使用从封包之IP标头206来之目的地地址,以确保若存在来源路由选择或延伸,则于计算中使用最后目的地之地址。对于要求AH处理之发送讯框200,图8显示由主处理器112所创造并包括于缓冲器194中之字段,以及在IPsec系统124中由AH处理硬件所修正之该等字段。
兹参照图2和图10,IPsec系统124提供从网络108来之用于输入(例如,接收)讯框200之安全处理。RX剖析器144检查输入讯框200以发现IPsec标头,并查询于SA存储140中对应之SA。RX IPSEC处理器150然后依照SA而实施所需要之IPsec鉴别和/或解密。若需要解密,则处理器150用存储116中之明码代替于讯框200中原来的密码。描述符管理单元130设定状态位于对应之接收状态环登录199中(图5J),以表示作了什么处理和遭遇到的任何错误。
图10显示经过IPsec系统124之输入数据之流程图。当从网络108接收输入讯框200时,接收剖析器144检查从MAC引擎122来之输入讯框200之标头。剖析器144剖析其分析之结果于SA查询逻辑146。此信息亦提供至插入于讯框间形成控制区块之存储118。控制区块包括关于在输入讯框200中标头之型式和位置之信息。若剖析器144发现讯框200包括IP封包片段(fragment),则旁通(bypassed)IPsec处理,而讯框200用设定于IPSEC_STAT1栏中对应于接收状态环登录199之IP片段(Fragment)位传送于主存储器128。对于IPv4讯框,藉由于IPv4标头中之非0片段位移量(offset)栏或非0多个片段位,而识别片段。对于IPv6封包,藉由存在之片段延伸标头而表示片段。
若剖析器144发现IPsec标头或可接受之标头之组合,则剖析器144传送SPI、IP目的地地址、和表示IPsec协议(AH或ESP)于SA查询引擎146之位。SA查询引擎146使用SPI、协议位、和目的地地址之杂凑以搜寻内部SPI存储270(图10)。此搜寻之结果写至SA指针FIFO 148,包括指至外部SA存储140中登录之指针、表示是否要求IPsec处理之位、和表示SA查询之成功或失败之二个位。SA指针FIFO 148包括对应于存储118中各输入讯框200之登录。若SA指针FIFO 148于输入讯框200从网络108到达的时候不具有用于新登录之空间,或若接收之讯框200将引起存储118之接收部溢位(overflow),则抛弃讯框200,而接收遗失封包之计数器(图中未显示)增值。
RX KEY FETCH状态机262(图10)撷取从SA指针FIFO 148来之对应之登录,并若有任何需求处理的话,判定需要什么处理。若控制位表示需要处理,则状态机262使用指针栏之内容,以从外部SA存储140撷取SA信息。若SA之DA栏不匹配于讯框200中之IP标头之DA栏,则IPsec处理器150引起将写至接收状态环199之错误码,并传送讯框200至未修正之存储118。若SA之DA栏匹配IP标头之DA栏,则处理器150解密接收讯框200之酬载部分和/或检核如由SA所要求之鉴别数据。
亦参照图11A至图11D,下文中将参照使用于范例控制器102中之输出IPsec处理之安全关联系统。图11A显示范例安全关联表写入存取、图11B显示范例SA地址缓存器格式、图11C显示于SPI存储270中之范例SPI表登录、和图11D显示于SA存储140中之范例SA存储登录。SA查询引擎146使用SPI存储270和外部SA存储140,此二者由主处理器112所维持,其中范例SPI存储270构成为4096箱(bin)之集合,各箱具有达4个登录。于SPI存储270中登录之地址为14位长,其中12个高排序(order)位表示箱号。如图11C中所示,于SPI存储270中之各SPI表登录272包括32位安全参数索引SPI[31:0]、目的地地址之杂凑DA_HASH[39:32]、协议位PROTO表示安全协议(例如,AH或ESP)、以及VALID位表示是否登录为有效或未使用。
图11D显示于SA存储140中之范例登录274,其中SA存储140包括对应于SPI存储270中之各登录272中之登录,于二个存储140和270中之登录274和272有相同之排序。登录274包括三个位ESP加密算法栏ESP_ALG,指示是否需要ESP加密,若有如此需要的话,则将使用哪一个算法(例如,DES;3DES;AES-128,10循环;AES-192,12循环;AES-256,14循环;等等)。电子译码簿位(electronic codebookbit;ECB)指示是否ECB模式使用于加密,而二位ESP鉴别栏ESPAH_ALG表示是否要求ESP鉴别,以及若如此的话,则将使用哪个算法(例如,MD5、SHA-1、等等)。二位AH栏AH_ALG表示是否要求AH处理,而若如此要求的话则将使用哪个算法(例如,MD5、SHA-1、等等)。协议位PROTOCOL表示是否第一个IPsec标头为ESP标头或AH标头,而IPv6位表示是否SA定义为IPv4或IPv6讯框。
BUNDLE位表示二个SA特定之AH,后面跟着ESP之包裹(bundle),以及32位SPI栏特定关联于第二SA之SPI(例如,ESP)于二个SA之包裹,对于并非为包裹部分之SA,可予以忽略。IP目的地地址栏IPDA[127:0]表示SA可应用之地址,其中SA仅应用于包含此目的地地址之封包。AH_IPAD栏包括藉由应用适当的鉴别杂凑函数(例如,MD5或SHA-1)于AH鉴别密码钥匙之互斥或(exclusive OR)和如说明于RFC 2104中之HMAC ipad字符串(string)而获得之值。若鉴别函数为MD5,则结果为16字节,该16字节储存于连续之字节,开始于位移量24。若鉴别函数为SHA-1,则结果是20字节,该20字节占据整个AH_IPAD栏。AH_OPAD栏包括应用适当的鉴别杂凑函数(例如,MD5或SHA-1)于AH鉴别密码钥匙之互斥或和如说明于RFC2104中之HMAC opad字符串而获得之值。若鉴别函数为MD5,则结果是16字节,该16字节储存于连续之字节,开始于位移量44。若鉴别函数为SHA-1,则结果是20字节,该20字节占据整个AH_OPAD栏。SA存储登录274亦包括ESP_IPAD栏,该ESP_IPAD栏具有藉由应用鉴别杂凑函数(MD5或SHA-1)于ESP鉴别密码钥匙之互斥或和如说明于RFC 2104中之HMAC ipad字符串而获得之值,以及ESP_OPAD栏包括应用鉴别杂凑函数(MD5或SHA-1)于ESP鉴别密码钥匙之互斥或和如说明于RFC 2104中之HMAC opad字符串而获得之值。加密密码钥匙栏ENC_KEY包括用于ESP处理之加密/解密密码钥匙。
IPsec系统124分别从SA和SPI存储140和270读取,但是并不写入该等存储。欲最小化查询时间,SPI存储270构成杂凑表,其中藉由SPI之杂凑函数而判定登录272之箱号(bin number)。查询逻辑146藉由根据SPI计算杂凑值和使用该结果于SPI存储270中将箱寻址,而使用SPI和IPsec协议(AH或ESP)来搜寻SPI存储270。对于IP目的地地址计算第二杂凑值,而查询逻辑146比较SPI、协议、和目的地地址杂凑与选择之箱中之登录,直到该查询逻辑146发现匹配或用完箱登录为止。然后查询逻辑146将登录写入SA指针FIFO 148,包括于SPI存储270中匹配登录之地址,和表示是否要求IPsec处理和是否SA查询成功之内部状态码。Rx密码钥匙撷取逻辑262从SA存储140撷取DA,以与IP封包标头内之DA比较。若从SA存储140来之DA不匹配从接收之讯框200来之DA,则讯框200不须经过IPsec处理,即经由存储116和总线接口106而传输于主存储器128,而对应之接收状态环登录199表示没有IPsec处理被实施。
亦参照图11A,藉由主处理器112而维持SA存储140和SPI存储270。于正常操作期间,主处理器112使用写入和删除存取来相加和去除表登录274、272。范例SA存储140分成二个区域,一个用于输入SA而另一个用于输出SA,其中各区域提供空间供16K登录用。使用SA地址缓存器SA_ADDR 280和144字节SA缓冲器282而执行藉由主处理器112存取SA和SPI存储140和270。SA缓冲器282保持一个136字节SA存储登录274,其后接着对应之8字节SPI表登录272。对于输出SA,未使用缓冲器282之SPI表登录区段(section)272。欲写入SA表登录,主处理器112创造136或144字节登录于主存储器128中,并将SA存储140中之目标地址写至SA_ADDR缓存器280。控制器102使用DMA来复制SA信息首先至内部SA缓冲器282,然后至SA存储140和SPI存储270中适当的位置。主处理器112将主存储器128中SA登录缓冲器284之实际地址写至SA_DMA_ADDR缓存器286。若软件驱动程序190使用相同的缓冲器284于主存储器128中用来加载所有之SA表登录,则该软件驱动程序190仅必须写至SA_DMA_ADDR缓存器286一次。
输入安全关联储存于由杂凑算法所决定的位置。对于输出(发送)讯框200,驱动程序软件190包括指至发送描述符192a中(例如,于图5E中SA_PTR栏)之适当SA之指针。此使得驱动程序软件190无须对于控制器102搜寻SA存储140用于输出SA,并且发送SA能够以任何次序储存。因为使用于描述符192a之SA_PTR栏中之值0以表示无需IPsec处理,因此无输出SA储存于位移量0。
亦参照图11B,SA地址缓存器280包括将要存取之SA表登录274之地址加上6个SA存取命令位。这些命令位包括SA读取、写入、删除、和清除位(SA_RD、SA_WR、SA_DEL、和SA_CLEAR)、SA方向位SA_DIR、和命令活动位SA_ACTIVE。当内部状态机262正从SA缓冲器282复制数据或复制数据至该SA缓冲器282时,只读SA_ACTIVE位为1,在此时间期间主处理器112禁止存取SA缓冲器282。藉由SA_DIR位控制外部SA存储140的输入和输出区域间之选择,此动作为高排序地址位。此位对于输入SA设定为1,或对于输出SA设定为0。若此位设定为1,则数据传输至内部SPI存储270或从该存储传输,以及传输至外部SA存储140或从该存储传输。输出SA表存取仅影响外部SA存储140。当主处理器112设定SA_RD于SA地址缓存器280时,状态机从外部SA存储140复制数据至SA缓冲器282。若方向位SA_DIR为1,则从内部SPI存储270来之对应登录272亦复制至SA缓冲器282。SA地址缓存器280之SA地址栏SA_ADR[13:0]指向将要复制之登录272和/或274。
当主处理器112设定SA_WR位于SA_ADDR缓存器280时,所得结果动作依于SA_DIR位之值。若此位为1(例如,表示输入SA),则状态机器首先从主存储器128中之缓冲器284复制数据进入内部SA缓冲器282,然后从SA缓冲器282进入外部SA存储140,并亦进入对应之内部SPI存储270。若SA_DIR位为0(例如,表示发送SA),当存取命令为“写入”时,仅SA缓冲器282之SA栏复制至由SA地址缓存器280所选择之SA存储140登录,而不复制SPI栏。对于包裹处理,BUNDLE位设定于对应于讯框200中之第一个IPsec标头之SA中,表示期望讯框200包括其后跟随着ESP标头之AH标头。于外部SA存储140中之对应登录包括用于此二个标头之信息,包含有第二IPsec标头所期望之SPI。
对于接收AH处理,于SA存储登录274中之AH_ALG栏之值不为0,表示对于接收讯框200需要AH处理。Rx剖析器144扫描讯框IP标头(例如,若存在的话以及IPv6延伸标头),以决定易变栏之位置,如于RFC 2402中所提出者。剖析器144将一列之此等易变字段置插入存储118中之控制区块。若致能了AH处理,为了计算所期望之ICV(复制于主存储器128之讯框数据未改变)之目的,则IPsec处理器150用0取代AH标头之易变栏和ICV栏。IP标头之目的地地址栏考虑为易变但是是可以预测的,因为若使用了来源路由,则媒介路由器可改变此栏。然而,因为来源节点使用用于ICV计算之最后目的地地址,则接收器用于其ICV检核处理此栏为易变的。
于存储118中之控制区块包括指至由AH鉴别所包含之接收讯框200之开始和结束点部分之指针。IPsec处理器150使用此控制区块信息以决定何处开始和终止其鉴别计算。于SA存储登录274v中之AH_ALG栏表示使用了哪一个鉴别算法。范例IPsec系统124提供用于AH处理之如定义于RFC 2404之HMAC-SHA-1-96和定义于RFC2403之HMAC-MD5-96。于各种情况,Rx IPsec处理器150使用从SA登录274之AH_IPAD和AH_OPAD栏来之预先处理数据,伴随如说明于RFC 2104执行HMAC密码钥匙杂凑算法之讯框数据。若此计算之结果不匹配AH标头之鉴别数据域之内容,则AH_ERR位设定于对应接收状态环登录199(图5J)。
对于接收ESP处理,SA存储登录274之ESPAH_ALG栏不为0,表示要求ESP鉴别,以及非0之值表示将使用哪一个鉴别算法(例如,MD5、SHA-1等)。Rx IPsec处理器150使用从SA登录274之ESP_IPAD和ESP_OPAD栏来之预先处理之ipad和opad数据,伴随讯框数据,以执行如于RFC 2104中所述之HMAC密码钥匙杂凑算法。Rx IPsec处理器150使用从存储118之控制区块取得的指针,以决定讯框之什么部分使用于ICV计算。使用开始于ESP标头开始处之计算,和刚于ESP标尾之鉴别数据域之前之末端之数据,其中于此范围中没有一个栏是易变的。若此ICV计算之结果不匹配于ESP标尾中鉴别数据域之内容,则ESP_ICV_ERR位设定于对应之接收状态环登录199中。
若SA存储登录274之ESP_ALG栏不为0,则需要ESP解密,而接收IPsec处理器150使用登录274之ESP_ALG和ECB栏,以决定使用哪一个解密算法和模式(例如,DES;3DES;AES-128,10循环;AES-192,12循环;AES-256,14循环;等等)。Rx IPsec处理器150从登录274之ENC_KEY栏撷取解密密码钥匙,并使用从存储118中控制区块来之信息以决定讯框之哪一部分经加密(例如,刚于ESP标头后开始和刚于ESP标尾之鉴别数据域之前结束之部分)。若SA表示没有ESP鉴别将实施,则鉴别数据域之长度为0而加密之数据正于FCS栏之前结束。
一旦解密了酬载,则IPsec处理器150检核ESP标尾之填补长度栏,看看是否有字节存在。若填补长度栏不为0,则处理器150检查填补字节,并若填补字节不与用1开始之整数串(例如,1、2、3、…)增值相一致,则设定PAD_ERR位于接收状态环登录199中。IPsec处理器150用存储118中(解密之)明码来取代加密之讯框数据。范例处理器150不再构成原来之IP封包(例如,处理器150不去除ESP标头和标尾并取代前面未解密标头之Next Header栏)。若加密使用CBC模式,则ESP酬载栏之首8个或16个字节包含未加密之IV,此情况IPsec处理器150不改变。跟随着IV之加密数据,由其解密之相对部分所取代。
于范例IPsec系统124中,使用单12位杂凑算法而计算SPI表箱号和IP目的地地址杂凑码。藉由透过IPsec处理器150中之杂凑逻辑移位SPI而计算箱号。对于目的地地址(DA)杂凑,透过杂凑逻辑而移位32位IPv4目的地地址或128位IPv6目的地地址,此情况提供12个用为箱号之输出位,其中仅使用8个最小有效位(least significant bit)于DA杂凑。藉由可程序12位多项式于控制器102之配置缓存器中而定义杂凑函数,其中于多项式中之各位定义于处理器150之杂凑逻辑中之AND/XOR分支(tap)。输入比特流执行于杂凑函数中具有最后正反输出(flip-flop)之互斥或。结果为用多项式之“及(AND)”位方式(bitwise)运算、用前面缓存器输出之互斥或运算、然后移位(shifted)。用0来初始化杂凑函数位。然后搜寻密码钥匙传送通过杂凑函数。输入比特流移位入杂凑函数逻辑后,12位输出即为杂凑密码钥匙。
虽然本发明已关于一个或多个实施方式而作了显示和说明,但是对于显示之例子可作各种改变和修饰,而仍不脱离所附申请专利范围之精神和范围。尤其关于由上述组件或结构(区块、单元、引擎、组件、装置、电路、系统、等等)所执行之各种功能用来描述此等组件,除了有特别指示外,系欲相应于执行所述组件之特定功能(例如,其为功能上等效)之任何组件或构造,即使构造上没有相等于所揭示之执行本说明书中所显示之本发明实施范例之功能之结构。此外,虽然已相关于数个实施方式中之仅一个实施方式而揭示了本发明之特殊特征,但是此特征可结合当也许需要时和对于任何指定或特殊应用具优点时之其它实施方式之一个或多个其它特征。再者,对于内容中之各语辞“包括(including)”、“包括(includes)”、“具有(having)”、“具有(has)”、“与(with)”、或者它们的变形,使用于详细说明和申请专利范围中,该等语辞将相似于语辞“至少包括(comprising)”之意义。
(工业上可利用性)本发明可用来创造网络和计算机之间之安全高速接口。
权利要求
1.一种用来接口连接主系统(6)与网络(8)的网络接口系统(2),用于从该主系统(6)提供输出数据至该网络(8),并从该网络(8)提供输入数据至该主系统(6),该网络接口系统(2)包括总线接口系统(4),与该主系统(6)中的主总线(106)耦接,并在该网络接口系统(2)与该主系统(6)之间传输数据;媒体存取控制系统(10),与该网络(8)耦接,并在该网络接口系统(2)与该网络(8)之间传输数据;存储系统(12),与该总线接口系统(4)和该媒体存取控制系统(10)耦接,该存储系统(12)储存传输在该网络(8)与该主系统(6)之间的输入和输出数据;安全系统(14),与该存储系统(12)耦接,该安全系统(14)选择地加密输出数据,并选择地解密输入数据;以及其中该安全系统(14)包括二个处理器(20、21)用来加密该输出数据,该二个处理器(20、21)每个可彼此独立操作以加密该输出数据,该安全系统(14)被配置或可配置成以交替方式送出输出数据包至一个或至另一个处理器(20、21)用来加密。
2.如权利要求1所述的网络接口系统,其中该二个处理器(20、21)也可用于鉴别该输出数据。
3.如权利要求1所述的网络接口系统,其中该二个处理器(20、21)功能上相同。
4.如权利要求1所述的网络接口系统,其中该安全系统(14)还包括与该存储系统(12)耦接的二个输入缓冲器(26、27),各输入缓冲器(26、27)耦接至该二个处理器(20、21)的其中之一,而该安全系统(14)将从该存储系统(12)读取的数据包以交替方式直接输出至该输入缓冲器(26、27)的一个或另一个。
5.如权利要求1所述的网络接口系统,其中该安全系统(14)还包括与该存储系统(12)耦接的二个输出缓冲器(24、25),各输出缓冲器(24、25)耦接至该二个处理器(20、21)的其中之一,配置该处理器(20、21)而将处理的数据包写至该输出缓冲器(24、25),以及配置该安全系统(14)而将该处理数据包从该输出缓冲器(24、25)按照与该数据包处里前从该存储系统(12)读取相同的次序传输至该存储系统(12)。
6.如权利要求1所述的网络接口系统,其中该安全系统(14)还包括处理器(20)选择地解密输入数据,其中该安全系统(14)包括用来加密输入数据的处理器多于解密输出数据的处理器。
7.一种单集成电路,包括安全系统(14),对数据执行发送IPsec处理以传输至网络(8),其中该安全系统(14)包括二个并行执行发送IPsec处理的处理器(20、21)。
8.如权利要求7所述的单集成电路,其中该二个处理器(20、21)功能上相同。
9.如权利要求7所述的单集成电路,其中该安全系统(14)还包括二个输入缓冲器(26、27),各输入缓冲器(26、27)耦接至该处理器(20、21)的其中之一,而该安全系统(14)以交替方式直接输出数据包至输入缓冲器(26、27)的一个或另一个。
10.如权利要求7所述的单集成电路,其中该安全系统(14)还包括二个输出缓冲器(24、25),各输出缓冲器(24、25)耦接至该二个处理器(20、21)的其中之一,配置该处理器而将处理的数据包写至该输出缓冲器(24、25),以及配置该安全系统(14)而将该处理数据包从该输出缓冲器(24、25)按照与该数据包处里前读入该安全系统(14)相同的次序发送。
全文摘要
本发明系关于用于接口连接主系统(6)与网络(8)的网络接口系统(2)。该网络接口系统(2)包括总线接口系统(4)、媒体存取控制系统(10),以及安全系统(14)。该网络接口(2)从主系统(6)卸除IPsec处理。依照本发明,安全系统(14)包括用来加密输出数据之二个处理器(20、21)。输出数据包选择地送至处理器(20、21)之其中一个或另一个,由此发送处理能够相关于接收处理而加速。
文档编号H04L12/22GK1926839SQ200580006794
公开日2007年3月7日 申请日期2005年2月26日 优先权日2004年3月2日
发明者M·卡尼茨, J·德沃克, R·A·威廉斯, M·Y·马尼亚, S·维斯瓦纳特 申请人:先进微装置公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1