首先,我们来看直通交换方式。这种方式就像一个纵横交叉的线路矩阵电话交换机,当数据包到达输入端口时,交换机只检查包头的14个字节,以获取目的地址,然后迅速在输入与输出端口之间建立连接,将数据包直接转发到目标端口。这种方法的优点在于延迟小,交换速度快。然而,它也有明显的缺点:由于数据包内容并未被保存,因此无法进行错误检测,容易导致误传;同时,由于缺乏缓存,无法直接连接不同速率的输入和输出端口,容易产生丢包现象。
接下来是存储转发方式。这种方式在计算机网络中应用广泛。交换机会先将数据包缓存起来,进行错误检查,过滤掉冲突包错误。确认数据包无误后,再从包中提取目的地址,通过查找表确定输出端口,最后将数据包发送出去。尽管存储转发方式在数据处理时延时较大,但它能进行错误检测,支持不同速度的输入和输出端口间的交换,有效改善网络性能。此外,它还能实现不同速度端口间的转换,保持高速端口和低速端口的协同工作。
第三种方式是碎片隔离式,这是介于直通式和存储转发式之间的一种方案。在转发前,它会检查数据包是否达到64个字节(512 bit)。如果数据包长度小于64字节,说明是假包,交换机会丢弃它;如果大于64字节,则正常发送。这种方法的数据处理速度介于直通式和存储转发式之间,但能有效避免假包的转发,因此被广泛应用于低档交换机中。
在碎片隔离式中,交换机使用了一种特殊的缓存——先进先出的FIFO(First In First Out)。当数据帧进入FIFO时,如果帧的长度小于512 bit,那么FIFO中的内容(残帧)会被丢弃。这就避免了普通直通转发交换机存在的残帧转发问题,提高了网络传输效率。
总的来说,这三种交换方式各有优劣。直通式交换速度快,但缺乏错误检测;存储转发式能够检测错误,但延迟较大;碎片隔离式则介于两者之间,既能避免残帧转发,又能实现一定的错误检测。在实际应用中,交换机的设计者会根据网络的需求和环境,选择合适的交换方式,以实现最优的网络性能。
目前交换机在传送源和目的端口的数据包时通常采用直通式交换、存储转发式和碎片隔离方式三种数据包交换方式。目前的存储转发式是交换机的主流交换方式。
1、直通交换方式(Cut-through)
采用直通交换方式的以太网交换机可以理解为在各端口间是纵横交叉的线路矩阵电话交换机。它在输入端口检测到一个数据包时,检查该包的包头,获取包的目的地址,启动内部的动态查找表转换成相应的输出端口,在输入与输出交叉处接通,把数据包直通到相应的端口,实现交换功能。由于它只检查数据包的包头(通常只检查14个字节),不需要存储,所以切入方式具有延迟小,交换速度快的优点。所谓延迟(Latency)是指数据包进入一个网络设备到离开该设备所花的时间。
它的缺点主要有三个方面:一是因为数据包内容并没有被以太网交换机保存下来,所以无法检查所传送的数据包是否有误,不能提供错误检测能力;第二,由于没有缓存,不能将具有不同速率的输入/输出端口直接接通,而且容易丢包。如果要连到高速网络上,如提供快速以太网(100BASE-T)、FDDI或ATM连接,就不能简单地将输入/输出端口“接通”,因为输入/输出端口间有速度上的差异,必须提供缓存;第三,当以太网交换机的端口增加时,交换矩阵变得越来越复杂,实现起来就越困难。
2、存储转发方式(Store-and-Forward)
存储转发(Store and Forward)是计算机网络领域使用得最为广泛的技术之一,以太网交换机的控制器先将输入端口到来的数据包缓存起来,先检查数据包是否正确,并过滤掉冲突包错误。确定包正确后,取出目的地址,通过查找表找到想要发送的输出端口地址,然后将该包发送出去。正因如此,存储转发方式在数据处理时延时大,这是它的不足,但是它可以对进入交换机的数据包进行错误检测,并且能支持不同速度的输入/输出端口间的交换,可有效地改善网络性能。它的另一优点就是这种交换方式支持不同速度端口间的转换,保持高速端口和低速端口间协同工作。实现的办法是将10mbps低速包存储起来,再通过100Mbps速率转发到端口上。
3、碎片隔离式(Fragment Free)
这是介于直通式和存储转发式之间的一种解决方案。它在转发前先检查数据包的长度是否够64个字节(512 bit),如果小于64字节,说明是假包(或称残帧),则丢弃该包;如果大于64字节,则发送该包。该方式的数据处理速度比存储转发方式快,但比直通式慢,但由于能够避免残帧的转发,所以被广泛应用于低档交换机中。
使用这类交换技术的交换机一般是使用了一种特殊的缓存。这种缓存是一种先进先出的FIFO(First In First Out),比特从一端进入然后再以同样的顺序从另一端出来。当帧被接收时,它被保存在FIFO中。如果帧以小于512比特的长度结束,那么FIFO中的内容(残帧)就会被丢弃。因此,不存在普通直通转发交换机存在的残帧转发问题,是一个非常好的解决方案。数据包在转发之前将被缓存保存下来,从而确保碰撞碎片不通过网络传播,能够在很大程度上提高网络传输效率。