基于FAST的TSN交換(4)基于FPGA的TSN網絡CQF實現
發布時間:2019-1-19
CQF是目前TSN標準定義的可實現確定性交換延時的轉發模型,其交換流程可以方便的映射到FAST平臺的FPGA流水線上。FAST流水線的用戶定義輸出(UDO)模塊可實現用戶定義的分組輸出控制,支持TSN CQF轉發模型的UDO稱為CQF-UDO。
本文介紹的CQF-UDO模塊主要用于CQF功能的驗證。面向具體應用的CQF實現需要對輸出隊列數目,輸出緩沖區大小等參數進行優化。
一、CQF-UDO實現結構
在FAST架構下,除了流分類,單流流量監測和基于PTP協議的全網時間同步功能由FAST基本流水線和擴展的PTP-UDA模塊實現外,基于CQF的流量整型功能由CQF-UDO模塊實現。基于FAST定義的標準UDO接口信號和數據交換時序,CQF-UDO可方便地與FAST基本流水線對接。
(1)模塊組成
FPGA實現的CQF-UDO模塊的結構如下圖所示。其中Cin和Cout接口為模塊的訪問控制接口,軟件可通過該接口對模塊內部的寄存器、計數器和控制表格進行訪問。模塊通過PKT接口接收和發送分組,Sync_time信號用于從PTP-UDA模塊接收全網同步時鐘,對時間門控邏輯進行控制。
為簡化設計,CQF-UDO維護4個隊列,其中最高優先級的Q7和Q6以乒乓隊列的形式保存時間敏感分組,Q4保存帶寬預約流的分組,Q0保存Besteffort分組。當需要對時間敏感分組劃分不同優先級時,則需要不同的乒乓隊列保存不同優先級的時間敏感分組。

圖1 CQF-UDO實現結構
為了提高存儲效率,CFQ-UDO模塊將所有緩存的分組緩存在共享的RAM緩沖區PB中緩存,每個輸出調度隊列Q0/Q4/Q6/Q7只保存分組的地址。IC從FBD獲取當前空閑緩沖區的狀態STA,對不同輸出隊列采用不同的緩沖區管理算法,決定到達的分組是丟棄還是送PB緩存。
CQF-UDO包含的主要模塊和功能如下表所示。
(2)關鍵數據結構
PKT:IC/OC與PB之間傳輸,以及PB保存的PKT為FAST分組結構,即FAST定義的32字節元數據(metadata)加上不含校驗字段的以太網分組。UDO保存FAST元數據的原因是其中攜帶了分組接收時間戳,可用于后續透明時鐘的修訂。
BD:為PB中512字節緩沖區的地址,初始化時硬件將所有的空閑BD寫入空閑緩沖區隊列(FBQ),IC在接收到分組需要將分組寫入PB時,首先從FBQ讀取空閑BD,OC在從PB讀取分組發送結束后,將BD釋放寫回FBQ;
PD:分組描述符,包含從分組元數據中提取出來的14位的flowID,3位的優先級Pri,以及最多3個BD信息等。其中Pri是分組攜帶的優先級,flowID由FAST流水線的GME模塊生成,BD由輸入控制模塊IC獲得。
二、CQF-UDO的配置管理
根據CQF-UDO的實現模型,共有9個訪問點需要軟件進行管理配置。這些訪問點共同組成了CQF-UDO數據轉發的抽象。用戶可以根據不同的軟件配置實現輸出接口的資源預約配置,流量測量和整型,以及轉發狀態檢測等功能。各訪問點的詳細信息如下表所示。
根據FAST規范,上述信息需要映射到一個32位的虛擬地址空間中。CPU上驅動通過訪問這些虛擬地址對這些信息進行管理。
三、CQF-UDO對標準CQF整型處理的簡化
CQF-UDO模塊實現的CQF功能只是標準CQF的一個子集或是簡化的實驗版本,主要簡化包括:
1.簡化的入隊流控機制,使用簡單的令牌桶(B,r,L三個參數)實現代替802.1Q-2014規范定義的基于信用的整形器(10個參數)的功能;
2.使用4個輸出隊列代替標準的8個輸出隊列,因此只支持一個優先級的時間敏感流量,一個優先級的預約帶寬流量以及一個優先級的BE流量。
盡管存在上述簡化,CQF-UDO仍可以對TSN網絡中CQF整型機制進行驗證,實現確定性的傳輸延時保證。關于分組緩沖區PB的大小評估額設置,隊列長度設置以及緩沖區管理算法將在后續文章中給出。