以下是演講實錄:
程傳勝:各位嘉賓下午好,正式開始前我先做下自我介紹,我叫程傳勝,來自百度系統部,在百度負責交換機和光模塊的硬件,同時在ODCC testbed項目組擔任項目經理,今天我分享25G網絡和測試運用。
首先我們看為什么選擇25G作為百度下一代主流速率,一句話總結:25G更高效,擴展性更強,性價比更高。雖然從速率來看40G比25G更快,但我們知道目前的40G是通過4×10G實現的,比25G落后一代。假設某個交換芯片有128個設備是lan的話,25G速率下整個交換帶寬和交換能力是最大的,同時25G速率下連接服務器的數量和交換能力也是最優的。第二,25G可以更方便的升級到50G和100G,25G技術出現之前,100G是通過10×10G實現和應用,現在對于25G技術來講,4×25G就能實現100G.如果使用PAM4電平,單25G Lan就能實現50Gb/s的數據傳輸。
第三是單Gbit的Consumption和Cost相對10G都有下降。先說Consumption功耗,我們有做過對比,交換機都插滿AOC和光模塊,荷蘭服務器 英國主機租用,蛇形打流滿載情況下,25G交換機的功耗大約是10G交換的1.5倍。這樣看25G的Consumption/Gbit是10G的0.6倍。再看Cost成本,我們拿預計今年末交換機加AOC和光模塊的成本對比,25G系統的成本大約是10G系統成本的2倍。所以25G的Cost/Gibt是10G的0.8倍,我們相信隨著明年25G的大量應用,這個數字還會降低。
Consump功耗,滿負載情況下25G交換機的功耗大約是10G交換機功耗的1.5倍。
第二個因素是25G生態的成熟。25G交換機在數據中心的應用是實實在在的工程實踐應用,所以我們需要25G生態的上下游各個環節都成熟,產品量產,2015年下半年百度決定做25G交換機的時候我們了解到25G相關的工程技術已經成熟應用或者即將成熟應用,當時有比較好的外界條件。以上兩個是選擇25G的外在條件,下面看用戶需求這個內在條件,對百度來講,百度為什么把現在的網絡主流速率從10G升級到25G,第一和第二原因都有。去年開始線上某些Hadoop集群的數據流量都有達到萬兆情況,百度云和百度AI的快速發展,對網絡延時和帶寬的要求越來越高,升級到25G也有為帶寬做準備的意義。
基于以上原因,百度選擇25G作為這一代的主流速率。ODCC對25G的研究開展始于2015年,2015年10月成立網絡組,同時提出若干項目,其中一個項目是25G交換機項目,我擔任項目經理。2016年9月ODCC峰會發布25G TOR交換機規格書V1.0版本。這個規格書詳細給出了ODCC推薦的25G TOR交換機的硬件架構和核心設計。值得一提的是這個規格書給出兩種不同的規格,供開發者參考。2017年是25G在ODCC爆發的一年,2017年4月份我們發布了25G AOC和100G開放光模塊技術規范。同年5月成立25G TestBed測試項目組,8月發布25G系列測試規范。線下多次舉辦了沙龍溝通和工作組會議,在座的會員單位有的參加過。
百度25G TOR設計原則。首先是解決10G交換機痛點,第一個痛點是軟件硬件沒有歸一化處理。現在百度線上萬兆交換機有三個廠家,在CPU使用上,有的廠家使用MIPS架構CPU,有的使用PowerPC架構CPU,同時硬件系統驅動也沒有管控。CPU架構和硬件系統不統一造成研發百度OS的時候要分別適配,出現一個現象,三款萬兆交換機是用三款百度OS的image(音),這給我們的人力和軟件版本的管理造成了一定的困擾。第二個是I2C問題。I2C總線在交換機系統中有廣泛的應用,AOC、光模塊、PSU、FAN的管理,大都是使用I2C總線。對于可插拔的模塊來講,插拔模塊時,一定概率會出現I2C總線鎖死,域名注冊,如果沒有對此路I2C總線做隔離,進而會影響到整個I2C總線。導致I2C總線不可用,給運維帶來一定的不便。第三個痛點是診斷手段不夠豐富,問題記錄上報比較少,線上的交換機如果發生死機故障,我們不能進行遠程診斷,也不能進行遠程恢復,我們必須通知現場的外包手動下店進行恢復,對我們人力資源也是一個浪費。交換機如果發生重啟故障的話,我們對重啟類型和重啟原因的記錄也比較少,問題的故障預警也沒有實現。
針對以上痛點,我們制定25G TOR的時候采取了全程參與、深度定制的方法,首先百度會制定詳細的硬件規格和核心設計方案,百度依靠我們自己的軟件設計能力和硬件設計能力,給出一個詳細的百度想要的交換機的規格,通過我們的設計解決和避免萬兆交換機存在的痛點,也能實現我們自己的一些想法。第二,對關鍵器件我們統一管控,我們選定廠家和型號,必須使用我們選定的關鍵器件,這樣做的目的一是有利于軟件的歸一化,二是有利于硬件質量的控制。TOR交換機在研發過程中我們全程參與,這樣做的目的是了解我們研發的過程,同時確保我們的規格書能執行到