秒懂確定性網絡之玩轉時隙
確定性網絡要求網絡具備有界的端到端時延保證,要計算時延就不得不提到時隙這個關鍵概念。初識確定性網絡會發現,各種協議算法和機制中都有提到時隙,但講的好像都不是一個東西。那網絡中到底什么是時隙?時隙跟路徑、帶寬、傳輸速率、突發、緩沖區有什么關系?怎么通過時隙規劃保證端到端時延有界?別著急,本文帶你玩轉時隙,按照時隙的概念、時隙的演進、時隙的相關關系,分為三小節,揭開眾多機制背后的核心奧秘。
一、時隙的概念
傳統互聯網因為流量對時間不敏感,在QoS保障方面大多關注路徑、帶寬等空間維度的資源,包括隊列調度、資源分配等機制也是在空間層面做優化。隨著工業互聯網、遠程控制、實時交互等時間敏感應用的興起,時間維度的優化成為新的網絡升級突破點。相比于帶寬、路由等單點指標,時延抖動是端到端指標,保障實現難度更大,需要時間維度的新的概念與約束,其中最重要的就是時隙,它有廣義和狹義兩方面的概念。
廣義上:所有為流量提前預留的時間維度的資源都可以叫做時隙。比如10us,100us,甚至1s,在這一個時間段內,流量可以占用任何所需的路徑、帶寬、隊列緩沖區等網絡資源。后面會通過CSMA/CD(載波監聽/沖突檢測)機制和TDM(時分復用)機制詳細展開。
狹義上:一般把交換機出端口的傳輸時延作為時隙設計的基本單元。比如,端口帶寬1Gbps,假設一個MTU大小的包為1500 Bytes, 那么該包經過該出端口的傳輸時延就是 1500x8 bits /1 Gbps = 12 us,因此,如下圖所示,12us就可以作為一個時隙。如果其他包小于1500字節,那么出端口的時隙資源就會有所浪費,或者可以把時隙設計得更小;如果一條流一次要傳多個包,則可以為該流預留多個連續的時隙組成一個更大的時隙。
同時,上圖還可以分為兩種情況,分開到達和同時到達。如果各流分開到達,一條流傳輸完畢后,另一條流剛好到達開始傳輸,則每條流的排隊時延都是0,它們在交換機內部的時延均為處理時延加傳輸時延,則基本為一個定值;如果三條流同時到達,則需要排隊,第一條流排隊0us,第二條流至少排隊12us,第三條流至少排隊24us,這就導致交換機內部的時延變得不確定。
因此,除了帶寬、包大小、包數量等因素,包何時到達是控制時隙分配和端到端時延計算的一個重要因素。包何時到達取決于發包開始時間。我們當前還只是在單節點的情況下討論,放到復雜拓撲、海量流量場景下,加以不同的約束和目標設計,則可以將時隙玩出上百種花樣。
二、時隙的演進
在上百種花樣中,筆者總結了四種比較有代表性的機制,從中可以看到時隙的演進過程,介紹如下。
載波監聽/沖突檢測:早期的以太網采用集線器,許多計算機都是連接到一根總線上,采用廣播的通信方式(即當一臺計算機發送數據時,總線上所有計算機都能檢測到這個數據)和半雙工的模式(即接收和發送不能同時進行)。因此,計算機發送數據前,會先發一個探測包,看總線上是否有其他數據在傳輸,如果有,則執行指數隨機退避算法,過一段時間再探測,直到總線空閑,開始發送數據包。因此,載波監聽/沖突檢測可以被視為最早的實現了發包控制的機制。到后來,互聯網流量激增,為了提升了帶寬利用率,開始采用交換式全雙工以太網,交換機端口增加緩沖區,計算機可以在任意時刻發包。
全局時分復用:后來人們又想,那能不能在交換式以太網實現總線一樣的零排隊時延的效果?即通過控制發包開始時間,讓一條流傳輸到目的地后,再開始傳輸下一條流,將全網總的看成一個時隙系統,進行全局時分復用。基于這種方法,在工業以太網中產生了Profinet和EtherCAT等實時以太網協議,在數據中心網絡中,MIT聯合Facebook也實現了Fastpass,一種通過SDN全網集中式控制、全局時分復用的零排隊數據中心網絡。
出端口時分復用:一條流傳輸的過程中,其實只會經過特定的交換機出端口,而全局時分復用卻要求全網的端口時隙都為其預留,全局約束條件簡單,但網絡資源利用率低下。因此,人們發現其實可以在出端口的傳輸時間加約束,讓出端口一條流傳輸完成后再到達另一條流,即出端口時隙不沖突就可以了,再反推得到發包開始時間,也就是第一節中的分開到達的場景。該方法在簡單線性拓撲下十分有效,但在復雜情況下,要保證所有流在任意出端口和任何時刻的傳輸都不沖突,計算復雜度會指數增加,同時會在鏈路高負載時存在許多流不可被調度的情況。
出端口有界隊長:再后來,人們發現也不需要嚴格的每個出端口都不沖突。如果存在如上一節中的同時到達的場景,只要出端口排隊隊列的最大隊列長度是有界的,就能求出一個有界的交換機內部時延,從而保證端到端時延有界。基于這種思想,出現了時間感知整形、循環排隊轉發等調度整形機制。此外,確定性網絡演算、帶時延約束的交換矩陣等也可用于求解隊列長度與排隊時延的關系,通過邊緣流量整形和接入控制來保證有界隊長約束不被破壞。和出端口時分復用相比,最大隊長約束使得流在沖突(發包時間排不開或者不可控)時依然可以被成功調度,提高了網絡利用率。
三、時隙的相關關系
時隙與帶寬的關系:首先,帶寬有兩層含義,一是指出端口的傳輸速率,或者說傳輸能力,比如帶寬為1Gbps,那么任意大小的包在出端口都能以1Gpbs的速率被轉發,二是指傳輸容量,1Gbps是指端口1秒鐘能傳輸1Gbit的流量。需注意,比如說將某流進行端口限速到500Mbps時,限制的其實是該流的傳輸容量,端口依然是按1Gbps的能力在傳輸,只是1秒內最多只能傳500Mbit的該包,多了就丟棄不傳了。
因此,如下圖所示,1500字節在傳輸速率為1Gbps時,時隙為12us,如果傳輸速率提升至10Gbps,則時隙為1.2us。傳輸帶寬增大,則時隙變小,也就是車速提升了,則行駛時間縮短。行駛時間(時隙)是車速(帶寬)的微觀體現。
時隙與突發的關系:端口在輸出到網線上時是串行輸出的,不論帶寬是1Gbps還是10Gbps,包都是一個一個被傳出去,不能并行多個被同時傳輸,因此常用發送速率和突發尺寸來定義一條流。換句話說,如下圖所示,如果沒有突發,所有流都整整齊齊的排在馬路上,按照發送速率行駛,則不會有擁擠和排隊,而一旦有并道(突發、聚播),則會產生排隊,導致多條流擠占同一個時隙,需要緩沖區提供緩存。理想情況下設計時隙一般不考慮突發(車輛間緊貼著),而若流具有較大的突發度,則需要將時隙劃分更大(車輛間間距更大),即為流預留更多的網絡資源,并考慮緩沖區大小的設計。
筆者認為,時隙是理解確定性網絡相關機制的鑰匙,是將網絡從非實時系統演進到實時系統的關鍵元素。本文梳理了四種有代表性的時隙設計機制,并概括了時隙與帶寬、突發的關系。要進一步理解時隙,讀者可查閱網絡演算等相關資料。
作者簡介:黃玉棟,北京郵電大學網絡與交換國家重點實驗室研二在讀,研究方向為未來網絡體系架構,確定性網絡,郵箱地址: hyduni@163.com.