转载:http://www.aboutyun.com/thread-11777-1-1.html

Open vSwitch(下面简称为 OVS)是由 Nicira Networks 主导的,运行在虚拟化平台(例如 KVM,Xen)上的虚拟交换机。在虚拟化平台上,OVS 可以为动态变化的端点提供 2 层交换功能,很好的控制虚拟网络中的访问策略、网络隔离、流量监控等等。
OVS 遵循 Apache 2.0 许可证, 能同时支持多种标准的管理接口和协议。OVS 也提供了对 OpenFlow 协议的支持,用户可以使用任何支持 OpenFlow 协议的控制器对 OVS 进行远程管理控制。
在 OVS 中, 有几个非常重要的概念:

  • Bridge: Bridge 代表一个以太网交换机(Switch),一个主机中可以创建一个或者多个Bridge 设备。
  • Port: 端口与物理交换机的端口概念类似,每个 Port 都隶属于一个 Bridge。
  • Interface: 连接到 Port 的网络接口设备。在通常情况下,Port 和 Interface 是一对一的关系, 只有在配置 Port 为 bond 模式后,Port 和 Interface 是一对多的关系
  • Controller: OpenFlow 控制器。OVS 可以同时接受一个或者多个 OpenFlow 控制器的管理。
  • datapath: 在 OVS 中,datapath 负责执行数据交换,也就是把从接收端口收到的数据包在流表中进行匹配,并执行匹配到的动作。
  • Flow table: 每个 datapath 都和一个“flow table”关联,当 datapath 接收到数据之后, OVS 会在 flow table 中查找可以匹配的 flow,执行对应的操作, 例如转发数据到另外的端口。

网桥管理

非ovsdb数据库操作:

  1. #添加网桥
  2. ovs-vsctl add-br br-int
  3. #列出网桥
  4. ovs-vsctl list-br
  5. #给网桥添加端口
  6. ovs-vsctl add-port br-int tap-xxx
  7. #列出挂载某网络接口的所有网桥
  8. ovs-vsctl port-to-br tap-xxx
  9. #查看全部信息
  10. ovs-vsctl show

复制代码

ovsdb数据库操作:

  1. #通用格式为
  2. ovs-vsctl list/set/get/add/remove/clear/destroy table record column [value]
  3. #默认情况下ovsdb中包含的数据表
  4. bridge, controller,interface,mirror,netflow,open_vswitch,port,qos,queue,ssl,sflow
  5. #举例 查看所有网桥
  6. ovs-vsctl list bridge
  7. #举例 删除一条qos记录
  8. ovs-vsctl destroy qos <qos-id>
  9. #修改端口 p1 的 VLAN tag 为 101,使端口 p1 成为一个隶属于 VLAN 101 的端口
  10. ovs-vsctl set Port p1 tag=101

复制代码

流规则管理

每条流规则由一系列字段组成,分为基本字段、条件字段和动作字段三部分。
基本字段包括:

  • 生效时间 duration_sec
  • 所属表项 table_id
  • 优先级 priority、
  • 处理的数据包数 n_packets
  • 空闲超时时间 idle_timeout 等空闲超时时间 idle_timeout 以秒为单位,超过设置的空闲超时时间后该流规则将被自动删除,空闲超时时间设置为 0 表示该流规则永不过期,idle_timeout 将不包含于 ovs-ofctl dump-flows brname 的输出中。

条件字段包括:

  • 输入端口号 in_port
  • 源目的 mac 地址 dl_src/dl_dst
  • 源目的 ip 地址 nw_src/nw_dst
  • 数据包类型 dl_type
  • 网络层协议类型 nw_proto

这些字段可以任意组合,但在网络分层结构中底层的字段未给出确定值时上层的字段不允许给确定值,即一 条流规则中允许底层协议字段指定为确定值,高层协议字段指定为通配符(不指定即为匹配任何值),而不允许高层协议字段指定为确定值, 而底层协议字段却为通配符(不指定即为匹配任何值),否则,ovs-vswitchd 中的流规则将全部丢失,网络无法连接。
动作字段包括正常转发 normal、定向到某交换机端口 output:port、丢弃 drop、更改源目 的 mac 地址 mod_dl_src/mod_dl_dst 等,一条流规则可有多个动作,动作执行按指定的先后顺序依次完成。
示例:

  1. #查看某网桥信息
  2. ovs-ofctl show br-tun
  3. #查看某网桥上所有端口的状态
  4. ovs-ofctl dump-ports br-tun
  5. #添加一条流表规则 丢弃从port2上发来的所有数据表
  6. ovs-ofctl add-flow br-tun idle_timeout=120,in_port=2,actions=drop
  7. #查看某网桥上面的流表规则
  8. ovs-ofctl dump-flows br-tun
  9. #屏蔽所有进入 OVS 的以太网广播数据包
  10. ovs-ofctl add-flow ovs-switch "table=0, dl_src=01:00:00:00:00:00/01:00:00:00:00:00, actions=drop"
  11. #屏蔽 STP 协议的广播数据包
  12. ovs-ofctl add-flow ovs-switch "table=0, dl_dst=01:80:c2:00:00:00/ff:ff:ff:ff:ff:f0, actions=drop"

复制代码

Qos设置

Qos可以针对网络接口,也可以针对端口设置:

  1. #针对网络接口  1000±100kbps
  2. ovs-vsctl set interface tap-xxx ingress_policing_rate=1000
  3. ovs-vsctl set interface tap-xxx ingress_policing_burst=100

复制代码

官方参考 http://openvswitch.org/support/c ... /qos-rate-limiting/

端口映射
将发往 p0 端口和从 p1 端口发出的数据包全部定向到 p2 端口,用 ovs-vsctl list port 命令查看 p0、p1、p2 端口的 uuid 分别为id1、id2、id3:

  1. ovs-vsctl --set bridge br0 mirrors=@m-- --id=@m create mirror name=mymirror  \
  2. select-dst-port=id_1 \
  3. select-src-port=id_2 \
  4. output-port=id_3

复制代码

其他设置

屏蔽对目的主机访问:

  1. ovs-ofctl add-flow br0 idle_timeout=0,dl_type=0x0800,nw_src=xx.xx.xx.xx,actions=drop

复制代码

http://openvswitch.org/support/

http://www.opencloudblog.com/?p=300

OVS操作总结的更多相关文章

  1. 【Network】OVS VXLAN/GRE 实践

    参考资料: OVS/VXLAN/GRE参考 ovs vxlan IP overray_百度搜索 OVS操作总结-Neutron-about云开发 OpenStack OVS GRE/VXLAN网络_z ...

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

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

  3. 利用OVS+FLOODLIGHT,为数据表添加VLAN_ID和MPLS

    话不多说,直接上拓扑: 我这里是用主机h1 (10.0.0.1)ping 主机h2(10.0.0.2) 1.添加VLAN标签 v1: sudo ovs-ofctl add-flow m1-s1 in_ ...

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

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

  5. RYU 灭龙战 first day

    RYU 灭龙战 first day 前言 由于RYU翻译过来是龙的意思,此次主题就叫灭龙战吧 灵感来源 恶龙的三位真火-问题所在 参照了官方文档的基本操作 笔者以此执行 一个终端里 sudo mn - ...

  6. ovs常用操作

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

  7. OVS数据库操作

    说明 [Record]就是行对应的_uuid [if-exists]当值不存在的是否会报错而不是返回False 基本信息查询 列举数据库 # ovsdb-client list-dbs Open_vS ...

  8. [原] 利用 OVS 建立 VxLAN 虚拟网络实验

    OVS 配置 VxLAN HOST A ------------------------------------------ | zh-veth0(10.1.1.1) VM A | | ---|--- ...

  9. 【Network】OVS基础知识

    本文主要介绍Open VSwitch - 虚拟交换机的概述内容,阅读本文可以对OVS(Open VSwitch)有一个大致的了解.那么本文主要回答了这样几个问题: 1. 虚拟交换机是什么,干什么? 2 ...

随机推荐

  1. Python脚本控制的WebDriver 常用操作 <二十二> 处理alert / confirm / prompt

    测试用例场景 webdriver中处理原生的js alert confirm 以及prompt是很简单的.具体思路是使用switch_to.alert()方法定位到alert/confirm/prom ...

  2. 2015长春 HDU 5531 Rebuild

    题意:n个顶点组成的多边形能否形成正多边形? #include <cstdio> #include <cstring> #include <cmath> #incl ...

  3. 1.2CPU和GPU的设计区别

    CPU和GPU之所以大不相同,是由于其设计目标的不同,它们分别针对了两种不同的应用场景.CPU需要很强的通用性来处理各种不同的数据类型,同时又要逻辑判断又会引入大量的分支跳转和中断的处理.这些都使得C ...

  4. OpenCV在Debug和Release两种模式下布恩那个同时运行的问题

    首先,可以肯定的说,两者是可以随时切换进行运行的,若不能运行,必定是配置出了问题 以Debugx64和Releasex64为例: 在Releasex64模式下,我配置好了各种路径: 于是乎,我切换到D ...

  5. android http 通信(java原生类库实现)

    get方式 private void doGet(){ URL httpurl = new URl(url); HttpURLConnection conn = (HttpURLConnection) ...

  6. 好的git教程

    1.GitHub使用教程for VS2012 http://www.cnblogs.com/yc-755909659/p/3753355.html

  7. (1/18)重学Standford_iOS7开发_iOS概述_课程笔记

    写在前面:上次学习课程对iOS还是一知半解,由于缺乏实践,看公开课的视频有时不能很好地领会知识.带着问题去学习永远是最好的方法,接触一段时间iOS开发以后再来看斯坦福iOS公开课,又会有许多新的发现, ...

  8. [转] C++ Redistributable Package版本详解

    我们使用的程序常常都需要C++ Redistributable Package的支持.C++ Redistributable Package有众多版本,给安装带了不便. 目前(2013-12-04) ...

  9. 自定义滚动条CSS样式

    首先,给个默认css,清除掉以前的样式,给默认背景 .scrollbar { margin-left: 30px; float: left; height: 300px; width: 65px; b ...

  10. Css基础-派生选择器

    如果要修改li strong 里面文字的颜色可以这样写样式 派生选择器: li strong { color:red; } 效果: