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

網絡技術現況

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


換句話說,在突飛猛進,萬象更替的今天,做爲網絡工程師的咱們,仍然用着30前發明的技術!程序員

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

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


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

它就是今天的主角:Facebook網絡

Facebook 一羣瘋狂碼農的樂園

由於某些緣由,你們平時對Facebook知之甚少。因此在這裏有必要稍稍介紹下Facebook。架構

Facebook 是一家主打網絡社交平臺的公司,它相似於咱們平時使用的QQ空間,人人網等其餘社交平臺。併發

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


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

  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-----

相關文章
相關標籤/搜索