原理講解:
當我們創建一個交換機(網橋)之后即(ovs-vsctl add-br brname),此時網絡功能不受影響,但是會產生一個虛擬網卡,名字為brname(與網橋名字同名,可以使用 ifconfig brname查看),之所以會產生一個虛擬網卡,是為了實現接下來的網橋(交換機)功能,有了這個交換機以后,還需要為這個交換機增加端口(port),一個 端口就相當於一個物理網卡,當網卡加入到這個交換機之后,其工作方式就和普通交換機的一個端口的工作方式類似了;
再執行(ovs-vsctl add-port brname port)之后,即網卡加入網橋之后,按照網橋的工作標准工作,則加入的端口(網卡)必須以混雜模式工作,工作在鏈路層,處理2 層的幀,所以這個port就不需要配置IP的(應該沒有見過哪個交換機的端口有IP的吧)
那么接下來你可能會問,通常的交換機不都是有一個管理接口,通過telnet到交換機上進行配置的,那么在OVS中創建的虛擬機有沒有該接口呢,有的!上面提到創建交換機brname的時候產生了一個虛擬網口brname,那么,給這個虛擬網卡配置了ip之后,就相當於給交換機的管理接口配置了IP,對此一個正常的虛擬交換機就搞定了!!
除此之外,與網橋同名的網卡(端口)起到了橋的功能;
二、工作場景
ovs主要是用來虛擬化環境中,虛擬機之間的一個虛擬機和外網之間的通信場景,如下一個典型的結構圖:
- 1 VM實例instance產生一個數據包並發送至實例內的虛擬網絡接口VNIC,圖中就是instance中的eth0.
- 2 這個數據包會傳送到物理節點上的VNIC接口,如圖就是vnet接口。
- 3 數據包從vnet NIC出來,到達橋(虛擬交換機)br100上.
- 4 數據包經過交換機的處理,從物理節點上的物理接口發出,如圖中物理節點上的eth0.
- 5 數據包從eth0出去的時候,是按照物理節點上的路由以及默認網關操作的,這個時候該數據包其實已經不受你的控制了。
1、添加網橋br0:
#ovs-vsctl add-br br0
2、列出open vswitch中所有的網橋:
#ovs-vsctl list-br
3、判斷網橋是否存在:
#ovs-vsctl br-exists br0
4、將物理網卡掛接到網橋:
#ovs-vsctl add-port br0 eth0
5、新建虛擬端掛接到網橋中:
#ovs-vsctl add-port br0 my_port_name
eg:ovs-vsctl add-port br0 gre0 -- set Interface gre0 type=gre options:remote_ip = XX.XX.XX.XX
6、列出網橋中所有端口:
#ovs-vsctl list-ports br0
7、列出所有掛接到網卡的網橋:
#ovs-vsctl port-to-br eth0
8、查看open vswitch的網絡狀態:
#ovs-vsctl show
9、刪除網橋上已掛接的網口:
#ovs-vsctl del-port br0 eth0
10、刪除網橋:
#ovs-vsctl del-br br0
參見:http://blog.chinaunix.net/uid-20737871-id-4333314.html