移动数据网络上的 MTU

bot*_*t47 9 mtu cellular

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

上述技术的 MTU 是多少?

Ale*_*sen 11

简短的回答是:这取决于。

来自移动用户的数据被封装在 GRPS 隧道协议(简称 GTP-U)中,它基本上是一个带有 GTP 头的 UDP 流,其中包含隧道端点(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 发现。最简单的方法可能是通过连续提高 MTU 直到收到错误消息“需要分片,但已设置 DF”来“ping”。最后一个工作 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)
Run Code Online (Sandbox Code Playgroud)

(PPPoE封装的经典例子)

参考: