用于监控和管理 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. python菜鸟教程基础入门

    一. 可以使用'\'来连接多行.但是有括号的则不需要 a=b+\ c+\ d a1=['a', 'b'] 引号可以是单,双,三引号均可 二. 1. python有5个标准类型:数字,字符串,列表,元组 ...

  2. Blogs模板选择及基础代码设置

    #1.皮肤选择 #2.页面定制 CSS 代码 @font-face { font-family: 'FontAwesome'; font-style: normal; font-weight: nor ...

  3. Android插件换肤 一.实现原理

    学习缺的不是时间,而是耐心 目的 1.搞懂系统获取资源文件到在加载布局的整个流程是自己实现换肤功能的理论基础 2.提高分析源码.追踪源码的能力 要点 1.XmlResourceParser (通过这个 ...

  4. session在什么时候创建,以及session一致性问题

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/wowwilliam0/article/d ...

  5. 嵌入式LInux-让开发板访问外网-ping bad address baidu.com

    我的嵌入式设备已经接入网络.能够ping局域网ip.可是为了实现能够ping通外网.比如 ping baidu.com 还是不行的. 当运行ping baidu.com这个命令时,提示 ping ba ...

  6. Mac如何下载软件

    1.App Store  2.软件官网   3.Mac软件网站  4.搜狗微信 个人首选App Store,里面的软件安全可靠,其次就是官网,必不得已才去其他网站下载,毕竟不是App Store或官网 ...

  7. JVM 分代GC策略分析

    JVM 分代GC策略分析   我们以Sun HotSpot VM来进行分析,首先应该知道,如果我们没有指定任何GC策略的时候,JVM默认使用的GC策略.Java虚拟机是按照分代的方式来回收垃圾空间,我 ...

  8. CyclicBarrier(栅栏)的用法详解及与countDownLatch用法区别

    CyclicBarrier适用于这样的情况:你希望创建一组任务,它们并行的执行工作,然后在进行下一步步骤之前等待,直至所有任务都完成,它使得所有的并行任务都将在删栏出列队,因此可以一致的向前移动. 当 ...

  9. javabean 数组对应yml中的写法

    gate-info: gate-list: - channel: channel-one io-flag: I - channel: channel-two io-flag: E 上面的是 yml 文 ...

  10. Spark Streaming和Kafka整合是如何保证数据零丢失

    转载:https://www.iteblog.com/archives/1591.html 当我们正确地部署好Spark Streaming,我们就可以使用Spark Streaming提供的零数据丢 ...