OVS即开放虚拟交换标准,不仅仅是为了支持OpenFlow协议,而是为了给虚拟化平台上运行的虚拟机实例提供一套纯软件实现的路由交换协议栈。具体点说,Open vSwitch是在开源的Apache2.0许可下的产品级质量的多层虚拟交换标准!它旨在通过编程扩展,使庞大的网络自动化(配置、管理、维护),同时还支持标准的管理接口和协议(如NetFlow, sFlow, SPAN, RSPAN, CLI, LACP,802.1ag)。

Standard 802.1Q VLAN model with trunk and access ports;
NIC bonding with or without LACP on upstream switch;
NetFlow, sFlow(R), and mirroring for increased visibility;
QoS (Quality of Service) configuration, plus policing;
Geneve, GRE, GRE over IPSEC, VXLAN, and LISP tunneling;
802.1ag connectivity fault management;
OpenFlow 1.0 plus numerous extensions;
Transactional configuration database with C and Python bindings;
High-performance forwarding using a Linux kernel module;

​ OVS bridge 有两种模式:“normal” 和 “flow”。“normal” 模式的 bridge 同普通的
Linux 桥,而 “flow” 模式的 bridge 是根据其流表(flow tables) 来进行转发的。Neutron 使用两种 OVS
bridge:br-int 和 br-tun。其中,br-int 是一个 “normal” 模式的虚拟网桥,而 br-tun 是 “flow”
模式的,它比 br-int 复杂得多。详情参考:Neutron二层网络服务实现原理

OVS基础架构

Open vSwitch分为三层:

1)管理层即:ovs-dpctl、ovs-vsctl、ovs-ofctl、ovsdb-tool。
2)业务逻辑层即:vswitchd、ovsdb。
3)底层服务层即:datapath。

ovs-vswitchd:守护程序,实现交换功能,和Linux内核兼容模块一起,实现基于流的交换flow-based switching。
ovsdb:轻量级的数据库服务,主要保存了整个OVS的配置信息,包括接口,交换内容,VLAN等等。ovs-vswitchd会根据数据库中的配置信息工作。
ovs-dpctl:一个工具,用来配置交换机内核模块,可以控制转发规则。
ovs-vsctl:主要是获取或者更改ovs-vswitchd的配置信息,此工具操作的时候会更新ovsdb-server中的数据库。
ovs-ofctl:用来查询和控制Ovs作为Openflow交换机和控制器。

OVS常见命令

ovs-vsctl 系列

添加网桥

ovs-vsctl add-br br-int

列出网桥

ovs-vsctl list-br

给网桥添加端口

ovs-vsctl add-port br-int tap-xxx

列出挂载某网络接口的所有网桥

ovs-vsctl port-to-br tap-xxx

查看全部信息

ovs-vsctl show

ovs-ofctl 系列

查看所有网桥

ovs-vsctl list bridge

查看br-tun网桥

ovs-ofctl show br-tun

查看br-tun网桥上所有端口的状态
ovs-ofctl dump-ports br-tun

添加一条流表规则 丢弃从port2上发来的所有数据表

ovs-ofctl add-flow br-tun idle_timeout=120,in_port=2,actions=drop

其中每条流规则由一系列字段组成,分为基本字段、条件字段和动作字段三部分。
基本字段包括: 生效时间
duration_sec,所属表项 table_id,优先级 priority,处理的数据包数 n_packets,空闲超时时间
idle_timeout ,其中 idle_timeout 以秒为单位,超过设置的空闲超时时间后该流规则将被自动删除,空闲超时时间设置为 0
表示该流规则永不过期,idle_timeout 将不包含于 ovs-ofctl dump-flows brname 的输出中。

条件字段包括: 输入端口号 in_port,dl_vlan=vlan(数据包的 VLAN Tag 值,范围是 0-4095,0xffff
代表不包含 VLAN Tag 的数据包),源目的 mac 地址 dl_src/dl_dst,源目的 ip 地址
nw_src/nw_dst,数据包类型 dl_type,网络层协议类型 nw_proto,匹配源或者目标的 MAC
地址01:00:00:00:00:00/01:00:00:00:00:00
代表广播地址,00:00:00:00:00:00/01:00:00:00:00:00
代表单播地址,dl_type=ethertype匹配以太网协议类型,dl_type=0x0800 代表 IPv4
协议,dl_type=0x086dd 代表 IPv6 协议,dl_type=0x0806 代表 ARP
协议。这些字段可以任意组合,但在网络分层结构中底层的字段未给出确定值时上层的字段不允许给确定值,即一
条流规则中允许底层协议字段指定为确定值,高层协议字段指定为通配符(不指定即为匹配任何值),而不允许高层协议字段指定为确定值,
而底层协议字段却为通配符(不指定即为匹配任何值),否则,ovs-vswitchd 中的流规则将全部丢失,网络无法连接。

动作字段包括:正常转发 normal、定向到某交换机端口 output:port、丢弃
drop、mod_vlan_vid、strip_vlan、更改源目的 mac 地址 mod_dl_src/mod_dl_dst
等,一条流规则可有多个动作,动作执行按指定的先后顺序依次完成。

就在我抄这边文档的时候,没错,这篇是抄袭的,我的qq技术群有人离开了,有时候想想,有些人来了又走了,有些人来了一直都在。不知道为什么过了三十岁突然感觉很小的一件事情也能引发我的一些感慨。

Neutron之OVS的更多相关文章

  1. 写个脚本列出neutron的ovs的topology。

    运行结果如下: $ ./nova-ifinfo  a7026868-407c-4c54-bb8f-a68623d7e13fvm name is: instance-00000035    # 查找VM ...

  2. Neutron 理解 (4): Neutron OVS OpenFlow 流表 和 L2 Population [Netruon OVS OpenFlow tables + L2 Population]

    学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GR ...

  3. Neutron 理解 (3): Open vSwitch + GRE/VxLAN 组网 [Netruon Open vSwitch + GRE/VxLAN Virutal Network]

    学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GR ...

  4. openstack之Neutron网络模式vlan,gre,vxlan详解

    第一:neutron openvswitch + vlan虚拟网络 一:基础知识 vlan基础知识 1.vlan介绍 1.1:首先说下lan,LAN 表示 Local Area Network,本地局 ...

  5. 我非要捅穿这 Neutron(四)Open vSwitch in Neutron

    目录 文章目录 目录 前文列表 OvS In Neutron 网络拓扑 OvS In Neutron 网络实现模型 双节点混合平面网络 双节点网络拓扑 OvS Bridges 与初始流表项 OvS b ...

  6. ML2 – Address Population

    Why do we need it, whatever it is? VM unicast, multicast and broadcast traffic flow is detailed in m ...

  7. OpenStack Newton版本Ceph集成部署记录

    2017年2月,OpenStack Ocata版本正式release,就此记录上一版本 Newton 结合Ceph Jewel版的部署实践.宿主机操作系统为CentOS 7.2 . 初级版: 192. ...

  8. GRE与VXLAN

    一 GRE 1.1 概念 GRE全称是Generic Routing Encapsulation,是一种协议封装的格式,具体格式内容见:https://tools.ietf.org/html/rfc2 ...

  9. OpenStack的八年之痒

    2010年10月,OpenStack发布了第一个版本:上个月,发布了它的第18个版本Rocky.几年前气氛火爆,如今却冷冷清清.Rocky版本宣布后,OpenStack群里也就出现了几篇简短的翻译过来 ...

随机推荐

  1. pc端样式初始化

    pc端样式初始化: /* http://meyerweb.com/eric/tools/css/reset/ /* http://meyerweb.com/eric/tools/css/reset/ ...

  2. servlet中通过getWriter()获取out返回给浏览器出现中文乱码问题

    感谢博主https://blog.csdn.net/louyongfeng3613/article/details/50160317 在Servlet编程中,经常需要通过response对象将一些信息 ...

  3. 为什么iterator,foreach遍历时不能进行remove操作?除了一种情况可以这样(特殊情况)?

    Exception in thread "main" java.util.ConcurrentModificationException 并发修改异常引发的思考! 1 foreac ...

  4. Python笔记 #03# Help!

    源:DataCamp datacamp 的 DAILY PRACTICE  + 日常收集. Functions Built-in functions Help! Multiple arguments ...

  5. Django框架搭建(windows系统)

    Django框架搭建(windows系统) 一.Django简介 开放源代码的Web应用框架,由Python语言编写,一个大而全的框架. 1.web框架介绍 具体介绍Django之前,必须先介绍WEB ...

  6. 基于tomcat集群做session共享

    前端代理服务器nginx:192.168.223.136 tomcat服务器:采用的一台多实例192.168.223.146:8081,192.168.223.146:8082(如何构建多实例tomc ...

  7. 20145103《JAVA程序设计》第十周学习总结

    网络编程 网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据.程序员所作的事情就是把数据发送到指定的位置,或者接收到指定的数据,这个就是狭义的网络编程范畴.在发送和接收数据时,大部分的程序设 ...

  8. 20135320赵瀚青LINUX内核分析第四周学习笔记

    赵瀚青原创作品转载请注明出处<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 概述 本周的内容主要是讲解系 ...

  9. 解读:hadoop压缩格式

    Hadoop中用得比较多的4种压缩格式:lzo,gzip,snappy,bzip2.它们的优缺点和应用场景如下: 1). gzip压缩 优点:压缩率比较高,而且压缩/解压速度也比较快:hadoop本身 ...

  10. 4.9版本的linux内核中eeprom存储芯片at24c512的驱动源码在哪里

    答:drivers/misc/eeprom/at24.c,内核配置项为CONFIG_EEPROM_AT24 Location: -> Device Drivers -> Misc devi ...