当两台计算机同时向全双工交换机中的第三台计算机传输数据时会发生什么?

网络工程 思科 cisco催化剂 转变 以太网
2021-07-27 15:26:33

考虑以下场景:

我有 2 台 PC(PC1 和 PC2)想要在全双工以太网交换机中同时传输到 PC3。让我们考虑所有端口都在同一个 VLAN 中,那么交换机内部会发生什么?谁先传输到PC3?

我之前读过使用CSMA/CD,但仅在早期的半双工以太网版本中使用它,并且交换机的每个端口都是一个冲突域,如果 2 台机器试图同时传输,一个执行算法以给每台计算机一个随机时间来传输和解决冲突问题。但是,在全双工交换机中,我读到消除了冲突的可能性,因此,如果 2 台 PC 尝试同时传输,交换机内部会发生什么?交换机是否执行算法来选择谁先传输?

4个回答

交换机会将来自两个发送系统的传入数据帧完全加载到其缓冲区中。我不确定它如何确定哪个帧将排在队列中以进行后续转发;但它可能基于帧开头的初始接收时间。然后交换机通过传输缓冲区队列将帧一个接一个地发送到目标端口/段。

帧“相互碰撞”没有问题。真正的问题是最终端口/段能否足够快地接受帧。(当然,交换机是否可以足够快地处理其缓冲区/队列。)

非常有趣的问题,不幸的是没有任何单一的正确答案,因为确切的解决方案因硬件而异。

但是,在第 231-232 页的Computer Networks - a Systems Apparoch明确讨论了这个问题

称为“阳光开关”的设计解决方案的要点是您有图表输入--batcher--trap--selector==banyan====outputs,并且有一个延迟框将选择器连接到batcher。我引用:

当超过 l(ed. size of banyan)数据包在同一周期中被指定为单个输出时,它们将通过延迟盒重新循环并在下一个周期重新提交给交换机。

并进一步:

陷阱网络识别那些能够通过榕树(每个输出端口最多 l 个)离开交换机的数据包,并将其余数据包标记为再循环。

两台计算机发送到第三台计算机的时间总是会有一些差异,除非您在交换机上做任何特殊的事情,否则它将在 FIFO 的基础上传输,因此首先到达的帧将首先传输。

交换机在进入交换机时一次转发一个数据包,因此不会发生冲突。然后 PC3 将处理来自 PC1 和 PC2 的数据包,划分其 CPU 时间。窗口和缓冲将控制通信流。