4G/LTE - APN |
||
APN(Access Point Name) in LTE
APN stands for Access Point Name. This is a kind of Gateway (or Anchoring point) to which your UE (Mobile Phone) get attached to get access to the core network for most of the data service. In this page, I will talk about APN with practical aspect and followings are the list of topics I will cover in this page.
How APN is assigned to UE ? Basically it gets assigned by network based on the request from the UE. So it is combination of UE setting(for request) and Network configuration. Since both parties get involved in APN assignment, frequently this APN assignment cause various issues espcially for testing the UE. (You would not see much of the problem with this for commericilized phone being used in real network since they are preconfigured to exactly match network requirement when you purchase it, but in many testing situation frequently you would see the case where the exact APN requirement on UE and network is not known. Some UE is pretty flexible/tolerant about the mismatched APN assignment from test equipment but some UE is very picky about the APN assignment from test equipment and shows various strange behavior when the assignment from network does not exactly match what it is expecting. So when you are testing a UE (DUT) for most of the data service related test (e.g, IP throughput, Browsing, IMS etc), you have to consider both Protocol aspect of APN assingment and UE side APN setting.
Protocol aspect of APN assignment.
Typical process of APN assingment protocol is very simple. It happens in two steps as listed below. i) UE -> NW : PDN Connectivity Request // Usually UE request PDN with a specific APN (or no specified APN) ii) UE <- NW : Activate Default EPS Bearer Context Request // Network always specifies a specific APN In reality, these two NAS message gets embedded in a little bit different RRC messages. Typically you may see following two types of RRC message carrying these NAS messages.
Case 1 : Assignment of default APN
In case of assignment of default APN, usually following two steps gets involved. i) RRC : RRC Connection Setup Complete + NAS : Attach Request + ESM : PDN Connectivity Request ii) RRC : RRC Connection Reconfiguration + NAS : Attach Accept + NAS : Activate Default EPS Bearer Context Req
< PDN Connectivity Request : Default APN >
NAS EPS session management messages: PDN connectivity request (0xd0) 0011 .... = PDN type: IPv4v6 (3) .... 0001 = Request type: initial request (1) ESM information transfer flag 1101 .... = Element ID: 0xd- .... 000. = Spare bit(s): 0x00 .... ...1 = EIT (ESM information transfer): Security protected ESM information transfer required Protocol Configuration Options Element ID: 0x27 Length: 32 [Link direction: MS to network (0)] 1... .... = Extension: True Configuration Protocol: PPP for use with IP PDP type or IP PDN type (0) Protocol or Container ID: Internet Protocol Control Protocol (0x8021) Length: 0x10 (16) PPP IP Control Protocol Code: Configuration Request (1) Identifier: 0 (0x00) Length: 16 Options: (12 bytes), Primary DNS Server IP Address, Secondary DNS Server IP Address Primary DNS Server IP Address: 0.0.0.0 Type: Primary DNS Server IP Address (129) Length: 6 Primary DNS Address: 0.0.0.0 (0.0.0.0) Secondary DNS Server IP Address: 0.0.0.0 Type: Secondary DNS Server IP Address (131) Length: 6 Secondary DNS Address: 0.0.0.0 (0.0.0.0) Access Point Name // UE can specify a predefined name here. // In case of default EPS bearer, it is common that the APN is not specified Protocol or Container ID: DNS Server IPv4 Address Request (0x000d) Length: 0x00 (0) Protocol or Container ID: DNS Server IPv6 Address Request (0x0003) Length: 0x00 (0) Protocol or Container ID: IP address allocation via NAS signalling (0x000a) Length: 0x00 (0) Protocol or Container ID: IPv4 Link MTU Request (0x0010) Length: 0x00 (0)
< Activate Default EPS Bearer Context Request : Default APN >
NAS EPS session management messages: Activate default EPS bearer context request (0xc1) EPS quality of service Length: 1 Quality of Service Class Identifier (QCI): QCI 9 (9) Access Point Name Length: 8 APN: internet // Network Assigns a specific APN Name PDN address Length: 13 0000 0... = Spare bit(s): 0x00 PDN type: IPv4v6 (3) PDN IPv6 if id: 0000000000000001 PDN IPv4: 192.168.137.2 (192.168.137.2) Protocol Configuration Options Element ID: 0x27 Length: 8 [Link direction: Network to MS (1)] 1... .... = Extension: True Configuration Protocol: PPP for use with IP PDP type or IP PDN type (0) Protocol or Container ID: Internet Protocol Control Protocol (0x8021) Length: 0x04 (4) PPP IP Control Protocol Code: Configuration Nak (3) Identifier: 0 (0x00) Length: 4
Case 2 : Assignment of additional APN
In case of assignment of additional APN after the default APN, usually following two steps gets involved. i) RRC : ulinformationTransfer + ESM : PDN Connectivity Request ii) RRC : RRC Connection Reconfiguration + NAS : Activate Default EPS Bearer Context Req
< PDN Connectivity Request : Additional APN >
NAS EPS session management messages: PDN connectivity request (0xd0) 0011 .... = PDN type: IPv4v6 (3) .... 0001 = Request type: initial request (1) Access Point Name Element ID: 0x28 Length: 4 APN: ims // Usually UE request PDN with specific APN name Protocol Configuration Options Element ID: 0x27 Length: 41 [Link direction: MS to network (0)] 1... .... = Extension: True Configuration Protocol: PPP for use with IP PDP type or IP PDN type (0) Protocol or Container ID: Internet Protocol Control Protocol (0x8021) Length: 0x10 (16) PPP IP Control Protocol Code: Configuration Request (1) Identifier: 0 (0x00) Length: 16 Options: (12 bytes), Primary DNS Server IP Address, Secondary DNS Server IP Address Primary DNS Server IP Address: 0.0.0.0 Type: Primary DNS Server IP Address (129) Length: 6 Primary DNS Address: 0.0.0.0 (0.0.0.0) Secondary DNS Server IP Address: 0.0.0.0 Type: Secondary DNS Server IP Address (131) Length: 6 Secondary DNS Address: 0.0.0.0 (0.0.0.0) Protocol or Container ID: DNS Server IPv4 Address Request (0x000d) Length: 0x00 (0) Protocol or Container ID: DNS Server IPv6 Address Request (0x0003) Length: 0x00 (0) Protocol or Container ID: P-CSCF IPv6 Address Request (0x0001) Length: 0x00 (0) Protocol or Container ID: P-CSCF IPv4 Address Request (0x000c) Length: 0x00 (0) Protocol or Container ID: IP address allocation via NAS signalling (0x000a) Length: 0x00 (0) Protocol or Container ID: MS Support of Network Requested Bearer Control indicator (0x0005) Length: 0x00 (0) Protocol or Container ID: IPv4 Link MTU Request (0x0010) Length: 0x00 (0)
< Activate Default EPS Bearer Context Req : Additional APN >
NAS EPS session management messages: Activate default EPS bearer context request (0xc1) EPS quality of service Length: 1 Quality of Service Class Identifier (QCI): QCI 9 (9) Access Point Name Length: 4 APN: ims // Network Allocate the specific APN Name. This may or may not be the same as UE requested PDN address Length: 13 0000 0... = Spare bit(s): 0x00 PDN type: IPv4v6 (3) PDN IPv6 if id: 0000000000000011 PDN IPv4: 192.168.1.11 (192.168.1.11) Linked TI - Transaction identifier Element ID: 0x5d Length: 1 0... .... = TI Flag: The message is sent from the side that originates the TI TI value: 0x02 (2) Quality Of Service - Negotiated QoS Element ID: 0x30 Length: 14 00.. .... = Spare bit(s): 0 ..10 0... = Quality of Service Delay class: Delay class 4 (best effort) (4) .... .011 = Reliability class: Unacknowledged GTP/LLC, Ack RLC, Protected data (3) 1001 .... = Peak throughput: Up to 256 000 octet/s (9) .... 0... = Spare bit(s): 0 .... .010 = Precedence class: Normal priority (2) 000. .... = Spare bit(s): 0 ...0 1010 = Mean throughput: 100 000 octet/h (10) 100. .... = Traffic class: Background class (4) ...1 0... = Delivery order: Without delivery order ('no') (2) .... .011 = Delivery of erroneous SDUs: Erroneous SDUs are not delivered('No') (3) Maximum SDU size: 1500 octets (150) Maximum bitrate for uplink: 64 kbps (64) Maximum bitrate for downlink: 384 kbps (104) 0111 .... = Residual Bit Error Rate (BER): 1*10-5 (7) .... 0100 = SDU error ratio: 1*10-4 (4) 0000 00.. = Transfer delay: Subscribed transfer delay/reserved (0) .... ..00 = Traffic handling priority: Subscribed traffic handling priority/Reserved (0) Guaranteed bitrate for uplink: 64 kbps (64) Guaranteed bitrate for downlink: 568 kbps (127) 000. .... = Spare bit(s): 0 ...0 .... = Signalling indication: Not optimised for signalling traffic .... 0000 = Source statistics description: unknown (0) Maximum bitrate for downlink (extended): Use the value indicated by the Maximum bit rate for downlink (0) Guaranteed bitrate for downlink (extended): Use the value indicated by the Guaranteed bit rate for downlink (0) LLC Service Access Point Identifier - Negotiated LLC SAPI Element ID: 0x32 0000 .... = Spare bit(s): 0 .... 0011 = LLC SAPI: SAPI 3 (3) Radio Priority 1000 .... = Element ID: 0x8- Radio Priority (PDP or SMS): priority level 1 (highest) (1) Protocol Configuration Options Element ID: 0x27 Length: 72 [Link direction: Network to MS (1)] 1... .... = Extension: True Configuration Protocol: PPP for use with IP PDP type or IP PDN type (0) Protocol or Container ID: Internet Protocol Control Protocol (0x8021) Length: 0x10 (16) PPP IP Control Protocol Code: Configuration Nak (3) Identifier: 0 (0x00) Length: 16 Options: (12 bytes), Primary DNS Server IP Address, Secondary DNS Server IP Address Primary DNS Server IP Address: 10.211.64.87 Type: Primary DNS Server IP Address (129) Length: 6 Primary DNS Address: 10.211.64.87 (10.211.64.87) Secondary DNS Server IP Address: 10.211.64.87 Type: Secondary DNS Server IP Address (131) Length: 6 Secondary DNS Address: 10.211.64.87 (10.211.64.87) Protocol or Container ID: DNS Server IPv4 Address (0x000d) Length: 0x04 (4) IPv4: 10.211.64.87 Protocol or Container ID: DNS Server IPv6 Address (0x0003) Length: 0x10 (16) IPv6: 2001:0:0:1::2 Protocol or Container ID: P-CSCF IPv6 Address (0x0001) Length: 0x10 (16) IPv6: 2001:0:0:1::2 Protocol or Container ID: P-CSCF IPv4 Address (0x000c) Length: 0x04 (4) IPv4: 192.168.1.2
Followings are some of the message example going through S1AP that carries APN information.
< UplinkNASTransport > S1 Application Protocol S1AP-PDU: initiatingMessage (0) initiatingMessage procedureCode: id-uplinkNASTransport (13) criticality: ignore (1) value UplinkNASTransport protocolIEs: 5 items Item 0: id-MME-UE-S1AP-ID ProtocolIE-Field id: id-MME-UE-S1AP-ID (0) criticality: reject (0) value MME-UE-S1AP-ID: .... Item 1: id-eNB-UE-S1AP-ID ProtocolIE-Field id: id-eNB-UE-S1AP-ID (8) criticality: reject (0) value ENB-UE-S1AP-ID: 3 Item 2: id-NAS-PDU ProtocolIE-Field id: id-NAS-PDU (26) criticality: reject (0) value NAS-PDU: 27a8ccdcee7e024eda2808016e05697370736e Non-Access-Stratum (NAS)PDU 0010 .... = Security header type: Integrity protected and ciphered (2) .... 0111 = Protocol discriminator: EPS mobility management messages (0x07) Message authentication code: 0xa8ccdcee Sequence number: 126 0000 .... = EPS bearer identity: No EPS bearer identity assigned (0) .... 0010 = Protocol discriminator: EPS session management messages (0x02) Procedure transaction identity: 78 NAS EPS session management messages: ESM information response (0xda) Access Point Name Element ID: 0x28 Length: 8 APN: testapn Item 3: id-EUTRAN-CGI ProtocolIE-Field id: id-EUTRAN-CGI (100) criticality: ignore (1) value EUTRAN-CGI ... Item 4: id-TAI ProtocolIE-Field id: id-TAI (67) criticality: ignore (1) value TAI ...
< InitialContextSetupRequest > S1 Application Protocol S1AP-PDU: initiatingMessage (0) initiatingMessage procedureCode: id-InitialContextSetup (9) criticality: reject (0) value InitialContextSetupRequest protocolIEs: 8 items Item 0: id-MME-UE-S1AP-ID ProtocolIE-Field id: id-MME-UE-S1AP-ID (0) criticality: reject (0) value MME-UE-S1AP-ID: ... Item 1: id-eNB-UE-S1AP-ID ProtocolIE-Field id: id-eNB-UE-S1AP-ID (8) criticality: reject (0) value ENB-UE-S1AP-ID: 3 Item 2: id-uEaggregateMaximumBitrate ProtocolIE-Field id: id-uEaggregateMaximumBitrate (66) criticality: reject (0) value UEAggregateMaximumBitrate uEaggregateMaximumBitRateDL: 201943030 uEaggregateMaximumBitRateUL: 201943030 Item 3: id-E-RABToBeSetupListCtxtSUReq ProtocolIE-Field id: id-E-RABToBeSetupListCtxtSUReq (24) criticality: reject (0) value E-RABToBeSetupListCtxtSUReq: 1 item Item 0: id-E-RABToBeSetupItemCtxtSUReq ProtocolIE-SingleContainer id: id-E-RABToBeSetupItemCtxtSUReq (52) criticality: reject (0) value E-RABToBeSetupItemCtxtSUReq e-RAB-ID: 5 e-RABlevelQoSParameters qCI: 9 allocationRetentionPriority priorityLevel: Unknown (12) pre-emptionCapability: shall-not-trigger-pre-emption (0) pre-emptionVulnerability: pre-emptable (1) 0... .... Extension Present Bit: False transportLayerAddress: 0a9bb99c transportLayerAddress(IPv4): xxx.xxx.xxx.xxx (xxx.xxx.xxx.xxx) gTP-TEID: ... nAS-PDU: ... Non-Access-Stratum (NAS)PDU 0010 .... = Security header type: Integrity protected and ciphered (2) .... 0111 = Protocol discriminator: EPS mobility management messages (0x07) Message authentication code: 0x5e7a308b Sequence number: 76 0000 .... = Security header type: Plain NAS message, not security protected (0) .... 0111 = Protocol discriminator: EPS mobility management messages (0x07) NAS EPS Mobility Management Message Type: Attach accept (0x42) 0000 .... = Spare half octet: 0 .... 0... = Spare bit(s): 0x00 .... .001 = Attach result: EPS only (1) GPRS Timer - T3412 value ... Tracking area identity list - TAI list ... ESM message container Length: 83 ESM message container contents: ... 0101 .... = EPS bearer identity: EPS bearer identity value 5 (5) .... 0010 = Protocol discriminator: EPS session management messages (0x02) Procedure transaction identity: 78 NAS EPS session management messages: Activate default EPS bearer context request (0xc1) EPS quality of service Length: 1 Quality of Service Class Identifier (QCI): QCI 9 (9) Access Point Name Length: 8 APN: testapn PDN address Length: 5 0000 0... = Spare bit(s): 0x00 PDN type: IPv4 (1) PDN IPv4: xxx.xxx.xxx.xxx (xxx.xxx.xxx.xxx) APN aggregate maximum bit rate Element ID: 0x5e Length: 6 APN-AMBR for downlink : 8640 kbps APN-AMBR for uplink : 8640 kbps APN-AMBR for downlink (extended) : 44 Mbps APN-AMBR for uplink (extended) : 44 Mbps APN-AMBR for downlink (extended-2) : 256 Mbps Total APN-AMBR for downlink : 308.640 Mbps APN-AMBR for uplink (extended-2) : 256 Mbps Total APN-AMBR for uplink : 308.640 Mbps Protocol Configuration Options .... EPS mobile identity - GUTI Element ID: 0x50 Length: 11 .... 0... = odd/even indic: 0 .... .110 = Type of identity: GUTI (6) Mobile Country Code (MCC): 001 Mobile Network Code (MNC): 01 MME Group ID: 32774 MME Code: 33 M-TMSI: 0xc071bb09 EMM cause Element ID: 0x53 Cause: CS domain not available (18) GPRS Timer - T3402 value ... GPRS Timer - T3423 value ... PLMN List - Equivalent PLMNs - 2 PLMNs Element ID: 0x4a Length: 6 PLMN[1] Mobile Country Code (MCC): 001 PLMN[2] Mobile Country Code (MCC): 01 EPS network feature support Element ID: 0x64 Length: 1 .... Additional update result 1111 .... = Element ID: 0xf- .... 00.. = Spare bit(s): 0x00 .... ..01 = AURV: CS Fallback not preferred (1) Item 4: id-UESecurityCapabilities ProtocolIE-Field id: id-UESecurityCapabilities (107) criticality: reject (0) value UESecurityCapabilities ..0. .... Extension Present Bit: False encryptionAlgorithms: c000 ...0 .... Extension Present Bit: False integrityProtectionAlgorithms: c000 Item 5: id-SecurityKey ProtocolIE-Field id: id-SecurityKey (73) criticality: reject (0) value SecurityKey: ... [bit length 256] Item 6: id-HandoverRestrictionList ProtocolIE-Field id: id-HandoverRestrictionList (41) criticality: ignore (1) value HandoverRestrictionList servingPLMN: 131002 Mobile Country Code (MCC): 001 Mobile Network Code (MNC): 02 equivalentPLMNs: 2 items Item 0 PLMNidentity: 134109 Mobile Country Code (MCC): 001 Mobile Network Code (MNC): 02 Item 1 PLMNidentity: 138107 Mobile Country Code (MCC): 001 Mobile Network Code (MNC): 02 Item 7: id-SubscriberProfileIDforRFP ProtocolIE-Field id: id-SubscriberProfileIDforRFP (106) criticality: ignore (1) value SubscriberProfileIDforRFP: 1
UE Setting Aspect of APN Assignement
There is special settings on UE in which you can add or delete (define) your own APN. How you define these APN on UE side would change UE behavior drastically. So when it comes to testing, it is very important to configure UE side APN setting to match the equipment APN setting. But the problem is .. depending on UE, some UE gives you full control over the APN setting but some UE does not give you any control at all or gives you the limitted controlability.
Following is one example of APN settings that I configured for testing purpose. (Don't try to blindly copy this setting onto your UE and expect it to work with your test environment or in live network).
Why sometimes UE does not specify APN name in PDN Connectivity Request ?
Case 1 : UE does not want to send those information before Security is established
I think this is the most common case and happens most frequently for the default bearer setup. The PDN request is piggybacked in Attach Request which happens before 'Security Mode Command' procedure. That is, UE does not want to send this kind of information without any security protection. In this case, it is expected that UE send PDN Connectivity Request with ESM information transfer flat = 1. Then Network will send ESM Information Request afrer Security process is completed and then UE will notify APN name it wants to use in ESM Information Response message. Message: Attach request
Protocol discriminator = 0x7 (EPS Mobility Management) Security header = 0x1 (Integrity protected) Auth code = 0xab180dd6 Sequence number = 0x0a Protocol discriminator = 0x7 (EPS Mobility Management) Security header = 0x0 (Plain NAS message, not security protected) Message type = 0x41 (Attach request) EPS attach type = 2 (combined EPS/IMSI attach) NAS key set identifier: ... Old GUTI or IMSI: ... UE network capability: ... ESM message container: Protocol discriminator = 0x2 (EPS Session Management) EPS bearer identity = 0 Procedure transaction identity = 68 Message type = 0xd0 (PDN connectivity request) Request type = 1 (initial request) PDN type = 3 (IPv4v6) ESM information transfer flag = 1 NOTE : The meaning of ESM information transfer flag is specified in 3GPP 24.301-9.9.4.5 as follows : The purpose of the ESM information transfer flag information element is to indicate whether ESM information, i.e. protocol configuration options or APN or both, is to be transferred security protected. value 0 : security protected ESM information transfer not required value 1 : security protected ESM information transfer required
Case 2 : Implying that UE doesn't care which APN the network assigns
I am not sure if this is explicitely allowed in terms of 3GPP, but I saw many cases where UE accept whatever APN the network assigns when UE does not specify APN name in PDN request.
Case 3 : Possible UE bug
I saw some cases where UE omit APN name in PDN request without setting ESM information transfer flag. In this case, some network may reject PDN request.
Common Issues and Challenges for APN related issues
One of the biggest issues about APN is that there is no strict rule, requirement clearly specified in 3GPP. A lot of detailed behavior is up to UE protocol stack implementation and requirement from Carriers. The most important factors is 'Matching between UE side expectation and NW side expectation'. The biggest problem is that it is very hard to find right person who has the clear information about this. In my case, most of the issues that I come across with these problems are with UE maker/engineers who is working with application layer testing (e.g, IP throughput, IMS etc) and followings are the common situation that ends up with.
After the step iv), it goes back to step i) and after a couple of iteration with no productive progress, usually the verification engineer give up any further technical communication and try to rely on ad-hoc method as follows.
Sometimes this kind of ad-hoc approach works but it can never be a perfect solution. Somebody use Method 1 and some other person use Method 2. So even for testing a same UE using the same equipment, if two different person performs the test final configuration on UE and equipment would be completely different. Also, in some UE you can use only method 1 due to equipment restriction and in some other cases you can use only method 2 due to UE side restriction. Therefore, none of them can be a generic solution.
To be honest, I don't think there would be any generic solution for this issue unless 3GPP put forward any clear requirement on it. For the time being, the most reasonable approach would be to create a clear requirement and check list of your own and coordinate everybody (chipset maker, UE maker and carrier) to follow the rules defined in the check list. Personally, I think Carrier (Network Operator) is at the best position to enforce this practice.
There is no right or wrong in many APN related issues (e.g, APN name). It is just a matter of a specific rule (set by developer or by network operator) and strictly following the rule. So the check list in this sections ask you about 'do you have this and this kind of rules of your own ?'
1. In what condition UE sets APN name in PDN Connectivity Request message ?
As I mentioned in Protocol aspect of APN assignment, in some case UE specifies APN name in some case and in some case UE does not specify it. The questions is 'in your UE, when it specify the APN name in PDN Connectivity Request ?'.
2. When UE does not specify APN name in its PDN Connectivity Request, what APN name the UE expects from Network in Activate Default EPS Bearer Context Req ?
Is any APN name OK ? or does it expect any specific APN name ?
3. If UE expect any specific APN name from the network in Activate Default EPS Bearer Context Req, where does the specific APN name come from ?
Is it from the requirement by network operator ? or is it from what you specified in UE APN setting ?
4. If UE send PDN Request with IP Type = IPv4v6 and Network allocates IPv4v6 in Activate Default EPS Bearer Context Req but RS(Router Solicitation)/RA(Router Advertisement) process failed, how UE should react ?
It would be desirable that UE gives up IPv6 setup process and just stick to IPv4, but I saw some UE retry the PDN request process until it gets RS/RA successful.
Note : Unlike APN name issues, there is relatively clear requirement specified in 3GPP. Refer to ESM Cause section for further information on this issue.
|
||