0731-84728105
15116127200
FAST入門(mén)(4)軟硬協同分組處理模型之二
發布時間:2018-07-04
     模塊是FAST平台實現分組處理的基本單元,軟硬件(jiàn)模塊間高(gāo)效的信息交互對實現軟硬件(jiàn)協同分組處理具有重要意義。元數據(Metadata)是FAST平台中模塊間信息交換的核心數據結構,是控制分組在軟硬件(jiàn)模塊間的處理路(lù)徑以及信息交換的關鍵。
一(yī)、軟硬件(jiàn)協同分組處理流程
   FAST平台中傳輸的每個(gè)分組都攜帶一(yī)個(gè)元數據塊,用于存放(fàng)分組的接收信息(如端口号,接收時刻等)、路(lù)徑控制信息(如下(xià)一(yī)個(gè)模塊号DMID)、處理的中間狀态(如流分類的标識FlowID)以及用戶自(zì)定義狀态信息等。
     FPGA OS必須為(wèi)每個(gè)從(cóng)端口接收的分組創建并初始化一(yī)個(gè)元數據塊,每個(gè)軟件(jiàn)UA也必須為(wèi)其産生(shēng)的分組構建并初始化一(yī)個(gè)元數據塊。當硬件(jiàn)模塊把分組DMID設置為(wèi)某個(gè)UA的MID,或者UA把分組的DMID設置為(wèi)某個(gè)硬件(jiàn)模塊的MID時,分組需要攜帶元數據穿越軟硬件(jiàn)界面,如下(xià)圖所示。假設硬件(jiàn)流水(shuǐ)線由X、Y、Z三個(gè)模塊組成,作為(wèi)流水(shuǐ)線最後一(yī)級的模塊Z通(tōng)常為(wèi)輸出引擎,FPGA OS将DMID為(wèi)Z的分組送輸出接口發出。
     如果平台加載了一(yī)個(gè)軟件(jiàn)程序A,功能(néng)是對p1接口輸入,p2接口輸出的所有分組進行安全檢查,那麽A可向模塊Z配置規則,将所有輸入接口為(wèi)p1,輸出接口為(wèi)p2的分組的DMID設置為(wèi)A。因此模塊Z會(huì)将分組p的DMID設置為(wèi)A,FPGA OS會(huì)将p送到(dào)軟件(jiàn)模塊A進行處理,同時将p的SMID設置為(wèi)Z,表示這是硬件(jiàn)模塊Z發出的分組。
     當A完成對p的安全檢查需要繼續從(cóng)p2發出分組p時,可将p的DMID設置為(wèi)Z,将p再次發送回硬件(jiàn)流水(shuǐ)線。雖然p首先經過了硬件(jiàn)流水(shuǐ)線中的模塊X和Y,但由于DMID為(wèi)Z,所以X和Y不會(huì)處理分組p,而是将其送到(dào)Z處理。Z發現p的SMID為(wèi)A,表示已經過安全檢查,因此會(huì)将分組DMID修改為(wèi)Z,由FPGA OS從(cóng)端口發出。
二、軟硬件(jiàn)協同處理中的信息交互
     元數據中除了DMID和SMID字段外,還(hái)定義了其他字段用于模塊間信息的交互。FAST2.0規範定義的元數據包含了14個(gè)字段,如下(xià)表所示:
   根據系統的性能(néng)要求,開(kāi)發周期,開(kāi)發人員(yuán)喜好(軟件(jiàn)開(kāi)發或硬件(jiàn)開(kāi)發),可将需要實現的網絡功能(néng)劃分到(dào)不同的軟硬件(jiàn)模塊中實現(這一(yī)點後面還(hái)會(huì)詳細介紹),而軟硬件(jiàn)模塊間狀态信息的交互需要在元數據中攜帶,例如:
     (1)PST字段:硬件(jiàn)可進行分組解析,包括網絡協議類型或者是應用層解析,并将解析的結果通(tōng)過PST編碼送UA,實現将UA分組解析功能(néng)卸載到(dào)硬件(jiàn)實現;
     TSN在轉發流程中擴充的單流過濾和管控(PSFP)機(jī)制主要實現三個(gè)功能(néng),一(yī)是單流測量,使用令牌桶機(jī)制測量到(dào)達的每條流得流量和最大幀長(cháng)度是否超過預定合約;二是時間門(mén)控隊列選擇機(jī)制,即将全局時間(分組到(dào)達的時刻)加入隊列選擇算(suàn)法中考慮,重新計算(suàn)分組内部優先級,并根據内部優先級而不是分組VLAN頭或IP頭中攜帶的外部優先級選擇輸出隊列号;三是入隊測量,基于令牌桶機(jī)制對進入特定隊列的流量進行測量,保證進入相(xiàng)應隊列緩存的分組流量滿足一(yī)定的合約。
     (2)FlowID:硬件(jiàn)實現對分組的分類,然後将分類的結果送UA處理,即實現将軟件(jiàn)的流分類功能(néng)卸載到(dào)硬件(jiàn)實現;
     (3)RXTS:硬件(jiàn)實現對分組接收的時間進行精确标記,軟件(jiàn)UA可以根據這個(gè)時間戳進行時間敏感的功能(néng)處理,這對于精準網絡測量和IEEE1588時間同步控制的實現十分關鍵;
     (4)UDM:用戶根據需要使用16字節的UDM字段實現UA和特定硬件(jiàn)模塊之間的信息傳遞,例如當硬件(jiàn)模塊按照(zhào)匹配的規則将分組送給軟件(jiàn)UA時,可以攜帶匹配的規則号或軟件(jiàn)預先設置的cookie信息等。軟件(jiàn)在将分組發送給硬件(jiàn)時,也可以攜帶一(yī)些控制硬件(jiàn)處理的信息,如定時發送的信息等。關于UDM的使用會(huì)在後續的實際案例中更加詳細的介紹。
     因此在FAST架構下(xià),軟件(jiàn)UA可通(tōng)過元數據與硬件(jiàn)模塊交換更加豐富的甚至是用戶自(zì)定義的狀态信息。與目前的Socket、Netlink,Libnet/Libpcap、DPDK等網絡編程的API相(xiàng)比,FASTAPI具備更強的軟硬件(jiàn)分組協同分組能(néng)力,更加容易的滿足用戶定制的處理需求。