您的位置:首页 > 理论基础 > 计算机网络

OpenStack Neutron网络里使用VLAN, VXLAN和GRE要注意什么

2015-11-19 14:27 447 查看
在OpenStack Neutron的官方Wiki上有一个链接,指向了一篇介绍Neutron的文章。这个文章写到非常好,关键还居然是中文写的,链接如下:
https://yeasy.gitbooks.io/openstack_understand_neutron/content/intro/index.html
这篇文章对于Neutron中的VLAN, GRE, VXLAN, NameSpace以及DVR(Distributed Virtual Route)给出了非常详细的介绍和数据说明。在这里我要由衷的感谢文章的作者。

然而在实际学习、使用Neutron的过程中,我还是遇到了很多问题,而这些问题在网上基本很难找到答案。于是我结合自己对于Neutron的理解以及处理问题的过程,写下如下文字,希望帮助后来者少走弯路。

首先需要理解Neutron或者Open vSwitch里涉及的一些虚拟网络设备和基本概念,虚拟网络设备中最重要的就是qbr-XXX, br-int, br-tun, br-ex以及br-ethX。

-- qbr-XXX是一个Linux Bridge,位于虚机网卡(tap-xxx)和br-int之间,主要作用是提供Security Group功能。

-- br-int是集成网桥(Integration Bridge),所有虚机网卡(tap-xxx)通过qbr虚拟设备后,再连接到 br-int。同一个物理节点上的同一VLAN(或者VXLAN, 或者GRE)的虚拟机可以通过br-int通信,不同VLAN(或者VXLAN, 或者GRE)就需要转发到br-tun或者br-ethX。

-- br-tun是隧道网桥f(Tunnel Bridge),负责接收来自br-int的需要做VXLAN或者GRE封装的数据包,封装后发往其它节点的br-tun设备。对于来自其它节点br-tun的VXLAN或者GRE数据包,它会在检查确认tunnel ID符合后,将tunnel ID转换为内部的VLAN ID,并将转换完成的数据包发给br-int处理。

-- br-ethX是专门用户处理VLAN数据包的网桥,它会接收来自br-int的需要做VLAN tag转换的数据包,转换后发送给物理网卡ethX,然后到物理交换机处理。对于来自物理网卡ethX的带有VLAN tag的数据包,它会在检查VLAN tag符合后,将相应的数据包转发给br-int处理。br-int负责将来自br-ethX的数据包做反相的VLAN tag转换。

-- 这里有一个很重要的概念就是会出现两种VLAN tag,一种是虚拟机网卡出来的数据包带的vlan tag,一种是在br-ethx转换后的vlan tag。前者是Open vSwitch内部(主要是br-int)用来标记数据包所属网络的方式,所有类型(VLAN, VXLAN, GRE)的网络都会有这种vlan tag。而后者才是实际上创建VLAN网络时分配的VLAN ID。

如下是一些问题的解答:

问题1: 在使用GRE或者VXLAN作为Tunnel类型时,是否还能在租户网络里使用VLAN

==> 答案是不能,因为如果租户网络类型是VLAN,虚拟机发出的带有内部VLAN tag的数据包会被br-int直接转发到br-ethX处理,而不会经过br-tun。所以br-tun不会起到数据传输的作用。如果没有配置br-ethX,VLAN就无法使用。

问题2: 如果在租户网络里使用VLAN,要注意什么?

==> 需要注意两个方面:1. 要配置br-ethX,并且将br-ethX的一个port设置为实际的物理网卡ethX;2. 物理网卡ethX连接的交换机端口需要配置为Trunk模式,允许所有VLAN tag通过。

问题3: 在使用GRE作为Tunnel类型时,是否还能在租户网络里使用VXLAN?反过来是否也可行?

==> 答案是不行。Tunnel类型为GRE时,租户网络类型也只能是GRE。对于VXLAN也适用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: