常規(guī)網絡基礎架構設計是不是就像是“一堆協(xié)議”?加州伯克利大學教授Scott Shenker是這樣說的。Shenker是一位網絡專家,也是Nicira的合作創(chuàng)始人以及軟件定義網絡(SDN)的主要支持者。他認為,與計算機科學的其他學科不同,網絡連接和網絡規(guī)模仍然與其底層協(xié)議和標準緊密耦合,而沒有足夠的抽象。
他的論斷有一定的道理,但是我認為一定要分清 Shenker所指的大網絡學科究竟是什么。畢竟,我們已經在主機間的通信關系上實現(xiàn)了抽象。開放系統(tǒng)互連(Open Systems Interconnection)模型本身就是一種抽象。例如,在編寫聊天應用程序時,應用開發(fā)者不需要重建用于執(zhí)行流量控制的TCP功能,也不需要重建用于執(zhí)行主機間通信的IP.相反,他們可以使用協(xié)議棧提供的抽象概念。
為什么要在這些網絡層上引入抽象?
我認為,Shenker的觀點集中在如何將數據從一個網絡傳輸到另一個網絡,以及這個過程對于物理網絡的依賴關系。我一直聽到有人在質疑,為什么一定要在這些網絡層上繼續(xù)引入抽象呢?
如果您查看網絡的核心協(xié)議會發(fā)現(xiàn),這些技術的創(chuàng)建和改進過程很有技術含量。例如,邊界網關協(xié)議(BGP)一直是保持網絡連接互連網的基礎。在路由器出現(xiàn)之初,它就一直存在,而且它已經被證明是一種可伸縮的解決方案。而且,行業(yè)一直在尋找突破協(xié)議規(guī)模限制的方法。例如,當路由表太大,無法保存在路由器的內存時,我們就可以使用路由匯總技術去解決路由表溢出的問題。那么,Shenker的觀點到底是什么?如果行業(yè)一直都在解決面臨的技術難題,那么為什么要純粹為了改變而改變呢?
我認為,一定要理清問題抽象真正要解決的問題。但是,我并不清楚這個問題是什么。這才是真正的問題。我們已經被技術淹沒,以至于只見樹木不見森林。本文很好地從非技術角度闡述了如何使用抽象方法去解決問題。簡而言之,抽象使我們更好地使用自己的重要思考技能,從更高層次看待一個問題,而不是直接進入問題的細節(jié)。解決路由表大小的問題就像停留在樹木上。完整的SDN則致力于消除路由限制問題,在理論上實現(xiàn)一種支持更大容量的網絡框架。
SDN是否是最終解決方案?
SDN是否是處理網絡中缺少抽象的解決方法?不是。和路由匯總技術相似,SDN 只是一種針對具體網絡問題的方法,而不是一種使用抽象方法的解決方案。網絡控制層面只是使用SDN處理的一個特定的抽象領域。我們還需要考慮設備層面,F(xiàn)在已經不能將Windows或Linux服務器的工作負載一對一關聯(lián)到物理硬件上,F(xiàn)在,一個“Web服務器”已經不是一個物理設備;它只是一個概念。通過使用這種曾經的物理概念,然后經過“虛擬化”,或者說對它們進行抽象,我們就能夠改進運營效果,創(chuàng)建新的服務模型,如基于基礎架構即服務的私有云或公共云。
虛擬設備是這種功能的一種擴展。虛擬設備可以運行在公共云基礎架構上,也可以運行在數據中心的一臺白盒設備上,因為它們已經從物理硬件上抽象出去。因此,安裝一個內容管理系統(tǒng)可能就是簡單的下載一個虛擬設備,然后將它導入到云管理程序的虛擬化集群中。
我們是時候離開由各種網絡協(xié)議構成的小細節(jié)了,這些網絡協(xié)議一直在為復雜系統(tǒng)增加抽象層次,我們將創(chuàng)建一些全新的產品和運營模型。我們目前還無法看到這一點,因為我們現(xiàn)在仍然掙扎于各種協(xié)議之中。