專利名稱:用于卸載對多個網絡業務流的密碼處理的技術的制作方法
技術領域:
本發明一般地涉及對數據流進行密碼操作。具體而言,本發明涉及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日
發明者林登·米恩尼克, 林登 米恩尼克 申請人:英特爾公司