秒懂確定性網絡之玩轉隊列(下)
上一節介紹了隊列的演進(秒懂確定性網絡之玩轉隊列(中)),本節分析隊列的確定性增強,從令牌桶機制講起,詳解基于信用的整形(CBS)、時間感知整形(TAS)、循環排隊轉發(CQF)、幀搶占(FP)四種機制。本文不僅介紹這些機制“是什么”,更力求分析清楚“為什么這樣設計這個機制”、和“怎么樣使用該機制”。
隊列的確定性增強
隊列調度分為入隊、調度、出隊三個過程,隊列的確定性增強主要作用于出隊。即調度依然可以選擇嚴格優先級調度,在流量出隊列進行鏈路傳輸時加以限制,因此也可以叫“整形”。確定性增強并不能“隨心所欲”,而是只針對特定的場景有效,且需要對流量盡量已知。因此當我們了解一個新的調度機制時,最重要的切入點是流量的特征(流分布、流速率、包大小、包數量、周期/非周期)和流量的需求(帶寬、時延、抖動、丟包率)。
令牌桶
令牌桶就是在交換機的出端口放一個“桶”,然后往桶里以一定的速率放令牌,令牌(Token)是一種單位為字節的虛擬數據包。
舉個例子,假設有紅綠兩條流經過同一個10G大小的端口,如果綠流的大小直接是10Gbps,紅流就沒了傳輸空間,導致其大量丟包;為了使他倆和睦相處,必須給他們定規矩,即速率限制、或者叫帶寬分配。假設綠流被分配的帶寬是8Gbps(即1GBps),那么只需要每隔1納秒往令牌桶里放1個令牌(理論情況),或者每隔1毫秒往令牌桶里放10^6個令牌(考慮設備處理能力),拿到令牌的數據包被允許發送,沒拿到的直接丟棄或者存儲等有令牌時再發送,就能在帶寬層面保證流量調度的確定性。
令牌桶只能做到秒級的時延保障粒度,即最壞情況下的時延是1s。對于網頁類互聯網流量,幾百毫秒的延遲并不影響用戶使用,因此傳統的互聯網服務質量保障主要追求路由優化和帶寬分配,盡量選擇輕載不擁塞的路徑、并為流量分配盡量富余的帶寬,即可降低丟包和重傳。
基于信用的整形
在保證帶寬的基礎上,能不能進一步降低時延,甚至保證最壞時延有界?比如音視頻流量,其具有持續發送、體積大的特點,又要求時延抖動不能太大,以避免語音中斷和畫面卡頓。為解決音視頻流量的傳輸服務質量保障問題,基于信用的整形(Credit Based Shaper, CBS)被提出。
CBS在出端口的隊列放一個整形器,整形器包含一個信用計算組件。
該整形器遵循如下五條規則:
1)如果隊列里沒有數據包,則將隊列的信用置為0。
2)如果隊列的信用非負,則隊列里的數據包允許被傳輸,否則不允許傳輸。
3)當隊列里有至少一個數據包處于等待,則隊列的信用以idleSlope的速率增加,idleSlope是空閑速率,單位是bps。
4)當隊列里的包被傳輸時,隊列的信用以sendSlope的速率減少,sendSlope是發送速率,單位也是bps。
5)一般情況下,發送速率等于空閑速率減去鏈路帶寬,比如空閑速率是200Mbps,帶寬1Gbps,則發送速率為-800Mbps。
為什么要設計這些規則?因為CBS的核心思想是流量互相“謙讓”。令牌桶直接為每條流分配一定數值的令牌,當紅綠兩條同等優先級的流到達時,傳輸的先后和占用的傳輸時間是不確定的。而CBS初始的信用是0,流量必須要“等一等”信用值才會增加,增加后才能傳輸,而傳輸導致信用逐漸下降,因此一條流傳一小會后信用為負停止傳輸,又輪到另一條流傳輸。
以下圖為例,音視頻流f1在入隊時有黃色干擾流正在傳輸,f1等待傳輸且信用值不斷增加;T0時刻干擾流傳輸完,f1開始傳輸且不斷消耗信用,當綠色、藍色兩個包傳輸后T1時刻信用為負,第三個粉色的包無法傳輸,只能存儲等待,直到T2時刻信用恢復到0,粉色的包被允許傳輸。最終的結果是綠、藍、粉三個數據包不再是連續傳輸,而是間隔傳輸。下圖需注意的是橫軸是時間線,圖中數據包的寬度不是數據包的大小;在隊列深度中,寬度代表的是數據包的到達時間和傳輸開始時間,在當前傳輸的數據中,寬度代表的是傳輸開始時間和傳輸完成時間。
CBS的關鍵問題是如何配置idleSlope空閑速率這個參數,idleSlope是我們想保留的帶寬,idleSlope越大,流量越容易發送,該參數需要通過一系列的約束求解得到。CBS典型使用方法是在優先級隊列6(Q6)和優先級隊列5(Q5)后面放置信用整形器,并將Q6的流量設置為A類流量,傳輸的持續時間(一跳時延)為125us,將Q5的流量設置為B類流量,一跳時延為250us。通過確定的一跳時延大小可以倒推得到空閑速率的配置參數值。
時間感知整形
在工業網絡中還有一類控制命令流量對時延抖動要求極高,比如通過主機械臂操作從機械臂的控制命令流量,其每間隔1毫秒發送一個100字節大小的數據包,且要求端到端時延小于1毫秒。對于這種周期性的時間敏感的小流,CBS無能為力,因此時間感知整形(Time-Aware Shpaer, TAS)被提出。
TAS在每個出隊列的后面放置一個“門”,當門處于打開(open,o)狀態時,數據包被允許傳輸,當門處于關閉(close,c)狀態時,數據包不允許傳輸。門在什么時候打開、什么時候關閉受一個門控列表驅動。此外,TAS的前提是所有的終端和網絡設備需要采用802.1AS實現納秒級全網時鐘同步,即保證所有出端口的門控列表時間是同步的,且鏈路時延可以忽略不計。
TAS的關鍵問題是如何為控制類流量分配時隙,從而生成全局的門控列表。以下圖為例,紅流有兩個1500字節的數據包,綠流有三個1500字節的數據包,假設端口帶寬為1Gbps,則紅流傳輸所需預留的時隙為24us,綠流傳輸所需預留的時隙為36us,在無等待調度模型下,將這兩個時隙逐跳完全排開(即時隙不重疊),就能生成如圖所示的門控列表,即在T0時刻Q7門打開、Q6門關閉,在T1時刻Q7門關閉、Q6門打開。
循環排隊轉發
TAS能夠實現微秒級的逐跳逐包的細粒度調度,但其需要逐跳的逐條目的配置門控列表,導致配置十分復雜,且單臺設備的門控條目數一般不超過1024條,在海量流量場景下存在可擴展性的問題,因此循環排隊轉發(Cyclic Queuing and Forwarding, CQF)被提出。
循環排隊轉發在入隊和出隊處各放置一個門(標記為Rx-gate和Tx-gate),當門打開時包進行入隊或傳輸,當門關閉時禁止入隊或傳輸。循環排隊轉發機制將出端口的傳輸時間分為一系列相等的時間間隔,每個時間間隔稱為一個周期T。
CQF要求:
1)全網時鐘同步,
2)鏈路時延可忽略不計,
3)周期T要至少大于一跳時延(即處理時延、排隊時延、傳輸時延、鏈路時延之和)。然后通過奇偶兩個隊列交替執行入隊和出隊操作,CQF可以確保在一個周期內從上游節點發送數據包,并在同一周期內在下游節點接收到數據包,且在下一個周期將數據包發送出去。因此,端到端延遲僅取決于周期大小T和路徑跳數H,其中最大延遲界限為(H +1)T,最小延遲界限為(H-1)T,端到端抖動最大為2T。
比如假設鏈路帶寬為1Gbps,CQF最大隊列深度為10個數據包,則按MTU大小的數據包計算得出一跳的排隊和傳輸時延最大為120us,再加上5us的處理時延,可以將周期T的大小設為125us。那么如下圖所示,在T0偶周期時刻,偶隊列Q6發送、奇隊列Q7接收,因此Tx-gate中Q6打開、Q7關閉, Rx-gate中Q6關閉、Q7打開;在T1奇周期時刻,奇隊列Q7發送、偶隊列Q6接收,因此Tx-gate中Q7打開、Q6關閉, Rx-gate中Q7關閉、Q6打開。
CQF通過限制最大隊列長度,將一跳的時隙設定為固定周期值T,奇偶兩個隊列交替執行,相當于只有一條門控條目,從而簡化了TAS復雜的門控條目配置。CQF的關鍵問題是如何確定周期T的大小、以及計算流的發送開始時間。如果周期T太小,則隊列太短,會導致大量不可調度的情況;如果周期T太大,又會導致端到端最壞時延變大,部分低時延的流量無法被調度,且浪費片上緩存資源。
幀搶占
時間感知整形中還有一個細節問題是需要設置保護帶寬。當時間敏感流(優先級為7)和盡力而為流(優先級為0)共傳,如果時間敏感流進入隊列時盡力而為流已經開始傳輸,那么時間敏感流必須等待至少一個盡力而為數據包的傳輸時間(在1Gbps帶寬下傳輸1500字節大小的包為12us),導致其時隙無法對齊,即無法按照既定的門控列表進行傳輸。因此,在時間敏感流到達之前,所有的門應該關閉一個MTU大小包傳輸的時間,以形成保護帶寬。
然而,不是所有的時間敏感流到達前都有盡力而為流在傳輸,也不是所有盡力而為流的包大小都是MTU大小,事實上,互聯網流量的平均包大小在256字節左右,因此保護帶寬在密集門控切換情況下會造成大量的帶寬浪費。為減少帶寬浪費,幀搶占(Frame Preemption, FP)被提出。
幀搶占將MAC分為eMAC和pMAC,時間敏感流(高速幀)走eMAC,盡力而為流(低速幀)走pMAC,當低速幀傳輸時若有高速幀到達,首先會判斷低速幀是否能被分片,如果能則將低速幀分片,然后高速幀執行搶占傳輸,最后低速幀進行分片重組。因為以太網幀有最小64字節的發送限制,所以必須保證低速幀切片后兩個切片(包括校驗和)均不小于64字節。因此當低速幀的數據長度小于124字節時,該低速幀將不能被分片。
此外,幀搶占可以減少高速幀的排隊阻塞時間,從而有效降低高速幀的時延,但是以增加低速幀時延為代價。低速幀切片時機存在不確定性,會導致高速幀被阻塞的時間存在波動,從而引入一定的時延抖動。
總結
本文分析了令牌桶、基于信用的整形(CBS)、時間感知整形(TAS)、循環排隊轉發(CQF)、幀搶占(FP)五種機制。五種機制既可以單獨使用,也可以部分融合使用,比如時間感知整形融合基于信用的整形,時間感知整形融合幀搶占。機制使用的前提條件和機制的適用場景,是值得關注的重點;令牌桶被廣泛應用于互聯網,后四種機制當前主要應用于車載以太網、工廠內網、航空航天裝備系統等局域網場景;在調度時延保障粒度方面,五種機制逐漸遞進,粒度越來越細。為通俗易懂,
本文對相關細節有所簡化,更多機制的配置參數和技術實現可以參考相關標準協議和產品文檔。