基于IDT75K62100 芯片的硬件控制庫設計
1 前言
本文引用地址:http://dyxdggzs.com/article/158039.htm針對Internet 的安全需要,為了給IPV4 和IPV6 數據報提供高質(zhì)量的、可互操作的、基于密碼學(xué)的安全性,Internet 工程任務(wù)組(IETF)頒布了IP 層安全標準IPSec。IPSec 在IP 層對數據包進(jìn)行高強度的安全處理,提供包括訪(fǎng)問(wèn)控制、無(wú)連接的完整性、數據源認證、抗重播(replay)保護(序列完整性(sequence integrity)的一個(gè)組成部分)、保密性和有限傳輸流保密性在內的服務(wù)。這些服務(wù)是基于IP 層的,提供對IP 及其上層協(xié)議的保護。
對于IPSec 數據流處理而言,有兩個(gè)必要的數據庫:安全策略數據庫(SPD) 和安全關(guān)聯(lián)數據庫(SAD)。SPD 指定了用于到達或者源自特定主機或網(wǎng)絡(luò )的數據流的策略,而SAD 則包含了活動(dòng)的SA 參數。在啟動(dòng)IPSec 保護的源和目的之間,都需要設置單獨的輸入和輸出SPD 和SAD 。
經(jīng)受IPSec 保護的節點(diǎn)的通信流,無(wú)論是輸入還是輸出都必須查詢(xún)SPD。SPD 包含一個(gè)策略條目的有序列表,每個(gè)條目里又包含多個(gè)選擇符,輸入輸出數據流就是通過(guò)和這些選擇符比較來(lái)決定是否進(jìn)行安全保護。IPSec 允許的選擇符有目的IP 地址,源IP 地址,傳輸層協(xié)議,系統名和用戶(hù)ID。目的和源IP 地址可以是一個(gè)主機地址,廣播地址,單播地址,任意播地址,地址范圍,地址加子網(wǎng)掩碼或者通配地址;系統名和用戶(hù)ID 可以是完整的DNS 名或E-mail 地址。SPD 中的條目決定了處理通信流的粒度,策略可能規定與某特定的SA 或SA 束對應的IPSec 服務(wù)應該應用到任何源自任何源或者去往任何目的地的所有通信流,策略也可能規定應該基于特定的選擇符來(lái)決定不同SA 或SA 束的應用??傊?,SPD 在控制通過(guò)一個(gè)IPSec 系統的所有通信中發(fā)揮著(zhù)非常重要的作用。為了在保證安全強度的前提下,提高IPSec 保護節點(diǎn)上的流處理速度,本文提出了一種采用硬件IDT75K62100 芯片實(shí)現快速的SPD 與SAD 數據庫的思想。
2 SPD 與SAD 硬件結構
安全模塊的設計初衷就是為了在IPV6 路由器中對特定的數據流實(shí)現高速的IPSec 安全保護,這就使得SPD 和SAD 的高速查找成為一個(gè)很關(guān)鍵的問(wèn)題,因為對每一個(gè)包進(jìn)行IPSec 處理時(shí),都必須查找SPD 和SAD 以獲取相應的處理策略,如果查找速度慢的話(huà),將達不到高速的性能要求。數據庫可以用軟件來(lái)組織,也可以依托硬件來(lái)實(shí)現,為了提高查找速度,我們使用硬件來(lái)做數據庫。目前支持高速查找的硬件主要有兩種:基于邏輯算法設計的SRAM 技術(shù)和基于半導體器件設計的CAM(Content Addressable Memory, 內容尋址寄存器)技術(shù)。常用的隨機存儲器通過(guò)輸入地址來(lái)返回該地址所對應的數據信息,而CAM 只需要輸入關(guān)鍵字的內容就會(huì )將此關(guān)鍵字與CAM 中所有表項同時(shí)進(jìn)行比較,最后返回匹配表項在CAM 中對應的地址信息。CAM 可以在一個(gè)硬件時(shí)鐘周期內完成關(guān)鍵字的精確匹配查找,目前速度可達到266Mpps 。
CAM 雖然有很多優(yōu)勢,但在本模塊中如果都采用CAM 來(lái)作為數據庫,則一方面代價(jià)太高,因為輸入處理和輸出處理各需要兩個(gè)數據庫(SPD和SAD), 這樣一共需要四個(gè)CAM,而CAM 價(jià)格較為昂貴;另一方面將SPD 和SAD 分別設在兩塊CAM 中,這樣每處理一包需要進(jìn)行兩次查找,影響了速度。為此,我們特別研究了一種能夠實(shí)現快速查找的數據庫硬件結構,這種結構采用CAM 和SRAM 相結合的方式。這種結構一方面在一定程度上降低了成本,另一方面解決了二次查找的問(wèn)題。
這種硬件結構的組成原理是將SPD 設置在CAM 中,而將SAD 設置在SRAM 中,然后將CAM 和SRAM 級聯(lián)。這樣,在進(jìn)行IPSec 處理時(shí),先在CAM 中查SP,如果沒(méi)有找到相應的SP, 則查找結束;如果查到了相應的SP,則由CAM 將對應的SA 在SRAM 中的存放地址送給SRAM, 然后從SRAM 中對應地址將SA 取出送FPGA, 這樣避免了再由FPGA 對SAD 進(jìn)行查詢(xún)。這種數據庫的查找方法還引入了流水機制,即CAM 查到了前一報文的SP 后,將匹配地址送給SRAM,在SRAM 讀該地址對應的SA 的同時(shí),CAM 可進(jìn)行對下一報文的SP 的查找。該查找方法中,CAM 與SRAM 的連接如圖一所示。
圖 1 :CAM 與SRAM 連接圖
3 75K62100 芯片的內部結構 實(shí)際設計中,CAM 選用IDT 公司的75K62100 ,其內部邏輯結構與主要外部總線(xiàn)如圖二所示。從圖中可以看出,該型號CAM 內部主要由配置電路,指令譯碼,輸入輸出數據緩存,比較寄存器和數據存儲區等單元組成,外部總線(xiàn)有指令總線(xiàn),數據總線(xiàn)和索引總線(xiàn),另外還包括一條匹配標志信號線(xiàn)。該CAM 的數據存儲區的容量為18M, 經(jīng)過(guò)配置電路配置,可以工作在256k×72bit (表項深度為256K, 寬度為72bit)、128K×144bit 、72K×288bit 等模式下。指令總線(xiàn)寬20 位,配置指令,讀寫(xiě)指令從該總線(xiàn)輸入。數據總線(xiàn)寬72 位, 輸入數據時(shí),先將數據寫(xiě)入數據輸入輸出緩存區,在內部地址譯碼控制下,再將數據寫(xiě)入數據存儲區或比較寄存器。比較后得到匹配項的地址由24 位索引總線(xiàn)送出,數據經(jīng)輸入輸出緩存器從數據總線(xiàn)輸出,并由匹配標志信號線(xiàn)給出匹配狀態(tài)。
評論