來源:TSNLAB 微信公眾號
TSN近期技術係列文章第一篇,從以下幾點,寫寫ATS(Asychronous Traffic Shaping,異步流量整形)。
•ATS原理簡述與標準沿襲
•ATS對比CBS
•ATS對比HQoS
•ATS的未來
關於ATS的技術細節,公眾號

中寫了一個係列7篇關於ATS的文章,很詳細,推薦感興趣的讀者去觀看。
一、ATS原理簡述與標準沿襲
回顧一下《TSN調度機製,看這一篇就夠了!》,其中ATS相關內容原文拷貝過來:
異步流量調度(ATS,Asynchronous Traffic Shaping),也和單速令牌桶機製有點像,甚至ATS調度器的關鍵配置參數就是cir(CommittedInformationRate)和cbs(CommittedBurstSize)。簡單來講,cir控製整形器允許通過的整體速率,cbs控製整形器能容忍的突發程度。TSN標準中,ATS核心算法部分寫了一大堆偽代碼,看得人雲裏霧裏,但實際上這段偽代碼本質上就是在描述單速令牌桶的整形機製。不過,ATS的優點在於,通過在報文入隊時運行算法,給報文分配一個允許調度時間(EligibilityTime)。這樣,在傳輸選擇機製進行判斷的時候,不需要再重新執行令牌桶的計算。另外,ATS還有一個調度器組的概念,即多個ATS調度器可屬於一個ATS調度器組。ATS的偽代碼還描述了當ATS調度器組對應一個物理上先入先出(FIFO)隊列時的情況。反過來,ATS調度器不依賴於和硬件調度隊列進行綁定,因此,ATS調度器可以進行靈活的整形,逐流、或逐彙聚流整形,均可。通過使用ATS進行逐跳整形,網絡中不產生大突發和突發彙聚,整體的網絡性能會得到改善。
《TSN的異步整形(ATS)(1):基本思想》裏麵也提到,ATS最早源自Johannes Specht(802.1Qcr標準的Editor)在2013年提出的基於緊急度的調度器(UBS)。我在2019年的時候和Johannes本人聊過為什麼在標準討論過程中,UBS逐漸演變成了ATS,從他的回答中總結出最核心的原因是,IEEE 802.1需要定義出來的新調度器/整形器在工程上是相對易於實踐的。可以看到,現在的ATS允許多流在同一個隊列中調度,例如有1000條流經過交換機,交換機還是隻支持經典的8隊列,那也是可以用ATS的。這樣,ATS終於成為了802.1Q中繼SP、CBS、ETS、TAS之後的第五個傳輸選擇算法。
二、ATS對比CBS
在技術上,我們認為ATS顯著優於CBS,原因如下。1,CBS約等於桶深為0的、可以欠一個報文的令牌桶整形器(不完全等於,因為CBS中隊列在等待時credit會累積到超過“桶深”),而ATS可以配置“桶深”,即CommittedBurstSize,所以ATS在可以實現類似CBS的整形效果的同時,配置更靈活;2,CBS是基於class的整形,同class流量之間的幹擾無法消除,而ATS可以基於流、彙聚流、class進行交織整形,可以較好地按需保持流之間的隔離性;3,CBS早期缺乏對時延保障的準確量化計算,僅對七跳拓撲提供配置推薦,雖然後續也可以通過理論分析進行準確計算,但ATS的量化方式擴展性更好,在任意拓撲、任意流量下,可以基於流量模型計算出配置,難度顯著低於CBS。
但是CBS目前在商業上更成功,雖然這得益於AVB的先發優勢,但其中也有值得借鑒的經驗。AVB profile中進一步限製了CBS隻能用於最高、次高優先級隊列,分別調度音頻、視頻,再配合SRP資源預留和1588v2時間同步,形成了雖有局限但能解決特定場景問題的完整網絡方案,提供給上層使用。這是ATS未來可以參考的部分。
三、ATS對比HQoS
我認為僅就ATS在標準中的定義而言,是可以通過兩層HQoS來等效實現的。
HQoS(Hierarchical Quality of Service),層次化QoS,是很常見的用在路由器、交換機上的方案。HQoS可以是兩層、三層、四層、五層等,而且一般每一層都能單獨配置一個令牌桶整形器,更多信息讀者可以自行查找。從公開的文檔裏隨便找了個圖:

假設一個支持8個ATS整形器組、每組支持8個ATS整形器的ATS設備。那它的功能就是:基於流量識別把報文放入64個ATS整形器中的一個,並且依照該ATS整形器的cir和cbs的配置為該報文計算EligibilityTime;隨後,這個報文在其所屬的ATS整形器所對應的ATS整形器組中遵循FIFO排隊,並且輪到自己時,當前時間必須大於等於EligibilityTime方可被調度。ATS整形器組之間的調度方式可任意配置,如SP。
好,接下來我們來看一個兩層HQoS隊列,上層8隊列,每個上層隊列又對應下層8個隊列,每個下層隊列可以配置令牌桶整形器的cir和cbs。同樣的,基於流量識別把報文放入64個下層隊列中的一個,並且依照該下層隊列對於令牌桶所配置的cir和cbs來維護令牌桶狀態,當且僅當報文能取走足夠的令牌桶時(令牌桶的具體機製不清楚的讀者請自行查資料),該報文可以進入上層隊列,並在其中遵循FIFO排隊。上層隊列之間的調度方式可任意配置,如SP。
這裏的關鍵,一是計算EligibilityTime的本質,就是在基於注入速率cir、桶深cbs的情況下,計算到什麼時間才能有足夠的令牌,所以和傳統令牌桶機製中,令牌夠了才允許調度是一個道理;二是,ATS中的當前時間大於EligibilityTime,和HQoS中zhong的de令ling牌pai桶tong中zhong獲huo取qu了le足zu夠gou的de令ling牌pai,都dou是shi該gai報bao文wen被bei選xuan擇ze發fa送song的de必bi要yao不bu充chong分fen條tiao件jian,即ji不bu滿man足zu條tiao件jian一yi定ding不bu能neng被bei發fa送song,但dan滿man足zu條tiao件jian也ye不bu一yi定ding馬ma上shang能neng被bei發fa送song(因為ATS調度器組或HQoS上層隊列之間還有調度上的競爭)。
另外,ATS中的最大駐留時間,可以通過配置緩存、配置流量監管等方式等效實現。
歡迎讀者們討論或嚐試證偽“ATS可以由HQoS實現”這個命題。如果這個命題成立,對於加速ATS的應用,是個利好。
四、ATS的未來?
如果不局限於IEEE 802.1Q標準的ATS本身,即不把ATS僅僅當做單節點整形器來看待,而是考慮ATS作為一種網絡端到端的確定性方案,再聯係到學術界關於ATS廣泛的研究,其實ATS的核心理念就是,“在源端或網絡入節點,盡量把流量突發整形為相對平滑的模式,從而改善整個網絡的性能。同時可以通過數學分析給出流量的時延上界”。
我(wo)們(men)十(shi)分(fen)認(ren)同(tong)這(zhe)個(ge)理(li)念(nian),尤(you)其(qi)是(shi)在(zai)大(da)規(gui)模(mo)網(wang)絡(luo)中(zhong)。就(jiu)好(hao)比(bi)交(jiao)通(tong)係(xi)統(tong),輔(fu)路(lu)彙(hui)入(ru)主(zhu)路(lu)時(shi),如(ru)果(guo)輔(fu)路(lu)隻(zhi)有(you)一(yi)條(tiao)道(dao),即(ji)使(shi)輔(fu)路(lu)車(che)流(liu)大(da),也(ye)隻(zhi)會(hui)在(zai)輔(fu)路(lu)上(shang)排(pai)隊(dui),對(dui)主(zhu)路(lu)的(de)影(ying)響(xiang)較(jiao)小(xiao);反之,如果輔路三條道,主路三條道,彙聚後還是三條道,那隻要車流量較大時,必定就會形成一個擁塞點。
大規模網絡中,很多問題都是突發引起的,有大尺度的突發(例如著名的TCP全局同步問題),也有小尺度的突發(例如一個視頻業務,其流量就有顯著的突發特征)。ATS中通過合理配置cir和cbs就可以分別處理這兩個問題。甚至我們可以用博弈論中經典的囚徒困境來類比(簡單理解,在各方無法有效溝通的前提下,招供是每個人的最優策略,但每個人都招供,會造成總體結果非最優,即損人不利己的結果):

從小尺度突發的角度,例如一個視頻APP,對於開發者而言,不做額外的平滑流量的操作是更優、更簡單的,但是成千上萬的微突發最終可能會造成某一跳的擁塞。而有了ATS,可以在網絡邊緣側(網絡入口)直接通過配置較小的cbs“吃掉”突發。
從大尺度突發的角度,TCP的各種擁塞控製算法,包括QUIC裏(li)麵(mian)的(de)擁(yong)塞(sai)控(kong)製(zhi)算(suan)法(fa),都(dou)需(xu)要(yao)盡(jin)快(kuai)給(gei)用(yong)戶(hu)探(tan)到(dao)一(yi)個(ge)更(geng)高(gao)且(qie)相(xiang)對(dui)合(he)理(li)的(de)發(fa)送(song)速(su)率(lv)。在(zai)這(zhe)方(fang)麵(mian)就(jiu)先(xian)不(bu)過(guo)多(duo)展(zhan)開(kai),但(dan)整(zheng)體(ti)看(kan)來(lai),網(wang)絡(luo)中(zhong)無(wu)時(shi)無(wu)刻(ke)都(dou)有(you)千(qian)千(qian)萬(wan)萬(wan)組(zu)終(zhong)端(duan)在(zai)各(ge)自(zi)為(wei)戰(zhan)的(de)做(zuo)這(zhe)件(jian)事(shi),這(zhe)就(jiu)是(shi)個(ge)非(fei)合(he)作(zuo)博(bo)弈(yi)的(de)過(guo)程(cheng),最(zui)終(zhong)的(de)結(jie)果(guo)也(ye)終(zhong)究(jiu)難(nan)以(yi)逃(tao)離(li)“損人不利己”的納什均衡。而有了ATS,可以在邊緣側直接用cir控製流量平均速率的上限,對於用戶而言,就是花多少錢,買多少服務,不需要自己去探索了。(ATS是否傷害到網絡的統計複用性?一種簡單的解決方法是,對於對服務質量有要求的業務,可以“購買”ATS的服務,即成為ATS業務,並且對於非ATS業務而言是絕對高優先級,而非ATS業務可以複用所有剩餘帶寬。)
也就是說,ATS直接“堵死了”招供這條路,從而破解了囚徒困境(想必我是第一個從ATS講到博弈論的人哈哈哈)。
當dang然ran,實shi際ji的de模mo型xing會hui更geng複fu雜za。大da規gui模mo網wang絡luo下xia的de性xing能neng研yan究jiu,就jiu好hao比bi宏hong觀guan經jing濟ji學xue一yi樣yang,影ying響xiang因yin素su太tai多duo,但dan又you經jing常chang很hen難nan判pan斷duan哪na些xie因yin素su是shi主zhu要yao因yin素su,建jian模mo也ye很hen難nan建jian的de準zhun。所suo以yi雖sui然ran我wo們men猜cai測ce,如ru果guo廣guang泛fan在zai網wang絡luo邊bian緣yuan節jie點dian部bu署shuATS,可能可以大幅度改善網絡整體性能,但也沒有能力自己去證明這個事情啦。所以在此拋出來,寫給有緣的讀者吧。