PMTU机制原理和缺陷

news/2025/10/15 10:51:24/文章来源:https://www.cnblogs.com/zafu/p/19142801

PMTU 机制原理

PMTU(Path Maximum Transmission Unit,路径最大传输单元)发现机制 是一种用于动态探测从源主机到目的主机之间整条网络路径上最小 MTU 值的技术,目的是避免 IP 数据包在传输过程中被分片。

✅ 核心目标

确保发送的数据包大小不超过路径中任何一跳链路的 MTU,从而避免分片,提升网络效率和可靠性。


🔧 工作原理(以 IPv4 和 IPv6 为例)

  1. 设置“不分片”标志(DF=1)

    • 发送方在发送 IP 报文时,在 IP 头部设置 DF(Don't Fragment)标志位为 1,表示该报文不允许在网络中被分片。
  2. 初始假设 PMTU = 出接口 MTU

    • 源主机通常先假设路径 MTU 等于其本地接口的 MTU(如 1500 字节),并据此发送数据包。
  3. 遇到较小 MTU 链路时丢包并返回 ICMP 错误

    • 当报文经过某个中间路由器时,如果该链路的 MTU 小于报文长度:
      • 路由器会丢弃该报文。
      • 向源主机发送一个 ICMP 差错报文:
        • IPv4:ICMP Type 3, Code 4 —— “Fragmentation needed but DF set”(需要分片但 DF 标志已设置)
        • IPv6:ICMPv6 Type 2, Code 0 —— “Packet Too Big”,且必须携带该链路的 MTU 值
  4. 源主机收到 ICMP 后更新 PMTU 缓存

    • 源主机解析 ICMP 报文中的 MTU 值,并将其作为当前路径的 PMTU。
    • 后续发往同一目的地的数据包将按此更小的 MTU 进行分片或调整(如 TCP 调整 MSS)。
  5. 缓存与老化

    • 操作系统会将探测到的 PMTU 值缓存在路由表中,用于后续通信。
    • 一段时间后或路径变化时,PMTU 可能重新探测。

📌 示例流程:

text
编辑
 
源 → [MTU=1500] → [MTU=1400] → [MTU=1300] → 目的1. 源发 1500B 报文(DF=1)→ 在 MTU=1400 链路被丢弃
2. 路由器回 ICMP:MTU=1400
3. 源改发 1400B 报文 → 在 MTU=1300 链路被丢弃
4. 路由器回 ICMP:MTU=1300
5. 源最终使用 PMTU=1300 发送 → 成功到达

🌐 PMTU 在 TCP 中的应用

  • TCP 在建立连接时会协商 MSS(Maximum Segment Size)。
  • 操作系统根据 PMTU 自动计算 MSS:
    MSS = PMTU - IP头(20B) - TCP头(20B) = PMTU - 40
  • 例如:PMTU=1400 → MSS=1360,确保整个 IP 报文 ≤ 1400B,避免分片。

PMTU 机制可能存在的风险与问题

尽管 PMTU 是优化网络的重要机制,但在实际部署中存在以下主要风险:


⚠️ 1. PMTUD 黑洞(PMTU Black Hole)

这是最常见的问题。

  • 现象:大报文被丢弃,但源主机收不到 ICMP “Too Big” 报文。
  • 原因:
    • 防火墙、安全组或路由器过滤了 ICMP 报文(尤其是 Type 3 Code 4 或 ICMPv6 Type 2)。
    • 管理员出于“安全”考虑禁用了 ICMP 响应。
  • 后果:
    • 源主机无法得知需要减小报文大小。
    • 连接建立成功(小包能通),但传输大数据时卡死或超时。
    • 表现为:网页打不开、SSH 卡顿、大文件传输失败等。

⚠️ 2. 路径动态变化导致 PMTU 过时

  • 网络拓扑变化后,新的路径可能有更小或更大的 MTU。
  • 操作系统缓存的 PMTU 未及时更新,导致次优或失败通信。
  • 虽然 PMTU 有老化机制,但周期较长(如 Linux 默认 10 分钟),无法即时适应。

⚠️ 3. IPv6 环境下 PMTUD 不可绕过

  • 在 IPv6 中,中间设备不允许对报文进行分片,必须依赖 PMTUD。
  • 所有 IPv6 主机必须支持 PMTUD。
  • 一旦 ICMPv6 “Packet Too Big” 被阻断,通信将完全失败,没有退路。

⚠️ 4. 应用层未处理 ICMP 错误

  • 某些应用程序或操作系统内核未能正确处理 ICMP 差错报文。
  • 导致无法调整发送窗口或 MSS,继续发送超大报文,造成持续丢包。

⚠️ 5. 多路径与非对称路由问题

  • 往返路径 MTU 不一致(非对称路由),可能导致 PMTU 探测不准确。
  • 某些路径上的最小 MTU 未被探测到。

✅ 如何缓解 PMTUD 风险?

风险解决方案
PMTUD 黑洞 - 允许 ICMP Type 3 Code 4 / ICMPv6 Type 2 通过防火墙
- 在隧道接口手动设置 MTU 和 MSS(如 mtu 1400mss 1360
动态路径变化 定期探测或使用更激进的老化策略
IPv6 安全过滤 避免过度过滤 ICMPv6,特别是 Type 2
应用兼容性 使用支持 PMTUD 的 TCP 协议栈,或在网关启用 MSS 调整

✅ 最佳实践建议

  1. 在 IPSec、GRE、VXLAN 等隧道接口上手动设置 MTU 为 1400 或 1300
  2. 配置 tcp adjust-mss 1360(适用于 TCP 流量)
  3. 确保安全设备允许关键 ICMP 报文通过
  4. 避免在公网路径上完全禁用 ICMP
  5. 使用 ping 命令手动探测 PMTU(如 ping -f -l 1472 目的IP

总结

项目内容
PMTU 原理 利用 DF 标志 + ICMP 错误报文动态发现路径最小 MTU
优点 避免分片、提高效率、自动适应网络
主要风险 PMTUD 黑洞(ICMP 被过滤)、路径变化、IPv6 依赖性强
推荐做法 结合 PMTUD + 手动 MTU/MSS 调整,避免单点依赖

💡 一句话总结:
PMTUD 是理想的机制,但在现实网络中常因安全策略失效。最稳妥的做法是:在隧道或关键链路上手动设置 MTU 和 TCP MSS,作为 PMTUD 的补充或替代。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/937339.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025 年摇臂钻床厂商最新推荐排行榜:含 3050/3080/3040/3063/50 型号厂家产能与供应优势详解

当前制造业加速向智能化、高效化转型,摇臂钻床作为机械加工核心设备,其品质与供应效率直接决定下游企业生产进度与产品精度。但市场中供应商数量繁杂,部分厂商存在产能不足导致交货延迟、技术落后无法满足定制需求、…

Linux进程 --- 2 - 实践

Linux进程 --- 2 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", &qu…

20232402 2025-2026-1 《网络与系统攻防技术》实验一实验报告

20232402 2025-2026-1 《网络与系统攻防技术》实验一实验报告 1.实验内容 本周学习内容为缓冲区溢出漏洞简介和缓冲区溢出基础知识。 1.1 缓冲区溢出漏洞简介缓冲区是连续的一段存储空间。 缓冲区溢出是指向特定缓冲区…

2025 年最新推荐排水沟厂家排行榜:聚焦树脂 / 线性 / 树脂混凝土 / 成品 /u 型排水沟优质厂家推荐

在市政工程、电厂建设、道路施工等基础设施项目中,排水沟的质量与性能直接关乎工程稳定性和使用寿命。当前市场上排水沟产品质量参差不齐,部分产品存在强度不足、易腐蚀、安装后异响移位等问题,增加后期维护成本且埋…

2025 年最新推荐排水沟厂家排行榜:聚焦树脂 / 线性 / 树脂混凝土 / 成品 /u 型排水沟优质厂家推荐

在市政工程、电厂建设、道路施工等基础设施项目中,排水沟的质量与性能直接关乎工程稳定性和使用寿命。当前市场上排水沟产品质量参差不齐,部分产品存在强度不足、易腐蚀、安装后异响移位等问题,增加后期维护成本且埋…

2025 年盖板源头厂家最新推荐榜单:涵盖电力 / 隧道 / 扣槽 / 室内外电缆沟 / 复合及树脂盖板,深度解析源头厂家原材料采购与成本控制

当前盖板行业应用场景持续拓展,从市政工程到电厂、高速、隧道等领域,对盖板的质量、性能及成本要求愈发严苛。但市场上部分厂家存在原材料把控不严、成本控制失衡、定制服务滞后等问题,导致采购方难以精准筛选优质合…

AC6966B SD配置F组可以吗?ok

虽然《Jieli-AC6966B-V1.0.pdf》只标明了PB7可以做SD CLK,但实测是可以读卡的。 如果读不到ID请检查芯片是否贴好。

2025 年最新紫外线灯厂家推荐排行榜:优质厂家权威榜单发布,含杀菌灯消毒灯选购指南

当前,紫外线灯在空气净化、水处理、食品医药等领域的应用愈发广泛,市场需求持续增长,但行业乱象也随之凸显。众多品牌涌入市场,产品质量差异悬殊,部分产品存在使用寿命短、光衰快、紫外线输出不稳定等问题,严重影…

trading platform

每天拥有超过6万亿美刀交易额的市场,你知道它衍生出多少平台吗?今天我们来盘点一下最牛的十大外汇经纪商。 作为杠杆投资,外汇交易又是收益和风险并存的。所以一个优质安全的平台,从搭建到完善,必须时刻考虑交易系…

GDB 与 GDBServer 远程调试基础命令详解

GDB 与 GDBServer 远程调试基础命令详解 ​一、环境准备​​目标机(嵌入式设备)​​安装 gdbserver(如 arm-linux-gnueabihf-gdbserver)启动 gdbserver并监听端口:bashbash复制gdbserver :2345 /path/to/program …

zedboard + AD-FMCOMMS3-EBZ AD9361 (三) matlab demo 测试

zedboard + AD-FMCOMMS3-EBZ AD9361 (三) matlab demo 测试 AMD FPGA and SoC Devices — Examples

内网穿透的原理和安装

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

.NET 构架下remoting和webservice

“WebService 走 HTTP+SOAP,跨平台却低效;Remoting 走 TCP/二进制,高效但仅限 .NET。二者都已被 WCF → gRPC/WebAPI 取代,如今只出现在遗产系统。

SIMATIC WinCC V8.1 安装教程与功能介绍(附详细图文步骤)超详细

SIMATIC WinCC V8.1是西门子公司推出的先进的过程监视和控制系统软件。它基于Windows操作系统,继承了前几代产品的优良特性。该软件提供更好的兼容性,能支持更多硬件设备和控制系统。拥有现代化的Web UI,用户可通过…

Zerotier,内网穿透神器 - IT苦行僧

zerotier是基于点对点的网络链接速度只取决于自己的网络带宽,可以让你轻松自如地实现远程办公。下面就跟着我的图文教程一步步搭建你的zerotier网络吧。首先登录zerotier官网,注册账号,建立网络,下载客户端软件官网…

311、出塞

311、出塞311、出塞 唐●王之涣 黄河远上白云间,一片孤城万仞山。 羌笛何须怨杨柳,春风不度玉门关。【现代诗意译】 远远望云 黄河与天上的白云连在一起 下面是一片孤零零的戍城 坐落在万仞高山下吹笛的将士们啊 你们…

接触过的芯片型号之间区别

接触过的芯片型号之间区别1.RK3568,RK3506,ESP8266,ESP32,MCS-51之间有什么不同?特性 MCS-51 ESP8266/ESP32 RK3568 / RK3506核心类别 微控制器 微控制器 应用处理器核心架构 8位/16位 单核 32位 单核/双核 (Xtens…

PCL2 下载安装全攻略:整合包导入 + Mod安装 + 常见问题汇总(2025最新版)

想快速玩上 Minecraft?本教程为你详细讲解 PCL2 下载安装、整合包导入与 Mod 安装方法,并附带常见问题解决方案。PCL2 启动器拥有国内高速下载源、一键整合包导入、拖拽式 Mod 安装等功能,是目前最稳定高效的 Minec…

旧电脑无法升级Win11

还在为电脑不支持Windows 11而烦恼吗?微软的TPM 2.0、安全启动等硬件要求让许多性能完好的电脑被挡在Win11门外....旧电脑无法升级Win11?这款神器让你轻松绕过限制!官方淘汰的电脑,靠它重获新生还在为电脑不支持Wi…

关于并发和并行的理解

并发和并行都是描述多线程工作状态的一种描述。并发Concurrency并发是指某个时间段内,有多个任务在轮流执行。表现的效果就是就是在这个时间段内多任务(多线程)在同时执行。它对执行单位(如cpu)并没有要求,因此极…