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