以太网交换机工作在 OSI 模型中的第二层, 类似于一台专用的特殊计算机, 主要包括中央处理器(CPU) 、随机存储器(RAM) 和操作系统。它利用专门设计的芯片 ASIC(Application Specific Integrated Circuits)使交换机以线路速率在所有的端口并行进行转发,因此,它比同在二层利用软件进行转发的网桥速度快的多。

以太网交换机的主要功能

(1) 隔离各网段内的通信。网段是指通过类似以太网交换机这样的设备将网络划分成更小的单元, 每个网段都使用 CSMA/CD 访问方法来实现网段内多个用户之间的通信流。这种分段使得不同网段上的多个用户能同时发送信息, 而不会降低网络速度。

(2) 通过建立更小的冲突域为每个用户提供更多的带宽。以太网交换机基于2层 MAC 地址将数据报文定向到适当的一个或多个端口, 以实现对通信的过滤。通过建立更小的冲突域, 以太网交换机可以保证每个用户拥有更多的带宽。

以太网交换机的工作原理

(1) 当交换机从某个端口收到一个数据包, 它先读取包头中的源MAC 地址, 这样它就知道源 MAC 地址的机器是连在哪个端口上的;

(2) 再去读取包头中的目的 MAC 地址, 并在地址表中查找相应的端口;

(3) 如表中有与这目的 MAC 地址对应的端口, 把数据包直接复制到这端口上;

(4) 如表中找不到相应的端口则把数据包广播到所有端口上, 当目的机器对源机器回应时, 交换机又可以学习目的 MAC 地址与哪个端口对应,在下次传送数据时就不再需要对所有端口进行广播了。

(5) 不断的循环这个过程, 对于全网的 MAC 地址信息都可以学习到,二层交换机就是这样建立和维护它自己的地址表。

 

我们用下面的例子来说明这个过程:

当交换机被初始化时, 其 MAC 地址表是空的, 如图 1 所示。此时如果有数据帧到来, 交换机就向除了源端口之外的所有端口转发。

以太网交换机 交换架构 以太网交换机原理_存储转发

 

假设主机 A 给主机 C 发送数据。交换机从 F0/1 端口接到了这个数据帧之后, 就来查找其 MAC 地址表。由于 MAC 地址表为空, 则向除了F0/1 口以外的所有端口转发该帧。同时, 交换机就会学习到主机MAC 地址 0010.7a60.1111 与端口 F0/1 相对应, 于是这个记录就被记录到 MAC 地址表中, 如图 2 所示。

以太网交换机 交换架构 以太网交换机原理_数据帧_02

当主机 C 响应主机 A 的时候, 交换机会把 C 的 MAC 地址当作源地址, 从而学习到 MAC 地址 0100.7a60.2222 与端口 F0/2 对应, 同样,这个记录就被记录到 MAC 地址表中, 如图 3 所示。

以太网交换机 交换架构 以太网交换机原理_以太网交换机 交换架构_03

现在假设主机 B 给主机 A 发送数据。同理, 交换机添加主机 B 的 MAC 地址到地址表中, 不过, 此时, 交换机并不转发该数据帧, 因为交换机知道主机 A 的位置, 所以交换机只向端口 F0/1 发送数据。经过不断循环这样一个学习的过程, 直到连接到交换机的 MAC地址表最终建立完毕, 如图 4 所示。此时如果有数据帧到来, 交换机就会根据 MAC 地址表中相应的条目进行转发。

以太网交换机 交换架构 以太网交换机原理_数据帧_04

 

 

 

从以太网交换机的工作原理可以总结出来:

(1) 由于交换机对多数端口的数据进行同时交换, 这就要求具有很宽的交换总线带宽, 如果交换机有 N 个端口, 每个端口的带宽是 M,交换机总线带宽超过 N*M, 那么该交换机就可以实现线速交换。举例: 一个带有 2 个 1000M 输入输出接口的 24 口百兆交换机, 背板带宽: 24×100×2(全双工) + 1000×2×2(全双工) = 8.8G, 所以这台交换机只要背板带宽超过 8.8G 那么就能够实现端口百兆线速交换。

(2) 学习端口连接的机器的 MAC 地址信息, 写入地址表。地址表的大小会影响交换机的接入容量。

 

以太网转发帧的模式

以太网交换机使用两种模式进行帧的转发, 即直通( cut- throngh) 式和存储转发(store- and- forward) 式。

(1) 直通方式。交换机在执行直通交换时, 当它接收到帧时, 只读取目的地址, 然后, 在整个帧到达之前, 帧就被转发了出去。这种模式减少了传输延时, 但也减弱了错误检测。

(2) 存储转发方式。当交换机执行存储转发交换时, 在转发之前必须接收到整个帧。然后, 交换机读取目的或源地址, 并且在帧发送之前进行过滤。在交换机接收帧的过程中, 会发生延迟。帧越大, 延迟越长,因为需要更长的时间来读出整个帧。采用这种方式时, 错误可以检测出来, 因为交换机在等待整个帧接收完成的过程中, 它有时间来检查错误。这种方式适用于需要对转发的帧进行线速速率匹配、协议转换或差错检查的情况。如果在差错检测的过程中, 发现数据帧出错, 则将这个错误的数据帧丢弃。