SS shadow是 register                                            

OpenStack Neutron机制概要(一)

Openstack|Docker 赵浮云 286℃ 0评论

借用原资料上的一张架构图(并处理)为开篇:

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

计算节点:虚拟机实例的网络

从图中看,这段网络包含了A、B、C这三段的流程。A就是虚拟机test0的虚拟网卡,这块没什么好讲的。和它相连的B倒是值得好好讲一下。B是一个TAP设备,通常是以tap开头的一段名称,它挂载在Linux Bridge qbr上面。那什么又是TAP设备呢?TAP是一个虚拟网络内核驱动,该驱动实现Ethernet设备,并在Ethernet框架级别操作。

总而言之,TAP设备其实就是一个Linux内核虚拟化出来的一个网络接口。OK,我们明白了TAP设备了,如果还是不明白可以查看TAP的具体定义。接下来就是qbr,这之前就说了,是一个Linux Bridge,很是奇怪,我们在这个架构中,使用的OpenvSwitch实现虚拟交换设备的,为什么会出现Linux Bridge呢?

这是因为,OpenvSwitch不支持现在的OpenStack的实现方式,因为OpenStack是把iptables规则丢在TAP设备中,以此实现了安全组功能。没办法,所以用了一个折衷的方式,在中间加一层,用Linux Bridge来实现吧,这样,就莫名其妙了多了一个qbr网桥。在qbr上面还存在另一个设备C,这也是一个TAP设备。C通常以qvb开头,C和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为基础的通信网络,互相之间通过这个网络进行大量的数据交换。这样,网络节点和计算节点之间的通信就此打通了。而图中的G、H正是描画这一通信。

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

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

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

网络节点上的br-int也是起了交换机的作用,它通过I、J与br-tun连接在一起。最终的要的是,在这个虚拟交换机上,还有其他两个重要的tap设备M、O,它们分别同N、P相连,而N、P作为tap设备则是分别归属两个namespacerouter和dhcp,没错,正如这两个namespace的名称所示,它们承担的就是router和dhcp的功能。这个router是由l3-agent根据网络管理的需要而创建的,然后,该router就与特定一个子网绑定到一起,管理这个子网的路由功能。router实现路由功能,则是依靠在该namespace中的iptables实现的。dhcp则也是l3-agent根据需要针对特定的子网创建的,在这个namespace中,l3-agent会启动一个dnsmasq的进程,由它来实际掌管该子网的dhcp功能。由于这个两个namespace都是针对特定的子网创建的,因而在现有的OpenStack系统中,它们常常是成对出现的。

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

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

关于OpenStack Neutron的分析大致描述这些吧,后续的话会详细的写一些文章来详细介绍整个的详细流程和相关的实现方式。

######################################################

本文整理自:http://panpei.net.cn/2013/12/04/openstack-neutron-mechanism-introduce/

转载请注明:赵浮云的blog » OpenStack Neutron机制概要(一)

喜欢 (1)or分享 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(2)个小伙伴在吐槽
  1. I was thinking if after work we could grab a cup of coffee
    • Ok,thank you! I am english not good; and who are you?
      赵浮云2017-01-14 10:26 回复