如果我的软件没有尝试这样做,本地网络上的 MTU 大小是否会发生变化?

网络工程 pmtud
2021-07-16 22:24:29

从 ip 手册页 ( man 7 ip) 中,我们了解到 MTU 可能会随时间变化。

当启用 PMTU 发现时,内核会自动跟踪每个目标主机的路径 MTU。当它通过 connect(2) 连接到特定对等方时,可以使用 IP_MTU 套接字选项方便地检索当前已知路径 MTU(例如,在发生 EMSGSIZE 错误之后)。 路径 MTU 可能会随时间变化。 对于具有多个目的地的无连接套接字,还可以使用错误队列访问给定目的地的新 MTU(请参阅 IP_RECVERR)。每个传入的 MTU 更新都会出现一个新错误。

我认为这是一个罕见的事件,可能发生在我无法控制的设备上。

我的环境是通过交换机连接的几台计算机的本地网络。我想在这样的环境中,MTU 永远不会“自行”改变。这是一个正确的假设吗?

1个回答

任何给定链路上的 MTU 是链路上的 MTU。PMTUD 的作用是发现从一台主机到另一台主机的路径中任何链路的最小 MTU。由于网络路由是动态的,路径可能会发生变化,因此路径中最小的 MTU 可能会发生变化。

如果您担心业务网络中的 MTU,那不会改变,除非您对业务网络进行某种类型的更改(例如链接故障或建立新链接可能会改变路径)。一次只路由一个数据包,不考虑任何其他数据包,因此网络的更改可能会更改数据包采用的路径,即使在单个数据包流中也是如此。应该对网络进行某种类型的监控,以便在出现故障或其他变化时通知您。

真正令人担忧的是公共 Internet 上两台主机之间的 MTU,其中路径(因此可能是路径中最小的 MTU)确实一直在变化。