0731-84728105
15116127200
FAST流水線推出3.1版本
發布時間:2019-03-27
     爲了支持更加靈活的用戶邏輯定制,以及基于集中(zhōng)緩存的交換輸出調度,解決目前TSN交換開(kāi)發過程中(zhōng)遇到的用戶邏輯定制複雜(zá)等問題,經讨論和征求現有用戶意見,FAST流水線模型由3.0版本升級到3.1版本。
一(yī)、3.0版本存在的問題
      FAST3.0流水線模型如圖1所示。其主要特點是增加了Pre-Ingress流水線段,避免GPP(通用分(fēn)組解析)将IEEE1588v2的PTP協議幀定向到軟件處理或丢棄,同時将GOE(通用輸出引擎)直接與UDO(用戶定義輸出)連接,取消了UDO到GOE的反壓流控信号,避免了分(fēn)組輸出延時的不确定性,爲基于FAST架構的TSN交換實現奠定了基礎。

圖1 FAST流水線3.0版本的結構
     然而,FAST用戶在TSN交換功能開(kāi)發時也面臨了兩個問題。一(yī)是基于FIFO結構的PBuf(分(fēn)組緩存)隻支持先來先服務的輸出調度算法,限制了其他輸出調度算法的應用;二是Pbuf的寫入和讀出邏輯分(fēn)别與GPP和GAC(通用轉發動作)模塊綁定,強制用戶必須同時使用PBuf緩存管理和GPP/GAC的功能,限制了用戶自定義邏輯的靈活性。
二、3.1版本簡介
     FAST流水線3.1版本模型如圖2所示,對比3.0版本主要有三個主要變化。
  (1)基于BID的Pbuf管理
     Pbuf按照RAM的方式組織,内部存儲被劃分(fēn)爲多個分(fēn)組緩沖區,每個緩沖區使用體(tǐ)格BID(緩沖區ID)表示。每個到達流水線的分(fēn)組都會被分(fēn)配一(yī)個BID,BID嵌入分(fēn)組的元數據在流水線中(zhōng)傳遞。當流水線需要從Pbuf讀出分(fēn)組時,根據分(fēn)組的BID向Pbuf發出讀出請求。由于BID機制可以支持非FIFO的分(fēn)組讀出順序,因此可以支持流水線采用更加複雜(zá)的分(fēn)組輸出調度策略。
  (2)Pbuf管理與GPP和GAC解耦
      FAST流水線3.0版本及以前均将Pbuf和寫入和讀出邏輯分(fēn)别嵌入GPP和GAC模塊,因此使用Pbuf時默認需要流水線配置GPP和GAC模塊,這給用戶邏輯定制帶來不便。例如很多用戶交換場景(例如二層TSN交換)并不需要對IP的解析,而GPP包含了IPv4/IPv6以及傳輸層協議的解析,默認使用GPP使得用戶的邏輯難以簡化。

圖2 FAST 3.1的流水線擴展模型
      在FAST流水線3.1版本中(zhōng),Ingress流水線的第一(yī)個模塊固定爲IBM(Ingress緩存管理),IBM從CBM(集中(zhōng)緩存管理)獲取一(yī)個空閑的BID,将分(fēn)組寫入該BID,并将BID嵌入分(fēn)組元數據中(zhōng)。在Egress流水線中(zhōng)嵌入EBM(Egress緩存管理)模塊,負責根據從上遊接收到的分(fēn)組元數據中(zhōng)德BID從CBM中(zhōng)讀取分(fēn)組,向下(xià)遊模塊發出。
      CBM負責Pbuf中(zhōng)空閑緩沖區BID的維護,IBM每接收一(yī)個分(fēn)組就分(fēn)配一(yī)個BID,EBM沒讀取一(yī)個分(fēn)組就回收一(yī)個BID。
      由于流水線元數據中(zhōng)需要攜帶BID信息,因此需要将原有FAST架構中(zhōng)的元數據定義進行修改,主要是取消元數據中(zhōng)的SeqNum序列号字段和縮短分(fēn)組長度字段,詳細見《FAST元數據格式規範》。
  (3)模塊的顔色标注
      爲了進一(yī)步區分(fēn)模塊的屬性,支持用戶利用現有成熟模塊進行快速原型實現以及完全定制自己的模塊,FAST模塊引入顔色标注機制。
表1列車(chē)數據類型與TSN數據類型映射表
顔色 類型 知(zhī)識産權屬性 知(zhī)識産權屬性
綠色 要求基于FAST開(kāi)發必須使用的基礎模塊 任意使用,無知(zhī)識産權問題 IBM、CBM、EBM
黃色 推薦基于FAST開(kāi)發的用戶使用的通用模塊 任意使用,無知(zhī)識産權問題 GPP,GKE,GME,GAC,GOE
白(bái)色 用戶自定義的模塊 開(kāi)發者擁有知(zhī)識産權 1588-GAC,1588-UDO等
FAST社區會嚴格測試保證綠色和黃色模塊的質量,并提供文檔和技術支持。白(bái)色模塊質量有開(kāi)發用戶負責。經用戶授權和FAST社區測試,白(bái)色模塊也會變成黃色模塊。
附:FAST流水線版本曆史
版本 時間 改動
1.0 2016.12 初始的FAST流水線版本,主要特點包括:
(1)标準的五級流水線(用戶定義的解析、關鍵字提取,查表,轉發action,輸出引擎);
(2)用戶通過擴充标準五級流水線模塊功能,實現定制邏輯
2.0 2018.6 (1)支持用戶通過插入自己的模塊擴展流水線的處理功能,而無需修改已有的五級流水線邏輯
3.0 2019.1 在2.0版本基礎上:
(1)增加了Pre-Ingress流水線段,支持對GPP不支持的協議幀進行解析和處理
(2)将GOE直接與UDO連接,避免了分(fēn)組輸出延時的不确定性,爲支持TSN提供保證
3.1 2019.3 在3.0版本基礎上:
(1)将分(fēn)組緩沖區(PB)由單FIFO隊列模式改爲基于RAM的随機存取的方式,支持有優先級區别的分(fēn)組緩存和輸出調度算法;
(2)将分(fēn)組寫入PB的邏輯從GPP模塊中(zhōng)獨立出來,将從PB讀出分(fēn)組的邏輯從GAC模塊分(fēn)離(lí)出來,有助于用戶邏輯定制時,使用流水線提供的分(fēn)組緩存管理機制,而定制自己的分(fēn)組解析和轉發動作邏輯。
(3)修改相應的元數據格式定義;
(4)FAST流水線模塊的顔色标注機制;