VLAN 与 VxLAN

All problems in computer science can be solved by another level of indirection.

本篇文章简单介绍 VxLAN 技术。VxLAN 是对 VLAN 的扩展,想要理解 VxLAN,得先弄懂 VLAN。

VLAN

背景

假设有如下网络拓扑:

交换机

图中所示的 4 台主机在同一个广播域中,虽然交换机具有一定的学习能力(MAC 到 Ports 的映射),但是当主机数量很多时,会存在广播风暴问题

当部门之间信息需要保密时,这个拓扑还会存在安全问题

隔离

怎么解决上面的两个问题?一个很自然的想法就是使用路由器将部门 A 与部门 B 隔离成两个广播域:

物理隔离

这种方式被称为物理隔离。物理隔离虽然能解决问题,但是又引入了配置不灵活、浪费交换机端口的问题。更简单的一种方式是使用逻辑隔离技术 VLAN:

逻辑隔离

通过使用支持 VLAN 的交换机,实现了隔离。这种隔离没有引入额外的设备,并且对于 VLAN 的划分是可配置的。

对于一个公司来说,员工有限,使用 VLAN 隔离能满足大部分场景。对于有大量租户需求的云厂商来说,VLAN 无法满足需求,原因是什么呢?下图是传统二层报文与支持 VLAN 的二层报文的格式对比:

VLAN报文格式

可以看到,VLAN 报文相比与传统报文多了 4 字节。这 4 字节中有 12bit 称为 VLAN ID,它被用作划分 VLAN。云厂商如果使用 VLAN 技术来划分租户,最多可以支持 4094(2^12-2) 个租户。

4094 这个数量对于大型云厂商来说,通常是不够的。为了弥补上述 VLAN 的不足,RFC7348 定义了 VxLAN 协议。

VxLAN

概述

VxLAN 在已经存在的物理设施上创建一层虚拟网络,称为 Overlay 网络。物理设施组成的网络称为 Underlay 网络(3 层网络)。

协议

VxLAN 是通过 UDP 协议实现的。参与 VxLAN 网络的交换机或路由器有一个特殊的网络接口称为 VTEP(Virtual Tunnel End Point),它用来处理 VxLAN 封包解包。下面是 VxLAN 包的流动过程:

VxLAN包流动过程

大致流程是:

与 VLAN 一样,每个 VxLAN 段都有一个 ID,称为 VNI(VxLAN network identifier),VNI 支持大约有 2^24 个 VxLAN 段。每一个 VNI 将 Overlay 网络分割成一个个独立的逻辑网络,称为 Bridge Domain:

VxLAN平铺结构

Spine-Leaf 架构

传统网络架构通常是 3 层:core -> distribution -> access,这种网络架构适用于南北向流量较多的场景。在云计算盛行的今天,需要更多的关注东西向流量,于是引入了 spine-leaf 架构。spine-leaf 架构结合 VxLAN 后效果如下:

spine-leaf

总结

本文简单介绍了 VxLAN 技术,从 VLAN 到 VxLAN 的发展脉络可以看出,计算机科学里从来没有百分百完美的设计。随着技术的发展,不断出现的新需求一直在推进技术的进步。

另外,让我们回头看一看 VxLAN 解决问题的方式(追加报文),似乎也呼应着文章开头引用的那句经典语录:All problems in computer science can be solved by another level of indirection.

参考资料

[1] https://info.support.huawei.com/info-finder/encyclopedia/zh/VLAN.html

[2] https://www.youtube.com/watch?v=jC6MJTh9fRE

[3] https://datatracker.ietf.org/doc/html/rfc7348

Latest update:2022/04/16

© 2019 - 2024 · Thinking Cell · Theme Simpleness Powered by Hugo ·