---
title: 交换机
taxonomy:
    category: docs
---

大家还记得上一章中出现过的的负载均衡架构图吗？图 6-3 中就暗藏了一个交换机。

![](https://qn.lvwenhan.com/2023-01-06-16730021122858.jpg)
<center>图 6-3 使用 TCP 负载均衡器时的架构图</center>

在左侧，客户端和负载均衡器之间使用公网 IP 进行通信。它们就像是全球互联网中的两台对等设备，只是数据包经过了许多真正的“路由器”的“路由”操作，才能互相接收到对方发送的数据包。

而在右侧，负载均衡器和上游服务器之间的通信则采用了内网 IP：`10.0.0.100` 和 `10.0.0.1`。那么，它们是如何进行通信的呢？答案就是通过交换机。

### 路由器和交换机巨大的价格落差

一台能够实现千兆 NAT 功能的路由器，最低价格大约在 300 元。然而，一个所有端口都能同时实现全双工千兆（上下行同时达到千兆）的五口交换机，你知道其价格是多少吗？仅需 39 元，还包邮。

这是因为交换机所承担的任务相对简单，可以使用较低端的芯片来满足需求。

### 交换机的工作原理

网关通过关联两个五元组并对数据进行修改来实现其功能。而交换机则更为简单：它只需维护一个 MAC 地址与网口之间对应关系的哈希表，无需对数据进行任何修改。该哈希表的键为 48 位长，值为 tinyint：对于四口交换机，可用 2 位表示；对于八口交换机，可用 3 位表示。现在，你是否明白了为什么家用交换机通常都是八口的呢？因为节省一位存储空间，就可以降低一些成本。

交换机的工作模式可以简要描述如下：

1. 当交换机收到一个 MAC 包时，它会查询目的 MAC 地址所在的网口。
2. 如果查询不到，交换机会将该 MAC 包发送到所有端口，包括接收到数据包的端口。
3. 一旦该 MAC 包得到响应，交换机就会学习到该 MAC 地址与端口之间的关系，下次就不需要向所有端口发送了。
4. 如果查询到了，交换机会将数据包单独发送到目标网口。
5. 在整个过程中，交换机不会对数据包进行任何修改。

除了不需要修改数据包之外，交换机也不需要与其他设备通信来建立和更新 MAC 表，只需监听途径交换机的所有数据包的源 MAC 地址即可。

### 交换机技术的优缺点

优点：

1. 由于足够简单，硬件成本可以保持在较低水平。
2. 无需与任何设备通信即可支持新设备的接入，完全自学习。
3. 扩展性极强，交换机可以随意级联，只要 MAC 表容量足够，理论上可以扩展成一颗无限层级的树。

缺点：

1. 存在网络风暴的风险：数据包被无脑地发送到所有端口，可能会被其他交换机再次发送回来，导致正常数据包拥堵。
2. 网络回环非常危险：如果将交换机的两个端口用一根线连接在一起，这台交换机将立即断网，对于这种低层级设备来说，“左右互搏之术”过于困难。

当然，目前主流的商业二层交换机已经具备了许多三层特性，这些缺点通过各种检测技术已经得到了解决。

> 大家不要认为交换机原理没有用处，SDN 是一种跨越一二三层的技术，物理层（MAC 层）也是我们构建 200G 负载均衡集群的重要技术战场。

准备工作已经完成，下面我们开始搭建负载均衡集群。首先从这一切的基础—— LVS 开源软件说起。
