ovs-vsctl  [options]  -- [options] command [args] [-- [options] command [args]]...

通过连接到 ovsdb-server 进程来查询和修改数据库,从而实现对 ovs-vswitchd 的配置。

1. ovs 命令

ovs-vsctl init

如果 ovs 数据库为空,则初始化它。

ovs-vsctl show

打印数据库的概略情况。

ovs-vsctl emer-reset

重置配置。删除 OpenFlow 控制器、SSL等配置,但不会删除网桥。

2. 网桥命令

ovs-vsctl add-br br1

创建网桥 br1.

ovs-vsctl add-br brv1 br1 1

创建一个虚假的网桥 brv1,它以 br1 为父,brv1 位于 vlan 1上。

ovs-vsctl del-br br1

删除网桥 br1.

ovs-vsctl list-br

罗列所有的网桥,包括虚假的网桥。

ovs-vsctl br-exists br1

查看网桥 br1 是否存在;如果存在,命令退出码为 0,否则为 2.

ovs-vsctl br-to-vlan brv1

查看虚假网桥 brv1 所在的 vlan;如果 brv1 不是虚假网桥,则返回 0.

ovs-vsctl br-to-parent brv1

查看虚假网桥 brv1 所在的父网桥。

3. 端口命令

ovs-vsctl list-ports br1

罗列网桥 br1 上的所有端口。

ovs-vsctl add-port br1 ens34

在网桥 br1 上创建 ens34 端口,且该端口使用了 ens34 网络设备。

ovs-vsctl add-port br1 ens34 tag=1

在网桥 br1 上创建 ens34 端口,且是 vlan1 上的 access 端口。

ps:此时 ens34 位于虚假网桥 brv1 上。

ovs-vsctl del-port br1 ens34

从网桥 br1 上删除 ens34 端口。

ovs-vsctl port-to-br ens34

查看 ens34 端口所在的网桥。

4. bond 命令

ovs-vsctl add-bond br1 bond0 ens34 ens38

在网桥 br1 上创建 bond0 端口,它包含 ens34 和 ens38 两个网络接口。

ovs-vsctl add-bond-iface bond0 ens37

添加网络接口 ens37 到 bond0 端口;如果之前 bond0 端口不是 bond,则将它转换为 bond。

ovs-vsctl del-bond-iface bond0 ens38

从 bond0 端口上移除 ens38 网络接口;如果此时 bond0 只包含一个接口,则将它转换为普通端口。

5. 接口命令

ovs-vsctl list-ifaces br1

罗列网桥 br1 上所有的网络接口。

ovs-vsctl iface-to-br ens34

查看接口 ens34 所在的网桥。

6. OpenFlow 控制器连接

ovs-vsctl set-controller br1 tcp:192.168.1.152:6653

为 br1 网桥指定 OpenfFlow 控制器;可以指定多个。

ovs-vsctl get-controller br1

查看网桥 br1 已配置的 OpenFlow 控制器。

ovs-vsctl del-controller br1

删除网桥 br1 已配置的 OpenFlow 控制器。

7. manager 连接

ovs-vsctl set-manager tcp:192.168.1.152:6640

设置 manager。更多方式见:连接方式

ovs-vsctl get-manager

查看所有已配置的 manager。

ovs-vsctl del-manager

删除所有已配置的 manager。

8. 数据库命令

查看表、记录

ovs-vsctl [--if-exists] [--columns=column[,column]...] list table [record]...

查看 table 表;如果指定 record,则只查看指定的行;如果指定 columns,则只列出指定的列。

# 查看 port 表
ovs-vsctl list port # 查看 port 表中的 bond0 行
ovs-vsctl list port bond0 # 查看指定的列
ovs-vsctl --columns=qos,name list port

根据条件查找记录

ovs-vsctl [--columns=column[,column]...] find table [column[:key]=value]...

如果不指定 key,则查找 table 表中,指定 column 的值等于 value 的记录;

如果指定 key(column 需是 map 类型),则查找 table 表中,指定 column:key 的值等于 value 的记录;

支持的比较运算符有:=、!=、<、<=、>、>=,以及集合比较 {=}、{!=}、{<}、{<=}、{>=}、{>}

ovs-vsctl find port name=ens34

ovs-vsctl find port other_config:min-rate=1000000

ovs-vsctl find port other_config:max-rate">"100000

ovs-vsctl find port cvlans"{<=}"1,2

打印指定行的指定列

ovs-vsctl [--if-exists] [--id=@name] get table record [column[:key]]...

获取 table 表中 record 行的  column 列的值;

如果指定了 @name,则该行的 UUID 可以在随后的调用中被引用;

--id 和 column 需至少出现一个;

ovs-vsctl get port bond0 name interfaces

修改指定的记录

ovs-vsctl [--if-exists] set table record column[:key]=value...

将 table 表中 record 行的 column 列的值设为 value;

ovs-vsctl set port bond0 tag=2
ovs-vsctl set port bond0 other_config:min-rate=1000000 other-config:max-rate=1000000

为某列添加值

ovs-vsctl [--if-exists] add table record column [key=]value...

为 table 表中 record 行的 column 列添加值 value;对于 map 类型的 column 来说,如果指定的 key 已经存在,则 add 操作不会替换它;

删除某列的值

ovs-vsctl [--if-exists] remove table record column value...
ovs-vsctl [--if-exists] remove table record column key...
ovs-vsctl [--if-exists] remove table record column key=value...

第一种形式针对于非 map 类型的 column:从 column 中移除指定的 value;

第二种、第三种针对于 map 类型的 column:删除指定的 key,或只有当 key 的值为 value 时才删除;

ovs-vsctl remove port bond0 tag 2
ovs-vsctl remove port bond0 other_config min-rate
ovs-vsctl remove port bond0 other_config max-rate=2000000

清空某列的值

ovs-vsctl [--if-exists] clear table record column...

清空 table 表中 record 行的 column 列;

ovs-vsctl clear port bond0 other_config

创建新的行

ovs-vsctl [--id=@name] create table column[:key]=value...

在 table 表中创建新的行,并将 column 设为指定的 value;

如果指定了 @name,则可以在其他地方引用它;

ovs-vsctl -- set port eth0 qos=@newqos \
-- --id=@newqos create qos type=linux-htb other-config:max-rate=1000000 queues:0=@newqueue \
-- --id=@newqueue create queue other-con‐fig:min-rate=1000000 other-config:max-rate=1000000

删除行、表

ovs-vsctl [--if-exists] destroy table record...
ovs-vsctl --all destroy table

第一个删除 table 表中的 record 行;第二个删除 table 表;

只对 QoS、Queue 表有效!

等待指定的记录

ovs-vsctl wait-until table record [column[:key]=value]...

等待 table 表中包含 record 记录,且它的 column 列的值为 value;

参考资料

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

https://github.com/openvswitch/ovs/blob/master/Documentation/ref/ovsdb.7.rst(ovsdb

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

  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. ubuntu 14.04设备OVS虚拟OpenFlow交换机配置汇总

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

  5. OVS

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

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

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

  7. Neutron之OVS

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

  8. OVS报错:s1.mgmt: version negotiation failed (we support version 0x01, peer supports version 0x04) ovs-ofctl: s1: failed to connect to socket (Broken pipe)

    mininet搭建拓扑后,查看流表,发现ovs命令报错 查找原因发现系mininet创建拓扑的命令使用了OpenFlow 1.3版本 ovs dump-flows命令默认是1.0版本,因此需要在ovs ...

  9. Openvswitch手册(8): ovs-vsctl的DB的操作

    ovs-vsctl的DB的操作 如果你在命令行里面找不到相应的命令创建和删除对象,则可以直接删除数据库 [−−if−exists] [−−columns=column[,column]...] lis ...

  10. OpenvSwitch/OpenFlow 架构解析与实践案例

    目录 文章目录 目录 前言 软件定义网络(SDN) 虚拟交换机(vSwitch) 为什么说云计算时代的 SDN 非常重要 OpenFlow 简介 Open vSwitch Open vSwitch 的 ...

随机推荐

  1. sql 查询条件为拼接字符串 不能使用IN 使用patindex查询结果集

    题目: 求组织机构ID在('5dc8de20-9f2f-465e-afcc-f69abecaee50','63549b63-1e0d-4269-98f4-013869d7f211','f7316bf3 ...

  2. 上传报错,ITMS-90167,解决办法

    ERROR ITMS-90167 No .app bundles found in the package 报这个错误的原因是上传工具的版本问题或者本地网络问题. 解决办法是使用在线最新的上传工具,推 ...

  3. 【mybatis-plus】条件查询

    用mp也可以方便的实现稍复杂点的条件查询,当然了很复杂的就还是要xml编写sql了. 一.wapper介绍 先看下mp的条件构造抽象类的结构: Wrapper: 条件构造抽象类,最顶端父类 Abstr ...

  4. java如何实现入职时间到现在 java如何计算知道入职时间, 求工作时长格式为年--月--日。

    Date ruZhi = new Date("入职年月bai"); Date now = new Date(); //算出du来时间夸格zhi多长 long shiChang = ...

  5. Sentinel滑动窗口算法

    在前面搞清楚了Sentinel的使用后,大致理了一下Sentinel的责任链,搞清楚了这个,基本就已经梳理清楚sentinel-core模块的大部分内容,顺着这条链路可以继续梳理很多东西. 知其然.知 ...

  6. Plugin 插件体系

    Solon 的插件也可以叫扩展组件,相当于Spring 的 starter.Solon已经提供了大量的基础插件,但对第三方的框架适配目前较少. 插件 说明 boot插件:: 说明 org.noear: ...

  7. Pytest测试框架(一):pytest安装及用例执行

    PyTest是基于Python的开源测试框架,语法简单易用,有大量的插件,功能非常多.自动检测测试用例,支持参数化,跳过特定用例,失败重试等功能. 安装 pip install -U pytest  ...

  8. linux下 shell时间处理

    一.hour #获取当前时间年月日时分秒current_create_time=`date +"%Y-%m-%d %H:%M:%S"` echo $current_create_t ...

  9. 《深入理解Java虚拟机》 Java对象的生命周期

    Java虚拟机运行时数据区 方法区:存储 类信息.常量.静态变量.即使编译器编译后的代码等数据,也有别名叫做非堆.  方法区其中有包含有 运行时常量池,用于存放编译期生成的各种字面量和符号引用.其中, ...

  10. 风炫安全WEB安全学习第二十五节课 利用XSS键盘记录

    风炫安全WEB安全学习第二十五节课 利用XSS键盘记录 XSS键盘记录 同源策略是浏览器的一个安全功能,不同源的客户端脚本在没有明确授权的情况下,不能读写对方资源.所以xyz.com下的js脚本采用a ...