找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4599|回复: 2

关于MTU的问题

[复制链接]
发表于 2005-3-24 01:01:45 | 显示全部楼层 |阅读模式
在基于 TCP/IP 的广域网 (WAN) 中,如果某个中间网段的最大数据包大小小于通讯主机的最大数据包大小,并且路由器无法在这种情况下发送适当的 Internet 控制消息协议 (ICMP) 响应,则某些路由上的通讯可能会失败。这样的路由器有时称为"黑洞"路由器。
可以通过使用 Ping 实用工具找到黑洞路由器,该实用工具是随 Microsoft Windows TCP/IP 协议一起安装的标准实用工具。然后,可以使用三种方法之一来修复或解决黑洞路由器问题。
如果网络路由器收到的数据包大于下一个通讯网段的最大传输单位 (MTU) 的大小,并且该数据包的 IP 层"don';t fragment"位(不分段)进行了标记时,该路由器应当向发送主机发回一个 ICMP"destination unreachable"(无法到达目标)消息。
如果路由器不发送此消息,数据包可能被丢弃,并随通过失败链接进行通讯的程序的不同而导致多种不同的错误。(如果程序连接到本地子网上的计算机,则不会发生这些错误。)这种情况可能看上去是间歇发生的,但如果进一步研究,能够发现这种情况可以重现,例如,通过让客户端读取从远程主机发送的大型文件,就可以做到这一点。
查找黑洞路由器
可以使用 Ping 实用工具查找黑洞路由器,方法是在键入 ping 命令时设置 -f 和 -l 参数。 • -f 参数会使 Ping 实用工具发送设置了 IP"do not fragment"(不分段)位的 ICMP 回应数据包。
• -l 参数设置 ICMP 回应数据包的缓冲区或有效负载的大小。可以在 -l 参数后键入一个数字,以指定此大小。
可以不分段发送的最大缓冲区的大小等于路由上存在的最小 MTU 减去 IP 和 ICMP 头(换句话说,就是最小 MTU 减去 28)。例如,以太网的 MTU 为 1,500 字节,因此在最佳情况下,Ping 实用工具可以回应一个不分段的数据包,加上一个大小为 1,472 字节(即 1,500 减去 28)的 ICMP 缓冲区。这种情况下,ping 命令的语法为:
ping 计算机名或 IP 地址 -f -l 1472
对于所有本地 IP 地址,预期结果如下所示: • 如果路由连接的每段的 MTU 都最小为 1,500,则数据包将被成功返回。
• 如果某些中间段的 MTU 小于 1500,并且路由器返回相应的 ICMP"destination unreachable"(目标无法到达)数据包,Ping 实用工具将显示消息"Packet needs to be fragmented but DF set"(数据包需要进行分段,但设置了 DF)。
• 如果某些中间段的 MTU 小于 1500,并且路由器不返回相应的 ICMP"destination unreachable"(目标无法到达)数据包,则 Ping 实用工具将显示消息"Request timed out"(请求超时)。
通过为后续的 ping 命令增加 -l 参数,可以识别不经分段就可通过特定路由的数据包的最大大小。通常使用的最小 MTU 为 576 字节,因此,可以安全地从大小为 548 的 ICMP 缓冲区开始,然后逐渐增大其大小。例如,如果命令 Ping 计算机名或 IP 地址 -f -l 972 可以返回数据包,但是 Ping 计算机名或 IP 地址 -f -l 973 不能返回数据包,则该路由上的最大 MTU 为 1,000(972 加 28)。以下 Microsoft 知识库文章对常见网络媒体的默认 MTU 进行了说明:
314496 不同网络拓扑的默认 MTU 大小
修复或变通解决黑洞路由器问题
警告:注册表编辑器使用不当可导致严重问题,可能需要重新安装操作系统。Microsoft 不能保证您可以解决因注册表编辑器使用不当而导致的问题。使用注册表编辑器需要您自担风险。
以下三种方法可用于修复或变通解决黑洞路由器问题。
方法 1
在将要通过广域网连接通讯的基于 Windows 的主机上启用 PMTU 黑洞检测。按照下列步骤操作: 1. 启动注册表编辑器 (Regedit.exe)。
2. 在注册表中找到下面的项:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\tcpip\parameters
3. 在编辑菜单上,单击添加数值,然后添加以下注册表值:
数值名称: EnablePMTUBHDetect
数据类型: REG_DWORD
值: 1  
4. 退出注册表编辑器,然后重新启动计算机。
方法 2
将中间路由器配置为发送 ICMP 类型 3 代码 4 消息("destination unreachable, don';t fragment (DF) bit sent and fragmentation required")(目标无法到达,设置了"不分段"(DF) 位但需要进行分段)。这可能需要进行路由器软件或固件升级、重新配置路由器或者更换路由器。
方法 3
将主机接口的 MTU 设置为黑洞路由器可以处理的最大大小,以确保可以通过该连接发送尽可能大的数据包。但是,请注意,本地通信使用比所需大小更小的数据包,能够成功使用该路由连接的通信也是如此。
此解决方法假定您已经识别主机可能使用的所有链接的 MTU 和状态。在识别受支持的最大 MTU 大小之后,请手动设置 MTU。按照下列步骤操作: 1. 单击开始,然后单击控制面板。
2. 双击"网络和 Internet 连接",然后单击以打开网络连接文件夹。
3. 如果列出了多个网络连接,则对于每个连接,双击该连接,然后单击所打开的状态界面的支持选项卡。显示默认网关项的连接可能就是用于连接到 Internet 的网络连接。记下该连接的名称(例如"Local Area Connection 2")。
4. 启动注册表编辑器 (Regedit.exe)。
5. 在 HKEY_LOCAL_MACHINE 树下,转到以下项:
SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\
6. 该项下有一个或多个具有数值标识符的项。这些项分别具有一个 Connection 子项。检查每个与以下项类似的项:
适配器 ID\Connection
Connection 子项中的 Name 值提供在"网络连接"文件夹中所使用的网络连接名称。当您找到与在步骤 3 中找到的名称匹配的项时,请记下该网络连接名称所属的适配器 ID。
7. 返回到 HKEY_LOCAL_MACHINE,然后找到下面的项
SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\适配器 ID
其中,适配器 ID 是在步骤 6 中记下的数字。突出显示该项时,屏幕的右侧将显示几个值,包括 DefaultGateway 和 EnableDHCP。
8. 右键单击屏幕右侧,单击新建,然后单击双字节值。将该值命名为 MTU。
9. 双击该值以便进行编辑,将基数更改为十进制,然后输入可接受的最大 MTU 大小,即使用 Ping 测试所识别的大小。
10. 退出注册表编辑器。
请注意,如果某些服务器仍出现问题,可能需要将 MTU 设置为比 Ping 测试所指示的值更小的值,原因是该特定路径中存在其他路由器。每次将 MTU 减小 10 并重复此过程,直到能够成功访问这些站点。
发表于 2005-3-28 19:37:07 | 显示全部楼层

关于MTU的问题

不知所云
kbdy 该用户已被删除
发表于 2005-4-15 15:54:26 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
*滑块验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|宽带技术网 |网站地图

粤公网安备 44152102000001号

GMT+8, 2024-5-6 19:29 , Processed in 0.023270 second(s), 6 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表