許芮銘,武 剛
(中國電子科技集團公司第三十研究所,四川 成都 610041)
一直以來,公共機構、大型團體、企業等對網絡信息傳輸的安全性都有較高的要求,在其網絡系統中部署的網關、防火墻等均以網絡訪問控制技術作為實現相關安全功能的核心技術之一[1-2]。具有網絡訪問控制技術的設備在收到報文后,提取關鍵字并送入訪問控制列表進行查表,根據匹配結果實現報文控制。訪問控制列表的查表性能、表項數量等,直接決定相關設備的吞吐率、處理時延、規則數量等核心性能指標[3]。隨著5G、光通信等網絡通信技術的不斷發展,大數據、云計算、遠程辦公等應用獲得爆發式增長,網絡規模大幅度擴張,業務復雜度提高,網絡節點間的通信帶寬大幅增加,對網絡設備中訪問控制列表的性能需求也隨之水漲船高。
訪問控制列表的實現方式主要有三態內容尋址存儲器(Ternary Content Addressable Memory,TCAM)、散列表、FPGA等[4]。TCAM方案查表性能強,容量較大,但存在成本高、功耗大的問題[5]。散列表方案在范圍匹配、模糊匹配等場景中,需要復雜的映射和管理[6]。FPGA方案性能較低,表項數少,使用范圍受限[7]。IPv6地址的大位寬給FPGA方案的表項存儲和匹配邏輯設計均帶來了挑戰。本文提出了一種改進的可擴展FPGA實現方案,采用優化的并行查找設計,改進的表項組織,有效提升了表項匹配性能,大幅增加了表項數量,可支持10 Gbps以上網絡吞吐率,數千條IPv6范圍匹配規則,大幅擴展了FPGA方案的適用場景。
訪問控制列表的基本工作原理如圖1所示,主要分為關鍵字解析和提取、查表控制、表項存儲、數據緩存、處理決策等。設備從端口接收到網絡報文后,首先進行報文頭解析和五元組提取,并將報文暫存至數據緩存中[8]。訪問控制列表的查表控制模塊利用五元組關鍵字,通過讀取規則表項進行匹配:若匹配吻合,則表明命中規則;若全部失敗,則表明未命中。當同時命中多個規則時,模塊選取優先級最高的規則。根據查表結果,處理決策單元將報文從數據緩存中讀出并分發至相應的功能模塊,實現對報文的轉發、丟棄、上傳等操作。設備的管控單元通常使用CPU實現,根據用戶的輸入生成訪問控制列表的表項,實現表項的增、刪、查、改等管理功能。

圖1 訪問控制列表的基本工作原理
訪問控制列表的規則表項存儲在FPGA芯片內嵌的塊存儲器(Block Random Access Memory,BRAM)中,規則的匹配采用線性比較器,即比較器依次從BRAM中讀出表項,并與查找請求中的五元組匹配,完成遍歷后輸出結果。為充分利用存儲資源,需要針對性設計表項格式。以XC7K325 T FPGA為例,其BRAM以36 Kb為一個最小單元,深度最小為72 Bit×512的形式。由于存儲表深度越深,線性比較器遍歷全部表項所花費時間越多。因此,需要使用盡可能小的存儲表深度設置。規則表關鍵字為支持IPv6的五元組,其中網際互聯協議(Internet Protocol,IP)地址的低4字節值使用8 Bit分別表示最大和最小值,以支持范圍匹配;源、目端口號分別使用4 Bit表示最大和最小值,以支持范圍匹配;具有優先級字段以區分不同優先級。規則表采用IPv4兼容地址設計,因此可以支持IPv4/v6雙棧,且IPv4支持全地址范圍匹配。
以太網最小報文長度為64 Bit,10 Gbps速率時最小報文的包頻率約為14.881 Mpps,平均每個報文傳輸時間約為67 ns。當FPGA工作頻率為250 MHz時,單周期時間為4 ns,遍歷512 Bit深度的BRAM需要2048 ns,這段時間內,滿帶寬情況下大約有30個報文到達設備需要處理,因此,單個比較單元需要能同時最大處理30個報文。
匹配單元功能實現如圖2 所示。該模塊例化1個BRAM作為規則表存儲單元,還有查表請求分發邏輯、請求緩存、匹配邏輯以及查表結果輸出邏輯。請求緩存和匹配邏輯一一對應,其數量可以通過參數進行配置,以實現不同的查找并行度。匹配單元循環讀取規則表存儲單元中的表項內容,并提供給匹配邏輯進行關鍵字比較使用。輸入的查表請求通過查表請求分發模塊,依次送往各個緩存,同時進行關鍵字匹配。每個查表請求在遍歷完所有表項后,又通過查表結果輸出邏輯按順序依次輸出,形成并行操作。進行遍歷時,匹配單元模塊始終采用高優先級命中結果覆蓋低優先級結果的方法,確保最終命中輸出的一定是最高優先級的規則表項。

圖2 匹配單元功能實現設計
可擴展的并行查找設計將匹配單元首尾相連,即可形成一個流水查找處理鏈,實現規則表項數量的擴展。考慮到過長的流水深度會導致查找時延過大,本文所提方案并行例化多條流水查找處理鏈,形成二維的匹配單元陣列,可在流水深度較低的情況下實現大規模的規則表項,其實現架構如圖3所示。

圖3 可擴展二維并行匹配處理矩陣架構
流水級數和并行數都可以通過參數配置實現快速可擴展重構,以確定不同規則表項數量,當流水級數為N,并行度為M時,可以實現85×N×M條表項數量。每個匹配單元均根據其在矩陣中的位置配置一個獨特的模塊編號mod_id,以實現規則表項的編號和訪問。查表關鍵字送入請求緩存后,同步送往多條并行的流水查找處理鏈中,經過多級匹配,最終輸出各條鏈路中優先級最高的命中結果。在結果匯聚和優先級判決模塊中,本文所提方案再次根據優先級選擇出查表結果。根據命中標志和索引值,結果讀取邏輯從一個統一的結果表項存儲單元中讀出規則表對應的處理方式,作為最終的查表輸出。
測試訪問控制列表并行查找功能,選用的型號為XC7K325 T,該型號為網絡通信處理領域中大量應用的主流型號,具有326000個等效邏輯單元、12.5 Gbps收發器,可支持10 Gbps速率的網絡協議處理,具有一定的典型性。訪問控制列表功能單元的設計參數設定為如下:匹配單元采用8×8的二維矩陣,最大支持的規則表項數為5440個,匹配單元中的并發匹配邏輯設計為30個。
經過開發工具的綜合以及布局布線,得到的FPGA邏輯、存儲資源消耗以及運行頻率如表1所示。可以看到,該芯片實現相關查找功能的資源占用較為寬裕,工作頻率也較高,這說明該設計在支持表項數、查找性能等關鍵技術指標方面還有一定的提升空間。

表1 FPGA資源占用與工作頻率情況
測試環境采用網絡測試儀生成網絡業務流,采用單板環回的方式進行性能測試評估,利用評估板的板載SFP+網絡接口與網絡測試儀的10 Gbps以太網接口進行環回互聯。通過計算機控制終端向評估板下發5440條不同的五元組規則策略,并對網絡測試儀配置對應五元組的網絡流。評估板收到報文后,經過查表再將對應報文環回到網絡測試儀中,以此來評估查表性能。
運行滿足RFC2544標準的包吞吐率測試,得到如圖4所示的測試結果。可以看到本模塊可以支持長度為64 Bit的IP報文在10 Gbps以太網中的100%帶寬通信查表需求。

圖4 查表性能測試結果
本文提出了一種利用FPGA實現的訪問控制列表并行查找設計方案。所提方案通過改進表項存儲格式和匹配方式,充分利用了FPGA中BRAM的存儲容量,可以支持較大規模的IPv6范圍匹配五元組規則表項。本文所提方案通過并行匹配邏輯提升了查表處理性能,采用可擴展的二維并行匹配處理矩陣的架構,可以在不影響查表性能的情況下,靈活地實現表項數量的擴展。經過測試,該方案可以在XC7K325 T上,實現超過5000條規則表項,并支持10 Gbps的以太網通信速率,且相關實現具備進一步提升規模和性能的潛力。