电子科技大学 颜凯 杨宁
局域网交换技术(LAN Switching)解决了共享式网络的性能局限,每个用户都能够独享带宽,从而缓解了带宽不足和网络瓶颈的问题。本文主要探讨交换技术的基本原理和交换模式,并由交换模式引出多层交换技术的概念。
一、 交换技术的基本原理
局域网交换技术是OSI参考模型中的第二层——数据链路层(Data-Link Layer)上的技术,所谓“交换”实际上就是指转发数据帧(frame)。在数据通信中,所有的交换设备(即交换机)执行两个基本的操作:
交换数据帧,将从输入介质上收到的数据帧转发至相应的输出介质;
维护交换操作,构造和维护交换地址表。
下面,我们探讨一下这两个基本操作的具体细节。
1. 交换数据帧
交换机根据数据帧的MAC(Media access Control)地址(即物理地址)进行数据帧的转发操作。交换机转发数据帧时,遵循以下规则:
如果数据帧的目的MAC地址是广播地址或者组播地址,则向交换机所有端口转发(除数据帧来的端口);
如果数据帧的目的地址是单播地址,但是这个地址并不在交换机的地址表中,那么也会向所有的端口转发(除数据帧来的端口);
如果数据帧的目的地址在交换机的地址表中,那么就根据地址表转发到相应的端口;
如果数据帧的目的地址与数据帧的源地址在一个网段上,它就会丢弃这个数据帧,交换也就不会发生。
下面,我们以图1为例来看看具体的数据帧交换过程。
当主机D发送广播帧时,交换机从E3端口接收到目的地址为ffff.ffff.ffff的数据帧,则向E0、E1、E2和E4端口转发该数据帧。
当主机D与E主机通信时,交换机从E3端口接收到目的地址为0260.8c01.5555的数据帧,查找地址表后发现0260.8c01.5555并不在表中,因此交换机仍然向E0、E1、E2和E4端口转发该数据帧。
当主机D与主机F通信时,交换机从E3端口接收到目的地址为0260.8c01.6666的数据帧,查找地址表后发现0260.8c01.6666也位于E3端口,即与源地址处于同一个网段,所以交换机不会转发该数据帧,而是直接丢弃。
当主机D与主机A通信时,交换机从E3端口接收到目的地址为0260.8c01.1111的数据帧,查找地址表后发现0260.8c01.1111位于E0端口,所以交换机将数据帧转发至E0端口,这样主机A即可收到该数据帧。
如果在主机D与主机A通信的同时,主机B也正在向主机C发送数据,交换机同样会把主机B发送的数据帧转发到连接主机C的E2端口。这时E1和E2之间,以及E3和E0之间,通过交换机内部的硬件交换电路,建立了两条链路,这两条链路上的数据通信互不影响,因此网络亦不会产生冲突。所以,主机D和主机A之间的通信独享一条链路,主机C和主机B之间也独享一条链路。而这样的链路仅在通信双方有需求时才会建立,一旦数据传输完毕,相应的链路也随之拆除。这就是交换机主要的特点。
从以上的交换操作过程中,我们可以看到数据帧的转发都是基于交换机内的MAC地址表,但是这个地址表是如何建立和维护的呢?下面我们就来介绍这个问题。
2. 构造维护交换地址表
交换机的交换地址表中,一条表项主要由一个主机MAC地址和该地址所位于的交换机端口号组成。整张地址表的生成采用动态自学习的方法,即当交换机收到一个数据帧以后,将数据帧的源地址和输入端口记录在交换地址表中。思科的交换机中,交换地址表放置在内容可寻址存储器(Content-Addressable Memory, CAM)中,因此也被称为CAM表。
当然,在存放交换地址表项之前,交换机首先应该查找地址表中是否已经存在该源地址的匹配表项,仅当匹配表项不存在时才能存储该表项。每一条地址表项都有一个时间标记,用来指示该表项存储的时间周期。地址表项每次被使用或者被查找时,表项的时间标记就会被更新。如果在一定的时间范围内地址表项仍然没有被引用,它就会从地址表中被移走。因此,交换地址表中所维护的一直是最有效和最精确的地址—端口信息。
二、 交换的模式
交换机在交换数据帧时可以选择不同的模式来满足网络和用户的需要,思科的交换机提供三种交换模式:
1. 存储转发模式
存储转发(Store-and-forward)模式是指交换机收完整个数据帧,并在CRC校验通过之后,才能进行转发操作。如果CRC校验失败,即数据帧有错,交换机则丢弃此帧。这种模式保证了数据帧的无差错传输,当然其代价是增加了传输延迟,而且传输延迟随数据帧的长度增加而增加。
2. 快速转发模式
快速转发(Fast-forward)模式是指交换机在接收数据帧时,一旦检测到目的地址就立即进行转发操作。但是,由于数据帧在进行转发处理时并不是一个完整的帧,因此数据帧将不经过校验、纠错而直接转发,造成错误的数据帧仍然被转发到网络上,从而浪费了网络的带宽。这种模式的优势在于数据传输的低延迟,但其代价是无法对数据帧进行校验和纠错。
3. 自由分段模式
自由分段(Fragment-free)模式是交换机接收数据帧时,一旦检测到该数据帧不是冲突碎片(collision fragment)就进行转发操作。冲突碎片是因为网络冲突而受损的数据帧碎片,其特征是长度小于64字节。冲突碎片并不是有效的数据帧,应该被丢弃。因此,交换机的自由分段模式实际上就是一旦数据帧已接收的部分超过64字节,就开始进行转发处理。这种模式的性能介于存储转发模式和快速转发模式之间。
图2是以上三种交换模式的一个示意图。从中我们可以看到:在进行转发操作之前,不同的交换模式所接收数据帧的长度不同,这也决定了相应的延迟大小。接收数据帧的长度越短,交换机的交换延迟就越小,交换效率也就越高,但相应的错误检测也就越少。
三、 多层交换技术
局域网交换技术的实现通常采用硬件方式。在局域网的数据帧格式中,目的MAC地址的位置是固定的,而且帧头信息的检查和校验非常简单,便于硬件交换的实现。因此传统的局域网交换都是指第二层交换,即根据第二层的信息——目的MAC地址进行。
在交换模式的介绍中,我们可以看到交换机在进行交换操作前需要接收一定长度的数据进行相应的转发检测,如果将检测数据的长度适当增加,即可将二层交换技术扩展为三层交换技术,乃至四层交换技术。
三层交换技术就是将检测数据扩展到ip分组头标部分,通过检测其中的IP地址进行交换,实际上是基于硬件的路由。四层交换技术则是进一步检查IP分组头标中的通信协议类型和端口号,可以看作是基于应用的交换。
现在广泛应用的多层交换技术就是将二层、三层和四层交换技术结合起来,实现“一次路由、多次交换”的功能。
摘自(计算机世界报 第02期D18)