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