2019/07/30

修改记录
(2019/07/30 在16年开始学openstack的时候,官方文档上在部署案例部分进行过这部分内容的解释,但是现在的新版本跟当时的部署不太一样了,最近看到了有关的波博文,才想想起来版本更换的原因,如果想看原来的感觉的话,我记得当时利用的是M版的。)
(2019/07/30 14:40 但是在M版的文档里面找不到这个相关的东西了,发现只有L版有这个东西,虽然最新的版本也有,但组织形式已经完全不一样了)


引言

我觉得学习openstack中的网络部分,如果存粹看各种相关的理论知识,是没用的;应该把这部分内容与实际的流量走向集合起来,这样每个部分都是干什么的,他们是怎么组合起来的,就能清晰明了了:同项目下虚拟机是怎么互相联通的、虚拟机的流量是怎么走向外网的、虚拟机请求机器IP或者浮动IP等流量又是在什么地方发挥作用的。
所以这篇文章主要从以上这些角度来进行阐述,顺序什么的就不讲究了,因为已经看多太多这种文章了,这里只是做总结,做阐述。

虚拟机在计算节点内的流向

文章[1]算是比较简略的版本介绍,这部分只介绍了从VM到计算节点出口部分的流量走向,再往后的内容没有进行说明;这部分内容以非常简单的脉络叙述了整个过程,并没有具体的细节,下面我来总结一下。

 


 




kvm控制虚拟机流量_java


compute node[1]


注意看图中一系列的连接关系,我看了好多这种的材料,反而不如最后自己好好研究这个图,一点一点找对应关系理解的快
(以下材料为阅读文献[1]后,通过自己的翻译及感悟所得)

  1. 虚拟机通过虚拟网卡发送流量,这部分流量可以联通到tap设备上;(这里是怎么联通的,估计有些太底层,可以看看虚拟机启动命令来看看)
  2. tap设备可以进行相关的安全策略的实行,通过防火墙规则可以看到(需指定tap设备信息来定位相关规则)
  3. 网桥将流量转发到qvb接口,qvb又到了qvo,这个时候已经到了OVS的br-int上;
  • 如果这部分流量是发往本机上的虚拟机的,那么到了这个阶段OVS就帮忙转发了
  • 如果是去往本机外面的,那么就需要再转发到br-tun;
    (注意这里已经加上了VLAN ID,这是帮助某一个网段实现与其他的隔离)
  1. OVS内部有相关的流表(这部分流表是什么时候添加的?)帮助倒流,同时利用vxlan(本例中)帮助发送相关的流量到网络节点;文章中,提到利用隧道ID来实现这部分流量不与其他流量混合在一起(这个我没有完全看懂,他是重新在给流量加头把,如果是加头,就比较容易理解了,这种方式可以明显缓解利用vlan的缺点,我猜大概是这样的,不然这个时候的流量还带着br-int给的vlanID呢)

文章后面同时给出了实际中的部署,各种网络设备,但不是非常详细,大致内容都有了,特别是后面介绍的IPtables的部分,这部分直接应用与虚拟机的tap设备;同时可以通过qemu-kvm的内容来查看虚拟机的各个信息。
### 虚拟机访问外网

文章[2]对这部分的解释更为细致,将整体上的命令都写出来了,包括各种ID什么的。

参考文献

[1]Traffic flows from an Openstack VM [2]Packet-walk-for-Openstack-with-Openvswitch-North-South-traffic