一.OpenVSwitch是什麼
OVS是一個高品質的,多層虛拟交換機(網絡分層的層),其目的是讓大規模網絡自動化可以通過程式設計擴充,同僚仍然支援标準的管理借口和協定:NetFlow,SFlow等,并且它還支援多個實體機的分布式環境。
什麼是虛拟交換?就是利用軟體的方式形成交換部件,是以也叫軟體交換機,跟傳統的實體交換機相比,虛拟交換機同要具備很多優點:1配置靈活,因為是軟體實作的,一台實體伺服器上可以配置書十台或者數百台虛拟交換機,而且端口數目可以靈活選擇。2成本低,通過軟體的方式可輕易達到10Gbps的交換速度。 是以OVS是一個虛拟交換機,可以用來組成虛拟網絡,虛拟機還有其他類型的不同的架構。
二.虛拟網絡
淺顯的了解就是使用虛拟交換機組成的網絡,就是虛拟網絡(和實體網絡相比),如圖所示:

三.OVS元件
OVS的内部元件,簡單來看,OVS由着三大不封構成:
1.OVSDB-server:OVS的資料庫伺服器,用來存儲虛拟交換機的配置資訊。它與manager和ovs-vswitch交換資訊使用了OVSDB(json-rpc)的方式。
2.Ovs-vswitchd:OVS的核心部件,它和上層controller通信遵從OPENFLOW協定,它與ovsdb-sever通信使用OVSDB協定,它和核心子產品通過netlink通信,它支援多個獨立的datapath(網橋),它通過更改flowtable實作了綁定,和VLAN等功能。
3.ovs kernel module: OVS的核心子產品,處理包交換和隧道,緩存flow,如果在核心的緩存中找到轉發規則則轉發,否則發向使用者空間去處理。
四、OVS結構詳解
OVS到底由哪些子產品組成,以及個子產品的作用。如圖:
ovs-vswitchd 主要子產品,實作switch的daemon,包括一個支援流交換的Linux核心子產品;
ovsdb-server 輕量級資料庫伺服器,提供ovs-vswitchd擷取配置資訊;
ovs-brcompatd 讓ovs-vswitch替換Linuxbridge,包括擷取bridge ioctls的Linux核心子產品;
ovs-dpctl 用來配置switch核心子產品;一些Scripts and specs 輔助OVS安裝在Citrix XenServer上,作為預設switch;
ovs-vsctl 查詢和更新ovs-vswitchd的配置;
ovs-appctl 發送指令消息,運作相關daemon;
ovsdbmonitorGUI工具,可以遠端擷取OVS資料庫和OpenFlow的流表。
此外,OVS也提供了支援OpenFlow的特性實作,包括
ovs-openflowd:一個簡單的OpenFlow交換機;
ovs-controller:一個簡單的OpenFlow控制器;
ovs-ofctl 查詢和控制OpenFlow交換機和控制器;
ovs-pki :OpenFlow交換機建立和管理公鑰架構;
ovs-tcpundump:tcpdump的更新檔,解析OpenFlow的消息;
運作原理:
核心子產品實作了多個“資料路徑”(類似于網橋),每個都可以有多個“vports”(類似于橋内的端口)。每個資料路徑也通過關聯一下流表(flow table)來設定操作,而這些流表中的流都是使用者空間在封包頭和中繼資料的基礎上映射的關鍵資訊,一般的操作都是将資料包轉發
到另一個vport。當一個資料包到達一個vport,核心子產品所做的處理是提取其流的關鍵資訊并在流表中查找這些關鍵資訊。當有一個比對的流時它執行對應的操作。如果沒有比對,它會将資料包送到使用者空間的處理隊列中(作為處理的一部分,使用者空間可能會設定一個流
用于以後碰到相同類型的資料包可以在核心中執行操作)。
五、示例
1. 實體機器之間通過虛拟交換機
可以看到虛拟機的兩個網卡是虛拟交換機虛拟出來的兩個端口。
2. 一台實體機上的虛拟機之間的虛拟交換機