1. 程式人生 > >OVS常用命令與使用總結

OVS常用命令與使用總結

轉載自:http://blog.csdn.net/rocson001/article/details/73163041

程序啟動

1.先準備ovs的工作目錄,資料庫儲存路徑等

mkdir -p /etc/openvswitch
mkdir -p /var/run/openvswitch
  • 1
  • 2

2.先啟動ovsdb-server

ovsdb-server /etc/openvswitch/conf.db \
-vconsole:emer -vsyslog:err -vfile:info \
--remote=punix:/var/run/openvswitch/db.sock \
--private-key=db:
Open_vSwitch,SSL,private_key \
--certificate=db:Open_vSwitch,SSL,certificate \ --bootstrap-ca-cert=db:Open_vSwitch,SSL,ca_cert --no-chdir \ --log-file=/var/log/openvswitch/ovsdb-server.log \ --pidfile=/var/run/openvswitch/ovsdb-server.pid \ --detach --monitor
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

ps: 如果想清除配置,可以先刪除/etc/openvswitch/*,然後再手動建立一個數據庫:

ovsdb-tool create /etc/openvswitch/conf.db /usr/share/openvswitch/vswitch.ovsschema
  • 1

3.初始化ovsdb 
針對於新建立的資料庫才需要初始化

ovs-vsctl --no-wait init
  • 1

4.啟動vswitchd程序

ovs-vswitchd unix:/var/run/openvswitch/db.sock \
-vconsole:emer -vsyslog:err -vfile:info --mlockall --no-chdir \
--log-file=/var/log/openvswitch/ovs-vswitchd
.log \ --pidfile=/var/run/openvswitch/ovs-vswitchd.pid \ --detach --monitor
  • 1
  • 2
  • 3
  • 4
  • 5

ovs常用命令

控制管理類

1.檢視網橋和埠

ovs-vsctl show
  • 1

2.建立一個網橋

ovs-vsctl add-br br0
ovs-vsctl set bridge br0 datapath_type=netdev
  • 1
  • 2

3.新增/刪除一個埠

# for system interfaces
ovs-vsctl add-port br0 eth1
ovs-vsctl del-port br0 eth1
# for DPDK
ovs-vsctl add-port br0 dpdk1 -- set interface dpdk1 type=dpdk options:dpdk-devargs=0000:01:00.0
# for DPDK bonds
ovs-vsctl add-bond br0 dpdkbond0 dpdk1 dpdk2 \
    -- set interface dpdk1 type=dpdk options:dpdk-devargs=0000:01:00.0 \
    -- set interface dpdk2 type=dpdk options:dpdk-devargs=0000:02:00.0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

4.設定/清除網橋的openflow協議版本

ovs-vsctl set bridge br0 protocols=OpenFlow13
ovs-vsctl clear bridge br0 protocols
  • 1
  • 2

5.檢視某網橋當前流表

ovs-ofctl dump-flows br0
ovs-ofctl -O OpenFlow13 dump-flows br0
ovs-appctl bridge/dump-flows br0
  • 1
  • 2
  • 3

6.設定/刪除控制器

ovs-vsctl set-controller br0 tcp:1.2.3.4:6633
ovs-vsctl del-controller br0
  • 1
  • 2

7.檢視控制器列表

ovs-vsctl list controller
  • 1

8.設定/刪除被動連線控制器

ovs-vsctl set-manager tcp:1.2.3.4:6640
ovs-vsctl get-manager
ovs-vsctl del-manager
  • 1
  • 2
  • 3

9.設定/移除可選選項

ovs-vsctl set Interface eth0 options:link_speed=1G
ovs-vsctl remove Interface eth0 options link_speed
  • 1
  • 2

10.設定fail模式,支援standalone或者secure 
standalone(default):清除所有控制器下發的流表,ovs自己接管 
secure:按照原來流表繼續轉發

ovs-vsctl del-fail-mode br0
ovs-vsctl set-fail-mode br0 secure
ovs-vsctl get-fail-mode br0
  • 1
  • 2
  • 3

11.檢視介面id等

ovs-appctl dpif/show
  • 1

12.檢視介面統計

ovs-ofctl dump-ports br0
  • 1

流表類

流表操作

1.新增普通流表

ovs-ofctl add-flow br0 in_port=1,actions=output:2
  • 1

2.刪除所有流表

ovs-ofctl del-flows br0
  • 1

3.按匹配項來刪除流表

ovs-ofctl del-flows br0 "in_port=1"
  • 1

匹配項

1.匹配vlan tag,範圍為0-4095

ovs-ofctl add-flow br0 priority=401,in_port=1,dl_vlan=777,actions=output:2
  • 1

2.匹配vlan pcp,範圍為0-7

ovs-ofctl add-flow br0 priority=401,in_port=1,dl_vlan_pcp=7,actions=output:2
  • 1

3.匹配源/目的MAC

ovs-ofctl add-flow br0 in_port=1,dl_src=00:00:00:00:00:01/00:00:00:00:00:01,actions=output:2
ovs-ofctl add-flow br0 in_port=1,dl_dst=00:00:00:00:00:01/00:00:00:00:00:01,actions=output:2
  • 1
  • 2

4.匹配乙太網型別,範圍為0-65535

ovs-ofctl add-flow br0 in_port=1,dl_type=0x0806,actions=output:2
  • 1

5.匹配源/目的IP 
條件:指定dl_type=0x0800,或者ip/tcp

ovs-ofctl add-flow br0 ip,in_port=1,nw_src=10.10.0.0/16,actions=output:2
ovs-ofctl add-flow br0 ip,in_port=1,nw_dst=10.20.0.0/16,actions=output:2
  • 1
  • 2

6.匹配協議號,範圍為0-255 
條件:指定dl_type=0x0800或者ip

# ICMP
ovs-ofctl add-flow br0 ip,in_port=1,nw_proto=1,actions=output:2
  • 1
  • 2

7.匹配IP ToS/DSCP,tos範圍為0-255,DSCP範圍為0-63 
條件:指定dl_type=0x0800/0x86dd,並且ToS低2位會被忽略(DSCP值為ToS的高6位,並且低2位為預留位)

ovs-ofctl add-flow br0 ip,in_port=1,nw_tos=68,actions=output:2
ovs-ofctl add-flow br0 ip,in_port=1,ip_dscp=62,actions=output:2
  • 1
  • 2

8.匹配IP ecn位,範圍為0-3 
條件:指定dl_type=0x0800/0x86dd

ovs-ofctl add-flow br0 ip,in_port=1,ip_ecn=2,actions=output:2
  • 1

9.匹配IP TTL,範圍為0-255

ovs-ofctl add-flow br0 ip,in_port=1,nw_ttl=128,actions=output:2
  • 1

10.匹配tcp/udp,源/目的埠,範圍為0-65535

# 匹配源tcp埠179
ovs-ofctl add-flow br0 tcp,tcp_src=179/0xfff0,actions=output:2
# 匹配目的tcp埠179
ovs-ofctl add-flow br0 tcp,tcp_dst=179/0xfff0,actions=output:2
# 匹配源udp埠1234
ovs-ofctl add-flow br0 udp,udp_src=1234/0xfff0,actions=output:2
# 匹配目的udp埠1234
ovs-ofctl add-flow br0 udp,udp_dst=1234/0xfff0,actions=output:2
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

11.匹配tcp flags 
tcp flags=fin,syn,rst,psh,ack,urg,ece,cwr,ns

ovs-ofctl add-flow br0 tcp,tcp_flags=ack,actions=output:2
  • 1

12.匹配icmp code,範圍為0-255 
條件:指定icmp

ovs-ofctl add-flow br0 icmp,icmp_code=2,actions=output:2
  • 1

13.匹配vlan TCI 
TCI低12位為vlan id,高3位為priority,例如tci=0xf123則vlan_id為0x123和vlan_pcp=7

ovs-ofctl add-flow br0 in_port=1,vlan_tci=0xf123,actions=output:2
  • 1

14.匹配mpls label 
條件:指定dl_type=0x8847/0x8848

ovs-ofctl add-flow br0 mpls,in_port=1,mpls_label=7,actions=output:2
  • 1

15.匹配mpls tc,範圍為0-7 
條件:指定dl_type=0x8847/0x8848

ovs-ofctl add-flow br0 mpls,in_port=1,mpls_tc=7,actions=output:2
  • 1

16.匹配tunnel id,源/目的IP

# 匹配tunnel id
ovs-ofctl add-flow br0 in_port=1,tun_id=0x7/0xf,actions=output:2
# 匹配tunnel源IP
ovs-ofctl add-flow br0 in_port=1,tun_src=192.168.1.0/255.255.255.0,actions=output:2
# 匹配tunnel目的IP
ovs-ofctl add-flow br0 in_port=1,tun_dst=192.168.1.0/255.255.255.0,actions=output:2
  • 1
  • 2
  • 3
  • 4
  • 5