【本想按部就班介紹虛擬化技術的,但最近的工作在分析open vswitch技術,想趁著記憶新鮮把對openvswitch的認知詳細總結下來】
本文根據openvswitch官網openvswitch.org提供的文檔,以及其他相關資料進行匯總。
open vswitch整體概述:
> Apache 2.0協議。
> 純軟體多層虛擬化交換器。
>支援openflow協議
>支援多種Hypervisor(XEN、KVM等主流Hypervisor)
>支援以下特性
* Standard 802.1Q VLAN model with trunk and access ports * NIC bonding with or without LACP on upstream switch * NetFlow, sFlow(R), and mirroring for increased visibility * QoS (Quality of Service) configuration, plus policing * GRE, GRE over IPSEC, VXLAN, and LISP tunneling * 802.1ag connectivity fault management * OpenFlow 1.0 plus numerous extensions * Transactional configuration database with C and Python bindings * High-performance forwarding using a Linux kernel module
這麼介紹,可能看了沒什麼概念,接下來從虛擬計算環境下的網路結構從頭開始介紹。這樣對理解open vswitch比較有用一點。
在計算虛擬化技術推廣之前,網卡是host串連到交換器的出口,串連到物理交換器後,由物理交換器根據報文轉寄規則進行相應的處理。在Host主機部署虛擬化技術之後,允許多個虛擬機器同時運行,但網卡只有一個(或數量少於虛擬機器),因此會引入網卡虛擬化。早在90年代末,Linux已引入了bridge技術來實現虛擬網卡。
Linux中,TAP + bridge在網卡虛擬化中應用得比較普遍。結構如果所示:
該方案實現比較簡單,但問題也很明顯:bridge本身缺乏流控和網路管理的能力。一個很明顯的問題是,同一host內虛擬機器間通訊,直接通過記憶體交換即可完成,可不經過網路。對網路管理者來說,這部分流量就變得不可見了。隨著資料中心內單機部署虛擬機器數量的增加,這一問題變得更加明顯。
新型的虛擬交換器解決了內部流量的可視化問題,同時強化了流控、網路功能、QOS等方面的特性。比較有代表性的虛擬交換器技術有:VMware vswitch、Cisco nexus 1000v和open vswtch。同時,這類交換器還支援中心化管理。中心化管理,使得在眾多host上部署的虛擬交換器可以分布式得進行管控。另外,一些得到強化的NIC卡,還支援對open vswitch進行加速,如TCP分區處理加速、checksum,甚至一些網卡將L2交換器整合在網卡內,極大得加快Open vswitch的報文轉寄速率。
open vswitch的結構 如下圖所示:
上圖是open vswitch在XEN上的部署結構,雖然跟KVM上略有差異,但基本是一致的。XEN上最大的差別在於將ovs-mod模組部署於Dom0,而KVM則不屬在HOST os的核心態而已。上圖中,Hypervisor給每個虛擬機器分配一個虛擬網卡VIF,VIF串連到Dom0的快速轉寄模組ovs-mod。此外在Dom0的使用者態部署了一系列的管理程式,其中最核心的是ovs-vswitchd。ovs-vswitchd可接受遠端控制命令,如openflow控制器的命令等。
經過上述的介紹,詳細應該對open vswitch已經有基本的瞭解了,總結如下:
1. 針對虛擬網路,部署在hypervisor內的軟體虛擬機器
2. 解決了傳統虛擬橋接器所缺失的流量可視性問題,增強了網路管理的能力以及流控能力。
3.支援分布式部署架構
4.支援遠端管理
5.支援多種Hypervisor
6.可相容硬體網卡的加速
下面在詳細剖析下open vswitch的重要組件及軟體結構,整體結構如下圖所示:
【該如引用自網友部落格:http://chenpiaoping.blog.51cto.com/5631143/1143097】
上圖是對OVS軟體結構介紹較好的一張圖,先來看看部署在使用者態的組件:
1)使用者態部署了一系列的守護進程,其中最重要的就是ovs-vswitchd和ovsdb-server。
2)ovs-vswitchd是open vswtich實現最複雜的一部分,也是核心組件,又被稱為慢速路徑。該組件負責同遠端管理器進行通訊,如通過openflow協議跟openflow控制器通訊,用sFlow協議同sFlowTrend通訊。遠端控制器下發流量控制規則、流表項等。另外,該組件負責同部署在核心態的ovs快速路徑通訊,下發具體的規則和動作到ovs datapath,兩者之間通過netlink協議通訊。
3)ovsdb-server儲存配置資料,ovs-vswitchd通過socket同ovsdb-server通訊,讀取或寫入配置資料。
4)在上述核心模組之外,還有一系列的管理工具,都是圍繞上述核心功能提供一些增強服務的。不在贅述。
OVS的核心態相對比較簡單,只部署了具體的datapath,負責實際的報文轉寄處理。
值得注意的是,為了提高虛擬網卡效能,業界出現了很多虛擬機器直通網卡,比較典型的就是SRIOV網卡。這類網卡由於虛擬機器可直接存取硬體,因此在資料路徑中OVS是不會介入的,OVS在這類網卡上的作用,更接近於網路管理工具。
目前業界也出現了一些針對OVS加速的解決方案,如intel DPDK ovs等,netmap EVAL、6windGate等,下次打算就OVS加速技術進行展開。
今天就醬。