用于监控和管理 OpenFlow 交换机。

1. 交换机管理命令

查看交换机信息:

ovs-ofctl show s1

 查看交换机流表:

ovs-ofctl dump-tables s1

查看端口信息

ovs-ofctl dump-ports s1
ovs-ofctl dump-ports s1 1

第一个查看所有端口,第二个只查看端口号为 1 的端口;

查看流表项:

ovs-ofctl dump-flows s1
ovs-ofctl dump-flows s1 table=0

第一个查看所有,第二个查看指定流表项;

2. 流表命令

添加流表项:

ovs-ofctl [--bundle] add-flow switch flow
ovs-ofctl [--bundle] add-flow switch - < file
ovs-ofctl [--bundle] add-flows switch file

--bundle:以原子形式执行命令;

--strict:取消对通配符的支持;

可以将流表项写入一个文件,然后从文件中读取执行;文件的每一行表示一条流表项,每行可以以关键字 add, modify, delete, modify_strict, delete_strict 开头,表示执行何种操作;

# ovs-ofctl add-flow s1 "priority=3,in_port=1,dl_vlan=0xffff,actions=mod_vlan_vid:101,normal"

# cat flows.txt
add priority=3,in_port=1,dl_vlan=0xffff,actions=mod_vlan_vid:101,normal
# ovs-ofctl add-flows s1 flows.txt # cat flows.txt
delete in_port=1,dl_vlan=0xffff
# ovs-ofctl add-flows s1 flows.txt

修改流表项:

ovs-ofctl [--bundle] [--strict] mod-flows switch flow
ovs-ofctl [--bundle] [--strict] mod-flows switch - < file
# cat flows.txt
priority=3,in_port=1,dl_vlan=0xffff,actions=mod_vlan_vid:102,normal
# ovs-ofctl mod-flows s1 - < flows.txt

删除流表项:

ovs-ofctl [--bundle] del-flows switch
ovs-ofctl [--bundle] [--strict] del-flows switch [flow]
ovs-ofctl [--bundle] [--strict] del-flows switch - < file
ovs-ofctl del-flows s1 "in_port=1,dl_vlan=0xffff"

替换流表项:

ovs-ofctl [--bundle] [--readd] replace-flows switch file

使用 file 文件中的流表项替换现有的流表项;

比较流表项:

ovs-ofclt diff-flows source1 source2

source1 和 source2 可以是交换机,也可以是文件;

ovs-ofctl diff-flows s1 flows.txt

3. 组表命令

查看组表项:

ovs-ofctl dump-groups s1 -O OpenFlow13

查看组表项的统计信息:

ovs-ofctl dump-group-stats s1 -O OpenFlow13

ovs-ofctl dump-group-stats s1 group_id=1 -O OpenFlow13

第一个查看所有组表,第二个查看指定的组表;

添加组表项

ovs-ofctl [--bundle] add-group switch group
ovs-ofctl [--bundle] add-group switch - < file
ovs-ofctl [--bundle] add-groups switch file

可以将组表项写入一个文件,然后从文件中读取执行;文件的每一行表示一条组表项,每行可以以关键字 add, modify, add_or_mod, delete, insert_bucket, remove_bucket 开头,表示执行何种操作;

# 类型为all
ovs-ofctl -O OpenFlow13 add-group s1 group_id=1,type=all,bucket=output:1,bucket=output:2

# 类型为select
ovs-ofctl -O OpenFlow13 add-group s1 group_id=2,type=select,bucket=output:1,bucket=output:2

ovs-ofctl -O OpenFlow15 add-group s1 group_id=3,type=select,selection_method=hash,fields=ip_src,bucket=output:2,bucket=output:3

修改组表项:

ovs-ofctl [--bundle] [--may-create] mod-group switch group
ovs-ofctl [--bundle] [--may-create] mod-group switch - < file
ovs-ofctl mod-group s1 group_id=1,type=all,bucket=output:1,bucket=output:2,bucket=output:3 -O OpenFlow13

删除组表项:

ovs-ofctl [--bundle] del-groups switch
ovs-ofctl [--bundle] del-groups switch [group]
ovs-ofctl [--bundle] del-groups switch - < file
ovs-ofctl del-groups s1 group_id=1 -O OpenFlow13

删除桶:

ovs-ofctl [--bundle] remove-buckets switch group
ovs-ofctl [--bundle] remove-buckets switch - < file
ovs-ofctl remove-buckets s1 group_id=3,command_bucket_id=1

删除 id 为 1 的桶;

4. 计量表命令

要正常使用的话,需要注意的是datapath类型要指定为 netdev.

ovs-vsctl set bridge s1 datapath_type=netdev

查看计量表:

ovs-ofctl dump-meters s1 -O OpenFlow13

查看计量表统计信息:

ovs-ofctl meter-stats s1 -O OpenFlow13

添加计量表项:

ovs-ofctl add-meter s1 meter=1,kbps,bands=type=drop,rate=5000 -O OpenFlow13

修改计量表项

ovs-ofctl mod-meter s1 meter=1,kbps,band=type=drop,rate=2000 -O OpenFlow13

删除计量表项:

ovs-ofctl del-meters s1 meter=1 -O OpenFlow13

5. flow语法

table=table

  指定要应用与哪个表;table可以是数字(0~255),也可以时表名。

actions=[action][,action...]

  指定流项要应用的动作。

cookie=value

cookie=value/mask

  设置cookie。

priority=value

  指定优先级(0~65535);值越大,优先级越高;默认为32768.

idle_timeout=seconds

  如果流项处于非活跃状态的时间超过指定的值,则应该过期;0表示不过期。

hard_timeout=seconds

  指定多长时间后过期;0表示不过期。

importance=value

  指定重要性(0~65535),默认为0.

send_flow_rem

  当流项过期或被移除时,向感兴趣的控制器发送一条消息。

reset_counts

  当添加一条已存在的流项时,将packet和byte计数器置为0.

no_packet_counts

no_byte_counts

  告知交换机控制器不需要packet或byte计数器。

out_port=port

  指定一个匹配的流应将数据包从port转发出去。

out_group=group

  指定一个匹配的流应包含group action;group需为组号。

6. 流表项输出

duration=secs

  表项已在表中多长时间。

n_packets=n

  已有多少个数据包匹配该项。

n_bytes=n

  已匹配该项的数据包的总字节数。

hard_age=secs

  自流项添加进流表或被修改起过了多长时间。

idle_age=secs

  已有多长时间没有匹配过数据包。

7. group语法

group_id=id

  指定组ID;all表示所有组。

type=type

  指定组类型;可选值有:

  all

  select

  indirect

  fffast_failover

command_bucket_id=id

  指定要操作的bucket;可以为一个整数,也可以为如下值:

  all: 所有bucket;

  first: 第一个bucket;

  last: 最后一个bucket;

selection_method=method

  针对于select类型的组,指定选择bucket的方法;可选值有:

  dp_hash: 基于数据路径计算哈希值;通过selection_method_param参数指定哈希算法,可选值有

    0 (corresponding to hash computation over the IP 5-tuple)

    1 (corresponding  to a  symmetric  hash computation over the IP 5-tuple);

  hash: 基于fields选项指定的字段计算哈希值;也可不指定fields选项,此时会使用默认值进行计算;

bucket=bucket_parameters

  需出现在所有字段之后;

  bucket_id=id  指定bucket的组ID;

  actions=[action][,action...]  指定要应用的动作;

  weight=value  指定bucket的相对权重;

  watch_port=port  用于决定组存活性的端口;

  watch_group=group_id  用于绝对组存活性的组ID;

  

8. meter语法

meter=id

  指定计量ID;除了支持整数外,还支持如下值:

  all: 所有meter

  controller:此meter会应用到所有发送到控制器的数据包;

  slowpath:此meter会应用到所有发送到用户空间的数据包;

kbps

pktps

  指定速率单位、burst_size单位;kbps:KB/s,pktps:packets/s;

burst

  支持波动;

stats

  收集meter和band的统计信息;

bands=band_parameters

  type=type  指定band类型,支持的值有:drop(丢弃数据包);

  rate=value  指定速率限制;

  burst_size=size  指定最大的波动范围;

参考资料

https://www.openvswitch.org/support/dist-docs/ovs-ofctl.8.txt

http://www.openvswitch.org/support/dist-docs/ovs-fields.7.txt

https://www.openvswitch.org/support/dist-docs/ovs-actions.7.txt

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

https://www.cnblogs.com/wpqwpq/p/7832650.html

table=table

ovs-ofctl命令的更多相关文章

  1. OVS常用命令与使用总结

    说明 在平时使用ovs中,经常用到的ovs命令,参数,与举例总结,持续更新中… 进程启动 1.先准备ovs的工作目录,数据库存储路径等 mkdir -p /etc/openvswitch mkdir ...

  2. OVS常用命令

    添加brideg: sudo ovs-vsctl add-br br0 删除brideg: sudo ovs-vsctl del-br br0 显示bridge: sudo ovs-vsctl sho ...

  3. ovs flow 命令集

    流表可以有多个执行动作,是从左向右以此执行,常用动作如下: output:port: 输出数据包到指定的端口.port 是指端口的 OpenFlow 端口编号 group:group_id 输出数据包 ...

  4. Open vSwitch 应用实践

    基础配置以及要点: 1.交换机创建和端口的配置 1) 创建一个新的 OVS 交换机[格式:$ ovs-vsctl add-br [名称]] $ovs-vsctl add-br ovs-switch 2 ...

  5. ovs-appctl 命令合集

    通用命令 exit 优雅关闭ovs-vswitchd进程 qos/show interface 查询内核中关于qos的配置以及和给出端口有关的状态 cfm/show [interface]显示在指定端 ...

  6. ubuntu 14.04设备OVS虚拟OpenFlow交换机配置汇总

    一.设备OVS sudo apt-get install openvswitch-controller openvswitch-switch openvswitch-datapath-source ( ...

  7. ovs常用操作

    1.添加网桥:ovs-vsctl add-br 交换机名 2.删除网桥:ovs-vsctl del-br 交换机名 3.添加端口:ovs-vsctl add-port 交换机名 端口名(网卡名) 4. ...

  8. OVS

    基于 OpenvSwitch的OpenFlow实践 Open vSwitch 概述 OpenvSwitch(简称OVS)是由NiciraNetworks主导的,运行在虚拟化平台(例如 KVM,Xen) ...

  9. ubuntu 14.04安装OVS虚拟OpenFlow交换机配置总结

    一.安装OVS sudo apt-get install openvswitch-controller openvswitch-switch openvswitch-datapath-source ( ...

  10. Neutron之OVS

    OVS即开放虚拟交换标准,不仅仅是为了支持OpenFlow协议,而是为了给虚拟化平台上运行的虚拟机实例提供一套纯软件实现的路由交换协议栈.具体点说,Open vSwitch是在开源的Apache2.0 ...

随机推荐

  1. 容器编排系统k8s之Ingress资源

    前文我们了解了k8s上的service资源的相关话题,回顾请参考:https://www.cnblogs.com/qiuhom-1874/p/14161950.html:今天我们来了解下k8s上的In ...

  2. 让vs2013自带的IISExpress支持apk文件下载

    使用vs2013作为android的服务器端开发时,总是会碰到需要自动更新的功能,VS2013自带IIS Express,想要下载apk文件,就需要添加MIME映射.没有图形界面,只能命令行.进入C: ...

  3. Unity UI适配 之 GridLayoutGroup组件下的内容适配(进度条适配)

    好久没有更新博客了,蓝廋啊. 今天写一写关于GripLayoutGroup组件的屏幕适配问题,以在ARPG游戏中常用的经验条适配来举例子,以此来加深自己的记忆,以便在下次需要制作该功能时能够快速完成. ...

  4. CentOS7下常用安装服务软件yum方式的介绍

    简介:介绍yum软件包的管理并配置本地yum源 yum安装:基于 C/S 架构,yum安装称之为傻瓜式安装 yum安装优点:方便快捷,不用考虑包依赖,自动下载软件包. yum安装缺点:人为无法干预,无 ...

  5. List集合转JSONObject

    以前写代码喜欢用Map拼接返回去给前端,这样得到的也是一个标准的JSON,今天先不说Map的优缺点,我们就来说说JSONObject的使用,我用的是阿里的fastjson,先上代码,当我们需要嵌套代码 ...

  6. Keras使用多个GPU并行

    model = Model(inputs=[v_i, v_j], outputs=output_list) model = multi_gpu_model(model,4) model.compile ...

  7. [leetcode]118,119PascalsTriangle,杨辉三角1,2

    杨辉三角1Given numRows, generate the first numRows of Pascal's triangle.For example, given numRows = 5,R ...

  8. [leetcode]110BalancedBinaryTree平衡二叉树

    public boolean isBalanced(TreeNode root) { int res = helper(root); if (res<0) return false; retur ...

  9. 【超级经典】程序员装B指南(转)

    一.准备工作   "工欲善其事必先利其器." 1.电脑不一定要配置高,但是双屏是必须的,越大越好,能一个横屏一个竖屏更好.一个用来查资料,一个用来写代码.总之要显得信息量很大,效率 ...

  10. 在开发板上显示英文字符和汉字--tiny6410

    程序字符需要改成gb2312.否则无法正常显示中文字符. main.c代码: #include <sys/types.h> #include <sys/stat.h> #inc ...