Neutron之OVS
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的更多相关文章
- 写个脚本列出neutron的ovs的topology。
运行结果如下: $ ./nova-ifinfo a7026868-407c-4c54-bb8f-a68623d7e13fvm name is: instance-00000035 # 查找VM ...
- Neutron 理解 (4): Neutron OVS OpenFlow 流表 和 L2 Population [Netruon OVS OpenFlow tables + L2 Population]
学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GR ...
- Neutron 理解 (3): Open vSwitch + GRE/VxLAN 组网 [Netruon Open vSwitch + GRE/VxLAN Virutal Network]
学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GR ...
- openstack之Neutron网络模式vlan,gre,vxlan详解
第一:neutron openvswitch + vlan虚拟网络 一:基础知识 vlan基础知识 1.vlan介绍 1.1:首先说下lan,LAN 表示 Local Area Network,本地局 ...
- 我非要捅穿这 Neutron(四)Open vSwitch in Neutron
目录 文章目录 目录 前文列表 OvS In Neutron 网络拓扑 OvS In Neutron 网络实现模型 双节点混合平面网络 双节点网络拓扑 OvS Bridges 与初始流表项 OvS b ...
- ML2 – Address Population
Why do we need it, whatever it is? VM unicast, multicast and broadcast traffic flow is detailed in m ...
- OpenStack Newton版本Ceph集成部署记录
2017年2月,OpenStack Ocata版本正式release,就此记录上一版本 Newton 结合Ceph Jewel版的部署实践.宿主机操作系统为CentOS 7.2 . 初级版: 192. ...
- GRE与VXLAN
一 GRE 1.1 概念 GRE全称是Generic Routing Encapsulation,是一种协议封装的格式,具体格式内容见:https://tools.ietf.org/html/rfc2 ...
- OpenStack的八年之痒
2010年10月,OpenStack发布了第一个版本:上个月,发布了它的第18个版本Rocky.几年前气氛火爆,如今却冷冷清清.Rocky版本宣布后,OpenStack群里也就出现了几篇简短的翻译过来 ...
随机推荐
- [Windows Powershell]-学习笔记(5)
Powershell自动化变量 Powershell 自动化变量 是那些一旦打开Powershell就会自动加载的变量,或者说是运行是变量. 这些变量一般存放的内容包括 用户信息:例如用户的根目录$h ...
- DevOps架构实践
1. 场景 持续部署:业界没有统一明确地定义,简单理解为将集成结果部署到不同的环境供用户使用,并且立即反馈部署结果的实践,其中不同的环境包括:开发环境.测试环境.预发布环境.生产环境 持续部署两个核心 ...
- iClap的名字是怎么来的,clap是有什么特殊的意义么?
iClap的名字来源于:Clap中文是鼓掌的意思,鼓掌代表合拍,一个团队的价值观以及工作方式合拍,是最重要的,当项目启动时,大家对产品认可,鼓掌开始实施:当项目成功上线,团队也会以鼓掌的形式庆祝:当我 ...
- python 字符串的一些操作
name = "my \tname is {name} and i am {year} old" print(name.capitalize()) #将首字母都大写 print(n ...
- Netflix Hystrix — 应对复杂分布式系统中的延时和故障容错 转
转自 https://segmentfault.com/a/1190000005988895 前言 分布式系统中经常会出现某个基础服务不可用造成整个系统不可用的情况, 这种现象被称为服务雪崩效应. 为 ...
- JavaScript 事件处理详解
事件绑定与解绑: el.onEventName = function (){} document.getElementById("dom").onclick = function( ...
- 【Python】模块
廖雪峰教程笔记. [使用模块有什么好处?] 1.使用模块可以避免函数名和变量名冲突. 2.大大提高了代码的可维护性. [使用模块的注意点] 1.每一个.py文件就是一个模块. 2.每一个包目录下面必须 ...
- Nginx配置location跳转后偶尔出现404
tv.xxx.com/voice请求时需跳转至:tv.xxx.com/zongyi/zt2015/haoshengyin/index.shtml 目录结构: nginx服务器配置: location ...
- 如果css足够强大了,你还会用编程的方式实现去实现css已有的功能吗?
现在css3 都出来的,但是其实我由于一些原因,有些css2中都能支持的样式,我都没有使用过.我感觉我真的有必要静下心来,去看看那些东西,看看哪些以前都被忽视掉的. 今天我主要来讲三个对于我们编程经常 ...
- Hive的Explain命令
Hive的Explain命令,用于显示SQL查询的执行计划. Hive查询被转化成序列阶段(这是一个有向无环图).这些阶段可能是mapper/reducer阶段,或者是Metastore或文件系统的操 ...