4G/LTE - WiFi Offload
WiFi OffLoad : Overall Procedure of Untrusted Data Path Setup
This page will show you he overall procedure of UE getting access to a Service or application via Untruted Non-3GPP network (mostly WiFi). The steps described at step (5), (6) is well defined in 3GPP, but you may see some variations at other steps.. but I think the procedure shown in this page would be common in most cases. It would be helpful to get more meanins out of this if you read WiFi Offload CheckList part before you start reading this page. If you are working on the development or testing on WiFi Offloading or VoWiFi (Voice Over WiFi), the detailed understanding of this procedure greatly help you to troubleshoot various issues you would come accross during the test. I personally checks each and every steps of the procedure described here when I am troubleshooting WiFi Offload/VoWiFi. Also, recommend other engineers to check every steps... but in reality, most of them just say "Something does not work. Just help me fix it" :)
Following is overall sequence diagram of ePDG Discovery and IKE procedure. This is the case where WiFi AP and UE WiFi module is based on IPv4 (It doesn't matter whether UE is using IPv4 or IPv6 for application layer in this diagram). I will post another section later for the case when UE and AP is using IPv6). Actually the only difference is whether they use DHCP or DHCPv6, but there would be something I need to add in detail for IPv6 case).


(1) 802.11
(1.a) and (1.b) belongs to 802.11 protocol. Details of this step is out of the scope of this page. If you want to know the details of this step, refer to step (1)~(7) in WLAN Protocol page.
(2) SSID Selection
Once UE (WiFi device) decode Beacon, it will show all the SSID it detected. Then you can select a specific SSID manually or the device automatically select the SSID in a certain order you have configured.
(3) IP Allocaion for UE WiFi
(3.a) DHCP Discover
Bootstrap Protocol (Discover)
Message type: Boot Request (1)
Hardware type: Ethernet (0x01)
Hardware address length: 6
Hops: 0
Transaction ID: 0xff18ecc3
Seconds elapsed: 1
Bootp flags: 0x0000 (Unicast)
0... .... .... .... = Broadcast flag: Unicast
.000 0000 0000 0000 = Reserved flags: 0x0000
Client IP address: 0.0.0.0 (0.0.0.0)
Your (client) IP address: 0.0.0.0 (0.0.0.0)
Next server IP address: 0.0.0.0 (0.0.0.0)
Relay agent IP address: 0.0.0.0 (0.0.0.0)
Client MAC address: aa:bb:cc:dd:ee:ff
Client hardware address padding: 00000000000000000000
Server host name not given
Boot file name not given
Magic cookie: DHCP
Option: (53) DHCP Message Type (Discover)
Length: 1
DHCP: Discover (1)
Option: (61) Client identifier
Length: 7
Hardware type: Ethernet (0x01)
Client MAC address: aa:bb:cc:dd:ee:ff
Option: (57) Maximum DHCP Message Size
Length: 2
Maximum DHCP Message Size: 1500
Option: (60) Vendor class identifier
Length: 12
Vendor class identifier: dhcpcd-5.5.6
Option: (12) Host Name
Length: 24
Host Name: android-21b08ec0480ae8b6
Option: (55) Parameter Request List
Length: 10
Parameter Request List Item: (1) Subnet Mask
Parameter Request List Item: (33) Static Route
Parameter Request List Item: (3) Router
Parameter Request List Item: (6) Domain Name Server
Parameter Request List Item: (15) Domain Name
Parameter Request List Item: (26) Interface MTU
Parameter Request List Item: (28) Broadcast Address
Parameter Request List Item: (51) IP Address Lease Time
Parameter Request List Item: (58) Renewal Time Value
Parameter Request List Item: (59) Rebinding Time Value
Option: (255) End
Option End: 255
(3.b) DHCP Offer
Bootstrap Protocol (Offer)
Message type: Boot Reply (2)
Hardware type: Ethernet (0x01)
Hardware address length: 6
Hops: 0
Transaction ID: 0xff18ecc3
Seconds elapsed: 1
Bootp flags: 0x0000 (Unicast)
0... .... .... .... = Broadcast flag: Unicast
.000 0000 0000 0000 = Reserved flags: 0x0000
Client IP address: 0.0.0.0 (0.0.0.0)
Your (client) IP address: 192.168.0.1 (192.168.0.1)
Next server IP address: 192.168.0.254 (192.168.0.254)
Relay agent IP address: 0.0.0.0 (0.0.0.0)
Client MAC address: aa:bb:cc:dd:ee:ff
Client hardware address padding: 00000000000000000000
Server host name not given
Boot file name not given
Magic cookie: DHCP
Option: (53) DHCP Message Type (Offer)
Length: 1
DHCP: Offer (2)
Option: (54) DHCP Server Identifier
Length: 4
DHCP Server Identifier: 192.168.0.254 (192.168.0.254)
Option: (51) IP Address Lease Time
Length: 4
IP Address Lease Time: (3600s) 1 hour
Option: (58) Renewal Time Value
Length: 4
Renewal Time Value: (1800s) 30 minutes
Option: (59) Rebinding Time Value
Length: 4
Rebinding Time Value: (3200s) 53 minutes, 20 seconds
Option: (1) Subnet Mask
Length: 4
Subnet Mask: 255.255.255.0 (255.255.255.0)
Option: (28) Broadcast Address
Length: 4
Broadcast Address: 192.168.0.255 (192.168.0.255)
Option: (6) Domain Name Server
Length: 4
Domain Name Server: 192.168.0.254 (192.168.0.254)
Option: (255) End
Option End: 255
Padding
(3.c) DHCP Request
Bootstrap Protocol (Request)
Message type: Boot Request (1)
Hardware type: Ethernet (0x01)
Hardware address length: 6
Hops: 0
Transaction ID: 0xff18ecc3
Seconds elapsed: 1
Bootp flags: 0x0000 (Unicast)
0... .... .... .... = Broadcast flag: Unicast
.000 0000 0000 0000 = Reserved flags: 0x0000
Client IP address: 0.0.0.0 (0.0.0.0)
Your (client) IP address: 0.0.0.0 (0.0.0.0)
Next server IP address: 0.0.0.0 (0.0.0.0)
Relay agent IP address: 0.0.0.0 (0.0.0.0)
Client MAC address: aa:bb:cc:dd:ee:ff
Client hardware address padding: 00000000000000000000
Server host name not given
Boot file name not given
Magic cookie: DHCP
Option: (53) DHCP Message Type (Request)
Length: 1
DHCP: Request (3)
Option: (61) Client identifier
Length: 7
Hardware type: Ethernet (0x01)
Client MAC address: aa:bb:cc:dd:ee:ff
Option: (50) Requested IP Address
Length: 4
Requested IP Address: 192.168.0.1 (192.168.0.1)
Option: (54) DHCP Server Identifier
Length: 4
DHCP Server Identifier: 192.168.0.254 (192.168.0.254)
Option: (57) Maximum DHCP Message Size
Length: 2
Maximum DHCP Message Size: 1500
Option: (60) Vendor class identifier
Length: 12
Vendor class identifier: dhcpcd-5.5.6
Option: (12) Host Name
Length: 24
Host Name: android-21b08ec0480ae8b6
Option: (55) Parameter Request List
Length: 10
Parameter Request List Item: (1) Subnet Mask
Parameter Request List Item: (33) Static Route
Parameter Request List Item: (3) Router
Parameter Request List Item: (6) Domain Name Server
Parameter Request List Item: (15) Domain Name
Parameter Request List Item: (26) Interface MTU
Parameter Request List Item: (28) Broadcast Address
Parameter Request List Item: (51) IP Address Lease Time
Parameter Request List Item: (58) Renewal Time Value
Parameter Request List Item: (59) Rebinding Time Value
Option: (255) End
Option End: 255
(3.d) DHCP Ack
Bootstrap Protocol (ACK)
Message type: Boot Reply (2)
Hardware type: Ethernet (0x01)
Hardware address length: 6
Hops: 0
Transaction ID: 0xff18ecc3
Seconds elapsed: 1
Bootp flags: 0x0000 (Unicast)
0... .... .... .... = Broadcast flag: Unicast
.000 0000 0000 0000 = Reserved flags: 0x0000
Client IP address: 0.0.0.0 (0.0.0.0)
Your (client) IP address: 192.168.0.1 (192.168.0.1)
Next server IP address: 192.168.0.254 (192.168.0.254)
Relay agent IP address: 0.0.0.0 (0.0.0.0)
Client MAC address: aa:bb:cc:dd:ee:ff
Client hardware address padding: 00000000000000000000
Server host name not given
Boot file name not given
Magic cookie: DHCP
Option: (53) DHCP Message Type (ACK)
Length: 1
DHCP: ACK (5)
Option: (54) DHCP Server Identifier
Length: 4
DHCP Server Identifier: 192.168.0.254 (192.168.0.254)
Option: (51) IP Address Lease Time
Length: 4
IP Address Lease Time: (3600s) 1 hour
Option: (58) Renewal Time Value
Length: 4
Renewal Time Value: (1800s) 30 minutes
Option: (59) Rebinding Time Value
Length: 4
Rebinding Time Value: (3200s) 53 minutes, 20 seconds
Option: (1) Subnet Mask
Length: 4
Subnet Mask: 255.255.255.0 (255.255.255.0)
Option: (28) Broadcast Address
Length: 4
Broadcast Address: 192.168.0.255 (192.168.0.255)
Option: (6) Domain Name Server
Length: 4
Domain Name Server: 192.168.0.254 (192.168.0.254)
Option: (255) End
Option End: 255
Padding
(4) ePDG Discovery
Refer to ePDG Discovery Page for the details.
(5) IKEv2
This is very long/complicated process and described in a separate page. Refer to Overall Sequence Flow - 3GPP 33.402 of IKE page.
(6) CSCF Discovery
Actually this is not an independen procedure. This is a part of IKEv2 procedure and described in detail in CSCF Descovery page.