蛮荆

网络基础: 交换机 (拾遗补缺)

2017-07-16

交换机的作用

将很多主机、网关连接在一起,形成一个广播域,使得广播报文仅在这个广播域内传播。

交换机和网卡

可以简单地认为,交换机的每个网线接口后面都是一块网卡,网线接口和后面的电路部分加在一起称为一个 “端口”,也就是说交换机的一个端口就相当于计算机上的一块网卡。

交换机的工作方式和网卡的不同之处在于:

网卡本身具有 Mac 地址,收到到包之后,判断接收方 Mac 地址是不是自己,如果不是发给自己的包,直接丢弃。

交换机的端口不判断接收方 Mac 地址,而是将包存入到缓冲区,然后查询包的接收方 Mac 地址是否已经在 Mac 地址表中有记录了。

Mac 地址表主要包含两个信息:

  1. 设备 (主机) 的 Mac 地址
  2. 设备 (主机) 连接在交换机的哪个端口上

如图所示,Mac 地址和端口一一对应,通过 Mac 地址表可以快速判断出收到的包应该转发到哪个端口。

图片来源: 网络是怎样连接的(户根勤)


Mac 表的维护

交换机 Mac 地址表示例

写入

收到包时,将发送方 Mac 地址以及其输入端口的号码写入 Mac 地址表中。

由于收到包的端口连接着发送这个包的设备,所以只要将这个包的发送方 Mac 地址写入地址表即可。

后续再次收到发往这个地址的包时,交换机就可以将它转发到正确的端口了。

交换机每次收到包时都会执行这个操作,因此只要某个设备发送过网络包,它的 Mac 地址就会被记录到地址表中。

删除

地址表中的记录不能永久有效,应该一段时间不使用后就自动删除。

删除地址表中某条记录,可以防止设备移动时产生问题。

例如开会时把笔记本电脑从办公桌拿到会议室,这时设备就发生了移动,从交换机的角度来看,就是本来 (无线 Wifi) 连接在某个端口上的笔记本电脑消失了。这时如果交换机收到了发往这台笔记本电脑的包,依然会将包转发到原来的端口,通信就会出错。

为了避免上述通信出错问题,必须定时删除过期的记录。

更新

但是,交换机如何知道这台笔记本电脑已经从原来的端口 (位置) 移走了呢?其实很简单,只要笔记本电脑连接到会议室 (新的) 交换机,交换机就会根据笔记本电脑发出的包来更新它的地址表,这样,后续的通信就不会出错了。

重启

当地址表的内容出现异常时,只要重启一下交换机就可以重置地址表,也不需要手动进行维护 (果然,90% 的问题都可以通过重启解决)。


特殊操作

目标端口和源端口相同

当交换机发现一个包的目标端口和源端口是同一个端口,就会直接丢弃这个包。

找不到指定的 Mac 地址

如果交换机在 Mac 地址表中找不到指定的 Mac 地址,这可能是因为具有该地址的设备还没有向交换机发送过包,或者这个设备 (主机) 已经离线,导致其地址被删除了。

这种情况下,交换机无法判断应该把包转发到哪个端口,只能将包转发到除了源端口之外的所有端口上 (类似广播),这样无论该设备连接在哪个端口上都能收到这个包 (当然,除了该设备外,其他设备收到包之后会直接丢弃)。

广播

如果接收方 Mac 地址是一个广播地址,那么交换机会将包发送到除源端口之外的其他所有端口 (这里的端口指的是交换机上的 “网线接口”)。

Mac 广播地址: FF:FF:FF:FF:FF:FF

IP 广播地址: 255.255.255.255

如图所示,设备 1 发送了一个广播消息,然后被交换机转发到了设备 2 和设备 3。

交换机广播示例


三层交换机

L3 (三层) 交换机是一种在 L2 (二层) 交换机的基础上增加了路由选择功能的网络硬件,能够基于硬件实现网络功能和转发分组。

L2 交换机可以通过使用 VLAN 分割广播域,但主机之间的包交换必须位于同一 VLAN 范围内,对位于不同 VLAN 上的主机进行通信时,则必须使用路由功能,因此需要在网络上添加额外的路由器。

图片来源: 图解网络硬件(三轮贤一)

L3 交换机无需其他路由器,自身就可以直接完成 VLAN 配置、不同 VLAN 之间的通信。

图片来源: 图解网络硬件(三轮贤一)

现代化的基础设施架构方案中,越来越多组织的内部网络核心交换机采用 L3 交换机。

交换机 VS 集线器

全双工模式

全双工模式是交换机特有的工作模式,它可以同时进行发送和接收操作,集线器不支持。

使用集线器时,如果多台计算机同时发送信号,信号就会在集线器内部混杂在一起,进而无法使用,这种现象称为碰撞,是以太网的一个重要特征。

转发

交换机只将包转发到具有特定 Mac 地址的主机所连接 (对应) 的端口,其他无关端口都是空闲的,这些空闲的端口可以传输其他的包,因此交换机可以同时转发多个包。

集线器会将输入的信号广播到所有的端口,如果同时输入多个信号就会发生碰撞,无法同时传输多路信号,因此从设备整体的转发能力来看,交换机要高于集线器。


FDB

转发表(Forwarding Information Base,FIB)存储了路由器或交换机用于转发数据包的路由信息,用于指导网络设备对数据包进行转发和路由选择,表中的每个条目包含目标网络地址、下一跳地址(或出接口)以及其他相关信息。

网路邻接表 表示网络设备上的邻居关系列表,存储了网络设备直接相连的其他设备的信息,如 Mac 地址、IP 地址等,主要用于维护设备之间的直接通信关系,以便进行数据包的交换和转发。

图片来源: 图解网络硬件(三轮贤一)

# 转发信息库示例

Destination       Next Hop          Interface
0.0.0.0/0         192.168.1.1       Ethernet0
192.168.1.0/24    0.0.0.0           Ethernet1
10.0.0.0/8        192.168.1.2       Ethernet2

所有目标 IP 为 0.0.0.0/0 的数据包,都会被转发到下一跳路由地址 192.168.1.1 (也可以称为网关)。

# 邻接表示例

Neighbor Device   Interface         Mac Address        IP Address
Router1           Ethernet0         00:1A:2B:3C:4D:5E  192.168.1.1
Switch1           Ethernet1         00:11:22:33:44:55  10.0.0.1
Host1             Ethernet2         00:AA:BB:CC:DD:EE  192.168.1.10

下一跳路由地址 192.168.1.1 的路由设备,对应的 Mac 地址为 00:1A:2B:3C:4D:5E。

L3 交换机将转发表和邻接表整合成一份表,FDB(Forwarding Database,转发数据库),注册于内存中并通过硬件处理完成高速检索。

下面是 L3 交换机的内部处理示例图。

图片来源: 图解网络硬件(三轮贤一)

转载申请

本作品采用 知识共享署名 4.0 国际许可协议 进行许可,转载时请注明原文链接,图片在使用时请保留全部内容,商业转载请联系作者获得授权。