爲了(le)支持更加靈活的用(yòng)戶邏輯定制,以及基于集中緩存的交換輸出調度,解決目前TSN交換開(kāi)發過程中遇到(dào)的用(yòng)戶邏輯定制複雜(zá)等問題,經讨論和(hé)征求現(xiàn)有用(yòng)戶意見,FAST流水(shuǐ)線模型由3.0版本升級到(dào)3.1版本。
一、3.0版本存在的問題
FAST3.0流水(shuǐ)線模型如圖1所示。其主要特點是增加了(le)Pre-Ingress流水(shuǐ)線段,避免GPP(通用(yòng)分組解析)将IEEE1588v2的PTP協議(yì)幀定向到(dào)軟件處理(lǐ)或丢棄,同時(shí)将GOE(通用(yòng)輸出引擎)直接與UDO(用(yòng)戶定義輸出)連接,取消了(le)UDO到(dào)GOE的反壓流控信号,避免了(le)分組輸出延時(shí)的不确定性,爲基于FAST架構的TSN交換實現(xiàn)奠定了(le)基礎。
圖1 FAST流水(shuǐ)線3.0版本的結構
然而,FAST用(yòng)戶在TSN交換功能(néng)開(kāi)發時(shí)也(yě)面臨了(le)兩個問題。一是基于FIFO結構的PBuf(分組緩存)隻支持先來(lái)先服務的輸出調度算(suàn)法,限制了(le)其他(tā)輸出調度算(suàn)法的應用(yòng);二是Pbuf的寫入和(hé)讀出邏輯分别與GPP和(hé)GAC(通用(yòng)轉發動作(zuò))模塊綁定,強制用(yòng)戶必須同時(shí)使用(yòng)PBuf緩存管理(lǐ)和(hé)GPP/GAC的功能(néng),限制了(le)用(yòng)戶自(zì)定義邏輯的靈活性。
二、3.1版本簡介
FAST流水(shuǐ)線3.1版本模型如圖2所示,對(duì)比3.0版本主要有三個主要變化。
(1)基于BID的Pbuf管理(lǐ)
Pbuf按照RAM的方式組織,内部存儲被劃分爲多個分組緩沖區(qū),每個緩沖區(qū)使用(yòng)體格BID(緩沖區(qū)ID)表示。每個到(dào)達流水(shuǐ)線的分組都會(huì)被分配一個BID,BID嵌入分組的元數據在流水(shuǐ)線中傳遞。當流水(shuǐ)線需要從(cóng)Pbuf讀出分組時(shí),根據分組的BID向Pbuf發出讀出請(qǐng)求。由于BID機制可以支持非FIFO的分組讀出順序,因此可以支持流水(shuǐ)線采用(yòng)更加複雜(zá)的分組輸出調度策略。
(2)Pbuf管理(lǐ)與GPP和(hé)GAC解耦
FAST流水(shuǐ)線3.0版本及以前均将Pbuf和(hé)寫入和(hé)讀出邏輯分别嵌入GPP和(hé)GAC模塊,因此使用(yòng)Pbuf時(shí)默認需要流水(shuǐ)線配置GPP和(hé)GAC模塊,這(zhè)給用(yòng)戶邏輯定制帶來(lái)不便。例如很(hěn)多用(yòng)戶交換場景(例如二層TSN交換)并不需要對(duì)IP的解析,而GPP包含了(le)IPv4/IPv6以及傳輸層協議(yì)的解析,默認使用(yòng)GPP使得用(yòng)戶的邏輯難以簡化。
圖2 FAST 3.1的流水(shuǐ)線擴展模型
在FAST流水(shuǐ)線3.1版本中,Ingress流水(shuǐ)線的第一個模塊固定爲IBM(Ingress緩存管理(lǐ)),IBM從(cóng)CBM(集中緩存管理(lǐ))獲取一個空(kōng)閑的BID,将分組寫入該BID,并将BID嵌入分組元數據中。在Egress流水(shuǐ)線中嵌入EBM(Egress緩存管理(lǐ))模塊,負責根據從(cóng)上(shàng)遊接收到(dào)的分組元數據中德BID從(cóng)CBM中讀取分組,向下(xià)遊模塊發出。
CBM負責Pbuf中空(kōng)閑緩沖區(qū)BID的維護,IBM每接收一個分組就分配一個BID,EBM沒讀取一個分組就回收一個BID。
由于流水(shuǐ)線元數據中需要攜帶BID信息,因此需要将原有FAST架構中的元數據定義進行修改,主要是取消元數據中的SeqNum序列号字段和(hé)縮短分組長度字段,詳細見《FAST元數據格式規範》。
(3)模塊的顔色标注
爲了(le)進一步區(qū)分模塊的屬性,支持用(yòng)戶利用(yòng)現(xiàn)有成熟模塊進行快(kuài)速原型實現(xiàn)以及完全定制自(zì)己的模塊,FAST模塊引入顔色标注機制。
表1列車數據類型與TSN數據類型映射表
顔色 |
類型 |
知(zhī)識産權屬性 |
知(zhī)識産權屬性 |
綠色 |
要求基于FAST開(kāi)發必須使用(yòng)的基礎模塊 |
任意使用(yòng),無知(zhī)識産權問題 |
IBM、CBM、EBM |
黃色 |
推薦基于FAST開(kāi)發的用(yòng)戶使用(yòng)的通用(yòng)模塊 |
任意使用(yòng),無知(zhī)識産權問題 |
GPP,GKE,GME,GAC,GOE |
白(bái)色 |
用(yòng)戶自(zì)定義的模塊 |
開(kāi)發者擁有知(zhī)識産權 |
1588-GAC,1588-UDO等 |
FAST社區(qū)會(huì)嚴格測試保證綠色和(hé)黃色模塊的質量,并提供文(wén)檔和(hé)技術支持。白(bái)色模塊質量有開(kāi)發用(yòng)戶負責。經用(yòng)戶授權和(hé)FAST社區(qū)測試,白(bái)色模塊也(yě)會(huì)變成黃色模塊。
附:FAST流水(shuǐ)線版本曆史
版本 |
時(shí)間 |
改動 |
1.0 |
2016.12 |
初始的FAST流水(shuǐ)線版本,主要特點包括:
(1)标準的五級流水(shuǐ)線(用(yòng)戶定義的解析、關鍵字提取,查表,轉發action,輸出引擎);
(2)用(yòng)戶通過擴充标準五級流水(shuǐ)線模塊功能(néng),實現(xiàn)定制邏輯
|
2.0 |
2018.6 |
(1)支持用(yòng)戶通過插入自(zì)己的模塊擴展流水(shuǐ)線的處理(lǐ)功能(néng),而無需修改已有的五級流水(shuǐ)線邏輯
|
3.0 |
2019.1 |
在2.0版本基礎上(shàng):
(1)增加了(le)Pre-Ingress流水(shuǐ)線段,支持對(duì)GPP不支持的協議(yì)幀進行解析和(hé)處理(lǐ)
(2)将GOE直接與UDO連接,避免了(le)分組輸出延時(shí)的不确定性,爲支持TSN提供保證 |
3.1 |
2019.3 |
在3.0版本基礎上(shàng):
(1)将分組緩沖區(qū)(PB)由單FIFO隊列模式改爲基于RAM的随機存取的方式,支持有優先級區(qū)别的分組緩存和(hé)輸出調度算(suàn)法;
(2)将分組寫入PB的邏輯從(cóng)GPP模塊中獨立出來(lái),将從(cóng)PB讀出分組的邏輯從(cóng)GAC模塊分離出來(lái),有助于用(yòng)戶邏輯定制時(shí),使用(yòng)流水(shuǐ)線提供的分組緩存管理(lǐ)機制,而定制自(zì)己的分組解析和(hé)轉發動作(zuò)邏輯。
(3)修改相應的元數據格式定義;
(4)FAST流水(shuǐ)線模塊的顔色标注機制; |