FAST軟件編程基礎(1)Fast_pack玩她et數據結構
發布時間:2019-4-18
 著線; FAST的核心中亮優點是支持軟硬協同的分(fēn)組處理。在購內FAST架構中(zhōng),用戶在Linux用戶空間編寫東上的進程稱爲UA(User Applicati靜生on)。在FAST硬件流水線确定後,用戶可通過UA編程實現對硬件流水線的控制書畫,從硬件流水線接收分(fēn)組,或将分場醫(fēn)組發往硬件流水線進行處理和轉發。
一(yī)、Fast_packet數據結構
&n頻拿bsp;Fast_packet是UA編程必須使用的核心數據結構,UA通過FA訊事ST編程API收發的分(fēn)組均使用Fast_pack唱些et結構定義。fast_packet主要由用戶模塊(UM)頭标識,對齊标志如間(zhì)以及完整的以太網報文三部分(fēn)組成,如下(xià)所示。
雨筆
 的裡;Fast報文分(fēn)爲數據報文和控制報文兩種類不火型。數據報文的data中(zhōng)存儲完整以太網報文,用于UA和F書制AST流水線之間,以及UA之間分(fēn)組的交換;Fast控制報文用于UA街個 和Fast流水線之間的控制通信,如UA對流水線中(zhōng玩跳)相應模塊中(zhōng)寄存器、計數器和控制表的讀寫等操作。控制報文現男的data值爲空。
&nb嗎開sp;Flag字段爲2字節,主要有兩個作用。一(yī)是将14字節的以太網頭熱暗補齊爲16字節,将IP分(fēn)組的頭對齊到16字節邊界,便見男于軟硬件的處理。二是FAST内核軟件使用該标志(zhì)來标記FAS兵朋T報文。用戶可以不初始化和使用該字段。
二、um_metadata結構定義
生章 FAST數據報文中(zhōng)的um們來_metadata結構負責在軟硬件模塊之間傳遞分(fēn)組的元數據信息機厭,主要包含報文時間戳,序号,源目的MID,報文長度,端口号等,詳細定義如下現黃(xià):
 從快; UA編程時,需要對um_metadata結構體(t農頻ǐ)中(zhōng)的discard、pktdst、pk生這tsrc、outport、dstmid、兵訊srcmid、inport、flowID、len等字段人子進行初始化。
&nbs站木p;discard表示報文是否丢棄,默認爲0,表示不丢棄,置1時表示丢棄人拍,如執行ddos防禦策略時,異常報文流要丢棄,此時discard必須設置爲習下1;
pkt讀答dst、pktsrc标識報文的輸入輸出方向,0表示輸出紅會到網絡端口,1表示輸出到CPU。如UA處理後的報文需要發送到網絡中(體學zhōng),則應該設置pktsrc爲1,pktdst爲0;
地遠
&nbs森愛p; inport、水又outport标識報文從設備的物(wù)理端口輸入輸出雪些,一(yī)般是結合流表規則一(yī)起使用;
妹兒 dstmid、srcmid标識報文下(xià)次處理的目東聽的模塊編号和上次處理時的模塊編号。如UA處理後的報文需要發送到網絡中(zhō資少ng),則dstmid設置爲5;
f路裡lowID字段由FAST UM填充,标識着報文命中(zhō間說ng)了哪一(yī)條流表;
著我 len表示整個FAST報文長度(包含U身媽M頭,對齊标志(zhì)和完整以太網報文)。FAST平台報文緩那頻存區最大(dà)爲2048,完整以太網報文的MTU不超過商麗1518。
Pk慢黃ttype字段表示報文類型,0爲數據報文南東,1爲控制報文。
三、ctl_metadata結構定義
FAS自物T平台控制報文對應的控制信息爲ctl_metadata,包含值、掩碼拿家、地址、源目的MID、類型、報文類型等,詳細定義如下(xià)。
農兒
 作多; 需要注意的是,用戶在UA編程時不需要自己構造Fast控制報文用唱,而是通過調用FAST編程API提供的fast_ua_hw_紙吧rd()函數來實現對硬件流水線的管理。FAST 編習去程API的使用說明将在後續文章中(zhōng)介紹。