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

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

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