以太网接收缓冲区已满时会发生什么

时间:2018-01-17 09:08:46

标签: tcp embedded ethernet

我有一个非常新手的问题:假设我有两台设备通过以太网(TCP / IP)以100Mbps通信。在一方面,我将为设备提供要传输的数据。另一方面,我将使用收到的数据。我可以选择两种设备的足够缓冲区大小。

现在我的问题是:如果来自第二台设备的数据消耗率低于第一台设备的数据传输速率,那么将会发生什么?

我发现了一些,谈论超限计数器。

以太网通信中是否有任何内容表明设备暂时无法接收新数据包?所以我可以暂停接收设备的传输。

有人可以向我提供一份或多份详细解释此问题的文件,因为我找不到任何文件。

先谢谢你

1 个答案:

答案 0 :(得分:2)

以太网协议在MAC控制器芯片上运行。 MAC有两个独立的RX环(用于入口数据包)和TX环(用于出口数据包),这意味着它本质上是全双工的。 RX / TX环也具有片上FIFO,但环保持PDU在主机存储器缓冲区中。我在其中一个相关的post

中介绍了一些功能

现在,可能会发生拥塞,但RX和TX又是两条不同的路径,并且将由于以下条件而导致

  1. 与线路速率相比,rx-buffers / tx-buffers的队列/队列不快。这种情况发生在CPU忙碌且没有足够快地响应中断时。
  2. 主机内存较慢(例如:DRAM而不是SRAM),或内存不足(由于内存泄漏)
  3. 缓冲区的中间处理时间过长。
  4. 现在,关于对等设备:独立系统可以注意背压,当发生这种情况时,我们通常会拖尾数据包。如果对等设备对该设备的问题很慢,这对对等设备是不可知的。

    溢出的定义是:接收方硬件无法处理接收到硬件缓冲区的数据的次数,因为输入速率超过了接收方处理数据的能力。

    我建议选择任何MAC控制器的数据表(例如:Intel's ethernet Controller),您将获得所有问题。或者,如果您看到任何MAC控制器的设备驱动程序。

    TCP / IP是位于内核内部的上层堆栈(也可以位于用户平面中),而ARPA协议(以太网)位于MAC控制器硬件内部。如果您了解这一点,您将了解路由器和交换机之间的区别(没有TCP / IP堆栈)。