国产午夜视频免费_精品午夜国产_国产欧洲av,寡妇高潮的味道,特级全黄久久久久久久久,久久久亚洲高清

0731-84728105
15116127200
FAST軟件編程基礎(1)Fast_packet數據結構
發布時間:2019-4-18
     FAST的核心優點是支持軟硬協同的分組處理。在FAST架構中,用戶在Linux用戶空間編寫的進程稱為UA(User Application)。在FAST硬件流水線確定后,用戶可通過UA編程實現對硬件流水線的控制,從硬件流水線接收分組,或將分組發往硬件流水線進行處理和轉發。
一、Fast_packet數據結構
     Fast_packet是UA編程必須使用的核心數據結構,UA通過FAST編程API收發的分組均使用Fast_packet結構定義。fast_packet主要由用戶模塊(UM)頭標識,對齊標志以及完整的以太網報文三部分組成,如下所示。
     Fast報文分為數據報文和控制報文兩種類型。數據報文的data中存儲完整以太網報文,用于UA和FAST流水線之間,以及UA之間分組的交換;Fast控制報文用于UA 和Fast流水線之間的控制通信,如UA對流水線中相應模塊中寄存器、計數器和控制表的讀寫等操作。控制報文的data值為空。
     Flag字段為2字節,主要有兩個作用。一是將14字節的以太網頭補齊為16字節,將IP分組的頭對齊到16字節邊界,便于軟硬件的處理。二是FAST內核軟件使用該標志來標記FAST報文。用戶可以不初始化和使用該字段。
二、um_metadata結構定義
     FAST數據報文中的um_metadata結構負責在軟硬件模塊之間傳遞分組的元數據信息,主要包含報文時間戳,序號,源目的MID,報文長度,端口號等,詳細定義如下:
     UA編程時,需要對um_metadata結構體中的discard、pktdst、pktsrc、outport、dstmid、srcmid、inport、flowID、len等字段進行初始化。
     discard表示報文是否丟棄,默認為0,表示不丟棄,置1時表示丟棄,如執行ddos防御策略時,異常報文流要丟棄,此時discard必須設置為1;
     pktdst、pktsrc標識報文的輸入輸出方向,0表示輸出到網絡端口,1表示輸出到CPU。如UA處理后的報文需要發送到網絡中,則應該設置pktsrc為1,pktdst為0;
     inport、outport標識報文從設備的物理端口輸入輸出,一般是結合流表規則一起使用;
     dstmid、srcmid標識報文下次處理的目的模塊編號和上次處理時的模塊編號。如UA處理后的報文需要發送到網絡中,則dstmid設置為5;
     flowID字段由FAST UM填充,標識著報文命中了哪一條流表;
     len表示整個FAST報文長度(包含UM頭,對齊標志和完整以太網報文)。FAST平臺報文緩存區最大為2048,完整以太網報文的MTU不超過1518。
     Pkttype字段表示報文類型,0為數據報文,1為控制報文。
三、ctl_metadata結構定義
     FAST平臺控制報文對應的控制信息為ctl_metadata,包含值、掩碼、地址、源目的MID、類型、報文類型等,詳細定義如下。
      需要注意的是,用戶在UA編程時不需要自己構造Fast控制報文,而是通過調用FAST編程API提供的fast_ua_hw_rd()函數來實現對硬件流水線的管理。FAST 編程API的使用說明將在后續文章中介紹。