OVS常用命令整理

Open vSwitch中有多个命令,分别有不同的作用,大致如下:

  • ovs-vsctl用于控制ovs db
  • ovs-ofctl用于管理OpenFlow switch 的 flow
  • ovs-dpctl用于管理ovs的datapath
  • ovs-appctl用于查询和管理ovs daemon

1 控制管理类

1)查看网桥和端口:

ovs-vsctl show

2)创建一个网桥:

ovs-vsctl add-br br0

3)添加/删除一个端口:

ovs-vsctl add-port br0 eth1ovs-vsctl del-port br0 eth1

4)设置/清除网桥的openflow协议版本:

ovs-vsctl set bridge br0 protocols=OpenFlow13ovs-vsctl clear bridge br0 protocols

5)查看某网桥当前流表:

ovs-ofctl dump-flows br0ovs-ofctl -O OpenFlow13 dump-flows br0ovs-appctl bridge/dump-flows br0

6)设置/删除控制器:

ovs-vsctl set-controller br0 tcp:127.0.0.1:6653ovs-vsctl del-controller br0

7)查看接口统计:

ovs-ofctl dump-ports br0

2 流表项操作

1)添加普通流表项:

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

2)按匹配项来删除流表项:

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

3)删除全部流表项:

ovs-ofctl del-flows br0

3 指令动作

1)动作为从指定接口转发出去:

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

2)动作为指定group(group id为已创建的group table):

ovs-ofctl add-flow br0 in_port=1,actions=group:1

3)动作为normal(转为L2/L3处理流程):

ovs-ofctl add-flow br0 in_port=1,actions=normal

4)动作为flood(从所有物理接口转发出去,除了入接口和已关闭flooding的接口):

ovs-ofctl add-flow br0 in_port=1,actions=flood

5)动作为all(从所有物理接口转发出去,除了入接口):

ovs-ofctl add-flow br0 in_port=1,actions=all

6)动作为local(一般是转发给本地网桥):

ovs-ofctl add-flow br0 in_port=1,actions=local

7)动作为in_port(从入接口转发回去):

ovs-ofctl add-flow br0 in_port=1,actions=in_port

8)动作为controller(以packet-in消息上送给控制器):

ovs-ofctl add-flow br0 in_port=1,actions=controller

9)动作为drop(丢弃数据包操作):

ovs-ofctl add-flow br0 in_port=1,actions=drop

4 操作meter表

1)查看当前设备对meter的支持:

ovs-ofctl -O OpenFlow13 meter-features br0

2)查看meter表:

ovs-ofctl -O OpenFlow13 dump-meters br0

3)查看meter统计:

ovs-ofctl -O OpenFlow13 meter-stats br0

4)创建meter表

# 限速类型以kbps(kilobits per second)计算,超过20kb/s则丢弃
ovs-ofctl -O OpenFlow13 add-meter br0 meter=1,kbps,band=type=drop,rate=20
# 同上,增加burst size参数
ovs-ofctl -O OpenFlow13 add-meter br0 meter=2,kbps,burst,band=type=drop,rate=20,burst_size=256
# 同上,增加stats参数,对meter进行计数统计
ovs-ofctl -O OpenFlow13 add-meter br0 meter=3,kbps,burst,stats,band=type=drop,rate=20,burst_size=256
# 限速类型以pktps(packets per second)计算,超过1000pkt/s则丢弃
ovs-ofctl -O OpenFlow13 add-meter br0 meter=4,pktps,band=type=drop,rate=1000

5)删除meter表

# 删除全部meter表
ovs-ofctl -O OpenFlow13 del-meters br0
# 删除meter id=1
ovs-ofctl -O OpenFlow13 del-meter br0 meter=1

6)创建流表:

ovs-ofctl -O OpenFlow13 add-flow br0 in_port=1,actions=meter:1,output:2

5 操作group表

1)查看当前设备对group的支持:ovs-ofctl -O OpenFlow13 dump-group-features br0

2)查看group表:ovs-ofctl -O OpenFlow13 dump-groups br0

3)创建group表

# 类型为all
ovs-ofctl -O OpenFlow13 add-group br0 group_id=1,type=all,bucket=output:1,bucket=output:2,bucket=output:3
# 类型为select
ovs-ofctl -O OpenFlow13 add-group br0 group_id=2,type=select,bucket=output:1,bucket=output:2,bucket=output:3
# 类型为select,指定hash方法(5元组,OpenFlow1.5+)
ovs-ofctl -O OpenFlow15 add-group br0 group_id=3,type=select,selection_method=hash,fields=ip_src,bucket=output:2,bucket=output:3

4)删除group表:

ovs-ofctl -O OpenFlow13 del-groups br0 group_id=2

5)创建流表:

ovs-ofctl -O OpenFlow13 add-flow br0 in_port=1,actions=group:2

参考:https://blog.csdn.net/rocson001/article/details/73163041

OVS常用命令整理

上一篇:《Go并发编程实战》读书笔记-初识Go语言


下一篇:关于C#程序优化的五十种方法