OVS的學習理解(部分修改,部分轉載引用)

Q: 什麼是 OpenvSwitch(即常說簡稱:OVS)?

A: OpenvSwitch 是一個生產環境質量級的、開源的虛擬交換機軟件。在虛擬化環境中,單個物理機的上的不同虛擬機、多個物理機上的不同虛擬機之間通過它進行網絡通信。OpenvSwitch 被設計爲可以與當下流行的交換機芯片兼容,這意味着它可以與物理交換機協同工作,並提供自由、靈活的管理手段。

Q: OpenvSwtich 支持哪些虛擬化平臺?

A: OpenvSwitch 支持運行在 Linux上 的下列虛擬化平臺: KVM, VirtualBox, Xen, Xen Cloud Platform, XenServer.

Q: 怎樣獲取 OpenvSwitch?

A: 可以在 Linux 下編譯源碼;Debian, Ubuntu, Fedora的軟件倉庫中已有軟件包,可以直接安裝使用;下載最新的 XenServer 或 Xen Cloud Platform 的 ISO 鏡像,它們已經整合了 OpenvSwitch。

Q: 爲何要用 OpenvSwitch 替換 Linux Bridge?

A: 相比於簡單的 Linux Bridge,OpenvSwitch 可以實現網絡隔離、QoS 配置、流量監控、數據包分析等物理交換網絡所具有的功能。

Q: OpenvSwitch 與 VMware vNetwork distributed switch or the Cisco Nexus 1000V 這樣的分佈式虛擬交換應用有何不同?

A: 分佈式虛擬交換應用提供一個集中管理、監控遠程主機上的網絡的功能。而 OpenvSwitch 本身不具備分佈式架構,OpenvSwitch 單獨運行在每個物理主機上,而由上層管理軟件來提供分佈式特性。

Q: 爲何 OpenvSwitch 不是分佈式架構?

A: OpenvSwitch 意圖成爲一個被用來自由構建網絡的實用組件。分佈式網絡系統需要平衡簡單性、可擴展性、硬件兼容性、收斂時間等。相比於實現一套有特定優劣的系統,OpenvSwitch 選擇成爲一個基本組件。

Q: 我把 OpenvSwitch 認作是一個虛擬以太網交換機,但是爲何文檔中不斷的提到 bridge,什麼是 bridge?

A: 在計算機網絡中,術語 bridge 與 switch 是同義詞。OpenvSwitch 實現一個以太網交換機(Ethernet switch),與實現一個以太網橋(Ethernet Bridge)是幾個意思,奧不對,是一個意思。

Q: 如何將一個端口配置爲 ACCESS 端口?

A: 將 tag=VLAN,添加至你的 ovs-vsctl add-port 命令中。

例如,下列命令將 eth0 配置爲 br0 的 trunk 端口。tap0 配置爲 br0 的 access 端口,屬於 VLAN9。

ovs-vsctl add-br br0
ovs-vsctl add-port br0 eth0
ovs-vsctl add-port br0 tap0 tag=9
如果想將一個已經添加了的端口設置爲 access 端口,可以使用 ovs-vsctl set 命令,例如:

ovs-vsctl set port tap0 tag=9
Q: 我創建了一個 bridge,然後把我的物理網卡與其綁定了,就像這樣:

ovs-vsctl add-br br0
ovs-vsctl add-port br0 eth0
然後,然後我的 eth0 網卡就宕了!救命!(=_=)

A: 一塊物理以太網卡如果作爲 OpenvSwitch bridge 的一部分,則它不能擁有 IP 地址,如果有,也會完全不起作用。如果發生了上述情況,你可以將 IP 地址綁定至某 OpenvSwitch “internal” 設備來恢復網絡訪問功能。

例如,假設你的 eth0 IP 地址爲 192.168.128.5,在執行上文問題中的命令後,你可以使用如下方法來將 IP 地址綁定至br0 上:

ifconfig eth0 0.0.0.0
ifconfig br0 192.168.128.5
Q: 我創建了一個 bridge,然後我把兩塊物理網卡綁定到了上面,就像這樣:

ovs-vsctl add-br br0
ovs-vsctl add-port br0 eth0
ovs-vsctl add-port br0 eth1
然後,我的網絡訪問就完全混亂了!CPU 利用率也非常高!(=_=)

A: 基本上,你把你的網絡打成一個環了。

在上面的設置下,OpenvSwitch 在 eth0 上收到一個廣播包後會將其發給 eth1,然後 eth1 上的物理交換機又將這個廣播包發還給 eth0,如此往復。當有多個 switch 時,還會產生更復雜的情況。

解決方案1:

如果你想將 eth0 與 eth1 都綁定至同一個 bridge 從而獲得更大的帶寬、更高的可靠性,可以像下面這樣做:

ovs-vsctl add-br br0
ovs-vsctl add-bond br0 bond0 eth0 eth1
解決方案2:

如果你不想把他們放到一塊,你可以弄兩個 bridge 嘛:

ovs-vsctl add-br br0
ovs-vsctl add-port br0 eth0
ovs-vsctl add-br br1
ovs-vsctl add-port br1 eth1
解決方案3:

如果你已經擁有了一個複雜或冗餘的網絡拓撲結構,但你想預防結環,你就需要打開生成樹協議(spanning tree protocol, STP).

按照下面的命令序列,依序創建 br0, 打開 STP, 然後將 eth0 與 eth1 綁定至 br0.

ovs-vsctl add-br br0
ovs-vsctl set bridge br0 stp_enable=true
ovs-vsctl add-port br0 eth0
ovs-vsctl add-port br0 eth1
Q: 我好像不能在無線網絡中使用 OpenvSwitch?

A: 不可以,Linux Bridge 也不可以。

Q: 有關於 OpenvSwitch 數據庫的表結構的文檔麼?

A: 有的,ovs-vswitchd.conf.db(5) 有詳細解釋。

Q: 我運行 ovs-dpctl 的時候看不到已創建的 bridge,而只看到一個名叫 ovs-system 的datapath。我怎樣能看到特定 bridge 的 datapath?

A: 在 OpenvSwitch 1.9.0 版中,所有 switch 都共享單個 datapath。命令 ovs-appctl dpif/* 提供與 ovs-dpctl 類似的 datapath 信息,但是按照不同的 bridge 區分。

Q: 什麼是VLAN?

A: 最簡單的來說,VLAN(Virtual LAN 的縮寫)技術就是把一個交換機劃分爲多個交換機的技術。舉個例子,你有兩組機器 A 與 B,你想讓 A 與 B 中的機器只能組內訪問,兩個交換機當然可以,但是如果你只有一個交換機,你就可以使用 VLAN技術來做同樣的事。通過設置 A 中機器爲 VLAN1 的access port,B 中的機器爲 VLAN2 的 access port,使交換機僅僅會在同一 VLAN 的端口之間轉發數據包。這樣你就把一個交換機劃分爲兩個獨立的交換機來使用了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章