MTU on mobile data networks

I found various lists of MTUs for different links, but they never contain UMTS, LTE, EDGE, HSPA, GPRS.

What are the MTUs of the above mentioned technologies?


Solution 1:

The short answer is: it depends.

The data coming from the mobile subscriber is encapsulated in the GRPS Tunneling Protocol (GTP-U for short), which is basically a UDP-stream with a GTP-header containing the IP-addresses of the tunnel endpoints (GGSN/PGW and the radio station, simply said) and a tunnel identifier (TEID).

The header is of variable length and can be up to 12 octets.

So, back to the question, it depends on what native MTU is being used on the mobile backhaul network (Gn), from the radio equippment up to the GGSN, where the tunnel is decapsulated (Gi). If the backhaul MTU is at least 1512 bytes, the MTU can be a regular 1500 bytes.

However, I've seen customers who deliberately lower the MTU announced to the mobile equippement to 1488 or even lower (think of VLAN or MPLS tags) so that the backhaul's MTU doesn't need to be changed (this is a lot of work when the planning didn't consider this in the first place).

In general, this is not much of a problem since the mobile equippement already uses the 'correct' MTU, but can lead to problems if a handset acts as a router which doesn't implement PMTU clamping correctly. Also, if the MTU is too small, the actual available bandwidth can't be really utilized in TCP-connections; this is a classic example of a 'long-fat-pipe & bandwidth-delay-product problem'. Where by 'too small' I mean 'way smaller than 1488'.

If you want to know about the native MTU of your current connection you can use various tools for PMTU discovery. The easiest way is probably 'ping' by successively raising the MTU until you get the error message 'fragmentation needed, but DF set'. The last working MTU is the native for the mobile handset, the backhaul's native one is that MTU plus the GTP-U header overhead. In Linux you may even use the hint-option, which makes it way easier. Example:

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)

(a classic example of PPPoE encapsulation)

References:

  • For GTPv0 (2G): "Digital cellular telecommunications system (Phase 2+); General Packet Radio Service (GPRS); GPRS Tunnelling Protocol (GTP) across the Gn and Gp Interface (3GPP TS 09.60 version 7.10.0 Release 1998). URL (PDF): http://www.etsi.org/deliver/etsi_TS/101300_101399/101347/07.10.00_60/ts_101347v071000p.pdf
  • For GTPv1 (2.5G+): "Digital cellular telecommunications system (Phase 2+); Universal Mobile Telecommunications System (UMTS); General Packet Radio Service (GPRS); GPRS Tunnelling Protocol (GTP) across the Gn and Gp interface (3GPP TS 29.060 version 6.9.0 Release 6)". URL (PDF): http://www.etsi.org/deliver/etsi_TS/129000_129099/129060/06.09.00_60/ts_129060v060900p.pdf
  • The GTPv2 protocol contains no changed to the userplane part, means the tunnel, only to the control plane. (GTP-C, doesn't affect the tunnel)