理解OpenStack中的OpenvSwitch的幾個要點


OpenvSwitch是實現虛擬化網絡的重要基礎組件,在OpenStack中利用OpenvSwitch作為底層部件來完成虛擬網絡提供和租戶網絡管理。

在部署和應用OpenStack的過程中,可能會碰到網絡相關的一些問題,能夠准確的理解OpenStack中OpenvSwitch的角色和網絡的理念,會有助於解決問題和快速部署。

OpenvSwitch可以認為是一種Linux Bridge的實現,只不過功能更多一些。因此,它完全可以替代Bridge。原先Bridge可以實現的功能在OpenvSwitch中都可以實現。

OpenvSwitch不等於OpenFlow Switch,恰恰相反,支持OpenFlow只是它的一個feature而已,可能還沒有支持OvsDB協議更重要。因此,它在實現上自定義了很多地方,只是兼容OpenFlow協議。比如在OpenvSwitch中用戶態的vswitchd和內核態的datapath。vswitchd會總管流表,而datapath中有精確匹配的部分流表,類似cache架構。

正因為OpenvSwitch不僅僅是一個OpenFlow Switch,它的流表組成除了of流表外,還有其他一些(隱藏)流表。這些隱藏流表是由於默認交換機和控制器在同一網絡中(in-band),因此要保證兩者互通。要關閉默認的inband可以通過“ovs-vsctl set controller br0 connection-mode=out-of-band”。

檢查所有流表信息可以通過ovs-appctl bridge/dump-flows br0,這往往要比ovs-vsctl dump-flows br0打印出更多的信息來。ovs-dpctl dump-flows [dp]可以打印出datapath的流表信息。ovs-appctl dpif/dump-flows <br>可以打印出指定bridge上的datapath流。

OpenvSwitch可以實現訪問控制功能,通過轉發規則,可以實現簡單的安全行為,包括通過、禁止等。現在OpenStack中的安全組是由iptables實現的,造成在節點上多了好幾級的Bridge。理論上,以后都可以統一由OpenvSwitch來管理。

支持VLan(eth0為trunk口,創建vlan 1的tap0口):
ovs-vsctl add-br br0

ovs-vsctl add-port br0 eth0

ovs-vsctl add-port br0 tap0 tag=1

 

OpenvSwitch 在無法連接到控制器時候(fail mode)可以選擇兩種fail狀態,一種是standalone,一種是secure狀態。如果是配置了standalone(或者未設置fail mode)mode,在三次探測控制器連接不成功后,此時ovs-vswitchd將會接管轉發邏輯(后台仍然嘗試連接到控制器,一旦連接則退出fail狀態),OpenvSwitch將作為一個正常的mac 學習的二層交換機。如果是配置了secure mode,則ovs-vswitchd將不會自動配置新的轉發流表,OpenvSwitch將按照原先有的流表轉發。可以通過下面命令進行管理。

ovs-vsctl get-fail-mode bridge
ovs-vsctl del-fail-mode bridge
ovs-vsctl set-fail-mode bridge standalone|secure


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM