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