Operating System Middleware Protocols TCP/IP Stack Connection Management Chipset Drivers Chipset Figure 4.28 Illustration of layers needing changes due to IPv6. IPv6 in 3GPP Networks As long as a UE is attached to IPv4 or dual-stack networks, it can have IPv4-only components. However, for IPv6-only deployments, which have lately been of great interest in 3GPP networks, absolutely everything must be IPv6 enabled (unless some transition scheme is used, as described in Chapter 5). Implications for Operating Systems The operating system, and in particular the TCP/IP stack, is the place that implements the IPv6 itself. Hence, it is quite understandable that the implications are significant. In addition to implementing the protocol itself, the stack's implementation may need significant restructuring due to the two parallel address families. In order to enable higher layers to make use of IPv6, APIs need updates as well (see Section 3.9). The address family aware socket API requires changes visible to applications, in order to allow use of detailed protocol features. The APIs that provide, for the most part, address family independent API for upper layers are not without changes either: such APIs need to be able to operate on top of IPv6. One module - perhaps not that obviously recognized as an important component to have support for IPv6 - is Connection Management. The Connection Management dis- cussed herein is a high level abstraction of everything related to device provisioning, setting up of IPv6 connections including tethering, and managing interface selections and handling various possible error and fallback scenarios. An unnecessary but common prob- lem in connection managers has been the inability to believe that IPv6-only connectivity is enough for working Internet access. Sometimes connection managers have rejected network connections that do not provide native IPv4-connectivity. General-purpose operating systems virtually always come with a set of middleware protocols, such as HyperText Transfer Protocol (H