2013年9月16日 星期一

Open VSwitch 簡單說~



在網絡虛擬化的議題內, 大部分的人因該都聽過OpenVSwitch這個開源項目 (簡稱 OVS), 尤其以Nicira為最早開始使用OVS作為網絡虛擬化交換的Edge. 你如果去Google上去Search一下網絡虛擬化的廠商, 大部分的廠商也都使用OVS作為網絡交換的Edge 軟件.  到底OVS有什麼好的地方?

OVS主要是設計在Server Hypervisor上運行的網絡交換機軟件, 到了今天(2013-09-16), 經過11個版本的revision之後, 已經達到了是具有在生產環境運型品質的軟件. 這個軟件當初設計的目的主要是為了VM-VM在同一個Hypervisor的網絡通訊或是轉送VM的數據包到物理的網絡. 當然他也支持一些標準的管理介面. 如 sFlow, Netflow, IPFIX, RSPAN, CLI 等, 當然也支持開放的程式化接口, 如Openflow或是OVSDB管理協議.

OVS今日廣泛的應用在多種的服務器虛擬平台, 如KVM, VirtualBOX, XCP, XenServer 或是ESX (商業廠商特別製作的Virtual Appliance). 當然OVS的Source Code也可以在Linux 2.6.32以後的Linux核心內被編譯(Compile). 當然現行主要支持的Linux 核心版本主要還是 3.3 的版本. 目前對於Debian, Ubuntu, Fedora的Linux, 是比較常被使用, 也比較容易在官網或是谷歌搜尋引擎上找到相關的資訊.  我自己其實是一個很懶的人, 我懶的每次都去complie source code, 加上我比較常用的是ubuntu的linux, 所以索性就使用OVS Source Code去製作一個屬於ubunut的套件. 關於如何製作套件,  在OVS的Source Code的說明文檔裡, 都有介紹. (如果要製作ubuntu的套件, 就參考INSTALL.Debian的檔案)





我個人最常使用的組合是 KVM+Libvirt+OVS, 但是Libvirt對於OVS的native support是在0.9.11以後的版本才開始支援. 但是很令人討厭的是,  支持Libvirt的圖型化UI管理工具, 並不支援OVS, 所以現在的方式還是修改VM的XML內容, 來attach VM的網卡到OVS Bridge.

br1 是透過OVS建立的Bridge, 但是Virt-Manager不支援, 所以沒法bridge~沒搞頭~


所以為了要讓VM的網卡可以順利attach到OVS上, 最簡單的方法就是更改VM XML文檔內的網路配置.  因為已經安裝了Libvirt, 所以可以直接使用 virsh edit "VM-name" 的指令去開啟VMˇ的XML文˙檔.  參考下例把網絡的部份更動成以下的配置, 再來Destroy VM instance 然後再Restart VM.  (這裡就不介紹如何建立OVS bridge和port了, 可以參考官方網站)



















因為我的br1 mapping 到 hypervisor的eth1, 這個端口是接物理交換機的VLAN Trunk, 所以我要這個端口打上vlan tag 10, 讓VM可以和VLAN 10的裝置溝通.
使用指令為: ovs-vsctl set port vnet0 tag=10















寫道這裡,  我發現我越來越偏離主題, 我的出發點因該是要討論什麼是OVS, 不是寫OVS的操作手冊才對. 所以回歸後續我想說的部份. 就是很多人也一定會有的問題就是, OVS只能支援Linux嘛?其實答案是否定的.  其實OVS可以支持多個操作系統和硬體的平台, 只是多半的開發是在Linux上進行的, 基本上只要是POSIX ( Portable Operating System Interface)的系統, 都可以集成. 目前也聽說有一些成功port到FreeBSD, Windows或是Non-POSIX的平台上.

當然商品比較這種事情, 一直都市場上所喜愛的主題之一.  所以Opensource的東西每次都是墊底拿出來比較的,  因為沒太多人懂,  沒人在意,  所以最好欺負.  不過關於OVS, 如果拿來跟VMware的Distributed VSwitch和Cisco的Nexus 1000V相比, 總的來說真的只有被欺負的份. 其中差異點最大的部分主要是在於, OVS本身並沒有中央管理的模組, 每一個OVS都是單機處理的模式. 相較於VMware使用vCenter, Cisco Nexus 1000V使用VEM的管理模組來說, 單就OVS的管理面來看, 就鳥掉了.

為了解決OVS本來在方面上的不足,  OVS支持兩個Open的管理協議. 由於Openflow本身是設計於虛擬網絡的遠端管理,  所以擅長於管理flow base的轉發狀態管理. OVSDB則是擅長於交換機端口的狀態管理. 如次一來便可以解決上述的管理不足問題. 這樣上面那隻鳥因該就可以唱出美妙的歌聲了. 目前OVS在這比較具有代表性的架構, 因屬VMware NSX MH ( 原為Nicira NVP)的系統, 當然他在架構上又重新做了優化, 讓不單只是管理的面向, 在規模, 效能及可見度上, 重新詮釋系統架構. 這點也是其他虛擬網路系統設計者目前正在關注的方式.



2 則留言: