y concentrate on the upper layer GPRS protocols. The other protocols are not that interesting in the context of this book. An interested reader can find literature that will cater to the hunger for knowledge of the other protocols. The SNDCP and GTP functionality are described below: SNDCP is the protocol that transports IP packets over the GSM radio network. The SNDCP is responsible for multiplexing multiple PDP Contexts between the UE and the SGSN, performing header compression, packet segmentation and reassembly, and content compression. The header compression mechanisms supported by the specifica- tions are RFC 1144 [19], Degermark [20], and Robust Header Compression (RoHC) [21]. Content compression, however, is not used at all in reality, and mostly not even implemented in the networks and terminals. Header compression currently shares the same fate. However, RoHC perhaps might be supported one day for VoIP. Currently, SNDCP carries IPv4, IPv6, and PPP [31]. Originally, it was also designed to carry X.25 [17]. However, X.25 never became a reality in the GPRS networks, and also later the support was dropped from the 3GPP specifications. GTP is responsible for transporting the users' IP packets over the GPRS core network. The basic functionality of GTP is to uniquely identify the GTP-tunnel to which the user packets belong. The GTP-tunnel then maps directly to the PDP Context. As shown in Figure 2.5, GTP is transported over User Datagram Protocol (UDP) [62]. As we learned in Section 1.5.1, UDP only provides unreliable transport. Therefore, the transported packets can be delivered in a different order than sent, multiplied, or not even reach their destination. Originally, a Transport Control Protocol (TCP) [34] transport option was included for X.25 transport. However, this option was removed with the support for X.25. The GTP header holds a sequence number, which allows the reordering of out-of-order packets, if needed. IP itself does not need the packets to be delivered in order, but PPP expects the packets t