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