Facebook Open/R,新一代路由平臺與網工的未來

網絡技術現況

在網絡工程師的日常工作中,我們經常和各種網絡協議,不同廠家的網絡設備打交道。從大家熟知的RIP,OSPF,ISIS以及互聯網無處不在的BGP等等。配置和優化以上協議已經成爲網絡從業者的家常便飯。
而在業餘時間,我們認真好學,積極充電。學習Cisco,Juniper,華爲等廠商的認證課程。
可是,自從IGRP至1980代發明以來,這些路由協議就沒有怎麼改變過。頂多在原來的基礎上,新增了部分功能,例如RIP,OSPF,IS-IS支持IPv6,BGP支持新的family協議族等。


換句話說,在日新月異,萬象更替的今天,作爲網絡工程師的我們,仍然用着30前發明的技術!

誠然,有朋友會解釋道,現如今的網絡技術也在逐步升級,例如SDN技術的引入。但其實SDN只是一種新的解決方案,它解決了自動化集中控制的問題,優化了轉發和控制層面。其對現如今的網絡技術體系並不是替代性的,顛覆性的。

假設有一天,這些傳統的路由協議都消失了,取而代之的是我們完全沒有接觸過的新技術,網工的飯碗豈不是丟了?
想想就細思極恐。


作爲一名在網絡行業浸淫多年的資深工程師,我個人也不希望看到有這麼一天。
但是很不幸,時代的腳步沒有人能夠阻止。在地球的另外一端,一家社交媒體公司正在悄然改變這一切。

它就是今天的主角:Facebook

Facebook 一羣瘋狂碼農的樂園

因爲某些原因,大家平時對Facebook知之甚少。所以在這裏有必要稍稍介紹下Facebook。

Facebook 是一家主打網絡社交平臺的公司,它類似於我們平時使用的QQ空間,人人網等其他社交平臺。

不知道你們是否看過一部電影,全名《社交網絡》(THe Social Network)。它就是講述了Facebook CEO扎克伯格被女友甩了以後,如何藉助別人的點子創建了Facebook帝國,並發展壯大的過程。
本篇文章對於Facebook如何創建,我們並不感興趣。但是大家需要注意的是,CEO扎克伯格天才般的碼農技能吸引了一大批志同道合的牛叉碼農。他們堅信代碼改變世界。


爲了讓大家有個更直觀的瞭解Facebook的體量,讓我們來看看下面幾組數據(截止2017第三季度)。

  1. Facebook有超過27億人月活用戶,同時每年16%的速度遞增。
  2. 日活躍用戶13.7億人,23%年遞增速度。
  3. 每天有3億張照片上傳到Facebook服務器。
  4. 。。。。

在如此規模用戶量背後,是全球範圍的數據中心,以及跨越各個大洲的國際骨幹網在支持着數億人每天的社交動作。自然而然,網絡設計規劃以及日常運維也是成爲公司業務的關鍵。

因爲體量巨大,Facebook極其容易遭遇平時大家不太可能遇到的各種協議上的擴展性問題。有些問題對普通企業來說,發生的概率爲0.00000001%。但是在Facebook內發生的概率就是100%。

創新性開源路由平臺 Open/R

因爲不斷增加的用戶量和數據量,如今的網絡協議逐漸跟不上Facebook內部不斷產生的新應用。存在如下問題:

  1. 目前網絡協議過於古老。設計之初是在有限的CPU和內存資源的情況下,解決網絡可達性問題。而如今CPU和內存資源過剩,但是上層應用需要網絡協議提供更多的服務來支持其功能,而不是簡簡單單的連通性問題。
  2. 在已有協議的基礎上新增功能及其繁瑣,Facebook曾向IETF撰寫提交RFC,期間經歷無數次的修改,耗時多年才得以獲批。
  3. Facebook從創立之初,就一向致力於把一切問題歸結於軟件問題。既然是軟件問題,就用解決軟件問題的思維來處理,網絡問題也不例外。

基於以上幾點,Facebook放棄了修改已有協議,轉而編寫一套適合自己的全新的路由平臺系統,那就是今天的Open/R。

Open/R結構

Open/R宏觀結構圖
上圖爲Open/R的宏觀整體架構。

各個部件功能如下:

  • KV-STORE:產生鏈路狀態泛洪,與鄰接同步鏈路狀態。存儲與分發Key-Value,這些Key-Value 組合並不光是鏈路狀態,理論上它可以存儲任何信息。
  • Spark: 使用ipv6 Link-local 組播實現鄰居發現,並向其他模塊報告鄰居狀態。
  • LinkMonitor:顧名思義,通過Platform模塊監控硬件接口的狀態信息。並把通過Spark模塊學習到的鄰居關係報告給KV-STORE。
  • PrefixManager:IP地址前綴自動分發,這項功能大大簡化在自動部署過程中,無需工程師干預鏈路的IP地址分配。
  • Decision:當接收到KV-STORE模塊傳來的全網鏈路信息以後,基於最短路徑算法計算鏈路狀態路徑。
  • FIB:維護轉發信息表,並下發給Platform執行硬件轉發表更新。
  • Platform:結合特定硬件平臺的SDK,執行硬件層面的接口功能和FIB下發的路由功能。

仔細一看,這不是和平常的OSPF, ISIS一樣嗎?對外通過Hello發現鄰居,建立鄰接關係。對內通過Shortest Path算法算出最優路徑,然後下發FIB。

沒錯,Open/R設計之初,就充分吸收學習現有路由協議的優秀機制,並加以利用。但是同時,它也引入如下衆多功能:

  1. 跨平臺運行- Open/R可以運行在不同的硬件平臺之上。所有硬件軟件都抽象爲接口,不同的硬件ASIC和CPU均不會影響Open/R的正常運行。從而實現不同網絡設備的一致性體驗,使得統一化網絡管理更加容易。包括Arista和Juniper在內的廠商都通過API的方式運行Open R。以Juniper爲例,QFX系列和PTX系列都支持Open/R。
  2. 基於IPv6原生開發,使用ipv6 link-local地址,支持zero-touch配置。若需要ipv4路由亦可以開啓ipv4。
  3. 基於一個大掩碼的聚合地址prefix,運行Open/R的路由節點可以實現自動分配IP地址實現即插即用功能。
  4. 因爲功能模塊化,提供了平滑重啓的特性。升級過程中不會打斷業務。
  5. 支持實時業務流量剝離。
  6. 基於RTT的動態鏈路metric計算調整。省去了人工計算RTT來確認鏈路的Metric值的煩惱。
  7. 基於實時可達性探測,Open/R可以實時監控整個網絡的健康狀況。
  8. 提供API用於集成SDN控制器。
  9. 原生提供Python 庫來調用所有主要的Open/R進程。(又是python!)
  10. 極其容易做仿真測試,最高曾經測試過一萬個Open/R節點和6萬個link鏈路。(想想以前學習的知識,OSPF單區域不建議多餘50臺路由器,免得database過大。)

然而,最主要也是最重要的功能,是極強的擴展性。
今天你看到的是這些功能,但是隨着業務發展需要,Facebook可以隨時添加新模塊進入此係統。而且-----Open/R開源了!!!

其實Open/R不是本文重點

其實今天的討論重點,不是在Facebook 的Open/R,而是藉着Open/R,和大家聊聊關於網絡工程師的未來,關於我們自己!

不知道大家看完Facebook Open/R介紹以後,想到了什麼,有什麼樣的思考。

我說說我看到Open/R以後,我的感受吧。
首當其衝,如果自己再不轉變,就要失業了。
作爲一名網絡工程師,我們賴以生存的技能就是網絡技術,更深一層來說,深刻理解網絡各個網絡協議之間的運行機制,以及如何規劃並實施。
但是正如我開篇提出的問題,假如這些協議在某一天都消失了怎麼辦?
取而代之的是像Open/R這樣的新網絡系統。曾經熟知的OSPF區域類型,BGP 的policy,協議timer等統統派不上用場。一切一切都是被碼農們提前預設好,系統按部就班運行就可以。如果遇到系統故障,作爲網絡工程師的我們也插不上手,因爲代碼故障還需要代碼來解決。

今天只有一個Open/R,明天會有無數個Open/R

如果大家只是覺得,Facebook離我很遙遠,而且Open R目前只有Facebook以及零星幾個合作伙伴在部署。那就大錯特錯了。
首先,因爲Open/R的開源,其他存在類似協議擴展性困擾的公司就會藉着Open/R的設計思路和原理,開發出符合自身的路由平臺。這個趨勢不是誰能夠阻擋的,包括設備製造商。
類似的例子爲虛擬化,包括Cisco或者Juniper原來是藉着硬件設備外加軟件系統來盈利。但是在虛擬化面前,不得不推出虛擬化的路由交換平臺,放棄部分硬件設備的利潤。
還是那句話,在科技進步的潮流面前,沒有誰能夠阻擋。
而這次潮流的最終受益者----是程序員。
在科幻世界裏面,有這麼一個方式叫做“高維打低維”。大概解釋爲:高維空間的生物打擊低維空間的生物,易如反掌。
而在現實生活中,這種
正在發生在我們身邊。農耕時代敵不過工業時代,工業時代的產物又敵不過互聯網時代。同樣,在互聯網應用發展迅猛的今天,程序員如雨後春筍,一切問題,都可以用代碼解決。因此從某種層面上來說,程序員們站在了更高的維度。而作爲網工的我們,則是低維。

對手 or 朋友?

翻開現在的博客,公衆號。大大小小的文章都是關於程序員的,貌似作爲網絡工程師的我們,已經成爲過氣明星,只能在街邊小劇場路演。
那麼我們應該怎麼辦,繼續生活在象牙塔內,心裏暗暗仇視日夜加班的碼農麼?No No No,我們不僅不能仇視,還應該和他們成爲朋友,合作共贏纔是未來。

Facebook Open/R,新一代路由平臺與網工的未來

有句話說得好,與其坐以待斃,不如融入其中。

網工的路該怎麼走?

總結一句話:夯實網絡基礎知識,同時大力發展寫代碼能力,成爲程序員的一份子。進可攻,退可守。
畢竟,程序員再強,他們對於網絡技術知識的理解還是不如職業的網絡工程師,所以夯實網絡基礎知識非常重要。只要練好看家本領,才能開疆擴土。
同時,作爲網工的我們,應該大力學習編程,進入程序員的領域Get新技能,把自己變成程序員,跟上時代的步伐,纔不會被時代所拋棄。

結尾

最後,以一句略帶危機感的話語,結束這篇文章:

作爲一名網工,希望大家換個角度看待當下。網絡並不僅僅是OSPF,ISIS,BGP。也並不僅僅是多少個CCIE。也許在地球的某個地方,破壞性的創新正在侵蝕我們熟知的領域,最終引領我們走向陌生。

----END-----

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章