桂祚勤,孟 濤,崔廣財,林存花,陳浩涓
(江南計算技術研究所,江蘇 無錫 214000)
SSL[1]安全套接層是網景公司提出的一種在客戶端和服務器端之間提供安全通道的協議。經SSL安全協議處理后,客戶與服務器之間傳輸的數據是加密的,客戶端寫入數據時自動被加密,到服務器端讀出數據時又自動解密成明文[2],保證了信息的安全性和完整性。此外,SSL安全協議還可以通過握手使通信雙方相互交換數字證書信息,來確保對方身份的合法性。SSL協議由握手協議層和記錄協議層組成[3],主要包括記錄協議以及建立在記錄協議之上的握手協議、警告協議、更改密碼說明協議和應用數據協議等子協議,位于TCP/IP協議模型的網絡層和應用層之間,使用TCP協議來提供一種可靠的端到端的安全服務。SSL協議在應用層通信之前就已經完成加密算法、通信密鑰的協商以及服務器認證工作,在此之后,應用層協議所傳送的數據都會被加密,這些密文數據被放入TCP/IP協議的發送隊列中,并根據實時網絡狀況發送給對端,在傳輸過程中密文數據被分散到不同的TCP/IP報文中,在TCP/IP包的報頭中并沒有加密片段的概念,無形之中增加了解密的復雜度,TCP/IP協議也間接地增加了SSL協議的安全性。
SSL協議的實現對于服務器的計算資源開銷很大[4],且并不是所有的應用都需要保密性、消息完整性和端認證服務,因此文中提出了一種高速SSL芯片設計模型,該設計模型采用TCAM+SRAM查找映射的方式進行區分服務,減小了系統不必要的開銷;同時為了提升SSL安全協議的處理速度,自主設計了專用SSL安全協議處理器[5]和TCP[6]硬核模塊,提高了SSL流量和服務器的處理性能。
提出的高速SSL芯片設計模型既支持虛擬網絡模式[7-10]又支持TCP代理模式[11-13],可以在不關心內網具體應用形式下,滿足一定的策略規則就可以映射到相應的安全策略[14]。
芯片框架結構如圖1所示。

圖1 高速SSL芯片框圖
網絡接口模塊主要負責網絡包的接收與發送;加速模塊又包含兩部分:專用緩沖處理模塊BM和硬件化的TCP協議處理模塊,這兩個模塊輔助專用處理器完成不同應用模式下的SSL協議處理;專用處理器配備一套專用指令集和一套精簡的通用指令集,主要負責通用網絡包及SSL協議報文的處理;SRAM中存儲各個鏈接/隧道的具體處理策略;TCAM中存儲映射到各個鏈接/隧道的規則;SRAM+TCAM模塊的組合設計完成了鏈接/隧道的映射。
當芯片工作在虛擬網絡模式下,根據配置,靠近內網的加速模塊啟用專用緩沖處理模塊(BM),靠近外網的加速模塊啟用硬件化的TCP協議處理模塊。從內網進入的網絡包由SRAM+TCAM模塊完成隧道映射后,分別進入BM緩沖區,當BM緩沖達到一定閾值或緩沖時間達到設定的超時時間后,以消息包的形式通知專用指令集處理器(ASIP),由ASIP根據TCP協議處理模塊的實時處理情況決定是否提取數據到TCP的發送緩存中,若可以提取,則由ASIP完成SSL記錄協議處理后以消息包的形式將數據打入TCP的發送緩存,TCP加速模塊根據TCP協議組裝成TCP/IP報文后發送給外網;另外一個方向,從外網進入的網絡包由SRAM+TCAM模塊完成隧道映射后,進入TCP協議處理模塊的接收緩存,TCP協議處理模塊內部的用戶指令模塊根據接收緩存的數據存儲情況,自動提取數據遞交給ASIP,由ASIP完成后續SSL記錄協議的處理工作,完成后將數據流發送給下行的BM處理模塊,由其負責完成后續的MAC幀切割等處理工作,最終恢復成標準網絡包后經由內網口發送到內部網絡中。以上兩個方向的處理流程是同時進行的,每個方向均可以達到千兆的處理帶寬。
當芯片工作在TCP代理模式下,根據設計,兩個加速模塊均只啟用TCP協議處理模塊,與ASIP之間以消息包的形式進行通信。ASIP給加速模塊發送消息包申請鏈接建立,當加速模塊完成鏈接建立后,發送消息包通知ASIP鏈接建立已經完成,ASIP再將與其對應的策略綁定到該鏈接上,因此在處理TCP包時不需要處理策略等信息,只需將當前包所屬的鏈接條目匹配出來,發送給TCP協議處理模塊,TCP協議處理模塊根據鏈接條目讀取該鏈接的狀態信息和數據,輪詢所有鏈接的接收和發送緩沖區,根據緩沖區數量確定是組裝TCP報文還是發送消息包給ASIP。當滿足發包條件時,依據該鏈接對應的SRAM中相應字段策略進行組包并發送出去。
TCP協議處理模塊接收及發送緩沖以鏈表方式進行管理。首先需要解析出網絡包的TCP/IP/MAC頭,然后存儲報文的TCP數據負載。TCP協議處理模塊以描述符的方式記錄當前數據包所歸屬的TCP鏈接,以指針信息記錄對應鏈接已接收的數據量,這些即為當前鏈接的狀態信息,存儲在SRAM中。
根據芯片的具體工作模式及應用場景,與外部網絡相連的均為TCP協議硬件加速模塊,一般認為來自網絡的威脅或攻擊均出自外部網絡,而TCP協議本身就有很好的抗攻擊能力,這樣承載在TCP協議之上的SSL協議就可以防止病毒、蠕蟲等經由網絡層傳輸的威脅。當芯片工作在TCP代理模式下,所有客戶端的訪問都是由芯片轉發,而不能直接訪問應用服務器,從而使服務器不易受到病毒、黑客等的攻擊,而且芯片還可以提供細粒度的強訪問控制和日志審計等功能,方便設備管理員及時應對突發狀況。除此之外,芯片還具有防火墻功能,可以通過其將網絡內部需要被授權外部訪問的應用映射到防火墻的策略上,只有滿足需求的鏈接才有權訪問。
網絡包復雜多樣,采用處理器的方式可以靈活處理各種網絡包,但針對網絡協議處理這一單一功能,會浪費通用處理器的很多資源,同時指令集也不能有效適配網絡協議處理。采用專用協議處理器(ASIP)不僅可以實現網絡協議的靈活處理,還可以提高處理的效率。
圖2為單個專用處理器核的微結構。該處理器核采用取碼、譯碼、執行、訪存、回寫等五級流水線結構,同時配備一套專用指令集和一套精簡的通用指令集,可以支持4條指令并發執行,具有性能高、面積小等優勢。

圖2 ASIP微結構
高速SSL協議芯片中使用的專用處理器模塊采用的是多核架構,在設計的過程中解決了以下技術難點:
(1)根據不同網絡包的處理特點提煉出合理的指令集;
(2)處理器流水線級數的選??;
(3)硬件加速子模塊的規劃;
(4)多核資源調度。
經驗證表明,該架構可以并發、靈活處理各種網絡包。采用專用指令的流水線結構,提高了網絡處理的帶寬。
為了加速TCP協議處理和降低芯片設計代價,高速SSL協議芯片內部將整個TCP協議硬件化,總體框圖如圖3所示。使用專用TCP硬核替換通用的CPU,可以降低芯片設計面積,提高內部處理帶寬,但增加了設計的難度和風險。
TCP硬核化設計是基于多個RFC協議的處理,設計中克服了協議的零散,無可整體參考等技術瓶頸。目前實現的TCP主要功能包括分片到達、用戶指令、建鏈超時。其中分片到達設計最為復雜,主要根據標準TCP協議,融入了SYN Flood、接收窗口糊涂算法、發送窗口糊涂算法、擁塞避免算法、TCP重傳超時、TCP時間戳的處理。分片到達模塊由鏈接建立,數據傳輸,鏈路關閉三個并行的模塊組成。由于這五個主控模塊是并行處理,因此當前的設計有很強的可擴展性,可根據需求將上述的模塊進行復制以達到更高的處理帶寬。

圖3 TCP總體框圖

圖4 標準TCP狀態跳轉圖
本芯片內部自主研發的TCP協議硬件加速模塊,將圖4所示的標準TCP狀態跳轉合理地分配到圖3所示的TCP硬件設計總體框圖的各個模塊中,具體的硬件設計結合了TCP協議相關的RFC協議和Linux協議棧中TCP協議處理源碼,下面詳細描述各個TCP狀態在各個模塊中的劃分。
鏈接建立模塊包含CLOSED,SYN_SENT,SYN_RECEIVED三個狀態的處理,該模塊包含了建鏈之前、主動建鏈和被動建鏈三種情況的處理,模塊的頂層根據輸入狀態來選擇不同的狀態跳轉。如果輸入CLOSED狀態,就跳轉到CLOSED處理流程,如果是SYN_SENT或SYN_RECEIVED狀態,也跳轉到相應的狀態處理流程。為提高模塊之間的并行處理效率,各狀態處理模塊對接收模塊發來的數據先寄存、再處理,這樣輸入模塊可以繼續處理下一個TCP包,而不必等待各個狀態處理結束。
數據傳輸模塊主要包含ESTABLISHED狀態的處理,整個TCP協議發送和接收數據相關的鏈表、狀態位,以及與專用指令集處理器(ASIP)之間SSL握手協議、記錄協議數據內容的遞交等都是在該模塊完成的,該模塊也是整個TCP硬件處理的核心模塊。
鏈接關閉模塊主要包括如下狀態的處理,鏈接關閉相關的狀態為:FIN_WAIT_1,FIN_WAIT_2,TIME_WAIT,CLOSE_WAIT,LAST_ACK,CLOSING,在模塊劃分時根據其相關性將這些狀態融合到一個處理模塊當中。
用戶指令模塊主要負責與ASIP交互,處理ASIP下發的open、send、close、abort、respond等指令,是一個與軟件交互的接口,它們之間通過消息包進行交互,用戶指令模塊在接收到ASIP的指令消息包后,按照TCP協議完成該命令的處理流程并給ASIP發送反饋消息包。
鏈接超時模塊主要對計時器模塊產生的超時信號進行處理,生成不同的超時響應包發給發送模塊。超時處理的情況主要分為:超時關閉鏈接,超時發送RST,超時?;钐綔y,超時零窗口探測處理,超時發送重傳隊列,延遲確認。該模塊會輪詢讀取并更新SRAM中的相關信息,當某條鏈接的超時信號有效時代表該鏈接超時情況發生,需要發送相應的TCP報文或關閉鏈接。
為了解決隧道/鏈接的映射問題[15],高速SSL協議芯片采用TCAM+SRAM的硬件查找方法。TCAM存儲映射規則,每條規則對應的執行動作作為查表結果存儲在相應的SRAM中。由TCAM和SRAM配合完成網絡報文的映射工作,一條規則對應一條TCAM條目,每個TCAM條目綁定一個SRAM存儲空間,SRAM存儲空間可以有多個會話信息,但當前數據包只有一條適合的會話信息。該硬件實現方式能夠滿足高速查表的要求。
高速SSL協議芯片根據實際應用靈活地選擇使用三元組(源IP地址、目的IP地址、協議)、四元組(源IP地址、目的IP地址、源端口和目的端口)還是五元組(源IP地址、目的IP地址、源端口、目的端口、協議)作為TCAM條目匹配的選擇符,具體的處理流程如下:
(1)通過硬件協議頭解析模塊將報文選擇符提取出來,發送給TCAM控制器進行匹配,支持飛行處理下一個報文;
(2)TCAM返回的匹配結果直接發送給專用協議處理器;
(3)協議處理器直接將匹配結果作為SRAM讀操作的地址輸入,SRAM中存儲的內容即為該報文對應的安全策略;
(4)協議處理器根據安全策略內容處理相應報文。
通過芯片驗證對該實現方法進行評估,表明用TCAM+SRAM的方法可以滿足高速SSL協議芯片的性能,出網口速率可以達到滿帶寬傳輸。
SSL VPN的性能主要從兩個方面來分析:設備的數據吞吐量和并發鏈接的建立能力。文中以虛擬網絡模式下的SSL為例,根據實際應用環境,在FPGA上搭建的測試環境如圖5所示。
通過測試儀模擬局域網的用戶組,半雙工時(一邊發送另一邊接收),測試儀可以自動顯示出芯片的處理能力,具體測試數據如表1所示。

圖5 FPGA測試環境簡圖

表1 FPGA測試數據
表中所有數據均為測試儀收發純明文數據的帶寬,加上鏈路層幀間隙(12B)及SSL密碼報頭后,處理速度達到千兆在線。分析可知,高速SSL協議芯片的數據吞吐量受鏈接數的影響相對較小,受本鏈接數據包大小影響比較大。高速SSL協議芯片全片仿真估算出SSL最大并發鏈接數可達10 000條;每秒SSL鏈接處理可達2 000條。
提出了一種高速SSL協議芯片的設計模型,并在65 nm CMOS工藝下流片成功,測試結果表明:SSL安全協議處理芯片在400 MHz工作頻率下,數據吞吐率能夠滿足1 Gb/s在線網絡安全處理的要求。采用該設計模型的SSL VPN設備不僅很大程度上提升了網絡處理性能,而且有力提高了SSL VPN設備的自主可控研發能力,符合信息安全設備自主可控發展要求,具有廣闊的推廣前景。