OpenStack Neutron浅析(二)
计算、存储和网络,奠定了当今云计算格局的三足鼎立之势。
计算通过虚拟化CPU、disk、Memory等硬件来获得高效的应用;存储通过分布式的文件系统,提供了众多特性的功能。而相对于,计算和存储两方面的成熟与稳定,网络一直以其在稳定、效率、设计等方面,而备受人们爱之、痛之。
随着物联网和云计算的蓬勃发展,网络作为信息传输的桥梁,其地位和重要性只会愈加凸显。从另一种角度而言,鉴于Neutron的高度复杂性。我们将陆续由浅入深的予以阐述和讲解Neutron。
同时,自己也在学习过程中,深感水平有限,如有不当之处,恳请指正,乃不胜感激。
注意
- 学习Neutron,你可能需要网络方面的基础理解。
- 本篇,我们主要从下面出自官网(Neutron VXLAN模式)的图,讲解Neutron世界中虚拟出来的各种“网桥”;以及Compute节点上的VM,是如何历经千山万水,到达Network节点上和外网握手的。
- 记忆与理解下图后,将有助于理解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浅析(二)相关推荐
- OpenStack Neutron浅析(四)
传统网络到虚拟化网络的演进 传统网络: 虚拟网络: 布式虚拟网络: 单一平面网络到混合平面网络的演进 单一平面租户共享网络:所有租户共享一个网络(IP 地址池),只能存在单一网络类型(VLAN 或 F ...
- OpenStack Neutron浅析(三)
1. 基础知识 1.1 防火墙(firewall) 防火墙是依照特定的规则来控制进出它的网络流量的网络安全系统.一个典型的场景是在一个受信任的内网和不受信任的外网比如 Internet 之间建立一个屏 ...
- OpenStack Neutron浅析(一)
与Linux-bridge不同,使用Openvswitch作为网络驱动之后创建vxlan网络会在controller生成三个网桥,分别是: br-int 连接 Dnsmasq,流表逻辑处理 br-ex ...
- python openstack vpc互通_深入浅出新一代云网络——VPC中的那些功能与基于OpenStack Neutron的实现(二)-带宽控制...
在VPC功能实现第一篇中,简单介绍了一下VPC网络对租户间隔离能力的提升以及基于路由提供的一系列网络功能.在这一篇中,将继续介绍VPC网络中十分重要的一个内容:网络带宽的控制,共享以及分离. 首先是对 ...
- python openstack vpc互通_深入浅出新一代云网络——VPC中的那些功能与基于OpenStack Neutron的实现(一)-简述与端口转发...
VPC的概念与基于vxlan的overlay实现很早就有了,标题中的"新"只是一个和传统网络的相对概念.但从前年开始,不同于以往基础网络架构的新一代SDN网络才真正越来越多的走进国 ...
- 带着问题了解Openstack Neutron安全组
女主宣言 本文出自于ADDOPS团队,该文章作者李文新是360 HULK云平台容器化及虚拟化平台运维开发工程师,负责网络模块的设计与开发.本文是由他最近解决的一个Openstack Neutron安全 ...
- 深入理解 OpenStack Neutron:VXLAN
深入理解 OpenStack Neutron:VXLAN 原创: 李宗标 网事如烟云 2017-02-01 3.8 VXLAN 终于用上了这张图: 老爷子,鸡年大吉! 好吧,我们言归正传!(老爷子说: ...
- 【neutron】OpenStack Neutron -- 学习资料
OpenStack Neutron -- 学习资料 学习什么 neutron代码的整体架构,消息通知.rpc如何实现,RESTful API如何实现 neutron的部署,常见问题的定位方法 neut ...
- openstack neutron介绍
http://www.aboutyun.com/thread-13568-1-1.html openstack的Neutron中虚拟网络设备介绍 http://www.aboutyun.com/thr ...
最新文章
- Raspberry pi 蓝牙音响播放
- BFS和DFS优先搜索算法
- 评估微型计算机的主要指标,微型计算机的工作过程和主要性能指标.doc
- College student reflects on getting started in open source(二)
- api php usdt 以太坊_php调用以太坊geth API说明
- Docker 运行Tensorboard 和 jupyter的正确方法
- 如何复现论文中的算法
- java图书销售系统_基于Java Web的图书销售管理系统
- 三次参数样条曲线拟合(任意控制点)
- Steam游戏上线初期的总结与思考
- POJ 2240 Arbitrage——spfa判正环||flody
- 水平制表符 \t 和 垂直制表符\v的区别
- 像素是计算机图像处理的最小单元,图像处理复习
- 人大与加拿大女王大学金融硕士在短学制中成就别样的人生
- 博客第二课-静态主页
- 无线wifi迷你mini微型摄像头解决方案
- Online Patching
- Win10任务栏图标无法右键/取消固定
- 高中计算机学什么软件,高中学业水平考试的计算机上机考试考的是啥软件
- unix系统编程c语言,关于unix系统编程的一个小问题
热门文章
- python有哪些作用-python能用来做什么?Python都有哪些逆天的功能
- python编程 语言-python编程语言有什么用途
- python 模拟浏览器下载文件-Python 模拟浏览器 获取SVN 文件
- 编程软件python中的if用法-Python高效编程的19个技巧
- python对象编程例子-python面向对象编程练习
- php和python哪个学起来简单一点-python和php学习哪个更有发展
- python培训好学吗-人工智能“速成班”Python好学吗 小心别被忽悠了
- python安装在什么系统下最好-自学python用什么系统好
- python3菜鸟教程-Python3 入门教程 简单但比较不错
- python实现:旋转矩阵转换为四元数