• <xmp id="om0om">
  • <table id="om0om"><noscript id="om0om"></noscript></table>
  • 網路

    DOCA Firefly 時間服務

    Network Time Protocol(NTP)是一種在數據中心被廣泛部署的時間同步協議,它能提供毫秒級別的同步。但是對于電信,金融,流媒體,科學計算,或者一些互聯網分布式業務,如分布式數據庫,分布式渲染等,一個高精度,并且可靠的時間是很關鍵的。

    IEEE 1588 Precision Time Protocol (PTP) 是另一種時間同步標準,它的目標是達到納秒甚至皮秒級別的時間同步精度。

    DOCA Firefly是一個基于PTP時間同步的DOCA服務,使用PTP來校準DPU(網卡本身)的時鐘,然后同步到宿主機。依靠網卡的高精度時鐘,客戶可以重新設計實現自己的各種應用。

    同時,使用硬件來得到更高的時間精度成為趨勢。本文將從IEEE 1588 Precision Time Protocol (PTP)開始,描述PTP基本原理,及其軟件協議棧,它與DOCA Firefly的關系,部署時間網絡的基本硬件要求,如何部署DOCA Firefly,最后分享了幾個從PTP中得到收益的業務示例。

    IEEE 1588 Precision Time Protocol (PTP)原理簡析

    IEEE 1588全稱是網絡測量和控制系統的精密時鐘同步協議標準,基本功能是網絡中所有時鐘都與最精確的時鐘保持同步。每個從時鐘通過與主時鐘交換同步報文而與主時鐘達到同步,最終整個網絡同步到同一個時鐘源。

    它使用端到端的UDP報文交互來確認彼此狀態,計算環路時延然后進行同步。1588的時間同步過程如下圖所示:

    對于端到端的雙方Master和Slave,首先需要計算兩個路徑延遲,Master-to-Slave和Slave-to-Master。

    首先計算Master-to-Slave:

    • t1時刻,Master發送Sync Message
    • t2時刻,Slave接收到Sync Message
    • tms,Master到Slave的時間差為t2 – t1

    計算Slave-to-Master:

    • t3時刻,Slave發送Delay Request Message
    • t4時刻,Master接收到Delay Request Message
    • tsm,Slave到Master的時間差為t2 – t1

    假設雙向延遲是對稱的,那么單向延遲(RTT/2)為:

    那么最終的時間偏移offset可以如下計算,這個offset可用來糾正Slave的時鐘:

    Linux PTP

    Linux社區通過Linux PTP項目PTP4L提供了一套軟件來支持IEEE 1588,該軟件是根據IEEE 1588的Linux精確時間協議(PTP)實現的。Linux PTP實現了IEEE 1588中定義的Boundary Clock (BC), Ordinary Clock (OC) 和Transparent Clock (TC)。

    Linux PTP傳輸層基于UDP/IPv4, UDP/IPv6, 或者raw Ethernet (Layer 2),其分層模型如下圖所示:

    PTP通過Linux SO_TIMESTAMPING選項支持基于硬件和軟件的時間戳,如果PTP消息由操作系統網絡協議棧處理,則會增加很多的延遲與抖動,從而導致系統時鐘精度不高。

    支持PTP硬件的DPU則可以bypass內核軟件處理流程,在發送出PTP交互消息的時刻,由硬件打上實時的時間戳,從而達到納秒級別的精度。

    系統時鐘如果要同步到Master,DPU的PTP硬件時鐘必須通過PTP4L鎖定到PTP網絡,并且通過PHC2SYS把硬件時鐘同步到系統。使用BlueField-2部署Linux PTP時,PTP4L和PHC2SYS都屬于DOCA Firefly時間服務,并且都打包進Firefly容器,部署到DPU的ARM系統上。

    DOCA Firefly的原理和架構分析

    DOCA Firefly是一個時間服務解決方案,通過一個服務支持所有關于時間的需求。它對Linux PTP做了很多的增強,對其做了很多的功能和性能的增強,并且可以支持Linux和Windows,無論是裸金屬還是虛擬化云環境。

    在DPU、NIC和交換機上都可以輕松的使用容器部署Firefly,各行業和應用都可以使用同一個服務,本質上,Firefly提供了所有需要的時間服務功能功能,如配置、監視,備份,編排。

    DOCA Firefly為數據中心提供了端到端的硬件加軟件的解決方案,使高精度的時鐘網絡不在復雜和昂貴,其結構框圖如下圖所示:

    DOCA Firefly可以運行在DPU或者ConnectX系列網卡上。當運行在DPU上時,有額外的優勢:

    • PTP4L運行在DPU ARM cores上,將時間進程與其它服務器軟件隔離開來
    • 可以持續的驗證該服務器時間的準確性,并不斷的計算跨數據中心的最大時間誤差
    • 可以支持Windows系統

    典型時間網絡拓撲

    一個典型的時間網絡拓撲如下圖所示:

    它由以下三種元素構成:

    • Grandmaster(GM)在PTP網絡中,只有一個節點可以被選擇做為參考時鐘(Grandmaster),其余所有節點做為PTP Follower。GM應該是整個網絡中最精確的時鐘。
    • Boundary Clock (BC)交換機中的所有端口共享一個本地時鐘,而不是維護各自的時間基礎。在BC上,只有一個端口會切換到PTP從隨者狀態,收集外部GM提供的時間信息,以便相應地調整BC的本地時鐘。

    所有其他端口承擔PTP領導者的角色,訪問時間信息,并將其傳輸到連接到它們端口上的追隨者。

    • PTP Followers系統中所有非GM或BC的服務器實體都充當PTP追隨者。服務器連接到交換機,運行PTP守護進程客戶端,監聽PTP消息并同步本地時鐘。

    DOCA Firefly在DPU上的部署過程

    登錄到DPU的Linux shell,執行下面的步驟在DPU上部署時間服務。

    1. 創建配置文件/etc/ptp4l/ptp4l.conf,并添加以下內容:
    [global]
    
    domainNumber 127
    
    priority1 128
    
    priority2 127
    
    use_syslog 1
    
    logging_level 6
    
    tx_timestamp_timeout 30
    
    hybrid_e2e 1
    
    dscp_event 46
    
    dscp_general 46
    
    [p0]
    
    logAnnounceInterval -2
    
    announceReceiptTimeout 3
    
    logSyncInterval -3
    
    logMinDelayReqInterval -3
    
    delay_mechanism E2E
    
    network_transport UDPv4
    
    創建并啟動Firefly時間服務的容器:
    #Logout to NGC
    
    docker logout nvcr.io
    
    #Login to NGC
    
    docker login nvcr.io
    
    # Create container
    
    docker create \
    
          –privileged \
    
          –network host \
    
          –name ptp-service-container \
    
            –restart unless-stopped \
    
          –restart unless-stopped \
    
          -v /var/log/:/var/log/ \
    
          -v /etc/ptp4l/:/etc/ptp4l/ \
    
          nvcr.io/ea-rivermax/dpu-ptp-service/dpu-ptp-service:21.03-v1
    
    # Start container
    
    docker start ptp-service-container
    • 使用docker ps確認容器正常啟動
    • 查看日志文件/var/log/ptp4l.log,檢查時鐘的狀態
    # tail -f /var/log/ptp4l.log

    DOCA Firefly的時間精度結果

    不同的硬件支持不同的時間服務功能,并且精度也有差別,如下表所示:

    使用IEEE 1588時間同步后,對分布式數據庫的具有明顯的加速,比如Google Spanner, CockroachDB,最終性能提升3-4倍。因為在分布式數據庫應用中,所有的節點和事務需要對時間達成一致,時間不確定性限制了分布式、同步復制的數據庫性能。使用PTP之后,降低了時間不確定性,提高了計時精度。詳細參考https://www.cockroachlabs.com/blog/living-without-atomic-clocks,和論文Sundial: Fault-tolerant Clock Synchronization for Datacenters

    在專業的流媒體處理中,所有的媒體節點需要鎖定同一個時鐘,精度要求us級別。SMPTE ST 2059/2110要求設備支持硬件時間戳。并且大多數的媒體處理使用基于Windows的工作站,目前并沒有PTP能夠支持Windows。通過在DPU上部署DOCA Firefly,則Windows系統也可以享受PTP帶來的優勢。

    在更多的對時間精度有要求的場景中,越來越多的應用能從PTP收益。比如分布式事件檢測,擁塞控制等。在電信設備中,IEEE 1588也是必須的功能。

    終上所述,在使用Firefly之后,因為所有節點間以納秒級別同步時鐘,數據中心可以重新考慮如何設計自己的應用程序。

    +2

    標簽

    人人超碰97caoporen国产