本文僅代表個人觀點,請以辯證的態度看待

沒錯,我就是來吐槽的。

提到 openflow,大多數人應該覺得就是 SDN 的一個典型代表吧,但其實是由於雲計算的崛起讓它發了意外之財。openflow 拋棄了已經很成熟的網路協議棧,去讓控制器給背鍋,這就註定了路不好走,再加上純粹的集中控制模式,目前看來是沒啥發展了。

首先要吐槽的就是,Neutron 雖然是用了在應用層去實現網路基本機制的 openflow,但對網路技術用語的不嚴謹搞得我懵過不止一次。我明白,作為一個產品在面向最終用戶的時候,把實現的某些功能抽象呈獻給用戶是個不錯的選擇。正向案例我記得比較深刻的一個是「快照」這個東西,從名字上來看感覺就是給現有狀態做個完整的備份,一般來看就是複製一份吧,然而大多數實現是「寫時複製」,恍然大悟。那現在來看看 Neutron 在這方面做了哪些?floating ip,這個還比較形象,也很容易聯想到是用靜態映射實現的;flat網路,這個就有點混亂了,本來這個是相對於使用虛擬化封裝過的多層次網路來說的平面網路,比如沒有使用 802.1q 封裝,但注意不是沒有打 tag 就不是 vlan 了,這跟鏈路類型也有關係,也就是說外部的 vlan 在某種情況下也是可以給 Neutron 提供 flat 網路的(比如本徵 vlan);代理 arp,這是把我搞得最懵的,其本身是三層設備為連接的廣播域提供代理的,而 Neutron 是在 openflow 實現 vtep 的二層網關時提到的,我是一直不能理解,很久之後才明白那是 arp 廣播抑制,技術實現、封包完全不一樣好么!

回歸主旨,談談為什麼我說 openflow 使 Neutorn 走上了歧路。

還是由於 openflow 拋棄了原有的成熟網路協議棧,在使用 vxlan 協議時,它只實現了作為 vtep 的一半功能,即沒有三層路由(那時還沒有 OVN)。於是,Neutron 搞了個網路節點,使用 namespace 進行路由,這蠻不錯的。但隨著功能的增多,比如 VPNaaS、FWaaS 等使 namespace 的壓力越來越大,這也還好。我重點要吐槽的是下面兩個(儘管這倆被很多人推崇備至):

  • L2 Population

本來是想提高 vxlan 網路 Scalability的,說白了,就是 Neutron 在 vxlan 控制層面上的增強,應該是想要達到 BGP EVPN 那樣的效果。然而效果不咋滴,卻造成 qrouter 經常腦裂。

  • DVR

我覺得這是想模仿 vxlan 的三層分散式網關效果吧。但人家能這麼搞,是因為有相關網路協議棧的支持,DVR 就直接 copy namespace,數據包處理還是那一套,然後根據埠復用、靜態映射、路由等進行了分工,還使用了策略路由進行導流,沒進行路由就強行修改 mac (openflow 在實現其它功能上也做了類似處理),無話可說。

最後,引用一句曾看到的相關評論:

SDN王冠上的鑽石Openflow並沒有如願成為主流的南向介面,純種的集中控制看起來也不如物理上分布邏輯上集中的控制模式更有吸引力。再後來,被SDNer們詬病已久的OSPF和BGP,居然殺了個回馬槍,滲透進了數據中心網路,成了LANWAN通吃的控制平面。而曾經風光無兩的ODL和ONOS,也從參謀長聯席會議主席的位置上隱退,穩穩噹噹地在神壇上被供了起來,靠著三心二意的支持者們心不在焉的香火錢維持存在感。

推薦閱讀:

相关文章