http://blog.sina.com.cn/s/blog_6de3aa8a0101pfgz.html

学习或者使用OpenStack普遍有这样的现象:50%的时间花费在了网络部分;30%的时间花费在了存储方面;20%的时间花费在了计算方面。OpenStack网络是不得不逾越的鸿沟,接下来我们一起尝试努力穿越这个沟壑吧……J

虚拟机中数据包传递路径:

上图是一个典型的Neutron-OVS-GRE网络模式,有两个计算节点Computer-01和Computer-02;一个网络节点Network-node。

假设物理计算节点Computer-02上面的虚拟机VM-003网卡eth0上有网络数据包向外部物理路由器网关10.1.101.254发出:那么数据会依次经过tap设备;qbr Linux Bridge设备;qvb和qvo虚拟网络设备;到达物理计算节点的OVS网桥br-int上;br-int将数据包attach到计算节点Computer-02的OVS网桥br-tun上;数据包再从计算节点Computer-02上的OVS网桥br-tun与网络节点Network-node上的OVS网桥br-tun构成的网络隧道穿过,交付到网络节点的OVS网桥br-int上;网络节点上的br-int通过qr设备借助Linux网络命名空间qrouter连通br-ex上的qg设备,将数据包交付到OVS网桥br-ex上;最后br-ex通过网络节点的外部物理网口eth2把数据包送达到外部路由器网关。

分别介绍数据包途径的网络设备:

计算节点:

(1)与虚拟机相连的TAP设备

从上图中可以看出,Computer-02上面的虚拟机VM-003的eth0网口与一个tap设备相连。但这个tap设备并没有像图上Computer-02画的那样与qbr设备直接相连,用ovs-vsctl show命令查看,发现这个tap设备是OVS网桥br-int上面的一个端口。所以实际上的连接情况是Computer-01所表示的那样。

于是这样看来那些Linux bridge qbr设备,qvb设备,qvo设备(Computer-01黄色框中的内容)就显得多余了。没办法,哲学上说存在即合理,qbr的存在当然另有它用,官网文档有这样的一句话:

http://docs.openstack.org/admin-guide-cloud/content/under_the_hood_openvswitch.html#under_the_hood_openvswitch_scenario1

Security groups: iptables and Linux bridges

Ideally, the TAP device vnet0 would be connected directly to the integration bridge, br-int. Unfortunately, this isn't possible because of how OpenStack security groups are currently implemented. OpenStack uses iptables rules on the TAP devices such as vnet0 to implement security groups, and Open vSwitch is not compatible with iptables rules that are applied directly on TAP devices that are connected to an Open vSwitch port.

Networking uses an extra Linux bridge and a veth pair as a workaround for this issue. Instead of connecting vnet0 to an Open vSwitch bridge, it is connected to a Linux bridge, qbrXXX. This bridge is connected to the integration bridge,br-int, through the (qvbXXX, qvoXXX) veth pair.

意思就是说OVS插件没有设置iptables规则的功能,但OpenStack又想要(或必须)提供安全组服务,那么就借助了Linux Bridge的功能。

个人观点:Linux Bridge这种拿来主义的做法大大简化了组件的开发,但是这样无疑增加了其复杂性和冗余度,并且从实践中发现这种做法带来了不少问题。比如http://blog.sina.com.cn/s/blog_6de3aa8a0101lnar.html最后提到的问题,就是OVS网桥和Linux网桥混用造成的。  因此,另寻别的途径来简化实现OpenStack安全组是一件有意义的事,今后将对此深入调研。

(2)OVS一体化网桥br-int

br-int是OpenvSwitch创建的虚拟网桥,但在实际运行中它充当着虚拟交换机的角色,br-int上的端口tap设备将宿主机上的虚拟机实例连接到同一网络交换层上。再透过本机OVS网桥br-tun的互联协议可以将OpenStack系统架构中所有节点的br-int组织成一个更大的虚拟交换机BR-INT{compuer-01-br-int + compuer-02-br-int….}。这是一种很重要的抽象思想,如此一来就好像OpenStack环境中所有的虚拟机实例都连接到了一个巨型的虚拟机交换机上。遗憾的是这个虚拟机交换机的功能有限,不能设定iptables规则实现安全组服务,因此通过qvo,qvb去连接qbr借助linux网桥完成这个工作。所以在计算节点ovs-vsctl show中的br-int网桥看到tap设备和qvo设备共存也就不足为奇了。

(3)OVS通道网桥br-tun

br-tun是OVS创建的虚拟网桥,它的作用是向下直接与br-int连接作为网络数据的进出口;对上通过特定的通信协议与各个节点上的br-tun相连构成一个扁平的通信/通道层。如果把所有的br-int构成的抽象层次定义为虚拟二层网络,那么所有的br-tun构成的抽象层次便是虚拟三层网络了。如此说来似乎有点网络虚拟化的味道了。

网络节点:

(1)OVS通道网桥br-tun

它与计算节点上的br-tun作用相同,只是作为通道层用于连接别的物理节点。唯一不同的是这个br-tun连接的是网络节点的br-int,网络节点br-int与计算节点的br-int区别较大。

(2)OVS一体化网桥br-int

br-int是OpenvSwitch创建的虚拟网桥,也起到了虚拟交换机作用。上面主要有两类设备:一类是tap设备;另一类是qr设备。linux网络命名空间namespace  qdhcp和qrouter均由l3-agent所创建,用来隔离管理租户的虚拟网络和路由。br-int上的tap 设备,ip地址一般为xxx.xxx.xxx.3与dnsmasq进程构成qdhcp,为新创建的虚拟机动态分配私有IP地址。qr-int上的qr设备,IP地址一般为xxx.xxx.xxx.1与br-ex 的qg设备构成qrouter,为租户网络做路由转发,通过qg打通租户内部的虚拟网络和外部的物理网络。

(3)OVS外部网桥br-ex

br-ex是OpenvSwitch创建的虚拟网桥,网桥上有qg设备端口,它是打通租户网络和外部网络的重要通道。另外br-ex与物理网卡(图中是eth2)相连,通往internet网络。

 

OpenStack OVS GRE/VXLAN网络相关推荐

  1. OpenStack OVS GRE/VXLAN

    https://www.jianshu.com/p/0b52de73a4b3 OpenStack OVS GRE/VXLAN网络 学习或者使用OpenStack普遍有这样的现象:50%的时间花费在了网 ...

  2. GRE与Vxlan网络详解

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

  3. RDO单机安装Openstack以及lvm卷存储与Vxlan网络配置

    http://blog.csdn.net/qinscx/article/details/42065267 最近在搞cf,全称cloudfoundry,vmware推的一个pass平台,底层需要依赖于一 ...

  4. 深入理解 OpenStack Neutron:VXLAN

    深入理解 OpenStack Neutron:VXLAN 原创: 李宗标 网事如烟云 2017-02-01 3.8 VXLAN 终于用上了这张图: 老爷子,鸡年大吉! 好吧,我们言归正传!(老爷子说: ...

  5. Neutron 理解 (3): Open vSwitch + GRE/VxLAN 组网

    Neutron 理解 (1): Neutron 所实现的虚拟化网络 Neutron 理解 (2): 使用 Open vSwitch + VLAN 组网 目前,OpenStack Neutron 支持使 ...

  6. openstack M 版 neutron网络组件基础入门

    在我们openstack学习当中,网络组件neutron无疑是令很多人很难理解的,可以说要深入理解 了neutron组件,你基本完成了openstack 60%的学习,存储方面只要不涉及到分布式,剩下 ...

  7. OVS对VXLAN解封包(二)

    一.VxLAN 将二层数据帧封装为 UDP 包 含义: Outer MAC destination address (MAC address of the tunnel endpoint VTEP) ...

  8. 基于OpenDaylight和OVSDB搭建VxLAN网络

    1 简介 本文主要介绍基于OpenDaylight子项目OVSDB中的southbound组件来搭建VxLAN网络,包括初始环境搭建和southbound RestConf API调用等.OpenDa ...

  9. VxLAN网络虚拟化技术详解(HCIE)

    学习目标: 1.了解VxLAN解决的问题 2.了解VxLAN的专业术语NVO3.NVE.VTEP.VNI 3.通过实验来深入了解VxLAN 4.了解VxLAN的报文封装 VxLAN的由来 VPN种类大 ...

最新文章

  1. 双活数据中心对企业的帮助
  2. R语言实战应用精讲50篇(十九)-R语言gganimate函数应用案例:静态图变成动态,让你的图表更酷炫
  3. Mysql order by与limit混用陷阱
  4. 底部居中_中文编程:安卓的底部菜单设计
  5. mac os mysql 命令_Mac环境下MySQL的安装和基本命令的使用
  6. 为VMware虚拟主机添加新磁盘
  7. Linux系统编程(六)守护进程
  8. java读图片显示到前端_java从前端获取参数添加到图片后返回整张图片
  9. 【Python】内置os.path模块最常用的一些用法
  10. matlab圆柱饶流,有限元法解二维圆柱绕流问题.pdf
  11. python阅读wtfbook疑问和验证
  12. github竟然挂掉?那么多顶级牛人……
  13. 蓝牙定位原理-灵思科
  14. scrapy项目部署
  15. kali中netspeed的安装方法
  16. 802.11ac双频
  17. 企业邮箱格式怎么写怎么申请邮箱?电子邮箱的正确填写地址
  18. 【Cocos Creator 游戏开发】开发日志-前言
  19. @Value为啥取不到值
  20. Visual Studio 2019 Community 许可证过期解决方法

热门文章

  1. 中断和异常 in 操作系统【操作系统学习笔记】
  2. h5 加载完成_【全国“创文”】城市文明宣传H5案例赏析
  3. 博客园积分与排名升级攻略 //转
  4. 问题解决:win10应用程序无法正常启动0xc000007b
  5. IDEA jra包报ClassNotFound异常
  6. 录取麻省理工计算机博士全奖,美国研究生申请案例:麻省理工PhD全奖录取:EE专业【2014】...
  7. 相律公式表达式_相律表达式是f=c-p+2
  8. 2021浙江卫生副高考试成绩查询,2021年浙江卫生技术资格考试查询分数流程解析...
  9. 遗传算法求函数的最值问题
  10. 左外连接、右外连接、全连接