> 文档中心 > 深入理解lan、vlan、vxlan《OpenStack 网络》

深入理解lan、vlan、vxlan《OpenStack 网络》


什么是LAN?

LAN 表示 Local Area Network,本地局域网。
一个 LAN 表示一个广播域,含义是:LAN 中的所有成员都会收到任意一个成员发出的广播包。

深入理解lan、vlan、vxlan《OpenStack 网络》
上图为最基本的LAN布局。如果设备间想要通讯,必须要获取到对方的MAC地址

举例:A 发信息给 C,A 并不知道 C 的 MAC 地址。此时通过 ARP 协议(Address Resolution Protocol;地址解析协议;)获取 C 的 MAC 地址,A 先要广播一个包含目标 IP 地址的 ARP 请求到链接在集线器上的所有设备上,C 接受到广播后返回 MAC 地址给 A,其他设备则丢弃信息。至此已经建立设备间通信的准备条件。

链接在集线器中的设备都在同一个冲突域和广播域中。此时的冲突域就是广播域。简单理解就是在这种布局中,一次只能一台设备发送信号且其他设备都能接受该信号。

集线器是物理层(OSI第一层)设备,主要作用是将信号进行接受-恢复放大-发送,双绞线、光纤在传输信号的时候,随着距离的增大,信号会减弱造成失真,借助集线器可以让信号传播更远的距离;同时集线器上有很多接口,能够扩展终端数量扩大 LAN 的规模。

同一集线器上的所有设备共享带宽,如果设备数量过多的话,会造成链路拥堵,严重的会产生广播风暴。

使用交换机可以把一个大的冲突域划分成多个小的冲突域,这样可以缩减冲突域的范围,降低数据拥堵。

下图添加一个交换机连接几个冲突域,交换机的一个端口对应一个单独的冲突域。这样一来一个大的广播域就分成了多个小的冲突域。但注意的是,这整个网络仍是一个广播域。

深入理解lan、vlan、vxlan《OpenStack 网络》
上面已经把冲突域进行了隔离,当设备越来越多的时候每个设备都发送一个广播,交换机需要把每个广播复制下发到所有设备,这个开销就很可怕了。

下图我们使用路由器对广播域进行隔离。
深入理解lan、vlan、vxlan《OpenStack 网络》
当路由器收到广播时,会把它自动丢弃,不会转发到路由器的其他端口,实现了广播域的分割.

什么是VLAN?

VLAN(Virtual Local Area Network)即虚拟局域网,是将一个物理的LAN在逻辑上划分成多个广播域的通信技术。每个VLAN是一个广播域,VLAN内的主机间可以直接通信,而VLAN间则不能直接互通。这样,广播报文就被限制在一个VLAN内。

虚拟局域网(VLAN)是在局域网(LAN)的逻辑上划分成多个广播域,每一个广播域就是一个 VLAN。

下图为交换机划分虚拟局域网。交换机把一个广播域划分成了3个广播域,物理上这些设备在一个交换机上,但是逻辑上已经分别划分到三个交换机上,所以会有三个局域网(虚拟局域网),三个广播域。

深入理解lan、vlan、vxlan《OpenStack 网络》
交换机划分 VLAN 说明,VLAN1 这个虚拟局域网编号,一般工作于管理组,所以普通 VLAN 都是从 2 开始编号,默认情况下,所有虚拟局域网都隶属于 VALN1。

在上图中不同的 VLAN 相互间是不能通讯的。为了解决这个问题,引进了三层交换机(或路由器)等 OSI 的三层设备实现跨网段通信。

深入理解lan、vlan、vxlan《OpenStack 网络》

VLAN 实现原理

1. 静态 VLAN

静态 VLAN 又被称为基于端口的 VLAN(PortBased VLAN)。是为了明确指定哪个 Port 属于哪个 VLAN ID。

在 VLAN 管理员最初配置交换机 Port 和 VLAN ID 的对应关系时,就已经固定了这种对应关系,即一个 Port 只能对应一个 VLAN ID,之后无法进行更改,除非管理员再重新配置。

当一台设备接到这个 Port 上的时候,怎么判断该主机的 VLAN ID 与 Port 对应呢,这里是根据 IP 配置决定的,我们知道每个 VLAN 都有一个子网号,并对应着哪些 Port,如果设备要求的 IP 地址和该 Port 对应的 VLAN 的子网号不匹配,则连接失败,该设备将无法正常通信。所以除了连接到正确的 Port 外,也必须给设备分配属于该 VLAN 网络段的 IP 地址,这样才能加入到该 VLAN 中。

由于需要一个个端口地指定,因此当网络中的计算机数目超过一定数字(比如数百台)后,设定操作就会变得烦杂无比。并且,客户机每次变更所连端口,都必须同时更改该端口所属 VLAN 的设定——这显然不适合那些需要频繁改变拓补结构的网络。

2. 动态 VLAN

动态 VLAN 则是根据每个端口所连的计算机,随时改变端口所属的 VLAN。这就可以避免上述的更改设定之类的操作。动态 VLAN 可以大致分为 3 类:
(1)基于 MAC 的 VLAN

基于 MAC 地址的 VLAN ,就是通过查询并记录端口所连的计算机网卡的 MAC 地址来决定端口的所属。假定有一个 MAC 地址 “A” 被交换机设定为属于 VLAN 10,那么不论 MAC 地址为 “A” 的这台计算机连在交换机哪个端口,该端口都会被划分到 VLAN 10 中去。计算机连在端口 1 时,端口 1 属于 VLAN 10 ;而计算机连在端口 2 时,则是端口 2 属于 VLAN 10。

基于 MAC 地址的 VLAN ,在设定时必须调查所连接的所有计算机的 MAC 地址并加以登录。而且如果计算机交换了网卡,还是需要更改设定。

(2)基于 IP 的 VLAN
基于子网的 VLAN,则是通过所连计算机的 IP 地址,来决定端口所属 VLAN 的。不像基于 MAC 地址的 VLAN,即使计算机因为交换了网卡或是其他原因导致 MAC 地址改变,只要它的 IP 地址不变,就仍可以加入原先设定的 VLAN。

因此,与基于 MAC 地址的 VLAN 相比,能够更为简便地改变网络结构。IP 地址是 OSI 参照模型中第三层的信息,所以我们可以理解为基于子网的 VLAN 是一种在 OSI 的第三层设定访问链接的方法。

(3)基于用户的 VLAN
基于用户的 VLAN,则是根据交换机各端口所连的计算机上当前登录的用户,来决定该端口属于哪个 VLAN。这里的用户识别信息,一般是计算机操作系统登录的用户,比如可以是 Windows 域中使用的用户名。这些用户名信息,属于 OSI 第四层以上的信息。

VLAN特点

与LAN不同,VLAN(虚拟局域网)是LAN的逻辑分离,其在单个带宽内创建多个LAN段。虚拟局域网的特点是在局域网中构建的局域网段可以根据需要进行跨接和收缩。单个广播域的这种划分会产生更多的带宽。它消除了为组织的各种子网安装多个不同交换机的需要。

交换机用于实现VLAN;每个交换机端口都分配有一个VLAN。同一个VLAN 中的端口可以共享广播,不同VLAN中的端口不能。它还通过将广播限制到交换机中存在的每个端口并从单个广播构建多个广播来提供安全性。

VLAN提供了更大的灵活性,因为端口也可以在需要时进行切换;它无需购买昂贵的交换机来分隔网络中的子网可降低成本。VLAN必须实施分层网络寻址方案,通过该方案,IP地址可以系统地分配给网段或VLAN。

LAN与VLAN主要区别

  • 创建LAN需要集线器、交换机和路由器等设备;VLAN是使用交换机或网桥创建的。

  • LAN中只有一个广播域,因此每个数据包都会广播到除发送设备之外的每个连接;VLAN可以在单个介质中实现多个广播域并且可以将数据包发送到所需的LAN网段。

  • LAN中延迟计数较高,因为使用单个广播域并导致冲突;VLAN产生低延迟。

  • 安全方面:LAN不如VLAN安全,因为它通过隔离不同VLAN中的用户来限制将数据包传输到不必要的端口。

  • VLAN更加灵活和可扩展,可相应地添加和删除新用户,并将其部署在合适的LAN段中而不管物理位置如何,它还可以识别流量。

  • VLAN还通过为两个独立的网络使用一台交换机而不是使用两台交换机来降低硬件成本。

  • VLAN可以轻松地进行故障排除和管理,因为它使用了特殊的技术来做到这一点。与提供更高效率和准确性的VLAN相比,LAN性能是平均的。

  • LAN涉及标准LAN协议,例如令牌环和FDDI,而在VLAN中,网络机制中采用特殊协议,例如ISL(交换机间链路)和VTP(VPN 中继协议)。

什么是VXLAN?

VXLAN(Virtual eXtensible Local Area Network,虚拟扩展局域网),是由IETF定义的NVO3(Network Virtualization over Layer 3)标准技术之一,是对传统VLAN协议的一种扩展。

VXLAN本质上是一种隧道技术,在源网络设备与目的网络设备之间的IP网络上,建立一条逻辑隧道,将用户侧报文经过特定的封装后通过这条隧道转发。

从用户的角度来看,接入网络的服务器就像是连接到了一个虚拟的二层交换机的不同端口上(可把蓝色虚框表示的数据中心VXLAN网络看成一个二层虚拟交换机),可以方便地通信。

深入理解lan、vlan、vxlan《OpenStack 网络》
VXLAN已经成为当前构建数据中心的主流技术,是因为它能很好地满足数据中心里虚拟机动态迁移和多租户等需求。

为什么需要VXLAN呢?

这和数据中心服务器侧的虚拟化趋势紧密相关,一方面服务器虚拟化后出现了虚拟机动态迁移,要求提供一个无障碍接入的网络;另一方面,数据中心规模越发庞大,租户数量激增,需要网络提供隔离海量租户的能力。
采用VXLAN可以满足上述两个关键需求。

那VXLAN都能够解决什么问题?

(1)突破VLAN ID数量限制

VLAN能支持的二层网络数量有限。VLAN Tag总共4个字节,其中有12bit用来标识不同的二层网络,这样总共是4000多个。而VXLAN header有8个字节,有24bit用来标识不同的二层网络,这样总共是1600多万个。

(2)突破TOR交换机MAC地址表限制

数据中心的虚拟化给网络设备带来的最直接影响就是:
之前TOR(Top Of Rack)交换机的一个端口连接一个物理主机对应一个MAC地址,但现在交换机的一个端口虽然还是连接一个物理主机但是可能进而连接几十个甚至上百个虚拟机和相应数量的MAC地址。
传统交换机是根据MAC地址表实现二层转发。
如下图所示,交换机在收到一个数据帧之后,根据VLAN和目的MAC地址,查找到相应的交换机端口,再将数据帧从相应的端口发出。

(3)突破单条网络链路

VLAN协议使用STP(Spanning Tree Protocol)来管理多条线路,STP根据优先级和cost,只会选出一条线路来工作,这样可以避免数据传递的环路。这种主备(active-passive)的模式,比只连接一条线路肯定是有优势,但是对于用户来说,相当于花了N倍的钱,却只用到了1倍的服务。
当网络流量较大的时,也不能通过增加线路来提升性能。
而VxLAN因为是通过UDP封装,在三层网络上传输。虽然传递的还是二层的Ethernet Frame,但是VXLAN可以利用一些基于三层的协议来实现多条线路共同工作(active-active),以实现负载均衡,例如ECMP,LACP。
现在对于用户来说,花了N倍的钱,也用到了N倍的服务。当网络流量较大时,现在可以通过增加线路来减轻现有线路的负担。这在提升数据中心网络性能,尤其是东西向流量的性能时,尤其重要。
这是VXLAN相比VLAN,能带来的另一个好处。

深入理解lan、vlan、vxlan《OpenStack 网络》

VXLAN的优点

  • 业务灵活部署:VXLAN可以在共享的数据中心物理网络架构之上提供逻辑的大二层扩展,用户或者管理员可以实现业务的灵活按需部署。

  • 优良的弹性:VXLAN使用24-bit VNI(VXLAN Network Identifier),允许多达1600万的VxLAN段(segment)在相同的管理域中共存。

  • 更佳的底层网络利用率:VLAN为避免环路,使用STP阻断(block)冗余链路。VXLAN采用UDP封装,利用第三层IP路由、等成本路径(ECMP)和链路聚合(LACP)技术使用了全部可用路径。
    深入理解lan、vlan、vxlan《OpenStack 网络》

VXLAN技术价值

VXLAN支持大量租户:支持多达1600万个相互隔离的二层网络,解决传统二层网络VLAN资源不足问题。

VXLAN网络易于维护:基于IP网络构建大二层网络,将原始二层数据帧封装成VXLAN报文在IP网络中透传,充分利用现有IP网络技术,部署和维护更容易。

VXLAN网络保证虚拟机动态迁移:采用“MAC in UDP”的封装方式,保证虚拟机迁移前后的IP和MAC不变。
深入理解lan、vlan、vxlan《OpenStack 网络》
VXLAN这个技术听上去似乎很高大上、很难,但根本原因是因为VXLAN的使用场景大家比较陌生,所以下意识认为VXLAN难学难懂。