袁夢(mèng)瑤,喬廬峰,陳慶華,王雷淘
(陸軍工程大學(xué),江蘇 南京 210001)
傳統(tǒng)以太網(wǎng)遵循“盡力而為”的數(shù)據(jù)傳輸方式,并不為網(wǎng)絡(luò)中的數(shù)據(jù)提供網(wǎng)絡(luò)帶寬、傳輸時(shí)延、時(shí)延抖動(dòng)等保證。像音頻、視頻業(yè)務(wù),如果不能滿足其對(duì)傳輸時(shí)延和時(shí)延抖動(dòng)的要求,很可能造成音視頻的失真。另外,在工業(yè)和汽車控制領(lǐng)域中,用于控制工廠生產(chǎn)和駕駛操作的業(yè)務(wù),其傳輸延遲不確定會(huì)導(dǎo)致系統(tǒng)不穩(wěn)定、控制操作不準(zhǔn)確。盡管已經(jīng)有PROFINET、EtherCAT、CAN 這類網(wǎng)絡(luò)技術(shù)來解決以上問題,但這些網(wǎng)絡(luò)體系架構(gòu)封閉,通用性差。基于以上原因,IEEE 802.1 工作組的TSN 任務(wù)組制訂了時(shí)間敏感網(wǎng)絡(luò)(Time-Sensitive Networking,TSN)標(biāo)準(zhǔn)[1],其高精度時(shí)間同步、資源預(yù)留及路徑控制、流量整形和業(yè)務(wù)調(diào)度等一系列關(guān)鍵技術(shù),能夠保證數(shù)據(jù)傳輸?shù)膶?shí)時(shí)性和可靠性[2]。
TSN 具有時(shí)間同步、流量調(diào)度和網(wǎng)絡(luò)配置3 大關(guān)鍵技術(shù)[3]。其中,時(shí)間同步是整個(gè)TSN 技術(shù)實(shí)現(xiàn)的前提,流量調(diào)度是TSN 技術(shù)實(shí)現(xiàn)的關(guān)鍵,網(wǎng)絡(luò)配置是TSN 技術(shù)實(shí)現(xiàn)的保障。TSN 網(wǎng)絡(luò)配置模式如圖1 所示。集中網(wǎng)絡(luò)配置控制器(Centralized Network Configuration Controller,CNC)通過集中用戶配置控制器(Centralized User Configuration Controller,CUC)得知發(fā)送端和接收端對(duì)網(wǎng)絡(luò)帶寬和端到端傳輸時(shí)延的需求信息,然后根據(jù)需求信息進(jìn)行運(yùn)算,并將得到的網(wǎng)絡(luò)配置參數(shù)下發(fā)給網(wǎng)絡(luò)中相關(guān)的各網(wǎng)橋[4],由網(wǎng)橋根據(jù)配置進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā)。
圖1 TSN 網(wǎng)絡(luò)配置模式
為了保證網(wǎng)絡(luò)服務(wù)質(zhì)量(Quality of Service,QoS),TSN 將網(wǎng)絡(luò)中的業(yè)務(wù)流進(jìn)行區(qū)分,并根據(jù)傳輸特性將業(yè)務(wù)流劃分為8 類。每類賦給相應(yīng)的優(yōu)先級(jí)值,優(yōu)先級(jí)取值范圍為0~7。如圖2 所示,從數(shù)據(jù)幀頭優(yōu)先級(jí)字段可以獲取數(shù)據(jù)幀的優(yōu)先級(jí)信息。
圖2 TSN 網(wǎng)絡(luò)中數(shù)據(jù)幀格式
本文設(shè)計(jì)的TSN 交換機(jī)硬件結(jié)構(gòu),如圖3 所示。該系統(tǒng)由數(shù)據(jù)接收MAC 控制器、發(fā)送MAC 控制器、數(shù)據(jù)處理單元、幀分類和雙桶哈希查找單元、Crossbar 交換單元、8 優(yōu)先級(jí)共享緩存隊(duì)列管理器、調(diào)度器、處理單元以及時(shí)間同步與管理單元組成。
圖3 TSN 交換機(jī)硬件結(jié)構(gòu)
接收MAC 控制器接收上一網(wǎng)絡(luò)節(jié)點(diǎn)傳輸過來的數(shù)據(jù),并將接收的數(shù)據(jù)傳遞給后級(jí)數(shù)據(jù)處理單元。數(shù)據(jù)處理單元將數(shù)據(jù)幀頭中的關(guān)鍵信息,如源MAC 地址、目的MAC 地址、VLAN ID 等抽取出來,并通過幀分類電路進(jìn)行分類識(shí)別,確定轉(zhuǎn)發(fā)關(guān)系。與時(shí)間同步相關(guān)的協(xié)議幀,經(jīng)過Crossbar 被交換到處理單元或時(shí)間同步與管理單元;用戶數(shù)據(jù)幀通過雙桶哈希查找單元,進(jìn)行源MAC 地址學(xué)習(xí)和目的MAC 地址查找,并根據(jù)哈希查找電路返回的輸出端口映射位圖及數(shù)據(jù)幀長(zhǎng)度、轉(zhuǎn)發(fā)優(yōu)先級(jí)信息等形成該數(shù)據(jù)幀的本地頭,后由Crossbar 交換單元轉(zhuǎn)發(fā)至相應(yīng)的端口[5]。
在端口處,8 優(yōu)先級(jí)共享緩存隊(duì)列管理器將數(shù)據(jù)幀存入共享緩存區(qū),并根據(jù)本地頭中的優(yōu)先級(jí)信息將數(shù)據(jù)存儲(chǔ)地址壓入對(duì)應(yīng)的優(yōu)先級(jí)隊(duì)列,而后調(diào)度器根據(jù)流量調(diào)度算法選擇優(yōu)先級(jí)隊(duì)列,從隊(duì)列中取出數(shù)據(jù)存儲(chǔ)地址。數(shù)據(jù)存儲(chǔ)地址指向的數(shù)據(jù)則由該端口輸出。
TSN 中流量調(diào)度算法包括嚴(yán)格優(yōu)先級(jí)(Strict Priority,SP)算法、基于信用的整形器(Credit-Based Shaper,CBS)算法、時(shí)間感知整形器(Time-Aware Shaper,TAS)算法,又稱門控調(diào)度算法、循環(huán)隊(duì)列轉(zhuǎn)發(fā)(Cyclic Queuing and Forwarding,CQF)算法以及幀搶占(Freemption)等[6]。SP 算法是最常用的一種流量調(diào)度算法,依據(jù)隊(duì)列的優(yōu)先級(jí)信息進(jìn)行傳輸選擇。CBS 算法是一種基于信用的調(diào)度算法,可以提前為業(yè)務(wù)流預(yù)留帶寬,提供端到端資源管理,保證時(shí)間敏感業(yè)務(wù)流的確定性傳輸。TAS 算法將不同類型的業(yè)務(wù)流在時(shí)間上隔離,于特定的時(shí)間段發(fā)送特定類型的數(shù)據(jù),實(shí)現(xiàn)業(yè)務(wù)流的傳輸時(shí)延可控。CQF 算法是對(duì)TAS 算法的一個(gè)改進(jìn),在TAS 算法的基礎(chǔ)上增加流量入隊(duì)控制,使流量按照時(shí)間計(jì)劃入隊(duì),控制數(shù)據(jù)進(jìn)出隊(duì)列交錯(cuò)進(jìn)行,確保交換機(jī)在上一時(shí)隙收到的數(shù)據(jù)幀下一時(shí)隙轉(zhuǎn)發(fā)出去,使時(shí)間敏感業(yè)務(wù)流的傳輸時(shí)延易于計(jì)算。幀搶占調(diào)度算法中,搶占幀可打斷當(dāng)前正在傳輸?shù)钠胀〝?shù)據(jù)幀,并對(duì)其進(jìn)行切片,等待搶占幀傳輸完畢,再繼續(xù)傳輸被打斷的普通數(shù)據(jù)幀。此算法可與TAS算法結(jié)合使用,減少保護(hù)帶帶寬。
調(diào)度器是TSN 交換機(jī)的核心單元。如果調(diào)度器電路僅涉及嚴(yán)格優(yōu)先級(jí)一種調(diào)度算法,交換機(jī)就無法滿足時(shí)間敏感業(yè)務(wù)流對(duì)傳輸時(shí)延可控的要求。本文設(shè)計(jì)的調(diào)度器電路使用SP、CBS、TAS 這3 種調(diào)度算法,并可以根據(jù)配置靈活使用。具體調(diào)度器電路,如圖4 所示。圖4 中端口支持8 個(gè)優(yōu)先級(jí)隊(duì)列,隊(duì)列數(shù)值越高,優(yōu)先級(jí)越高。所有隊(duì)列都支持SP 算法和TAS算法,隊(duì)列7和隊(duì)列6還支持CBS調(diào)度算法。隊(duì)列后的緩沖fifo 用來暫存隊(duì)列數(shù)據(jù),目的是使電路簡(jiǎn)便快速地獲取隊(duì)列數(shù)據(jù)進(jìn)行流量調(diào)度。
圖4 TSN 交換機(jī)調(diào)度器設(shè)計(jì)
嚴(yán)格優(yōu)先級(jí)算法的工作原理是選擇傳輸優(yōu)先級(jí)最高的隊(duì)列。如圖5 所示,電路從優(yōu)先級(jí)最高的隊(duì)列7 開始訪問,如果隊(duì)列非空,則選擇該隊(duì)列中的數(shù)據(jù)進(jìn)行傳輸,否則訪問優(yōu)先級(jí)次之的隊(duì)列6。若隊(duì)列6 非空,選擇該隊(duì)列數(shù)據(jù)進(jìn)行傳輸,否則依優(yōu)先級(jí)從高到低的順序訪問。
圖5 SP 算法工作原理
支持CBS 算法的隊(duì)列有一個(gè)信用值Credit。當(dāng)Credit ≥0 且隊(duì)列非空時(shí),隊(duì)列滿足傳輸條件。但是,因?yàn)樵诒疚脑O(shè)計(jì)的調(diào)度器中,CBS 算法是與TAS 算法、SP 算法一起工作的,所以判斷隊(duì)列是否符合傳輸條件的因素,不僅有隊(duì)列信用值,還有隊(duì)列門狀態(tài)和支持CBS 算法的其他隊(duì)列的傳輸狀態(tài)兩個(gè)因素。因此,CBS 算法電路中設(shè)計(jì)門狀態(tài)監(jiān)視器電路模塊,用來監(jiān)測(cè)隊(duì)列門狀態(tài)。當(dāng)隊(duì)列門關(guān)閉時(shí),隊(duì)列停止傳輸,信用值保持不變。設(shè)計(jì)仲裁器電路模塊,從多個(gè)支持CBS 調(diào)度算法并符合傳輸條件的隊(duì)列中選擇其中一個(gè)隊(duì)列進(jìn)行傳輸。此外,設(shè)計(jì)隊(duì)列信用更新電路模塊,進(jìn)行隊(duì)列信用更新。支持CBS 算法隊(duì)列的信用更新機(jī)制如圖6所示。
圖6 CBS 算法隊(duì)列信用更新機(jī)制
假如隊(duì)列正在傳輸,則隊(duì)列Credit 以sendSlope速率降低,直至信用下限lowCredit,停止傳輸;若隊(duì)列非空并處于等待傳輸狀態(tài),則隊(duì)列Credit 則以idleSlope 速率增加,直至上限保持不變。sendSlope和idleSlope 兩個(gè)參數(shù)是由處理器配置給支持CBS算法隊(duì)列的。
TAS 算法對(duì)流量的調(diào)度主要依靠時(shí)間同步機(jī)制和門控調(diào)度機(jī)制。在TNS 中各交換機(jī)在時(shí)間同步的基礎(chǔ)上,交換機(jī)端口執(zhí)行處理器單元配置的門控列表,按照時(shí)間計(jì)劃表控制數(shù)據(jù)輸出隊(duì)列,將調(diào)度流量在特定的時(shí)間段傳輸,防止其他流量對(duì)調(diào)度的流量造成干擾,最終實(shí)現(xiàn)調(diào)度流量的確定性傳輸和時(shí)延可控。TAS 算法具體電路結(jié)構(gòu)如圖7 所示,共分為3 個(gè)模塊,即列表配置狀態(tài)機(jī)、循環(huán)定時(shí)狀態(tài)機(jī)和列表執(zhí)行狀態(tài)機(jī)。狀態(tài)機(jī)與狀態(tài)機(jī)之間相互協(xié)助實(shí)現(xiàn)門控調(diào)度功能,具體工作流程如圖8 所示。列表配置狀態(tài)機(jī)接收到來自處理器單元對(duì)列表配置更新的信號(hào)后,對(duì)門控列表和與列表配置相關(guān)的參數(shù)進(jìn)行更新,如門控列表長(zhǎng)度、循環(huán)周期等。當(dāng)對(duì)門控列表重新配置后,則給循環(huán)定時(shí)狀態(tài)機(jī)一個(gè)配置成功等待執(zhí)行的信號(hào)。循環(huán)定時(shí)狀態(tài)機(jī)收到信號(hào)后,根據(jù)列表循環(huán)周期、執(zhí)行時(shí)間等信息,判斷列表是否開始執(zhí)行。若開始執(zhí)行,則向列表執(zhí)行狀態(tài)機(jī)發(fā)送一個(gè)列表執(zhí)行信號(hào)。列表執(zhí)行狀態(tài)機(jī)在接收到列表執(zhí)行信號(hào)后,從列表配置狀態(tài)機(jī)處獲取門控列表,并依次執(zhí)行各表項(xiàng),更改對(duì)應(yīng)的隊(duì)列門的開關(guān)狀態(tài)。
圖7 TAS 算法電路模塊
圖8 TAS 算法工作流程
本文以Xilinx Virtex-6 開發(fā)板為硬件平臺(tái)搭建TSN 交換機(jī)電路,其關(guān)鍵調(diào)度算法的仿真波形如圖9和圖10 所示。圖9 和圖10 展示的是CBS 算法電路的仿真結(jié)果圖,Credit_A 和Credit_B 信號(hào)分別表示隊(duì)列7 和隊(duì)列6 的信用值。如圖4 所示TSN 調(diào)度器設(shè)計(jì),隊(duì)列7 和隊(duì)列6 都是支持CBS 算法的隊(duì)列,且隊(duì)列7 比隊(duì)列6 優(yōu)先級(jí)高。圖9 中1 處顯示系統(tǒng)初始化后,隊(duì)列A 和隊(duì)列B 都處于非傳輸狀態(tài),信用值都為0;圖9 中2 處顯示A 隊(duì)列tansmitting 信號(hào)拉高,信用值增加,驗(yàn)證了在A、B 兩隊(duì)列非空且門被打開的情況下,CBS 算法電路可通過仲裁器將傳輸?shù)膬?yōu)先權(quán)賦給優(yōu)先級(jí)較高的A 隊(duì)列;圖9 中3 處顯示A 隊(duì)列信用保持不變,transmitting 信號(hào)拉低,驗(yàn)證了CBS 算法電路的門狀態(tài)監(jiān)視器模塊檢測(cè)到A 隊(duì)列門狀態(tài)變?yōu)殛P(guān)閉,并停止該隊(duì)列的數(shù)據(jù)傳輸和信用更新。圖10 中4 處顯示即使A 隊(duì)列門打開,其優(yōu)先級(jí)比B 隊(duì)列高,但B 隊(duì)列正在傳輸,A 隊(duì)列不能打斷B 隊(duì)列的傳輸,只能等待;圖10 中5 處顯示A、B 兩隊(duì)列都變空,不滿足隊(duì)列傳輸條件,調(diào)度器停止兩個(gè)隊(duì)列的數(shù)據(jù)傳輸。
圖9 CBS 算法仿真結(jié)果1
圖10 CBS 算法仿真結(jié)果2
本文給出了一種TSN 交換機(jī)系統(tǒng)設(shè)計(jì)方案,由數(shù)據(jù)收發(fā)單元、數(shù)據(jù)處理單元、交換單元、隊(duì)列管理器和調(diào)度器組成。為了滿足混合業(yè)務(wù)流的轉(zhuǎn)發(fā)需求,設(shè)計(jì)的TSN 交換機(jī)調(diào)度器支持SP、CBS、TAS這3 種調(diào)度算法。CBS 算法可預(yù)留帶寬,保證時(shí)間敏感業(yè)務(wù)流的確定性傳輸。TAS 算法可保證時(shí)間敏感業(yè)務(wù)流傳輸時(shí)延可控。3 種調(diào)度器可根據(jù)配置,靈活使用。TSN 交換機(jī)關(guān)鍵電路在Xilinx Virtex-6開發(fā)板上進(jìn)行了設(shè)計(jì)與仿真分析,結(jié)果表明,調(diào)度器可以滿足時(shí)間敏感業(yè)務(wù)流確定性傳輸?shù)男枨蟆?/p>