交换机端口及VLAN转发原理

交换机端口及 VLAN 转发原理是数据通信网络的核心基础。理解它们的工作原理对于设计、管理和排错网络至关重要。下面我将详细解释:

 

## 一、 交换机端口基础

 

交换机端口是物理连接点,用于连接终端设备(如 PC、服务器、IP 电话)或其他网络设备(如另一台交换机、路由器、防火墙)。端口的主要职责是**在数据链路层(OSI 第 2 层)转发以太网帧**。

 

1. **关键概念:**

    * **MAC 地址表:** 交换机内部维护一张表,记录了每个端口上学习到的源 MAC 地址及其对应的端口号。这是交换机进行智能转发的核心依据。

    * **学习 (Learning):** 当一个帧从某个端口进入交换机时,交换机会查看该帧的**源 MAC 地址**,并将其与接收端口关联起来,记录到 MAC 地址表中。

    * **转发 (Forwarding):** 当一个帧需要被转发时,交换机会查看该帧的**目的 MAC 地址**:

        * **已知单播 (Known Unicast):** 如果目的 MAC 地址存在于 MAC 地址表中,且关联的端口不是接收端口,则交换机仅将该帧从那个特定的端口转发出去。

        * **未知单播 (Unknown Unicast):** 如果目的 MAC 地址不在 MAC 地址表中,交换机会将该帧**泛洪 (Flood)** 到属于**同一个 VLAN** 的所有其他端口(除了接收端口本身)。

        * **广播 (Broadcast):** 目的 MAC 地址为 `FF:FF:FF:FF:FF:FF` 的帧,会被泛洪到属于**同一个 VLAN** 的所有其他端口。

        * **组播 (Multicast):** 处理方式更复杂,通常涉及 IGMP Snooping 等协议,默认行为也是泛洪到同一个 VLAN 的所有端口,直到学习到组播成员位置。

    * **过滤 (Filtering):** 如果目的 MAC 地址存在于 MAC 地址表中,且关联的端口**就是**接收端口本身(意味着目标设备就在发送设备所在的网段),则交换机**丢弃**该帧(不会转发到其他端口)。

    * **泛洪域:** 默认情况下,一个交换机的所有端口属于同一个广播域。广播帧和未知单播帧会被发送到所有端口。VLAN 的核心作用就是**分割广播域**。

 

## 二、 VLAN (虚拟局域网) 基础

 

VLAN 是一种将单个物理网络在逻辑上划分为多个独立广播域的技术。属于不同 VLAN 的设备,即使连接在同一台交换机上,**在二层也无法直接通信**(广播、组播、未知单播都被限制在本 VLAN 内)。

 

1. **核心目的:**

    * **分割广播域:** 减少不必要的广播流量,提高网络性能和安全性。

    * **增强安全性:** 隔离不同部门、用户组或敏感设备之间的二层通信。

    * **简化管理:** 逻辑分组设备,配置更改(如添加、移动设备)更灵活,不受物理位置限制。

    * **优化性能:** 将流量限制在需要的区域内。

 

## 三、 端口类型与 VLAN 关联

 

交换机端口需要配置其 VLAN 成员关系模式,决定了它如何处理带有 VLAN 标签的帧:

 

1. **接入端口 (Access Port):**

    * **用途:** 连接**终端设备**(PC、打印机、服务器、AP 等),这些设备通常**不理解也不发送带 VLAN 标签的帧**。

    * **工作原理:**

        * **入向流量 (Ingress):** 当交换机从接入端口收到一个**无标签帧**时,它会根据该端口配置的 **PVID (Port VLAN ID, 默认通常是 VLAN 1)** 给这个帧**打上对应的 VLAN 标签**。

        * **出向流量 (Egress):** 当交换机需要将一个帧从接入端口发送出去时,它会先**移除该帧的 VLAN 标签**(因为连接的设备通常不认识标签),只发送原始的以太网帧。

    * **配置:** 一个接入端口**只能属于一个 VLAN**(除了 Voice VLAN 等特殊情况)。

 

2. **干道端口 (Trunk Port):**

    * **用途:** 连接**另一台交换机、路由器或支持 VLAN 的服务器**。用于**承载多个 VLAN 的流量**。

    * **核心机制:802.1Q 标签 (Tagging):** 为了在一条物理链路上区分不同 VLAN 的帧,交换机使用 IEEE 802.1Q 标准在原始的以太网帧的源 MAC 地址和类型/长度字段之间插入一个 **4 字节的 VLAN 标签**。这个标签中包含一个 **12 位的 VLAN ID (VID)**,范围是 1-4094。

    * **工作原理:**

        * **入向流量 (Ingress):**

            * 如果收到的是**带标签的帧**,交换机会读取其中的 VID,并根据该 VID 决定如何处理和转发这个帧(查找该 VLAN 的 MAC 地址表)。

            * 如果收到的是**无标签帧**,交换机会根据干道端口配置的 **Native VLAN (本征 VLAN)** 给这个帧打上 Native VLAN 的标签。**重要提示:** 链路两端的 Native VLAN **必须一致**,否则可能导致安全问题或通信故障。

        * **出向流量 (Egress):**

            * 当交换机需要将一个帧从干道端口发送出去时,它**保留**该帧的 VLAN 标签(802.1Q 标签),这样对端设备才能知道这个帧属于哪个 VLAN。

            * 唯一的例外:如果该帧的 VLAN ID 与干道端口配置的 **Native VLAN ID** 相同,交换机在发送时会**移除**该帧的 VLAN 标签(发送无标签帧)。对端设备收到无标签帧后,同样会根据自己的 Native VLAN 配置给它打上标签。

    * **配置:** 一个干道端口可以**允许一个或多个 VLAN 的流量通过**。通常会明确指定允许哪些 VLAN 通过 (`switchport trunk allowed vlan ...`)。

 

3. **其他端口类型 (可选):**

    * **Hybrid Port (混合端口 - 华为/华三等厂商):** 可以同时处理带标签帧和无标签帧,可以灵活配置某些 VLAN 的帧带标签发送,某些 VLAN 的帧不带标签发送。功能上结合了 Access 和 Trunk 的特点。

    * **Voice Access Port (语音接入端口 - 思科等厂商):** 一种特殊的接入端口,通常配置一个 **Data VLAN** 用于连接 PC,一个 **Voice VLAN** 用于连接 IP 电话。IP 电话发出的帧带有 Voice VLAN 的标签,PC 发出的帧无标签(属于 Data VLAN)。交换机发送给 IP 电话的帧带 Voice VLAN 标签,发送给 PC 的帧不带标签(属于 Data VLAN)。

 

## 四、 VLAN 转发原理 (综合过程)

 

假设两台交换机通过干道链路连接,下面有连接 PC 的接入端口。PC1 在 VLAN 10, PC2 在 VLAN 20,PC3 也在 VLAN 10。

 

1. **同 VLAN 内通信 (PC1 -> PC3):**

    * PC1 发送一个目标 MAC 地址为 PC3 的**无标签帧**到交换机 SW1 的 Access Port (属于 VLAN 10)。

    * SW1 收到帧:

        * 学习:记录 PC1 的源 MAC 地址和接收端口到 VLAN 10 的 MAC 地址表。

        * 打标签:因为是 Access Port 收到的无标签帧,SW1 给它打上 VLAN 10 的标签。

        * 转发:查找 VLAN 10 的 MAC 地址表。

            * 如果表中已有 PC3 的 MAC 地址及其端口:则仅将该带 VLAN 10 标签的帧从那个端口转发出去。

            * 如果表中没有 PC3 的 MAC 地址(未知单播):则将该带 VLAN 10 标签的帧**泛洪**到所有属于 VLAN 10 的其他端口(包括连接 SW2 的 Trunk Port 和连接 PC3 的 Access Port)。

    * 帧到达目标端口:

        * 如果是 SW1 上连接 PC3 的 Access Port:SW1 **移除** VLAN 10 标签,将原始的无标签帧发送给 PC3。

        * 如果是 SW1 上连接 SW2 的 Trunk Port:SW1 **保留** VLAN 10 标签,将带标签的帧发送给 SW2。

    * SW2 通过 Trunk Port 收到带 VLAN 10 标签的帧:

        * 学习:记录源 MAC 地址(PC1)和接收端口(Trunk Port)到 VLAN 10 的 MAC 地址表。

        * 转发:查找 VLAN 10 的 MAC 地址表,找到 PC3 的 MAC 地址在本地 Access Port 上。

        * 从连接 PC3 的 Access Port 发送:SW2 **移除** VLAN 10 标签,将原始的无标签帧发送给 PC3。

 

2. **不同 VLAN 间通信 (PC1 -> PC2):**

    * PC1 发送一个目标 MAC 地址为 PC2 的**无标签帧**到 SW1 的 Access Port (属于 VLAN 10)。

    * SW1 收到帧:

        * 学习:记录 PC1 的源 MAC 地址和接收端口到 VLAN 10 的 MAC 地址表。

        * 打标签:打上 VLAN 10 标签。

        * 转发:查找 VLAN 10 的 MAC 地址表寻找 PC2 的 MAC 地址。

            * **关键点:** PC2 属于 VLAN 20。在 VLAN 10 的 MAC 地址表中**不可能找到**属于 VLAN 20 的 PC2 的 MAC 地址(因为学习是基于 VLAN 的)。因此,SW1 会将该帧作为**未知单播帧**在 VLAN 10 内泛洪(泛洪范围不包括 VLAN 20 的端口)。

    * **结果:** PC2 **永远收不到** PC1 发来的帧。**二层交换机无法实现不同 VLAN 间的通信。**

    * **解决方案:** 必须通过 **三层设备(路由器或三层交换机)** 进行路由。PC1 需要将发往 PC2 的流量发送给其**默认网关**(网关 IP 地址通常配置在 VLAN 10 的 SVI 或路由器接口上)。网关设备(路由器/三层交换机)检查目的 IP 地址 (PC2),发现它属于 VLAN 20,于是将数据包路由到 VLAN 20 的接口/VLAN,再由该接口所在的交换机进行二层转发,最终送达 PC2。

 

## 总结关键点

 

1. **MAC 地址表是按 VLAN 维护的。** 这是 VLAN 隔离的基础。

2. **Access Port:** 连接终端。收帧打标签(PVID),发帧去标签。只属于一个 VLAN。

3. **Trunk Port:** 连接

你可能感兴趣的:(网络)