《深入理解OpenStack Neutron》—3.2.2 VXLAN实现模型

举报
华章计算机 发表于 2019/05/30 15:36:06 2019/05/30
【摘要】 本书摘自《深入理解OpenStack Neutron》一书中的第3章,第3.2.2节,作者是李宗标。

3.2.2 VXLAN实现模型

VXLAN的实现模型与VLAN的实现模型非常相像,如图3-10所示。

从表面上来看,VXLAN与VLAN的实现模型相比,仅仅有一个差别:VLAN中对应的是br-ethx,而VXLAN中对应的是br-tun。(br-tun是一个混合单词的缩写:Bridge-Tunnel。

此时这个Tunnel是VXLANTunnel。)

其实,br-ethx是一个OVS,br-tun也是一个OVS。所以说,两者的差别不是实现组件的差别,而是组件所执行的功能的差别。br-ethx所执行的功能是一个普通二层交换机的功能,br-tun所执行的是VXLAN中VTEP(VXLAN Tunneling End Point,VXLAN隧道终结点)的功能。图3-10为两个br-tun所对应的接口IP分别标识为10.0.100.88和10.0.100.77,这两个IP就是VXLAN的隧道终结点IP。

image.png

图3-10 VXLAN实现模型

由于文章主题和篇幅的原因,没法对VXLAN做深入的讲述。感兴趣的读者可以关注微信公众号“标哥说天下”,那里面有比较详细的VXLAN的介绍文章。

VXLAN与VLAN一样也存在内外VID的

转换。通过VXLAN,就可以明白Neutron为什么要做内外VID的转换,如图3-11所示。

image.png

图3-11中,把br-tun一分为二,设想为两部分:上层是VTEP,对VXLAN隧道进行了终结;下层是一个普通的VLAN Bridge。所以,对于Host来说,它有两重网络,如图3-11所示,虚线以上是VXLAN网络,虚线以下是VLAN网络。如此一来,VXLAN内外VID的转换则变成了不得不做的工作,因为它不仅仅是表面上看起的那样,仅仅是VID数值的转变,而且背后还蕴含着网络类型的转变。

但是问题是,VLAN类型的网络并不存在VXLAN这样的问题。当Host遇到VLAN时,它并不会变成两重网络,可为什么也要做内外VID的转换呢?这主要是为了避免内部VLAN ID的冲突。通过3.2.1节的描述可以知道,内部VLAN ID是体现在br-int上的,而1个Host内装有1个br-int,也就是说VLAN和VXLAN是共用一个br-int。假设VLAN网络不做内外VID的转换,则很可能引发br-int上的内部VLAN ID冲突,如表3-2所示。

表3-2 VLAN ID的内外之别

image.png


VXLAN做内外VID转换时,并不知道VLAN的外部VID是什么,所以它就根据自己的算法将内部VID转换为100,结果很不幸中枪,与VLAN网络的外部VID相等。因为VLAN的内部VID没有做转换,仍然是等于外部VID,所以两者的内部VID在br-int上产生了冲突。正是这个原因,所以VLAN类型的网络,也要做内外VID的转换,而且是所有网络类型都需要做内外VID的转换。这样的话Neutron就能统一掌控,从而避免内部VID的冲突。

VXLAN的内外VID的转换过程与VLAN的内外VID转换过程非常相像,不过在关键步骤上却又有很大的不同。下面就详细描述一下这个转换过程。

1.?出报文的VID转换过程

VXLAN类型网络出报文的内外VID转换过程,如图3-12所示。

image.png

图3-12 VXLAN类型网络出报文内外VID的转换

图3-12中,我们以VM1-3为例,讲述内外VID的转换过程。报文从VM1-3发出,从br-tun离开Host,这一路的VID转换如下:

①报文从VM1-3的A端口发出,是Untag报文;

②报文从B端口进入qbr-xxx,再从C端口离开qbr-xxx,也是Untag报文;

③报文从D端口进入br-int,在D端口,报文被打上标签,VLAN ID = 50;

④报文从E端口离开br-int,此时报文VID = 50;

⑤报文从F端口进入br-tun,此时报文VID = 50;

⑥报文从G端口离开Host,在G端口,报文被从VLAN封装为VXLAN,并且VNI = 100。

可以看到,报文在br-int的D端口被打上内部VLAN标签,变成了Tag报文,在br-tun的G端口做了两件事情:报文格式从VLAN封装为VXLAN,VNI赋值为100。

2.?入报文的VID转换过程

VXLAN类型网络入报文的内外VID转换过程,如图3-13所示。

image.png

图3-9中,我们以VM1-3为例,讲述内外VID的转换过程。报文从Host进入,从qbr-xxx进入VM1-3,这一路的VID转换如下:

①报文来到Host进到br-tun,是VXLAN

报文,VNI = 100;

②报文在br-tun的G端口,被转换为VLAN报文,VLAN ID = 50;

③报文从br-tun离开,一直到进入br-int,都是VLAN报文,VLAN ID = 50;

④报文从br-int D端口离开br-int,报文被剥去Tag,变成Untag报文;

⑤报文从C端口进入qbr-xxx,然后再从B端口离开,再从A端口进入VM1-3,这一路都是Untag报文。

可以看到,报文在br-tun的G端口做了两件事情:报文格式从VXLAN拆封为VLAN,VLAN ID赋值为50,在br-int的D端口被剥去VLAN标签,变成了Untag报文。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。