移动数据网络上的 MTU

移动数据网络上的 MTU

我发现了不同链路的各种 MTU 列表,但它们从不包含 UMTS、LTE、EDGE、HSPA、GPRS。

上述技术的 MTU 是多少?

答案1

简短的回答是:视情况而定。

来自移动用户的数据封装在 GRPS 隧道协议(简称 GTP-U)中,该协议基本上是一个 UDP 流,带有 GTP 标头,其中包含隧道端点(GGSN/PGW 和广播电台,简单地说)的 IP 地址和隧道标识符 (TEID)。

报头的长度可变,最多可达 12 个八位字节。

所以,回到问题,这取决于移动回程网络 (Gn) 上使用的本机 MTU,从无线电设备到 GGSN,隧道在此解封装 (Gi)。如果回程 MTU 至少为 1512 字节,则 MTU 可以是常规的 1500 字节。

但是,我见过一些客户故意将向移动设备公布的 MTU 降低到 1488 甚至更低(考虑 VLAN 或 MPLS 标签),这样回程的 MTU 就不需要更改(如果规划时没有考虑到这一点,那么这项工作就会很繁重)。

一般来说,这不是什么大问题,因为移动设备已经使用了“正确的”MTU,但如果手机充当路由器,并且没有正确实现 PMTU 限制,则会导致问题。此外,如果 MTU 太小,实际可用带宽无法真正用于 TCP 连接;这是“长管道和带宽延迟乘积问题”的典型示例。我所说的“太小”是指“比 1488 小得多”。

如果您想要了解当前连接的本机 MTU,可以使用各种工具来发现 PMTU。最简单的方法可能是通过“ping”连续提高 MTU,直到收到错误消息“需要分段,但设置了 DF”。最后一个有效的 MTU 是移动手机的本机 MTU,回程的本机 MTU 是该 MTU 加上 GTP-U 报头开销。在 Linux 中,您甚至可以使用提示选项,这会让事情变得更容易。示例:

alex@xila:~$ ping -c 1 -M do -s 2000 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 2000(2028) bytes of data.
From 93.203.x.y icmp_seq=1 Frag needed and DF set (mtu = 1492)

(PPPoE封装的经典例子)

参考:

相关内容