來源:TSNLAB 微信公眾號
萬眾期待的TSN門控實戰環節來啦。
出發前,先要統一思想。讓我們再次搬出IEEE 802.1Q標準文檔中描述門控的這張經典圖片:

我特意上了底色,分解為三部分信息來看:
•橙色部分是門控的核心,配置門控表(GCL,Gate control list),然後各隊列的門的“開”、“關”狀態,根據門控表決定。門控表可以有多行,每一行包含各隊列開關狀態和TimeInterval兩個信息(後者決定了這一行生效的時間);門控表根據基準時間BaseTime,循環執行,每CycleTime執行一次。
•綠色部分表示不同的流量等級(traffic class)會分別進入這8個隊列,是門控方案執行的必要組件。暗含的關鍵信息是,必須要讓多個流量進入不同的隊列,才能通過GCL實現差異化的調度服務,即在同一時間,有的隊列開門,有的隊列關門。具體的入隊方式有很多,例如VLAN報文頭的優先級字段有8種不同的流量等級,IP報文頭的DSCP字段也可以映射到8種不同的流量等級上,另外還可以基於對報文頭具體信息(如源目的MAC地址、源目的IP地址等)手動指定報文的流量等級。另外,8隊列是比較經典、常用的設計,並不是限製隻能有8隊列,可以更多或更少。
•藍色部分是可以和門控配合使用的其它調度技術。圖中寫的傳輸選擇算法(Transmission Selection Algorithm),在Table 8-6中有絕對優先級(SP,Strict Priority)、基於信用的整形(CBS,Credit-Based Shaper)、增強傳輸選擇(ETS,Enhanced Transmission Selection,不限於各類加權輪詢機製如WRR、DWRR等)和異步流量整形(ATS,Asynchronous Traffic Shaping)。以門控配合SP調度舉例,當隊列7、6同時“開門”,且兩個隊列都有待調度報文時,由於隊列7優先級更高,則需先調度隊列7的報文,直到隊列7排空或門控狀態切換。
本文,我們主要關注橙色部分和綠色部分的配合,嚐試一個簡單的門控配置案例。
場景見下圖。紅色流量是要提供時延保障的關鍵流量,他們有不同的特征;綠色是有大突發的背景流。那麼配置的關鍵,就是要給出這三條流在TSN設備1的出接口(通向TSN設備2)上的門控配置方案。

最理想的情況下,端側和網絡已經實現了1588v2級別的時間同步,即所有設備都有一個相同的時間基準,並且終端的發包時間(相位)、攜帶的優先級字段,都可以和網絡實現協同。這時,我們可以讓終端a1的發包相位為0us(即會在0ms、1ms、2ms、...發包),攜帶優先級2(即會進入TSN設備的隊列2);讓終端a2的發包相位為10us(即會在0.01ms、2.01ms、4.01ms、...發包),攜帶優先級1。終端b不做特殊配置,默認優先級為0。假設所有報文從終端發出,到進入TSN設備1的出端口門控隊列,需要3us。那麼,GCL可以做如下配置:

看到這個,您怎麼想?總之我反正覺得,這也太XX離譜了吧,這麼理想的條件下,這麼簡單的拓撲,這麼少的流量,配出來的GCL已經看不懂了。要是成百上千條流可怎麼辦呀?
那麼讓我們簡化億點點吧:

怎樣,是否有種如聽仙樂耳暫明的感覺,簡直Amazing!What happened?其實,這裏我們做了流的聚合編排、歸並了大周期和相鄰門控時隙,留了安全閾量,同時也沒有糾結於“給關鍵流關門”,而是隻要保障關鍵流來的時候,其它流關門就可以了。
感興趣的讀者可以細細體會和理解一下這兩個列表。
現階段,很多存量端側都沒有更新TSN相關的軟硬件特性,故而網絡無法輕鬆的和端側協同控製端側的發包時間、優先級,甚至有些場景還做不到端和網絡的時間同步。對於第一種情況,當端側的發包時間(相位)不可控製時,影響不大,讓關鍵業務發生彙聚時,誰先到了就先走(隻不過如果能協同規劃端側的發包時間,整體的方案配置可以更優化,最終體現在時延更低或能容納更多業務上);第二種情況也可以應對,無需報文自己攜帶優先級,基於流量識別(使用Qci的PSFP或類似技術),把關鍵業務引入特定隊列即可;第三種情況,因為端、網無同步,則報文在網絡第一跳進入設計好的時隙時可能會引入一定的等待時間,即端到端的低時延性能會有劣化(但有界時延仍然可以保障)。
還用上麵的例子,假設這時終端a1、a2的發包相位都是0us(而非之前協調好的,一個0us發,另一個10us發),也沒有攜帶優先級字段,其它條件不變,那麼門控方案可以如下:

同時,需要在TSN設備1的入口處,配置識別源地址為a1、a2,目的地址為A的報文,獲得內部優先級5,從而進入隊列5。
當然,如果要大規模的應用門控方案,還是推薦使用一套TSN門控編排算法,以代替手工計算。
注:本文對於門控配置中的部分細節進行了省略,比如門控的計算過程、預留安全閾量以應對可能的抖動、Guard band的考慮等。計算門控長度核心就是用報文長度除以帶寬(別忘了Byte和bit之間的轉換)再加一些安全閾量,而門控的開始時間就是考慮報文發送時間和傳輸過程中的所有延遲。本文給出的示例場景不涉及多TSN網絡設備之間的門控協同配置,因這種情況可以類比發送端到第一個網絡設備之間的配置思路進行應對。