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. python excel 追加写入_python excel写入及追加写入
  2. ES6之字符串扩展方法(常用)
  3. bash脚本编程之一 变量、变量类型等
  4. 单位脉冲信号与单位冲激信号的区别
  5. java 实现支持向量机
  6. KPN iTV的敏捷转型之旅
  7. C/C++笔试题(基础题)
  8. 如何引用阿里云矢量图标库
  9. 微信小程序之移动端适配
  10. spring boot 配置文件properties,yml语法学习及属性获取@ConfigurationProperties和@Value
  11. 计算机二级c语言题2016,2016年计算机二级《C语言》专项练习题及答案
  12. 基于深度学习场景分类算法
  13. tan-python-day02
  14. 利用 Global mapper制作地图瓦片
  15. ubuntu下安装搜狗拼音输入法
  16. bim 模型web页面展示_一种操纵BIM模型在网页展示的方法与流程
  17. Floats_Flexbox_Grid_The_Progression_of_CSS_layouts by Kevin Powell
  18. ios设备使用socks代理_iOS使用socks5代理服务器
  19. 利用Python开发App
  20. 升级版王者荣耀铭文多功能助手微信小程序源码下载

热门文章

  1. 国外CDN与国内CDN比较
  2. 私域流量的本质是什么?
  3. 一种新能源汽车整车控制器VCU测试工装-ETest
  4. 酷狗繁星新人如何把握第一个月?酷狗繁星新人小白教学必读
  5. 基于vTESTstudio的域控制器测试用例开发及案例分享
  6. 解决华为M2 平板前置摄像头录制视频黑屏
  7. python从高德api获取公交线路规划信息
  8. [1195]Xposed+FDex2 app脱壳
  9. 深度 | 腾讯 AI Lab副主任俞栋:过去两年基于深度学习的声学模型进展
  10. 盘点智能养猪场常用设备,养殖智能监控系统作用大