从共享介质到逐帧转发

网络交换机是连接多个网络端口并选择转发路径的设备。这里讨论常见的以太网交换机,其基本功能位于数据链路层,可以理解为多端口网桥。它处理以太网帧,而不是像物理层集线器那样,把一端收到的电信号简单送往其他端口。

集线器所连接的设备共享网段带宽;交换机则为各端口形成独立链路,使不同端口之间的通信不必全部争用同一条介质。不过,独立接入链路并不等于每对设备都获得无限带宽。帧仍须经过内部转发结构,从入口送达出口,最终受目的端口以及内部资源限制。

参考:[2] [3]

学习源地址,查询目的地址

交换机收到帧时,从源MAC地址学习“这个地址可从哪个端口到达”,并记录所属VLAN。转发时查询的是目的MAC地址:若已知且出口不同于入口,就向对应端口发送;若目的仍在入口所连接的网段,则不再把帧送回去。动态记录会随新帧更新,也会在长期不用后老化。

例如,A与B接在同一VLAN的不同端口。A首次向B发帧时,交换机可以学会A的位置,但不一定知道B的位置,于是把未知单播帧泛洪到该VLAN内除入口外允许转发的端口。B回复后,交换机再学会B的位置,以后通常即可定向转发。学习不是预先询问所有设备,也不是从目的地址凭空推知它所在的位置。

参考:[1]

碰撞域与广播域不能混同

在半双工以太网中,交换机把原来共享的碰撞范围分隔开;正常全双工点对点链路则不按共享介质的方式竞争发送。因此,“减少碰撞”不能解释现代交换网络里的全部性能问题。广播帧仍会在所属VLAN的允许端口间传播,未知单播也可能泛洪,交换机并非任何时候都只发给一个端口。

VLAN把二层转发划分成不同的广播域,同一VLAN可以跨越多台交换机。跨IP网络的转发属于路由功能,依据IP地址及路由信息,而非仅靠MAC地址学习。三层交换机把这类路由能力集成进设备,不意味着普通二层交换机天然具备跨网段路由能力。

参考:[1] [2]

交换结构、缓存与实际吞吐

内部交换结构负责把选定的入口数据送往出口;多个入口同时争用一个出口时,出口一次只能发送有限的数据,其他帧需要排队。以Cisco的一类Nexus 9000芯片为例,出口使用共享存储缓存,但共享有芯片分片和缓冲池的范围,并非所有端口都能任意使用整机全部缓存。

假设多个入口同时要求向一个每秒10吉比特的出口送出总计每秒15吉比特的数据,缓存只能吸收暂时的差额。若过载持续,缓存终会耗尽并发生丢弃;增加缓存不能长期突破出口速率。评估交换机因此要同时看流量分布、出口瓶颈、转发能力和缓存行为,而不能只把各端口标称速率相加,就当作任何通信模式下都能达到的吞吐量。

参考:[3]