【问题标题】:Configure MTU size on Azure PaaS在 Azure PaaS 上配置 MTU 大小
【发布时间】:2016-07-20 06:41:54
【问题描述】:

我们正在北欧的 Windows Azure Web 角色上运行基于 WCF 的 API。最近,我们遇到了与在 AWS 美国东部运行的客户端的连接非常不稳定的问题。我们 Azure 实例的 Wireshark 转储显示 TCP 数据包在路径中的某处丢失,并且我们的 Azure 实例发生了几次 TCP 重新传输。

AWS 出色的支持帮助我们确定这可能是由于 Azure 实例使用片段大小 > 1500 字节的巨型帧以及路径 MTU 发现无法正常工作造成的。需要注意的是,由于 TLS Hello 包大约有 5000 字节,因此连接通常会在 TLS 握手中卡住(我们的 API 通过 HTTPS 运行)。

我的问题是,在 Azure PaaS 上配置 MTU 大小的推荐方法是什么?当云结构重新定位实例等时,在实例上运行 netsh 命令将不会持久。

另外,有没有人遇到过类似的问题?当从默认值降低 MTU 时,我担心其他云资源(SQL Azure、Blob 存储、服务总线)的网络性能会下降。

【问题讨论】:

    标签: wcf azure networking tcp azure-web-roles


    【解决方案1】:

    为什么不在启动任务上设置 MTU 配置? 每次启动/重新启动时都会再次运行 您也可以检查角色是否没有移动,并忽略脚本...

    https://azure.microsoft.com/en-us/documentation/articles/cloud-services-startup-tasks-common/#detect-that-your-task-has-already-run

    默认情况下不启用巨型帧,因此您可以在启动时运行 PS 脚本并手动启用它。

    Get-NetAdapterAdvancedProperty -DisplayName "Jumbo Packet" | Set-NetAdapterAdvancedProperty –RegistryValue "9014"
    

    我希望它在某些方面有所帮助。

    【讨论】:

    • 谢谢,试试看!我想知道您对默认情况下未启用的评论。这绝对不是我们启用的东西 - 作为测试,我们使用带有 HTTPS 端点的测试 WCF 服务做了一个完全干净的云项目,并且清楚地看到大小 > 1500 字节和设置了 DontFragment 标志的数据包。我想我们应该能够反转你的 PS 脚本来禁用它。
    【解决方案2】:

    原来 Azure 实例并没有真正发送巨型帧。由于TCP large Segment Offload,Wireshark 捕获的包只是表明了这一点。禁用此功能后,Wireshark 会指示格式正确的 TCP 数据包。我们继续在 Azure 和 AWS 之间寻找丢失的包裹。

    【讨论】:

      猜你喜欢
      • 2013-11-26
      • 1970-01-01
      • 2015-11-18
      • 1970-01-01
      • 2018-10-20
      • 2011-10-12
      • 2020-11-19
      • 2017-05-24
      • 2018-05-29
      相关资源
      最近更新 更多