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