為了支持更加靈活的用戶(hù)邏輯定制,以及基于集中緩存的交換輸出調(diào)度,解決目前TSN交換開(kāi)發(fā)過(guò)程中遇到的用戶(hù)邏輯定制復(fù)雜等問(wèn)題,經(jīng)討論和征求現(xiàn)有用戶(hù)意見(jiàn),F(xiàn)AST流水線(xiàn)模型由3.0版本升級(jí)到3.1版本。
一、3.0版本存在的問(wèn)題
FAST3.0流水線(xiàn)模型如圖1所示。其主要特點(diǎn)是增加了Pre-Ingress流水線(xiàn)段,避免GPP(通用分組解析)將IEEE1588v2的PTP協(xié)議幀定向到軟件處理或丟棄,同時(shí)將GOE(通用輸出引擎)直接與UDO(用戶(hù)定義輸出)連接,取消了UDO到GOE的反壓流控信號(hào),避免了分組輸出延時(shí)的不確定性,為基于FAST架構(gòu)的TSN交換實(shí)現(xiàn)奠定了基礎(chǔ)。

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

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