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