只是为了澄清一些术语,这实际上可能会使水有点混浊。@mellowd 的回答是一个很好的简短回答。
CLNS 是 OSI 无连接网络服务定义:它指定服务用户(传输层)用来与其对等传输层通信的接口。CLNP 是提供该服务的 OSI 协议,现在很少使用了。
ISIS 并不早于 CLNS,但这无关紧要,因为 ISIS 可以在没有 CLNS 的情况下使用。它是 OSI 网络层的一部分,因为它用于帮助 CLNP(或者在我们的例子中是 IP,另一个网络层协议)完成它的工作。ISIS 不会在 CLNS 或 CLNP 上运行;它直接在链路层上运行。(这与通过 IP 运行的 OSPF 形成对比。ISIS 在学术上更正确,但 OSPF 更快地启动并运行在一种新的链路上。哇。)
尽管出于合理的原因,术语“clns mtu”有点误导。Cisco 使用“clns”来配置很多关于以前的 OSI 网络层的东西,包括 ISIS 的某些方面。因此,在思科捆绑在“clns”下的一堆东西中,它们有“mtu”,这意味着“OSI 网络层中的任何东西都应该假设这是底层的 MSDU(最大服务数据单元)”。这将决定任何网络层 PDU 的最大大小,不包括 L2 开销。
所以,这个“clns mtu”实际上在 OSI 网络层的底部运行,就在它和它运行的任何链路层之间。但这不是官方术语。这正是思科所说的(毫无疑问,现在许多其他实现都使用类似的配置模型。)
MSS 是 TCP 的最大分段大小。由于 TCP 很少在 CLNP 上运行(希望 rfc-1006 和 TUBA 已死),我们永远不会谈论 MSS 和 CLNS MTU 之间的关系。如果我们这样做,它会很复杂,因为 CLNP 标头大小是可变的,并且取决于地址 (NSAP) 长度,最多可以是 20 字节,加上选项,最大标头为 254 字节。我们不要去那里。
那么,重要的是什么?那么 ISIS LSP(链路状态 PDU)的大小必须与任何 L1 或 L2 区域相同,以便该区域中任何路由器发出的 LSP 可以通过任何链路泛洪到所有其他路由器。因此,找到 MTU 减去 L2 开销的最小值的链路,并在所有路由器上使用该值。
最好保守一点,在大多数情况下,尽可能挤出每个字节并不重要。ISIS 将对其 LSP 进行分段,并在传播链路状态信息方面相对有效。随时为 dot1q 标签或其他任何东西留出空间,以防您在 ISIS 路由器之间使用隧道。