计算、存储和网络,奠定了当今云计算格局的三足鼎立之势。

计算通过虚拟化CPU、disk、Memory等硬件来获得高效的应用;存储通过分布式的文件系统,提供了众多特性的功能。而相对于,计算和存储两方面的成熟与稳定,网络一直以其在稳定、效率、设计等方面,而备受人们爱之、痛之。

随着物联网和云计算的蓬勃发展,网络作为信息传输的桥梁,其地位和重要性只会愈加凸显。从另一种角度而言,鉴于Neutron的高度复杂性。我们将陆续由浅入深的予以阐述和讲解Neutron。

同时,自己也在学习过程中,深感水平有限,如有不当之处,恳请指正,乃不胜感激。

注意

  1. 学习Neutron,你可能需要网络方面的基础理解。
  2. 本篇,我们主要从下面出自官网(Neutron VXLAN模式)的图,讲解Neutron世界中虚拟出来的各种“网桥”;以及Compute节点上的VM,是如何历经千山万水,到达Network节点上和外网握手的。
  3. 记忆与理解下图后,将有助于理解Neurton机制。

从这张架构图中,我们可以明显的看到有两个物理主机,计算节点和网络节点。

计算节点:虚拟机网络

在上面的高清图中,我们先来看看A、B、C这三段的流程。A就是虚拟机VM1的虚拟网卡,首先来说,它是一个以tapxxxx命名的网络设备。和它相连的B也是一个TAP设备,通常是以tap开头的一段名称,它挂载在Linux Bridge qbr-XXXX上面。

OK,现在我们有点晕头了。

什么是TAP设备呢?Linux 中的虚拟网络给出了这样的解释:

TAP是一个虚拟网络的内核驱动,该驱动实现了Ethernet设备(网卡),并在Ethernet框架级别操作。TAP驱动提供了Ethernet “tap”,访问Ethernet框架能够通过它进行通信。

总而言之,TAP设备其实就是一个Linux内核虚拟化出来的一个网络接口。OK,我们现在简单粗暴的知道了TAP设备,如果还是不明白可以Google之TAP的具体定义。

接下来就是qbr了,这在上面有提到,这是一个Linux Bridge,很是奇怪,我们在OpenStack中,明明已经使用了OpenvSwitch来实现虚拟二层交换设备的,为什么又会出现Linux Bridge呢?

所谓,存在即合理。这是因为OpenvSwitch不支持现在的OpenStack 部分高级网络功能的实现方式(至少目前还是这样的)。因为OpenStack把iptables规则丢在了TAP设备中,以此实现了安全组功能。没办法,所以用了一个折衷的方式,在虚拟机到OpenvSwitch的中间加了一层,用Linux Bridge来实现吧,这样,就莫名其妙的多了一个qbr网桥。在qbr上面还存在另一个设备C,这也是一个TAP设备。C通常以qvb开头,C和OpenvSwitch之br-int上的D连接在了一起,形成了一个连接通道,使得qbr和br-int之间可以顺畅通信。

计算节点:集成网桥(br-int)的网络

刚才说到D(这也是一个TAP设备)在br-int上面,现在轮到br-int出场了,br-int是由OpenvSwitch虚拟化出来的网桥,但事实上它才是充当了一个真正虚拟交换机的功能。

br-int的主要职责就是把它所在的计算节点上的VM都连接到它这个虚拟交换机上面,然后利用下面要介绍的br-tun的穿透功能,实现不同计算节点上的VM连接在同一个逻辑虚拟交换机上面的功能。这个似乎有点拗口,其实就是在管理员看来,所有的VM都是连接在一个虚拟交换机上面的,但事实上这些VM又都是分布在不同的物理主机上面。

OK,回到D上面,D通常以qvo开头。在上面还有另一个端口E,它总是以patch-tun的形式出现,从字面上就可以看出它是用来连接br-tun的。

计算节点:通道网桥(br-tun)的网络

br-tun在上面已经提及了,这同样是OpenvSwitch虚拟化出来的网桥,但是它不是用来充当虚拟交换机的,它的存在只是用来充当一个通道层,通过它上面的设备G与其他物理机上的br-tun通信,构成一个统一的通信层。

这样的话,网络节点和计算节点、计算节点和计算节点之间就会点对点的形成一个以GRE(使用通用路由封装协议来实现)、VXLAN(主要是将二层的MAC封装在三层的UDP协议中来实现)为模式的Neutron通信网络,互相之间通过这个网络进行大量的数据交换。这样,网络节点和计算节点之间的通信就此打通了。而图中的G、H描画的正是这一通信。

网络节点:通道网桥(br-tun)的网络

正如前面所说,网络节点上也是存在一个br-tun的,它的作用同计算节点上的br-tun如出一辙,都是为了在整个系统中构建一个统一的通信层而存在的。所以,这一部分的网络同计算节点上的网络功能是一致的,因此,这里将走过。

网络节点:集成网桥(br-int)的网络

网络节点上的br-int也是起了一个虚拟交换机的作用,它通过I、J与br-tun连接在一起。

最重要的是,在这个虚拟交换机上,还有其他两个重要的tap设备M、O,它们分别同N、P相连,而N、P作为tap设备则是分别归属两个NameSpace,即router和dhcp,没错,正如这两个NameSpace的名称所示,它们承担的就是router和dhcp的功能。

这个router是由l3-agent根据网络管理的需要而创建的,然后,该router用于和特定的租户子网绑定在一起,用于实现该子网内的IP地址的路由转换功能。router实现路由功能,则是依靠在Linux namespace中的iptables实现的(关于iptables,我们将在后续文章中予以剖析)。

dhcp则也是l3-agent根据需要针对特定的子网创建的,在这个namespace中,l3-agent会启动一个dnsmasq的进程,由它来实际掌管该子网的dhcp功能。由于这两个namespace都是针对特定的子网创建的,因而在现有的OpenStack系统中,它们常常是成对出现的。

网络节点:外部网桥(br-ex)的网络

当数据从router中路由出来后,就会通过L、K传送到br-ex这个虚拟网桥上,而br-ex实际上是混杂模式加载在物理网卡上的,实时接收着网络上的数据包。至此,我们的计算节点上的VM就可以与外部的网络进行自由的通信了。当然,前提是我们已经给这个VM已经分配了floating-ip。

至此,关于OpenStack Neutron网桥的概念性分析大致描述到此。

原文链接:http://trystack.cn/Articles/OpenStack-Neutron.html

OpenStack Neutron浅析(二)相关推荐

  1. OpenStack Neutron浅析(四)

    传统网络到虚拟化网络的演进 传统网络: 虚拟网络: 布式虚拟网络: 单一平面网络到混合平面网络的演进 单一平面租户共享网络:所有租户共享一个网络(IP 地址池),只能存在单一网络类型(VLAN 或 F ...

  2. OpenStack Neutron浅析(三)

    1. 基础知识 1.1 防火墙(firewall) 防火墙是依照特定的规则来控制进出它的网络流量的网络安全系统.一个典型的场景是在一个受信任的内网和不受信任的外网比如 Internet 之间建立一个屏 ...

  3. OpenStack Neutron浅析(一)

    与Linux-bridge不同,使用Openvswitch作为网络驱动之后创建vxlan网络会在controller生成三个网桥,分别是: br-int 连接 Dnsmasq,流表逻辑处理 br-ex ...

  4. python openstack vpc互通_深入浅出新一代云网络——VPC中的那些功能与基于OpenStack Neutron的实现(二)-带宽控制...

    在VPC功能实现第一篇中,简单介绍了一下VPC网络对租户间隔离能力的提升以及基于路由提供的一系列网络功能.在这一篇中,将继续介绍VPC网络中十分重要的一个内容:网络带宽的控制,共享以及分离. 首先是对 ...

  5. python openstack vpc互通_深入浅出新一代云网络——VPC中的那些功能与基于OpenStack Neutron的实现(一)-简述与端口转发...

    VPC的概念与基于vxlan的overlay实现很早就有了,标题中的"新"只是一个和传统网络的相对概念.但从前年开始,不同于以往基础网络架构的新一代SDN网络才真正越来越多的走进国 ...

  6. 带着问题了解Openstack Neutron安全组

    女主宣言 本文出自于ADDOPS团队,该文章作者李文新是360 HULK云平台容器化及虚拟化平台运维开发工程师,负责网络模块的设计与开发.本文是由他最近解决的一个Openstack Neutron安全 ...

  7. 深入理解 OpenStack Neutron:VXLAN

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

  8. 【neutron】OpenStack Neutron -- 学习资料

    OpenStack Neutron -- 学习资料 学习什么 neutron代码的整体架构,消息通知.rpc如何实现,RESTful API如何实现 neutron的部署,常见问题的定位方法 neut ...

  9. openstack neutron介绍

    http://www.aboutyun.com/thread-13568-1-1.html openstack的Neutron中虚拟网络设备介绍 http://www.aboutyun.com/thr ...

最新文章

  1. Raspberry pi 蓝牙音响播放
  2. BFS和DFS优先搜索算法
  3. 评估微型计算机的主要指标,微型计算机的工作过程和主要性能指标.doc
  4. College student reflects on getting started in open source(二)
  5. api php usdt 以太坊_php调用以太坊geth API说明
  6. Docker 运行Tensorboard 和 jupyter的正确方法
  7. 如何复现论文中的算法
  8. java图书销售系统_基于Java Web的图书销售管理系统
  9. 三次参数样条曲线拟合(任意控制点)
  10. Steam游戏上线初期的总结与思考
  11. POJ 2240 Arbitrage——spfa判正环||flody
  12. 水平制表符 \t 和 垂直制表符\v的区别
  13. 像素是计算机图像处理的最小单元,图像处理复习
  14. 人大与加拿大女王大学金融硕士在短学制中成就别样的人生
  15. 博客第二课-静态主页
  16. 无线wifi迷你mini微型摄像头解决方案
  17. Online Patching
  18. Win10任务栏图标无法右键/取消固定
  19. 高中计算机学什么软件,高中学业水平考试的计算机上机考试考的是啥软件
  20. unix系统编程c语言,关于unix系统编程的一个小问题

热门文章

  1. python有哪些作用-python能用来做什么?Python都有哪些逆天的功能
  2. python编程 语言-python编程语言有什么用途
  3. python 模拟浏览器下载文件-Python 模拟浏览器 获取SVN 文件
  4. 编程软件python中的if用法-Python高效编程的19个技巧
  5. python对象编程例子-python面向对象编程练习
  6. php和python哪个学起来简单一点-python和php学习哪个更有发展
  7. python培训好学吗-人工智能“速成班”Python好学吗 小心别被忽悠了
  8. python安装在什么系统下最好-自学python用什么系统好
  9. python3菜鸟教程-Python3 入门教程 简单但比较不错
  10. python实现:旋转矩阵转换为四元数