OVS操做總結

轉載:http://www.aboutyun.com/thread-11777-1-1.htmlhtml

Open vSwitch(下面簡稱爲 OVS)是由 Nicira Networks 主導的,運行在虛擬化平臺(例如 KVM,Xen)上的虛擬交換機。在虛擬化平臺上,OVS 能夠爲動態變化的端點提供 2 層交換功能,很好的控制虛擬網絡中的訪問策略、網絡隔離、流量監控等等。
OVS 遵循 Apache 2.0 許可證, 能同時支持多種標準的管理接口和協議。OVS 也提供了對 OpenFlow 協議的支持,用戶可使用任何支持 OpenFlow 協議的控制器對 OVS 進行遠程管理控制。
在 OVS 中, 有幾個很是重要的概念:數據庫

  • Bridge: Bridge 表明一個以太網交換機(Switch),一個主機中能夠建立一個或者多個Bridge 設備。
  • Port: 端口與物理交換機的端口概念相似,每一個 Port 都隸屬於一個 Bridge。
  • Interface: 鏈接到 Port 的網絡接口設備。在一般狀況下,Port 和 Interface 是一對一的關係, 只有在配置 Port 爲 bond 模式後,Port 和 Interface 是一對多的關係
  • Controller: OpenFlow 控制器。OVS 能夠同時接受一個或者多個 OpenFlow 控制器的管理。
  • datapath: 在 OVS 中,datapath 負責執行數據交換,也就是把從接收端口收到的數據包在流表中進行匹配,並執行匹配到的動做。
  • Flow table: 每一個 datapath 都和一個「flow table」關聯,當 datapath 接收到數據以後, OVS 會在 flow table 中查找能夠匹配的 flow,執行對應的操做, 例如轉發數據到另外的端口。



網橋管理

非ovsdb數據庫操做:網絡

  1. #添加網橋
  2. ovs-vsctl add-br br-int
  3. #列出網橋
  4. ovs-vsctl list-br
  5. #給網橋添加端口
  6. ovs-vsctl add-port br-int tap-xxx
  7. #列出掛載某網絡接口的全部網橋
  8. ovs-vsctl port-to-br tap-xxx
  9. #查看所有信息
  10. ovs-vsctl show
複製代碼



ovsdb數據庫操做:

ui

  1. #通用格式爲
  2. ovs-vsctl list/set/get/add/remove/clear/destroy table record column [value]
  3. #默認狀況下ovsdb中包含的數據表
  4. bridge, controller,interface,mirror,netflow,open_vswitch,port,qos,queue,ssl,sflow
  5. #舉例 查看全部網橋
  6. ovs-vsctl list bridge
  7. #舉例 刪除一條qos記錄
  8. ovs-vsctl destroy qos <qos-id>
  9. #修改端口 p1 的 VLAN tag 爲 101,使端口 p1 成爲一個隸屬於 VLAN 101 的端口
  10. ovs-vsctl set Port p1 tag=101
複製代碼



流規則管理

每條流規則由一系列字段組成,分爲基本字段、條件字段和動做字段三部分。
基本字段包括:spa

  • 生效時間 duration_sec
  • 所屬表項 table_id
  • 優先級 priority、
  • 處理的數據包數 n_packets
  • 空閒超時時間 idle_timeout 等空閒超時時間 idle_timeout 以秒爲單位,超過設置的空閒超時時間後該流規則將被自動刪除,空閒超時時間設置爲 0 表示該流規則永不過時,idle_timeout 將不包含於 ovs-ofctl dump-flows brname 的輸出中。

條件字段包括:code

  • 輸入端口號 in_port
  • 源目的 mac 地址 dl_src/dl_dst
  • 源目的 ip 地址 nw_src/nw_dst
  • 數據包類型 dl_type
  • 網絡層協議類型 nw_proto

這些字段能夠任意組合,但在網絡分層結構中底層的字段未給出肯定值時上層的字段不容許給肯定值,即一 條流規則中容許底層協議字段指定爲肯定值,高層協議字段指定爲通配符(不指定即爲匹配任何值),而不容許高層協議字段指定爲肯定值, 而底層協議字段卻爲通配符(不指定即爲匹配任何值),不然,ovs-vswitchd 中的流規則將所有丟失,網絡沒法鏈接。
動做字段包括正常轉發 normal、定向到某交換機端口 output:port、丟棄 drop、更改源目 的 mac 地址 mod_dl_src/mod_dl_dst 等,一條流規則可有多個動做,動做執行按指定的前後順序依次完成。
示例:


orm

  1. #查看某網橋信息
  2. ovs-ofctl show br-tun
  3. #查看某網橋上全部端口的狀態
  4. ovs-ofctl dump-ports br-tun
  5. #添加一條流表規則 丟棄從port2上發來的全部數據表
  6. ovs-ofctl add-flow br-tun idle_timeout=120,in_port=2,actions=drop
  7. #查看某網橋上面的流表規則
  8. ovs-ofctl dump-flows br-tun
  9. #屏蔽全部進入 OVS 的以太網廣播數據包
  10. ovs-ofctl add-flow ovs-switch "table=0, dl_src=01:00:00:00:00:00/01:00:00:00:00:00, actions=drop"
  11. #屏蔽 STP 協議的廣播數據包
  12. ovs-ofctl add-flow ovs-switch "table=0, dl_dst=01:80:c2:00:00:00/ff:ff:ff:ff:ff:f0, actions=drop"
複製代碼



Qos設置

Qos能夠針對網絡接口,也能夠針對端口設置:htm

  1. #針對網絡接口  1000±100kbps
  2. ovs-vsctl set interface tap-xxx ingress_policing_rate=1000
  3. ovs-vsctl set interface tap-xxx ingress_policing_burst=100
複製代碼

官方參考 http://openvswitch.org/support/c ... /qos-rate-limiting/


端口映射
將發往 p0 端口和從 p1 端口發出的數據包所有定向到 p2 端口,用 ovs-vsctl list port 命令查看 p0、p一、p2 端口的 uuid 分別爲id一、id二、id3:blog

  1. ovs-vsctl --set bridge br0 mirrors=@m-- --id=@m create mirror name=mymirror  \
  2. select-dst-port=id_1 \
  3. select-src-port=id_2 \
  4. output-port=id_3
複製代碼



其餘設置

屏蔽對目的主機訪問:

接口

  1. ovs-ofctl add-flow br0 idle_timeout=0,dl_type=0x0800,nw_src=xx.xx.xx.xx,actions=drop
複製代碼




http://openvswitch.org/support/

http://www.opencloudblog.com/?p=300

相關文章
相關標籤/搜索