以太网MAC协议基于CSMA/CD,它定义了公平碰撞处理的算法:
如果 NIC 检测到冲突,它会发送堵塞信号并进入二进制指数退避:
在第 m 次连续冲突之后,NIC 从 {0,1,2,3, ..., 2^m - 1} 中随机选择 K
NIC 等待 K * 512 位时间,然后返回发送步骤:
如果 NIC 感知到通道空闲,则开始帧传输。
如果 NIC 感知到通道忙,则等待直到通道空闲,然后传输。
我的问题是,是否有可能生产出不公平地实施协议的 NIC?如果可以,有什么理由这样做吗?
例如,在所有情况下,在尝试重新传输之前始终等待 0 位时间,从而在存在竞争连接时为客户端提供更高的传输优先级。
对于通常是点对点的以太网连接,主机似乎没有理由主张传输优先级,但我想知道我是否遗漏了什么。
问候,
答案1
非常理论化,但很有趣的问题。我会尽力回答的 :)
以太网最初是基于计算机通过共享同轴电缆作为广播传输介质进行通信的理念(例如 10-Base2、10-Base5 标准)。之后出现了使用点对点 UTP 电缆的 10-BaseT,但整个网络仍然是一个很大的冲突域(因为使用了中继器/集线器)。没有冲突解决协议(如 CSMA/CD)的网络根本无法工作。这让我们得出另一个结论:没有正确处理 CSMA/CD 的 NIC 可能会堵塞整个共享冲突域,然后网络管理员必须尝试找到工作站并将其标记为损坏 :)
另一件事是,传输是双向通信。如果唯一的 NIC 是具有“改进的”延迟的一侧,那么您在流量优先级方面将一无所获:物理连接的另一侧(例如交换机)也必须实施“不公平”的协议。在当今的交换式以太网中,除了修改后的 NIC 之间在该铜线/光纤上发生冲突的可能性更大之外,它不会产生任何影响。
最后但并非最不重要的一点是,以太网协议是使用 NIC 上的芯片实现的。您必须找到一种方法来修改 NIC 本身的固件。我猜这对大多数具有硬编码固件的现代 NIC 来说可能是一项艰巨的任务。
问候
答案2
您不会获得“更高的优先级”,但发生冲突的可能性会更高。当然,如果您使用的是交换式以太网或负载较轻的共享电缆,则一开始您很少发生冲突,也很少发生退避。