转载: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. Linux shell 获取当前时间之前N天

    date +%Y%m%d --date '2 days ago' 更多资料关注:www.kootest.com ;技术交流群:182526995

  2. Git 基础 - Git Aliases

    $ git config --global alias.co checkout $ git config --global alias.br branch $ git config --global ...

  3. uvalive 3263 That Nice Euler Circuit

    题意:平面上有一个包含n个端点的一笔画,第n个端点总是和第一个端点重合,因此团史一条闭合曲线.组成一笔画的线段可以相交,但是不会部分重叠.求这些线段将平面分成多少部分(包括封闭区域和无限大区域). 分 ...

  4. HDU-4336 Card Collector 概率DP

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4336 题意:买食品收集n个卡片,每个卡片的概率分别是pi,且Σp[i]<=1,求收集n个卡片需要 ...

  5. Java 的集合框架

    Java集合框架被设计成要满足以下几个目标. 该框架必须是高性能的.基本集合(动态数组,链表,树,哈希表)的实现也必须是高效的. 该框架允许不同类型的集合,以类似的方式工作,具有高度的互操作性. 对一 ...

  6. 转载 .net中的dll.refresh文件和pdb文件

    转载原地址: http://blog.csdn.net/lihuang319/article/details/6433727 dll.refresh文件 打开refresh文件,可以看到里面仅仅是个路 ...

  7. 325. Maximum Size Subarray Sum Equals k

    最后更新 二刷 木有头绪啊.. 看答案明白了. 用的是two sum的思路. 比如最终找到一个区间,[i,j]满足sum = k,这个去见可以看做是 [0,j]的sum 减去 [0,i]的Sum. 维 ...

  8. jQuery的遍历方法

    1.jQuery中的map使用方法 <!DOCTYPE html> <html> <head> <style>p { color:red; }</ ...

  9. 虚方法(virtual)和抽象方法(abstract)的区别

    注:本文转载自 http://www.cnblogs.com/michaelxu/archive/2008/04/01/1132633.html 虚方法和抽象方法都可以供派生类重写,它们之间有什么区别 ...

  10. 把pgboucer做成postgresql服务

    把pgbouncer启动命令加入到postgresql服务配置里面.这样方便操作 vi /etc/init.d/postgresql 加入如下红色命令.路径换成你的pgbouncer安装目录 in s ...