有人向我解释说,为了支持交换机的多种速度类型(例如,一个端口为 100 Mb/s,另一个端口为 1 Gb/s),需要存储转发模式。我想问一下为什么这个选项是必要的?
最重要的是,特别提到了端口缓冲,这导致我可能误解共享内存是不需要的,甚至是不可能的。
有人向我解释说,为了支持交换机的多种速度类型(例如,一个端口为 100 Mb/s,另一个端口为 1 Gb/s),需要存储转发模式。我想问一下为什么这个选项是必要的?
最重要的是,特别提到了端口缓冲,这导致我可能误解共享内存是不需要的,甚至是不可能的。
如果进入交换机的帧使用 1G 端口,但从 100M 端口转发出去,则帧的传入速度可能比传出速度快。所以它们需要被缓冲,直到它们都可以被传输。
共享内存和端口缓冲并不相互排斥:
数据包的有效载荷将在传输之前存储在共享内存中(想想将广播帧存储 48 次以将其从每个端口泛洪是多么低效)。
当多个数据包从不同的入口接口到达交换机时,端口缓冲就会发挥作用,所有数据包都发往一个(或多个)公共出口接口。
即使所有端口的速度都相同,交换机也需要能够使用存储和转发作为后备。否则,当网络开始忙碌时,大量数据包最终会被丢弃,因为它们的输出端口被另一个传输阻塞。
关于速度,如果传入和传出端口的速度不同,那么交换机必须采取措施来适应这种情况。
如果传出端口比传入端口慢,那么它可以在收到帧头并确定目标端口后立即开始传出传输,但最终将不得不缓冲大部分帧。
如果传出端口比传入端口快,则在确定它已接收到足够比例的帧之前,它无法开始传输。由于“以太网 II”帧没有长度字段,这实际上意味着等待数据包标记的结束,从而使交换机有效地“存储和转发”。
对于每个端口缓冲区的共享内存而言,可以构建基于纯共享内存的交换机,但对共享内存系统的要求将非常高。共享内存必须能够支持以不同速度运行并写入内存不同部分的多个同时数据流。共享内存的总带宽必须非常高。