用于监控和管理 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. JDK 8 新特性,从入门到精通

    default关键字 在jdk1.8以前接口里面是只能有抽象方法,不能有任何方法的实现的. 在jdk1.8里面打破了这个规定,引入了新的关键字:default,使用default修饰方法,可以在接口里 ...

  2. vSphere Esxi 6.x 常用序列号

    以下资料转载于互联网公开资料,不得用于商业用途,仅做学习交流. vSphere 6 Enterprise Plus1F6XH-8VJ9L-481Y9-L835P-CFHHA1G28U-AW18P-08 ...

  3. [.NET] - 基础知识 - .NET Overview

    .NET Framework是有一个Framework Class Libray(FCL)和一个Common Language Runtim环境构成的,它 提供一个一致的面向对象的编程环境,而无论对象 ...

  4. 学习一下 SpringCloud (二)-- 服务注册中心 Eureka、Zookeeper、Consul、Nacos

    (1) 相关博文地址: 学习一下 SpringCloud (一)-- 从单体架构到微服务架构.代码拆分(maven 聚合): https://www.cnblogs.com/l-y-h/p/14105 ...

  5. Win10环境安装node.js和npm

    Node.js和npm的关系 Node.js是一个基于Chrome V8引擎的JavaScript运行环境,使用了事件驱动非阻塞式I/O模型. npm(Node Package Manager)是一个 ...

  6. jsp文件导包

    可以在一个页面中用上多个<% @ page %>指令,但是其中的属性只能用一次,不过也有个例外,那就是import属性.因为import属性和Java中的import语句差不多(参照Jav ...

  7. 有关CSS 定位中的盒装模型、position、z-index的学习心得

    开始整体之前我需要说明两个概念: 第一个就是   一切皆为框  也就是说在HTML中的不管是是块级的还是内联的,都可以认为成块的,唯一的区别就是块的会独自占据一行 第二个文档流:  一个网页可以看作是 ...

  8. Unity Package Manager

    (注:Unity 2018.1及以后的版本才可以使用Package Manager.) 一个package是一个容器,里面放的是Assets, Shaders, Textures, plug-ins, ...

  9. Java并发包源码学习系列:AbstractQueuedSynchronizer

    目录 本篇学习目标 AQS概述 AbstractOwnableSynchronizer 同步队列与Node节点 同步状态state 重要方法分析 独占式获取与释放同步状态 共享式获取与释放同步状态 A ...

  10. FTP服务器的搭建和使用(centos7)

    1.显示如下图则表示已安装vsftp软件 如过没有则可以通过yum源进行安装 yum install -y vsftpd 操作:service vsftpd start|stop|restart 2. ...