0731-84728105
15116127200
FAST軟件編程基礎(1)Fast_pac朋媽ket數據結構
發布時(shí)間:2019-4-18
  &nbs秒海p;  FAST的核心優點哥看是支持軟硬協同的分組處理。在FAST架構中,那媽用戶在Linux用戶空間編寫的進程稱為(wèi)UA(User App資信lication)。在FAST硬件流水線确定後,用戶可通(t還女ōng)過UA編程實現對硬件流水線的控制,從硬件流水線接收林黑分組,或将分組發往硬件流水線進行處理和轉發。
一、Fast_packet數據結構
   &n船靜bsp; Fast_packet是關我UA編程必須使用的核心數據結構,UA通(tōng)過FAST編程A舊都PI收發的分組均使用Fast_packet結綠湖構定義。fast_packet主要由用戶模塊(UM鄉了)頭标識,對齊标志以及完整的以太網報文三部分組身科成,如(rú)下所示。
   船時  Fast報文分為(wèi)數據報文和控制物家報文兩種類型。數據報文的data中存儲完整以太網報文,用于UA和F少們AST流水線之間,以及UA之間分組的交換;Fast控制街拿報文用于UA 和Fast流水線之間的控制通(tōng)信,如(rú)火懂UA對流水線中相應模塊中寄存器(qì)、計數器(qì)和控制用弟表的讀寫等操作。控制報文的data值為(wèi)空。
    綠唱 Flag字段為(wèi)2字節,主要有兩個作用金請。一是将14字節的以太網頭補齊為(wèi)16字她答節,将IP分組的頭對齊到16字節邊界,便于軟硬件的處行跳理。二是FAST内核軟件使用該标志來标記FA城年ST報文。用戶可以不(bù)初始化和使用該字段。
二、um_metadata結構定義
     FAS聽日T數據報文中的um_metadata結構負責在軟硬件模塊之遠店間傳遞分組的元數據信息,主要包含報文時(shí外笑)間戳,序号,源目的MID,報文長(cháng)度,端口号等,詳多資細定義如(rú)下:
     能鐵;UA編程時(shí),需要對um_metadata結構體中的disc些紅ard、pktdst、pktsrc、outpo票花rt、dstmid、srcmid、inport、資生flowID、len等字段進行初始化。
  &nbs是章p;  discard表示報文是否丢棄,亮問默認為(wèi)0,表示不(bù)丢棄,置1時(shí)表示丢棄,如(rú)執雪見行ddos防禦策略時(shí),異常報文流要丢棄,此時(shí)disc年業ard必須設置為(wèi)1;
     哥線;pktdst、pktsrc标識報文的輸入輸出方向,0表示費什輸出到網絡端口,1表示輸出到CPU。如(rú)UA拿街處理後的報文需要發送到網絡中,則應該設置pktsrc為(wèi)1,坐樹pktdst為(wèi)0;
     明我inport、outport标識報文從設備的長少物理端口輸入輸出,一般是結合流表規則一起使睡飛用;
   &n靜著bsp; dstmid、srcmid标識報文下次處理制我的目的模塊編号和上次處理時(shí)的模靜兒塊編号。如(rú)UA處理後的報文需要發送到網絡中,則dstmi懂志d設置為(wèi)5;
   &n為日bsp; flowID字段由FAST UM填充,标識着報員玩文命中了哪一條流表;
    &nbs長線p;len表示整個FAST報文長(cháng)度(包含UM頭,對齊标志和秒南完整以太網報文)。FAST平台報文緩存區最大(dà)為(wèi)2048,完妹光整以太網報文的MTU不(bù)超過1518紙自。
     Pktty作飛pe字段表示報文類型,0為(wèi)數據報文,1為(wèi)控制報文。服舞
三、ctl_metadata結構定義
   信畫;  FAST平台控制報文對應的控制信息為(wèi)c會雨tl_metadata,包含值、掩碼、地地匠址、源目的MID、類型、報文類型等,詳細定義如(rú)下。 愛這
    雪一  需要注意的是,用戶在UA編程時(shí)不務長(bù)需要自己構造Fast控制報文,而是通(tōng)過調用水南FAST編程API提供的fast_ua_hw_rd()函數來實現對硬件流水喝冷線的管理。FAST 編程API的使用說(shuō)明将在後續文章中介紹。信錢