天天看點

OVN & midonet

OVS團隊在這周啟動了OVS下的一個嶄新的子項目,用來給OVS這款在OpenStack項目廣泛使用的虛拟交換機引入一個輕量級的控制平面,緻力于提高基于OVS的OpenStack網絡方案的擴充性和易用性,同時也為分布式路由等走捷徑似的轉發提供了可能性。

對于這個新項目的出現,除了對可生産部署的時間我稍表示擔憂外(畢竟現在還隻是在架構層面,代碼還未啟動編寫,當然這是參與這個項目的好機會),我對其定位非常看好,現有的OpenStack方案盡管經過多次重構,我個人仍對這種采用各種開源實作搭建起來的方案感到不是非常認同,并且neutron ML2這樣的plugin要管理衆多計算/網絡節點上的agent,存在大量的rpc調用,并不是一個很理想的分布式應用,是以我對于之前所談到的midonet這樣的一體化OpenStack方案則認同的多,通過分布式資料庫技術,計算/網絡節點上的agent隻需要從集中的資料庫訂閱虛拟網絡資訊,減少了與neutron這種多功能為一體的元件的耦合,可以獨立的進行計算并指導虛拟網絡中的轉發,在擴充性和容錯性上都會得到有價值的改進。

從OVN所給出的架構來看,與midonet有些英雄所見略同的感覺,是以我覺得midonet有了一個比較厲害的競争對手,并且midonet基于java/scala/akka架構編寫,一定程度上拉高的社群參與度的門檻,反倒OVN的C語言傾向很明顯,向我這樣的C語言碼農會覺得适從的多些,并且借助于OVS本身的名氣,郵件清單裡得到了不少回應,連SDxCentral上都有了相應的報道,加上VMWARE NSX強悍的技術背景支援,相信OVN的前景還是光明的啊。

一場由VMWARE開啟的好戲開始了,plumgrid/midonet會有什麼感覺呢?估計要盡快的建立客戶基礎,都說不lock-in,其實還得lock-in,不然怎麼有錢賺呢;至于OpenContrail,BGP/XMPP這樣複雜的東西,誰願意玩或者玩得轉呢,更加認人覺得有點洗錢的感覺了。。。

Anyway,希望國内的公司能夠多多參與到開源社群中來,這是一個很好的占坑機會啊。

作者:張華  發表于:2015-08-05

版權聲明:可以任意轉載,轉載時請務必以超連結形式标明文章原始出處和作者資訊及本版權聲明

(http://blog.csdn.net/quqi99)

MidoNet是類似于OpenContrail, Neutron DVR, DragonFlow, OVN的SDN産品,其主要特性如下:

1, L2交換、L3路由、L4負載均衡

2, 有狀态和無狀态NAT

3,邏輯和分布式防火牆

4, BGP與ECMP支援

5, GRE、VxLAN

6, VTEP(VXLAN Tunneling End Point) support with OVSDB protocol

7, partial docker integration

8, Re-written with Java/scala

OVN & midonet

如上,非常熟悉的架構,在計算節點上要運作Midolman也就是Mido Agent來同時具備L2-L4層幹活功能。采用分布式資料庫NSDB來作集中的控制平面存儲port, node, mac等映射關系。另外,它還支援BGP,如下圖,它并不支援在同一個資料中心的多個跨三層的openstack之間運作iBGP(走GRE/VxLAN隧道),隻支援在跨廣域網的多個資料中心之間運作eBGP。

OVN & midonet

在二層的交換上,和目前的Neutron DVR的原理差不多,如下圖:

OVN & midonet

但增加了VxLAN VTEP二層網關功能(網關用于去vxlan頭讓Vxlan網絡與非Vxlan網絡互動, 或者不同的vxlan id的vlan網絡互動),從流表中比較VM1和VM2的段标記VNI(不需要用IP比較)就可以判斷是否位于同一個tenant的網絡了,如果不在一個VNI中就出軟體或者硬體的VxLAN網關交給上聯交換機。如下圖所示:

OVN & midonet

    如果需要VXLAN網絡和非VXLAN網絡連接配接,必須使用VXLAN網關才能把VXLAN網絡和外部網絡進行橋接和完成VXLAN ID和VLAN ID之間的映射和路由,和VLAN一樣,VXLAN網絡之間的通信也需要三層裝置的支援,即VXLAN路由的支援。同樣VXLAN網關可由硬體和軟體來實作。從封裝的結構上來看,VXLAN提供了将二層網絡overlay在三層網絡上的能力,VXLAN Header中的VNI有24個bit,數量遠遠大于4096,并且UDP的封裝可以穿越三層網絡,比VLAN有更好的擴充性。

    改善東西向流量的硬體二層VxLAN網關的部署圖如下所示:

OVN & midonet

防火牆服務鍊的實作如下,在每一個port上有一些pipline用于去生成一些流表。

OVN & midonet

支援DNAT端口映射,如下圖:

OVN & midonet

最後,當然支援L3功能,如下圖:

OVN & midonet

Neutron DVR在每個計算節點上都具有L3功能,這一點MidoNet的Provider Router與之不一樣,MidoNet更像是沒有DVR時的Neutron的部署,有一個集中單一的路由器叫Provider Router用于tenant之間的以及tenant與Internet之間的L3連通性。在一個典型的Midonet的部署中,Provider Router可以有3個ECMP靜态路由去連接配接上行路由(如果哪一個上行路由路需要動态學習上行路由就安裝BGP)。看到沒,Midonet它這裡的Provider Router的概念與Nerutron的Provider Router的概念是有點小差別的,Midonet的計算節點上雖然不具備L3功能,但它具備上面提到的L2網關功能,這樣同一tenant的不同子網間的東西向流量并不需要經過Provider Router(Neutron DVR解決的是相同子網的東西向流量不繞道l3-agent的情況), 隻有跨tenant的東西向流量和南北流量才需要經過Provder Router。