所以,回到这个问题,这取决于移动回程网络 (Gn) 上使用的本地 MTU,从无线电设备到隧道解封装 (Gi) 的 GGSN。如果回程 MTU 至少为 1512 字节,则 MTU 可以是常规的 1500 字节。
但是,我看到有客户故意将向移动设备宣布的 MTU 降低到 1488 甚至更低(想想 VLAN 或 MPLS 标签),这样就不需要更改回程的 MTU(当计划一开始就没有考虑到这一点)。
一般来说,这不是什么大问题,因为移动设备已经使用了“正确的”MTU,但如果手机充当路由器而没有正确实施 PMTU 钳位,则可能会导致问题。此外,如果 MTU 太小,则实际可用带宽无法真正用于 TCP 连接;这是“长肥管和带宽延迟积问题”的经典示例。我所说的“太小”是指“比 1488 小得多”。
如果您想了解当前连接的本机 MTU,您可以使用各种工具进行 PMTU 发现。最简单的方法可能是通过连续提高 MTU 来“ping”,直到收到错误消息“需要分段,但 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)
简短的回答是:视情况而定。
来自移动用户的数据被封装在 GRPS 隧道协议(简称 GTP-U)中,它基本上是一个带有 GTP 头的 UDP 流,其中包含隧道端点(GGSN/PGW 和无线电)的 IP 地址站,简单地说)和隧道标识符(TEID)。
标头长度可变,最多可达 12 个八位字节。
所以,回到这个问题,这取决于移动回程网络 (Gn) 上使用的本地 MTU,从无线电设备到隧道解封装 (Gi) 的 GGSN。如果回程 MTU 至少为 1512 字节,则 MTU 可以是常规的 1500 字节。
但是,我看到有客户故意将向移动设备宣布的 MTU 降低到 1488 甚至更低(想想 VLAN 或 MPLS 标签),这样就不需要更改回程的 MTU(当计划一开始就没有考虑到这一点)。
一般来说,这不是什么大问题,因为移动设备已经使用了“正确的”MTU,但如果手机充当路由器而没有正确实施 PMTU 钳位,则可能会导致问题。此外,如果 MTU 太小,则实际可用带宽无法真正用于 TCP 连接;这是“长肥管和带宽延迟积问题”的经典示例。我所说的“太小”是指“比 1488 小得多”。
如果您想了解当前连接的本机 MTU,您可以使用各种工具进行 PMTU 发现。最简单的方法可能是通过连续提高 MTU 来“ping”,直到收到错误消息“需要分段,但 DF 已设置”。最后一个工作的 MTU 是手机的原生 MTU,回程的原生 MTU 是 MTU 加上 GTP-U 报头开销。在 Linux 中,您甚至可以使用提示选项,这会更容易。例子:
(PPPoE封装的经典例子)
参考: