gpt4 book ai didi

macos - 当 MAC 层的队列已满时,现实世界中会发生什么?降低?

转载 作者:可可西里 更新时间:2023-11-01 02:52:57 33 4
gpt4 key购买 nike

最近我在用模拟器做网络实验。我发现当 MAC 层的队列已满,并且上层(例如 IP)仍然向下转发数据包时,此实现选择丢弃这些数据包。

我想知道的是,在现实世界的实现中,比如 Linux 内核中的协议(protocol)栈,如果 MAC 层的队列(接口(interface)的缓冲区?)已满,并且有更多的数据包来自套接字,它会选择删除它们或分配更多内存?为什么?

谢谢。

最佳答案

正确的做法应该是流掉。这会将 IP 堆栈推回到套接字层。 sendsendto API 将阻塞或失败,从而建立流量控制(套接字的发送速度不应超过 MAC 层的发送速度)。

唯一应该丢弃数据包的时间是在多路分解点。这是有两个分支要发送到其中一个被阻塞的情况。在这里你必须丢弃数据包,因为一个分支可能不会阻止流量流下一个分支,因为另一个分支被阻塞。但是只有一个发送分支的地方你总是流走。

关于macos - 当 MAC 层的队列已满时,现实世界中会发生什么?降低?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5026464/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com