張千里,張超凡,王繼龍,唐翔宇,沈鉦晨,王會
(清華大學(xué)網(wǎng)絡(luò)科學(xué)與網(wǎng)絡(luò)空間研究院,北京 100084)
精準的時間同步對于分布式網(wǎng)絡(luò)應(yīng)用具有十分重要的意義,尤其是在數(shù)據(jù)中心網(wǎng)絡(luò)中。以Spanner分布式數(shù)據(jù)庫[1]為例,當(dāng)網(wǎng)絡(luò)時間同步精度可以達到T個時間單位以內(nèi)時,為了維護數(shù)據(jù)的外部一致性,一次寫操作完成后必須要等待T個時間單位的時鐘不確定期,才能釋放寫鎖,以保證該寫操作的結(jié)果可以被其他節(jié)點正確地讀取。在實時性要求較高的場景中,普通的時間同步精度(一般為毫秒級)將從根本上限制數(shù)據(jù)庫的吞吐量和性能,所以納秒級的高精準時間同步對于提升分布式數(shù)據(jù)庫的性能是十分關(guān)鍵的。而且,高精準的時間同步可以讓人們得到更精準的單向時延(OWD,one way delay)數(shù)據(jù),以用于網(wǎng)絡(luò)監(jiān)測及研究。數(shù)據(jù)中心中細粒度的包級別調(diào)度可以減少擁塞、提升網(wǎng)絡(luò)性能[2],這也需要各節(jié)點間的精準時間同步。另外,對某一時刻的網(wǎng)絡(luò)狀態(tài)進行快照記錄也需要高精準的同步時鐘[3]??傮w來說,隨著數(shù)據(jù)中心網(wǎng)絡(luò)鏈路速度的不斷提升,各類分布式應(yīng)用以及網(wǎng)絡(luò)管理調(diào)度對高精準的時間同步有著越來越精密的需求。
時間同步過程本質(zhì)上是節(jié)點間單向時延的精確測算。若可以高精準地測算出節(jié)點間的單向時延,則可以再結(jié)合同一數(shù)據(jù)包在各個節(jié)點的時間戳,計算節(jié)點間的時間偏差(詳見第2 節(jié))。
經(jīng)典的時間同步方法如網(wǎng)絡(luò)時間協(xié)議(NTP,network time protocol)[4]無法達到納秒級的高同步精度;精準時間協(xié)議(PTP,precise time protocol)[5]實施成本較高,且高網(wǎng)絡(luò)負載情況下效果較差。近年來,針對數(shù)據(jù)中心網(wǎng)絡(luò)的高精準時間同步需求,有研究者設(shè)計了DTP(datacenter time protocol)[6]、DPTP(data-plane time-synchronization protocol )[7]、HUYGENS[8]等時間同步方法,可以在數(shù)據(jù)中心網(wǎng)絡(luò)中達到納秒級的時間同步(詳見第2 節(jié))。
但是,已有的時間同步方法還存在以下三點問題:1) 目前已有的時間同步方法都是局部的同步方式,數(shù)據(jù)中心網(wǎng)絡(luò)的中心控制節(jié)點難以進行集中式的管理,也很難清晰地了解每對節(jié)點間的時間偏差情況,這與后續(xù)基于高精也是最關(guān)鍵的問題準時間同步的網(wǎng)絡(luò)管理與調(diào)度是脫節(jié)的,該問題也是最關(guān)鍵的問題;2) 前述方法都要求同步時發(fā)送請求和回復(fù)數(shù)據(jù)包,許多還引入了自定義的新協(xié)議,應(yīng)用于數(shù)據(jù)中心時需要額外的交互和管控;3) 一些時間同步方法由于協(xié)議設(shè)計不夠精細(如NTP[4])或者硬件存儲限制(如DPTP[7]),可以用于計算同步偏差的時間數(shù)據(jù)較少,因此容易受到某些離群值的影響。
針對上述問題,本文結(jié)合軟件定義網(wǎng)絡(luò)(SDN,software defined network)[9]和網(wǎng)內(nèi)計算[10]的思想,采用基于Telemetry 架構(gòu)的時間同步機制,要求網(wǎng)絡(luò)中的節(jié)點在轉(zhuǎn)發(fā)數(shù)據(jù)包的同時,向中心節(jié)點匯報數(shù)據(jù)包進出節(jié)點的時間信息,而中心節(jié)點得到各個節(jié)點的時間信息后,便可進行統(tǒng)計分析,計算出任意2 個節(jié)點的時間偏差。該方法有以下四方面優(yōu)勢:1) 這種集中式的管理架構(gòu)與后續(xù)基于高精準時間同步進行網(wǎng)絡(luò)管理與調(diào)度是一脈相承的,中心節(jié)點可以計算出任意2 個節(jié)點的時間偏差,之后可直接用于全局的網(wǎng)絡(luò)管理優(yōu)化;2) 與傳統(tǒng)的時間同步架構(gòu)不同,該架構(gòu)不需要節(jié)點間進行請求回復(fù)數(shù)據(jù)包的交互,只需借助現(xiàn)有的流量來收集數(shù)據(jù)包進出節(jié)點的時間信息,并對匯報上來的時間信息進行分析處理,達成一種集中式的自動同步;3) 該方法可以在數(shù)據(jù)中心的大規(guī)模流量中得到大量的時間信息,并且結(jié)合一定的統(tǒng)計分析,達到更精準的納秒級時間同步,尤其在去除離群值、優(yōu)化最差情況方面表現(xiàn)較好;4) 該架構(gòu)是流量密度自適應(yīng)的,流量規(guī)模越大,得到的時間數(shù)據(jù)越多,就越能優(yōu)化同步精度,而在流量很小甚至接近零的情況下,得到的時間信息較少,但此場景一般對于時間同步的需求也較低,因此該架構(gòu)是一個流量密度自適應(yīng)的自洽體系。
本文針對數(shù)據(jù)中心網(wǎng)絡(luò)的高精度時間同步需求,提出了基于Telemetry 架構(gòu)的時間同步機制,并在可編程交換機上具體實施,在保證納秒級同步精度的同時,改變了原來基于同步請求和回復(fù)數(shù)據(jù)包的模式,在中心節(jié)點匯總分析數(shù)據(jù)包進出節(jié)點的時間信息,方便后續(xù)基于高精準時間同步進行網(wǎng)絡(luò)管理與調(diào)度。相比之前的時間同步方法,本文所提方法具有集中式分析管理、全局視野、大量數(shù)據(jù)分析、流量密度自適應(yīng)性等特點。本文主要貢獻如下。
1) 分析數(shù)據(jù)中心網(wǎng)絡(luò)對于高精準時間同步的需求,提出了基于Telemetry 架構(gòu)的時間同步機制,借助數(shù)據(jù)中心的背景流量來收集數(shù)據(jù)包進出節(jié)點的時間信息,并對匯報上來的大量時間信息進行分析處理,達成一種集中式的自動同步,便于后續(xù)進行全局性網(wǎng)絡(luò)管理調(diào)度。
2) 對中心控制節(jié)點初步計算的時間偏差數(shù)據(jù)再應(yīng)用局部離群因子檢測算法,去除其中的離群值,進一步提升時間同步精度,尤其在去除離群值、優(yōu)化較差情況方面效果優(yōu)異。
3) 在可編程交換機上實現(xiàn)了該基于Telemetry 架構(gòu)的時間同步系統(tǒng),借助數(shù)據(jù)平面的可編程性,使用可編程協(xié)議無關(guān)包處理(P4,programmable protocol-independent packet processor)語言[11]編寫了可編程交換機的轉(zhuǎn)發(fā)邏輯,要求各節(jié)點在轉(zhuǎn)發(fā)數(shù)據(jù)包的同時,向中心節(jié)點匯報數(shù)據(jù)包進出節(jié)點的時間信息。實驗表明,通過中心節(jié)點對匯報上來的大量時間信息進行分析處理,在多跳之間、不同端口額定速率及實際數(shù)據(jù)包發(fā)送速率下,節(jié)點間均可以達到納秒級的高精準時間同步;并且,任意2 個節(jié)點的時間偏差都可以在中心節(jié)點得到,該全局視野之后可直接用于全局的網(wǎng)絡(luò)管理優(yōu)化。
傳統(tǒng)的基于請求-回復(fù)數(shù)據(jù)包的同步流程如圖1所示[4]??蛻舳撕头?wù)器節(jié)點進行請求數(shù)據(jù)包和回復(fù)數(shù)據(jù)包交互,當(dāng)客戶端節(jié)點收到回復(fù)數(shù)據(jù)包后,根據(jù)客戶端發(fā)送時間戳t1、服務(wù)器接收時間戳t2、服務(wù)器發(fā)送時間戳t3和客戶端接收時間戳t4,按照式(1)計算出往返時延RTT,再根據(jù)式(2),取RTT的一半作為近似的單向時延,計算出與服務(wù)器節(jié)點的時鐘偏差值Offset,并根據(jù)該Offset 值調(diào)整自己的時鐘,與服務(wù)器時鐘保持一致。
圖1 傳統(tǒng)的基于請求-回復(fù)數(shù)據(jù)包的同步流程
傳統(tǒng)的局部時間同步系統(tǒng)架構(gòu)如圖2 和圖3 所示[4]。當(dāng)系統(tǒng)局部的2 個節(jié)點(主機A與主機B之間,或者交換機S1與交換機Sn之間)要進行時間同步時,則這2 個節(jié)點按照圖1 所示的流程進行同步請求和同步回復(fù)數(shù)據(jù)包交互。以主機A與主機B同步為例,A發(fā)起同步請求,并收到B的同步回復(fù)數(shù)據(jù)包后,由時間戳信息(分別對應(yīng)于t1、t2、t3、t4)以及式(1)和式(2)計算與B的時鐘偏差值,并調(diào)整自己的時鐘與其一致。
圖2 傳統(tǒng)的局部時間同步系統(tǒng)架構(gòu)(A 到B 的同步請求)
圖3 傳統(tǒng)的局部時間同步系統(tǒng)架構(gòu)(B 到A 的同步回復(fù))
但是在這種傳統(tǒng)的局部時間同步架構(gòu)下,數(shù)據(jù)中心網(wǎng)絡(luò)的中心控制節(jié)點很難清晰地了解每對節(jié)點間的時間偏差情況,且難以進行全局性的集中式管理與調(diào)度;并且在這種架構(gòu)下,同步的節(jié)點間需要發(fā)送請求和回復(fù)數(shù)據(jù)包,許多同步方法還引入了自定義的新協(xié)議,應(yīng)用于數(shù)據(jù)中心時需要額外的交互和管控。另外,某些時間同步方法由于協(xié)議設(shè)計不夠精細(如NTP[4])或者硬件存儲限制(如DPTP[7]),可用于計算同步偏差的時間數(shù)據(jù)較少,因此容易受到某些離群值的影響。
本文仍會借鑒式(1)和式(2)進行Offset 計算,但基于Telemetry 架構(gòu)重新設(shè)計了時間同步的流程,不再基于傳統(tǒng)的請求-回復(fù)數(shù)據(jù)包的同步模式,而是借助數(shù)據(jù)中心的背景流量來收集數(shù)據(jù)包進出節(jié)點的時間信息,并對匯報上來的大量時間信息進行分析處理,達成一種集中式的自動高精準同步,便于后續(xù)進行全局性網(wǎng)絡(luò)管理調(diào)度。
網(wǎng)絡(luò)時間協(xié)議[4]是互聯(lián)網(wǎng)最古老的通信協(xié)議之一,目前仍廣泛用于廣域網(wǎng)和局域網(wǎng)的時間同步,在廣域網(wǎng)中一般可以達到毫秒級的同步精度[12],在局域網(wǎng)中一般可達到微秒級的同步精度[13]。該方法同步精度較低,主要有以下三方面原因:1) 沒有專門的硬件支持,時間戳本身精度較低,這從根本上限制了同步精度[14];2) 協(xié)議設(shè)計在網(wǎng)絡(luò)協(xié)議棧高層,請求回復(fù)數(shù)據(jù)包經(jīng)過協(xié)議棧的時間不對稱較大,導(dǎo)致1/2 往返時延與真實的單向時延偏差較大[15];3) 同步的2 個節(jié)點可能跨越多跳,來回可能經(jīng)過不同路徑,面臨不同的擁塞情況,也會導(dǎo)致來回的路徑時延不對稱[16]。
基于IEEE 1588 的精準時間協(xié)議[5]在NTP 的基礎(chǔ)上進行了優(yōu)化改進,引入了專門的硬件支持,可以獲得更精準的時間戳,并且使用“透明時鐘”以更精確的階段性測量來減小來回路徑的時間不對稱性。在配置得當(dāng)?shù)那闆r下,PTP 一般可在局域網(wǎng)中達到幾十或幾百納秒級的同步精度[17],但該方法易受網(wǎng)絡(luò)狀態(tài)的影響,在鏈路擁塞時“透明時鐘”往往不能很好地運行[18],導(dǎo)致PTP 在網(wǎng)絡(luò)高負荷情況下表現(xiàn)較差[19]。
近年來針對數(shù)據(jù)中心網(wǎng)絡(luò)的高精準時間同步需求,也有研究者進行了專門的研究工作。DTP[6]以專門設(shè)計的物理層架構(gòu)DTP-enable PHY 為基礎(chǔ),在原來IEEE 802.3ae 規(guī)定的標準物理層中插入了一個DTP 子層,專門用于時間同步;并且規(guī)定節(jié)點只與相鄰的節(jié)點進行同步數(shù)據(jù)包交互(帶有精確的時間信息),大幅減少了協(xié)議棧和來回路徑的不對稱性。該方法可以在數(shù)據(jù)中心場景中達到納秒級的時間同步。
同樣基于專門硬件的方法還有DPTP[7],它使用了基于可編程交換芯片的交換機,該交換機可以按照線路速率靈活處理數(shù)據(jù)包,并且可以給出各個階段的精準時間戳。DPTP 使用可編程交換機中流水線各個階段的精確時間戳進行計算,可以達到納秒級的同步精度。
除了使用專門硬件的時間同步方法,還有一些方法如HUYGENS[8]使用軟件及算法相結(jié)合的方式達到了高精度的時間同步效果。該方法不需要專門硬件支持,只是利用網(wǎng)卡提供的硬件時間戳。通過更精致的計算,HUYGENS 可以在數(shù)據(jù)中心場景下達到納秒級的同步效果。當(dāng)然,由于算法較復(fù)雜,它也會帶來較大的計算開銷。
本文設(shè)計了基于Telemetry 的時間同步系統(tǒng)架構(gòu),如圖4 和圖5 所示。
圖4 基于Telemetry 的時間同步系統(tǒng)架構(gòu)(A 到B 流量)
圖5 基于Telemetry 的時間同步系統(tǒng)架構(gòu)(B 到A 流量)
圖4 中,當(dāng)網(wǎng)絡(luò)中存在從A到B的背景流量時,中間節(jié)點記錄下接收數(shù)據(jù)包和發(fā)出數(shù)據(jù)包的時間戳,如S1記錄下數(shù)據(jù)包接收和發(fā)出的時間戳,分別記為,S2在原來帶內(nèi)數(shù)據(jù)的基礎(chǔ)上,再記錄下,依次類推,當(dāng)數(shù)據(jù)包到達最后一個中間節(jié)點Sn時,記錄的所有時間戳數(shù)據(jù)會被發(fā)送到中心控制節(jié)點Telemetry Controller,然后Sn會將這些帶內(nèi)數(shù)據(jù)剝離,把原始的數(shù)據(jù)包發(fā)送給B節(jié)點。
類似過程如圖5 所示,當(dāng)網(wǎng)絡(luò)中存在從B到A的背景流量時,各個中間節(jié)點記錄下接收數(shù)據(jù)包和發(fā)出數(shù)據(jù)包的時間戳,當(dāng)數(shù)據(jù)包到達最后一個中間節(jié)點S1時,記錄的所有時間戳數(shù)據(jù)會被發(fā)送到中心控制節(jié)點Telemetry Controller,之后S1會將這些帶內(nèi)數(shù)據(jù)剝離掉,把原始的數(shù)據(jù)包發(fā)送給A節(jié)點。
在這種時間同步系統(tǒng)架構(gòu)下,節(jié)點間并沒有顯式地發(fā)送額外的交互數(shù)據(jù)包,不過數(shù)據(jù)中心的背景流量可以看作邏輯上的請求-回復(fù)數(shù)據(jù)包,Telemetry Controller 可以根據(jù)這些背景流量收集大量的時間戳數(shù)據(jù),由此可以計算出任意2 個中間節(jié)點的單向時延以及相對時間偏差值,依此可以進行時間同步,并且可以用于后續(xù)全局性的集中式管理與調(diào)度。以中間節(jié)點S1和Sn為例,結(jié)合式(1)和式(2)可計算節(jié)點間單向時延及相對時間偏差值為
后續(xù)會對式(4)和式(5)這2 種計算時間偏差的效果進行對比評估(詳見第5 節(jié))。
由于數(shù)據(jù)中心內(nèi)存在大量的背景流量,Telemetry Controller 可以通過大量的時間戳數(shù)據(jù)計算出許多組時間偏差值,并通過一定的算法優(yōu)化(本文使用的是局部離群因子(LOF,local outlier factor)檢測法[20],詳見3.2 節(jié))來達到納秒級的高精準時間同步。
基于Telemetry 的時間同步架構(gòu)有以下三方面優(yōu)勢:1) 在該架構(gòu)下,中心控制節(jié)點的時間感知具有全局視野,可以計算出任意2 個中間節(jié)點的單向時延以及時間偏差值,便于與后續(xù)全局網(wǎng)絡(luò)管理調(diào)度相銜接;2) 該方法基于經(jīng)典的Telemetry 架構(gòu),時間信息捎帶在Telemetry 數(shù)據(jù)中,沒有引入自定義的新協(xié)議,只需利用可編程數(shù)據(jù)平面對Telemetry的數(shù)據(jù)記錄及匯總邏輯進行自定義;3) 由于數(shù)據(jù)中心有大量的背景流量,因此有大量的時間信息可供計算,可以再結(jié)合一些處理算法去離群值,提高時間偏差的測算精度。
中心控制節(jié)點Telemetry Controller 收到數(shù)據(jù)平面匯總上來的時間數(shù)據(jù)后,會對大量時間數(shù)據(jù)進行分析整理,通過式(4)或式(5)初步計算時間偏差值。在一些情況下,初步計算出的時間偏差值中可能會存在偏差較大的離群值,因此本文采用LOF 檢測法[20]去除其中的離群值,得到節(jié)點間更精確的時間偏差數(shù)據(jù),以達成納秒級的時間同步。
LOF 方法基于局部密度的概念而進行,局部密度顯著低于其相鄰節(jié)點的數(shù)據(jù)點被認為是離群值。
首先,對于某2 個特定的中間節(jié)點,通過式(4)或式(5)分析整理大量時間數(shù)據(jù),初步計算出了時間偏差值{Offset1,…,Offsetx}。對于其中的每個數(shù)據(jù)點m,計算該數(shù)據(jù)點與其k個最近鄰節(jié)點的距離k_dist(m),并記所有與它距離小于或等于k_dist(m) 的其他數(shù)據(jù)點集合為Nk(m)。
然后,對于每個數(shù)據(jù)點m,計算Nk(m) 內(nèi)所有數(shù)據(jù)點o與m的可達距離reach_dist(m,o)
對于每個數(shù)據(jù)點m,計算其與Nk(m)內(nèi)所有數(shù)據(jù)點o可達距離均值的倒數(shù),記為局部可達密度(LRD,local reachability density)
最后,對于每個數(shù)據(jù)點m,將計算出的局部可達密度與Nk(m)內(nèi)其他數(shù)據(jù)點的局部可達密度做比值并取平均,得到數(shù)據(jù)點m的LOF 為
根據(jù)局部可達密度的定義,如果數(shù)據(jù)點m的LOF值遠大于1,則說明它的局部可達密度遠小于鄰近節(jié)點的密度,即該點是離群值。依照此原則篩除{Offset1,…,Offsetx}中LOF 值大于閾值的數(shù)據(jù)點,便可得到去離群值后的數(shù)據(jù)
基于Telemetry 的時間同步系統(tǒng)實現(xiàn)如圖6 所示。在數(shù)據(jù)平面,本文利用可編程數(shù)據(jù)平面來自定義時間信息記錄及匯總邏輯:在各個中間節(jié)點記錄接收和發(fā)出數(shù)據(jù)包的時間戳,并在最后一跳中間節(jié)點將去除時間數(shù)據(jù)的原始數(shù)據(jù)包發(fā)送到端節(jié)點,將路徑中記錄下的時間數(shù)據(jù)發(fā)送到上層的Telemetry Controller。
圖6 基于Telemetry 的時間同步系統(tǒng)實現(xiàn)
在上層,Telemetry Controller 接收到匯報上來的時間戳后,會對大量的時間信息進行分析整理,利用式(4)或式(5)初步計算出任意2 個節(jié)點的時間偏差,再結(jié)合LOF 對大量數(shù)據(jù)進行處理,去除離群值,計算出任意2 個中間節(jié)點間更準確的時間偏差,達到納秒級的高精準同步精度。
P4 語言[11]是軟件定義網(wǎng)絡(luò)[9]思想的最新展現(xiàn)形式。它在原來OpenFlow 協(xié)議[22]控制平面可編程的基礎(chǔ)上,帶來了數(shù)據(jù)平面的靈活可編程性。
1) 在RMT(reconfigurable match table)架構(gòu)[23]的數(shù)據(jù)平面可編程芯片出現(xiàn)之后,基于這種專用的ASIC(application specific integrated circuit)芯片,數(shù)據(jù)平面可以在不失高性能處理數(shù)據(jù)包的基礎(chǔ)上,進行靈活的轉(zhuǎn)發(fā)邏輯自定義,而用于定義數(shù)據(jù)平面邏輯的規(guī)范便是P4 語言。
P4 抽象轉(zhuǎn)發(fā)模型[11]如圖7 所示。數(shù)據(jù)包進入可編程交換機后會首先進入可重配置解析器(操作①),解析數(shù)據(jù)包頭部;之后被解析出的頭部會進入多級匹配-動作表,這些多級匹配-動作表以流水線的形式組織起來,分為入口流水線(操作②)和出口流水線(操作④)兩部分,管理者可以根據(jù)P4 語法規(guī)范去定義匹配到什么樣的字段執(zhí)行什么相應(yīng)的操作,比如數(shù)據(jù)包修改、丟棄及出口選擇;入口流水線與出口流水線之間數(shù)據(jù)包會進入一個緩沖區(qū)(操作③);當(dāng)出口流水線執(zhí)行完畢后交換機會將修改后的數(shù)據(jù)包輸出到指定的端口(操作⑤)。以上5 個操作是P4 抽象轉(zhuǎn)發(fā)模型的基本操作,所有數(shù)據(jù)包進入可編程交換機都會經(jīng)歷這一流程,另外,P4 抽象轉(zhuǎn)發(fā)模型也定義了數(shù)據(jù)包復(fù)制的操作,允許管理者自定義將數(shù)據(jù)包復(fù)制到其他輸出端口(操作⑥)。
圖7 P4 抽象轉(zhuǎn)發(fā)模型
具體到本文基于P4 進行數(shù)據(jù)平面時間戳采集匯報,如圖6 所示,當(dāng)數(shù)據(jù)包未到達最后一跳中間節(jié)點時,可編程交換機只對數(shù)據(jù)包執(zhí)行圖7 中①~⑤操作,在數(shù)據(jù)包頭中記錄該節(jié)點接收和發(fā)出數(shù)據(jù)包的時間戳;當(dāng)數(shù)據(jù)包到達最后一跳中間節(jié)點時,可編程交換機對數(shù)據(jù)包執(zhí)行圖7 中①~⑥操作,一方面在出口流水線處將中間路徑記錄下的所有時間戳數(shù)據(jù)通過操作⑥復(fù)制,發(fā)送到上層的Telemetry Controller,以待進一步分析整理,另一方面在出口流水線處將中間節(jié)點添加在數(shù)據(jù)包頭中的所有時間戳去除,把去除時間數(shù)據(jù)的原始數(shù)據(jù)包發(fā)送到端節(jié)點。
如圖6 所示,中心控制節(jié)點Telemetry Controller收到數(shù)據(jù)平面匯總上來的時間數(shù)據(jù)后,會對大量時間數(shù)據(jù)進行分析整理,按照式(4)或式(5)初步計算出2 個節(jié)點間的時間偏差值,然后再用LOF 方法[20]去除其中的離群值,得到節(jié)點間更精確的時間偏差,達成納秒級的同步。LOF 方法的詳細描述如算法1 所示。
算法1LOF 方法
對時間同步效果的評估,具體而言就是比較測算得到的2 個節(jié)點時間偏差值與真實節(jié)點間時間偏差值之間的誤差,其關(guān)鍵在于怎樣獲取節(jié)點間真實的時間偏差。而在實際環(huán)境中由于設(shè)備差異、溫度等實際因素的影響,節(jié)點間真實的時間偏差是很難精確獲取的。本文應(yīng)對這一挑戰(zhàn)的辦法為將一臺物理可編程交換機抽象成邏輯上的多臺可編程交換機,這樣多臺邏輯交換機之間的真實時間偏差值就是0(因為它們物理上就是一臺可編程交換機),這樣將本文測算出的節(jié)點間時間偏差值與真實的時間偏差(即為0)進行比較,就可以正常進行系統(tǒng)評估了。
具體操作時,如圖8 所示,本文將可編程交換機的端口間接上線路速率為100 Gbit/s 的環(huán)回線,即可達到一臺物理交換機抽象成多臺邏輯交換機的效果。
圖8 物理交換機抽象成多臺邏輯交換機
本文使用Barefoot Tofino 可編程交換機、3 臺戴爾服務(wù)器來搭建實驗環(huán)境,其中,可編程交換機型號為Wedge100BF-32X,配有32 個100 Gbit/s 端口,總體可以達到3.2 Tbit/s 級別的線速處理能力;三臺服務(wù)器中,其中一臺配備Intel X722 網(wǎng)卡,另外兩臺配備Intel X710 網(wǎng)卡,均可達到10 Gbit/s 級別傳輸速率。可編程交換機間的環(huán)回線使用100 Gbit/s QSFP(quad small form-factor pluggable)線纜,最高可達到100 Gbit/s 級別的傳輸速率。
可編程交換機與三臺服務(wù)器搭建的物理拓撲如圖9 所示,交換機內(nèi)部端口之間隨機連接了6 條QSFP 回環(huán)線,分別為端口1 與端口3 之間,端口9與端口11 之間,端口14 與端口16 之間,端口15與端口19 之間,端口18 與端口20 之間,端口21與端口24 之間。另外,交換機的31 端口通過一分四模塊分出4 條10 Gbit/s 的線纜,其中3 條分別接到3 個服務(wù)器的網(wǎng)卡上,后續(xù)會將服務(wù)器A、B作為數(shù)據(jù)包收發(fā)的節(jié)點,模擬數(shù)據(jù)中心內(nèi)的端節(jié)點,并將服務(wù)器C 作為時間數(shù)據(jù)匯總分析的節(jié)點,模擬數(shù)據(jù)中心內(nèi)的中心控制節(jié)點Telemetry Controller。
圖9 實驗環(huán)境物理拓撲
由圖9 可知,可編程交換機內(nèi)部端口間連接了6 條回環(huán)線,所以該物理交換機可以抽象為7 臺邏輯上的交換機,并且服務(wù)器A、B、C 可以訪問任意一個邏輯交換機。為了便于理解,這里根據(jù)圖9所示物理拓撲,畫出了實驗環(huán)境的邏輯拓撲,如圖10 所示。
圖10 實驗環(huán)境邏輯拓撲
如圖10 所示,后續(xù)本文進行評估時,會以服務(wù)器A、B 為數(shù)據(jù)包收發(fā)的端節(jié)點,負責(zé)產(chǎn)生背景流量,并以服務(wù)器C 作為中心控制節(jié)點,負責(zé)匯總分析最后一跳中間節(jié)點發(fā)來的時間數(shù)據(jù),并根據(jù)前述方法計算出任意2 個中間節(jié)點(邏輯上)的時間偏差,與真實時間偏差(0)比較,進行多方面系統(tǒng)評估。
本文使用圖10 所示的網(wǎng)絡(luò)拓撲,對相隔多跳的中間節(jié)點時間同步效果進行了測試評估。由圖10 可知:1) 即使相隔許多跳(本文最高測試到了10 跳),中心控制節(jié)點測算出的任意2 個中間節(jié)點時間偏差的誤差依然在10 ns 以內(nèi),可以為任意2 個中間節(jié)點達成納秒級的時間同步;2) 使用式(5)這種依次計算各跳的時間偏差值并累加的測算方式(利用中間每一跳的時間戳),達成的時間同步效果要比式(4)這種只利用首尾節(jié)點時間戳的測算方式效果更好;3) 使用LOF 方法進行離群值去除之后,可以進一步改善同步效果,尤其是在降低同步數(shù)據(jù)的標準差方面。
本文將各個邏輯交換機的端口速率均設(shè)為100 Gbit/s,服務(wù)器A 和B 之間使用DPDK(data plane development kit)的Pktgen 工具互相發(fā)送數(shù)據(jù)包,產(chǎn)生背景流量,數(shù)據(jù)包發(fā)送速率均設(shè)為1 Gbit/s。通過控制平面設(shè)置可編程交換機中的流表,可以使數(shù)據(jù)包經(jīng)過多跳邏輯上的交換機。另外,當(dāng)數(shù)據(jù)包到達最后一跳中間節(jié)點時,會向服務(wù)器C 匯報中間路徑記錄下來的時間戳。
服務(wù)器C 匯總分析收集到的時間數(shù)據(jù),對任意2 個中間節(jié)點,取邏輯上的5 萬對請求-回復(fù)數(shù)據(jù)包,分別用式(4)和式(5)進行時間偏差計算,取其平均值作為初步計算出的時間偏差,并與真實偏差(0)對比評估,即將平均值取絕對值,觀測其偏離0 的程度;另外,服務(wù)器C 對5 萬對數(shù)據(jù)包初步計算出的5 萬個偏差值使用LOF 方法進行離群值去除,再取平均值與真實偏差(即為0)進行對比評估,時間同步誤差(時間偏差均值的絕對值)和時間偏差標準差分別如圖11 和圖12 所示。
圖12 相隔多跳的節(jié)點間時間偏差標準差
如前所述,使用5 萬對數(shù)據(jù)包進行計算得到的時間偏差平均值的絕對值即為與真實時間偏差(0)的誤差。由圖11 可以看出,即便2 個中間節(jié)點相隔許多跳(本文最高測試到了10 跳),測算出的時間同步的誤差也依然在10 ns 以內(nèi)。同時,由圖11可以看出,中間節(jié)點并不是相隔得跳數(shù)越多,時間同步精度就會隨之下降,比如無論采用哪種計算方式,圖11 中相隔8 跳的2 個中間節(jié)點達成的同步效果都比相隔3 跳的中間節(jié)點同步效果還要好(計算出的Offset 均值的絕對值更小,與0 更接近),猜想這是因為數(shù)據(jù)包實際往返各條線纜時可能會產(chǎn)生正或負的硬件時間誤差,造成請求和回復(fù)2 個方向的時間不對稱性,不過由于時間誤差可正可負,因此經(jīng)過多跳時可能會產(chǎn)生正負誤差相抵消的效果,比如圖11 中相隔7 跳的中間節(jié)點,使用式(5)計算可以測算得誤差在1 ns以內(nèi)的高精度時間偏差值,該現(xiàn)象就是多條線纜產(chǎn)生的正負時間誤差相抵消的一個例子。使用式(5)這種依次計算各跳時間偏差值并累加的測算方式(利用中間每一跳的時間戳),達成的時間同步效果要比式(4)這種只利用首尾節(jié)點時間戳的測算方式效果更好,多跳情況下每一跳都可以計算出比式(4)誤差更小更精準的時間偏差值。另外,如果先使用LOF 方法去除離群值再結(jié)合式(5)進行時間偏差計算,可以進一步小幅度降低測算時間偏差與真實時間偏差的誤差,改善同步效果。
圖11 相隔多跳的節(jié)點間時間偏差均值的絕對值(時間同步誤差)
由圖12 可以看出,相隔多跳的節(jié)點間時間偏差數(shù)據(jù)的標準差都在4 ns 以內(nèi),時間偏差數(shù)據(jù)分布比較均勻,沒有太大的波動,這意味著用較少的數(shù)據(jù)取平均即可得到一個準確的平均值。同時也注意到,中間節(jié)點相隔得跳數(shù)越多,時間偏差數(shù)據(jù)的標準差越大,相對而言數(shù)據(jù)分布得就越離散。另外,通過LOF 方法去除離群值后,時間偏差數(shù)據(jù)的標準差得到顯著降低,數(shù)據(jù)分布得更加均勻。
5.2 節(jié)將各個邏輯交換機端口的額定速率均設(shè)為100 Gbit/s,服務(wù)器A、B 實際數(shù)據(jù)包發(fā)送速率均設(shè)為1 Gbit/s,用以評估多跳時間同步的效果,結(jié)果顯示均可以達到誤差在10 ns 以內(nèi)的同步精度,且同步偏差測算值的標準差均在4 ns 以內(nèi),數(shù)據(jù)分布比較均勻。
下面,以單跳為著眼點(此時式(4)和式(5)是等價的),評估邏輯交換機端口速率對時間同步效果的影響??梢园l(fā)現(xiàn),服務(wù)器A、B 實際數(shù)據(jù)包發(fā)送速率仍保持1 Gbit/s,當(dāng)邏輯交換機端口速率設(shè)為25 Gbit/s、40 Gbit/s、100 Gbit/s 時,2 個相鄰的中間節(jié)點時間偏差測算值仍與5.2 節(jié)中的結(jié)果保持一致,時間同步誤差(Offset 均值的絕對值)均在3 ns以內(nèi),Offset 標準差均在2 ns 以內(nèi),有著較好的同步效果,具體結(jié)果如表1 所示。
表1 端口額定速率非10 Gbit/s 情況下時間同步效果
但是,當(dāng)邏輯交換機的端口速率設(shè)為10 Gbit/s時,初始測算到的時間偏差數(shù)據(jù)中出現(xiàn)了大量的離群值,累積分布函數(shù)(CDF,cumulative distribution function)如圖13 中虛線所示,5 萬個Offset 數(shù)據(jù)平均值為38.678 ns(即為與真實時間偏差的誤差),標準差為128.622 ns,時間同步效果較差。
應(yīng)用LOF 方法去除離群值后,可以大幅度提升時間同步效果,去除離群值后得到42 507 個Offset數(shù)據(jù),其CDF 如圖13 中實線所示,數(shù)據(jù)平均值為2.923 ns(即為與真實時間偏差的誤差),標準差為6.031 ns??梢钥闯?,端口額定速率為10 Gbit/s 導(dǎo)致的同步效果下降可以通過LOF 方法得到修復(fù)。
圖13 端口額定速率為10Gbit/s 時Offset CDF(應(yīng)用LOF 前和應(yīng)用LOF 去離群值后)
5.2 節(jié)和5.3 節(jié)將服務(wù)器A、B 發(fā)送數(shù)據(jù)包的速率(背景流量速率)均設(shè)為了1 Gbit/s,本節(jié)將測試更高的數(shù)據(jù)包發(fā)送速率會對時間同步效果產(chǎn)生怎樣的影響。仍以單跳為著眼點,評估交換機端口額定速率固定時,不同的數(shù)據(jù)包發(fā)送速率(1 Gbit/s、5 Gbit/s、10 Gbit/s)對時間同步效果的影響如表2所示。
表2 實際數(shù)據(jù)包發(fā)送速率對時間同步效果的影響
由表2 可以發(fā)現(xiàn),當(dāng)邏輯交換機端口速率設(shè)為25 Gbit/s、40 Gbit/s、100 Gbit/s 時,無論實際發(fā)送速率如何增大,即使增大到服務(wù)器A、B 網(wǎng)卡的最大發(fā)送速率10 Gbit/s,已經(jīng)出現(xiàn)了較明顯的丟包現(xiàn)象(尤其在數(shù)據(jù)包發(fā)送速率為10 Gbit/s 時,丟包導(dǎo)致可用于計算的數(shù)據(jù)包對不足2 萬對),時間同步的效果也不會有顯著改變,同步誤差都能控制在3 ns以內(nèi),Offset 標準差均在5 ns 以內(nèi),仍能保持高精度的時間同步效果。
當(dāng)邏輯交換機端口速率設(shè)為10 Gbit/s 時,如表2中加粗的數(shù)據(jù)所示,同步誤差較大,Offset 標準差遠高于正常范圍,說明出現(xiàn)了5.3 節(jié)中的異常情況,初始測算到的時間偏差數(shù)據(jù)中產(chǎn)生了大量的離群值,導(dǎo)致時間同步效果較差。
對表2 前三行,即端口速率為10 Gbit/s 的3 項計算結(jié)果(數(shù)據(jù)包發(fā)送速率分別為1 Gbit/s、5 Gbit/s、10 Gbit/s)應(yīng)用LOF 方法去除離群值,結(jié)果如圖14所示。
圖14 端口速率為10 Gbit/s 時,應(yīng)用LOF 方法改進效果
由圖14 可知,當(dāng)端口速率為10 Gbit/s 時,無論數(shù)據(jù)包發(fā)送速率是1 Gbit/s、5 Gbit/s 還是10 Gbit/s,初始計算出的時間同步效果均較差,而使用LOF方法去除離群值后,3 種數(shù)據(jù)包發(fā)送速率下,時間同步誤差都控制在了10 ns 以內(nèi),標準差也有大幅度的下降,使同步效果得到修復(fù)。
通過5.3 節(jié)和本節(jié)評估可知,實際數(shù)據(jù)包發(fā)送速率對于時間同步效果不會產(chǎn)生影響,即使發(fā)送速率增大到出現(xiàn)了較明顯的丟包現(xiàn)象,時間同步效果也依然沒有改變。另外,端口額定速率會對時間同步效果有較大的影響,當(dāng)端口速率設(shè)為25 Gbit/s、40 Gbit/s、100 Gbit/s 時,無論實際數(shù)據(jù)包發(fā)送速率如何,均有高精準的時間同步效果;當(dāng)端口速率設(shè)為10 Gbit/s 時,無論實際數(shù)據(jù)包發(fā)送速率如何,初始計算的時間偏差數(shù)據(jù)中總會出現(xiàn)大量的離群值,同步誤差較大,Offset 標準差遠高于正常范圍,時間同步效果較差,不過由于端口速率設(shè)為10 Gbit/s 導(dǎo)致的同步效果下降可以通過LOF 方法得到修復(fù),去除離群值后仍可以達到高精準的同步效果。
5.5.1可編程數(shù)據(jù)平面性能開銷
本文設(shè)計的基于Telemetry 架構(gòu)的數(shù)據(jù)中心網(wǎng)絡(luò)高精準時間同步系統(tǒng)主要基于可編程數(shù)據(jù)平面和中心控制節(jié)點Telemetry Controller,由于中心控制節(jié)點處理能力強大,可以執(zhí)行較復(fù)雜的操作,而可編程交換機因為要保證線速,對于各方面資源的限制較多,容易成為系統(tǒng)瓶頸,因此關(guān)于性能開銷,主要針對在可編程數(shù)據(jù)平面上帶來的開銷進行評估。
首先生成一個對照P4 程序——將原來P4 程序時間戳采集匯報部分刪除,只保留轉(zhuǎn)發(fā)數(shù)據(jù)包的邏輯,然后使用P4 Insight 工具對時間采集匯報P4 程序和對照P4 程序進行了對比評估,結(jié)果顯示采集匯報P4 程序相比對照P4 程序只多使用了一個可編程交換機的stage(可編程交換機共有12 個stage),具體結(jié)果如表3 所示。
表3 原始P4 程序與對照P4 程序交換機資源開銷對比評估
由表3 可以看出,相比對照P4 程序,原始P4 程序只在某些資源上有2~3 倍的開銷消耗,并且在每個stage 消耗的資源最高不超過20%。相對于12 個stage 的可編程交換機資源,本文的P4程序只多占用了一個stage 并且每項資源消耗不超過該stage 的20%,這種程度的開銷增長是可以接受的。
5.5.2流量開銷
除了在可編程數(shù)據(jù)平面上帶來的計算開銷,本文還分析了該基于Telemetry 架構(gòu)的高精準時間同步系統(tǒng)帶來的額外流量開銷,以及流量開銷與同步精度間的關(guān)系。
5.2 節(jié)~5.4 節(jié)中的實驗均為全采樣模式,即可編程交換機會對所有經(jīng)過的數(shù)據(jù)包記錄時間信息,并在最后一跳中間節(jié)點上報到中心控制節(jié)點Telemetry Controller。本節(jié)將分析更低的采樣率(同時會有更少的額外流量開銷)會對同步精度造成什么影響。以單跳為著眼點,邏輯交換機端口速率設(shè)為10 Gbit/s,服務(wù)器A、B 實際數(shù)據(jù)包發(fā)送速率均設(shè)為1 Gbit/s,服務(wù)器A、B 間的背景流量依然為5 萬對數(shù)據(jù)包,由此分析了采樣率分別為1:1、100:1、1 000:1、10 000:1 情況下同步精度的變化,如圖15 所示。
圖15 不同采樣率(不同流量開銷)時的同步精度
由圖15 可以看出,對背景流量的每個數(shù)據(jù)包進行時間戳記錄及上報的全采樣方法可以達到2.923 ns 的時間同步精度。當(dāng)采樣率改為100:1,即每100 個背景流量數(shù)據(jù)包進行一次時間戳信息記錄及上報后,由于時間信息變少,偏差數(shù)據(jù)帶來的影響更大,同步精度降至4.724 ns,依然在10 ns 以內(nèi);當(dāng)采樣率改為1 000:1 和10 000:1 后,由于更易受到隨機離群值的影響,時間同步精度有較大幅度的下降,尤其當(dāng)采樣率為10 000:1 時,同步精度只有465.821 ns。
下面,綜合流量開銷和同步精度,從系統(tǒng)實用性的角度繼續(xù)進行綜合分析。在高頻通信場景即全采樣模式下,可以達到最高的同步精度,但帶來的開銷也是最大的:若同步的2 個節(jié)點間只相隔一跳,那么每一個正常通信數(shù)據(jù)包(背景流量)都會用于記錄時間數(shù)據(jù),并在最后一跳中間節(jié)點匯報給中心控制節(jié)點,這會帶來一倍的額外信令開銷;若同步的2 個節(jié)點間隔許多跳(n跳),由于本來系統(tǒng)就會有n跳的背景流量,則最后的匯報操作帶來的相對信令開銷會較小,這種情況下會增加1/n的信令開銷。綜合來看,雖然全采樣模式可以達到最高的同步精度,但是帶來的信令開銷也較大,實際應(yīng)用本文系統(tǒng)時可以綜合考慮同步精度與信令開銷,如果采用100:1 的采樣率,可以將流量開銷降到1/100,且仍能達到10 ns以內(nèi)的高同步精度。
本文針對數(shù)據(jù)中心網(wǎng)絡(luò)高精準時間同步的需求,分析了傳統(tǒng)的局部時間同步架構(gòu)存在的與集中式管理脫節(jié)、需要額外交互開銷、時間數(shù)據(jù)較少易受離群值影響等問題,提出了基于Telemetry 架構(gòu)的納秒級時間同步系統(tǒng),借助數(shù)據(jù)中心的背景流量來收集數(shù)據(jù)包進出節(jié)點的時間信息,并在中心控制節(jié)點對匯報上來的大量時間信息進行分析處理,達成一種集中式的自動同步,便于后續(xù)進行全局性網(wǎng)絡(luò)管理調(diào)度。另外,中心控制節(jié)點分析整理時間數(shù)據(jù)后,會將初步計算的時間偏差數(shù)據(jù)再應(yīng)用LOF方法,去除其中的離群值,進一步提升時間同步精度,尤其在去除離群值、優(yōu)化較差情況方面效果優(yōu)異。
本文在Barefoot Tofino 可編程交換機上實現(xiàn)了基于Telemetry 架構(gòu)的時間同步系統(tǒng),借助數(shù)據(jù)平面的可編程性,使用P4 語言編寫了可編程交換機的轉(zhuǎn)發(fā)邏輯,要求各節(jié)點在轉(zhuǎn)發(fā)數(shù)據(jù)包的同時,向中心節(jié)點匯報數(shù)據(jù)包進出節(jié)點的時間信息。通過多方面系統(tǒng)評估發(fā)現(xiàn),通過中心節(jié)點對匯報上來的大量時間信息進行分析處理,在多跳之間、不同端口額定速率及實際數(shù)據(jù)包發(fā)送速率下,均可以達到納秒級的高精準時間同步,對可編程交換機帶來的開銷也可以接受;并且,任意2 個節(jié)點的時間偏差都可以在中心節(jié)點得到,具有全局視野的納秒級的時間同步效果之后可直接用于全局網(wǎng)絡(luò)管理優(yōu)化、細粒度的包級別調(diào)度、網(wǎng)絡(luò)監(jiān)測、網(wǎng)絡(luò)快照的同步獲取等任務(wù)。
未來的工作主要包括:1) 在時間同步系統(tǒng)中加入非可編程交換機,拓展系統(tǒng)的普適性;2) 進行更復(fù)雜拓撲和更長光纜長度等條件下的評估與改進。