aboutsummaryrefslogtreecommitdiffstats
path: root/common/chapters/gsup.adoc
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2018-01-26 11:16:45 +0100
committerHarald Welte <laforge@gnumonks.org>2018-01-26 11:17:25 +0100
commit66c6dcce3ceb3f32d5043528cb126b7249d1b23b (patch)
tree12d3830172ab07796f8971c78ba03f4932200155 /common/chapters/gsup.adoc
parent88ef855d234276bb33eec2700cadaa6d4c671078 (diff)
share chapters/gsup.adoc from OsmoSGSN to OsmoMSC + OsmoHLR
Since the NITB split, GSUP is used in all three network elements, so make the protocol a shared chapter Change-Id: Id2d7c27ef16eb0ebe5f60d625a1fcf42f1603f4f
Diffstat (limited to 'common/chapters/gsup.adoc')
-rw-r--r--common/chapters/gsup.adoc859
1 files changed, 859 insertions, 0 deletions
diff --git a/common/chapters/gsup.adoc b/common/chapters/gsup.adoc
new file mode 100644
index 0000000..733b60e
--- /dev/null
+++ b/common/chapters/gsup.adoc
@@ -0,0 +1,859 @@
+[[gsup]]
+== GPRS Subscriber Update Protocol
+
+=== General
+
+This chapter describes the remote protocol that is used by the SGSN to update
+and manage the local subscriber list. Functionally, it resembles the
+interface between the SGSN on the one hand side, and HLR/AUC on the
+other side.
+
+For more information, see the specification of the Gr interface (3GPP TS 03.60).
+
+Traditionally, the GSM MAP (Mobile Application Part) protocol is used
+for this purpose, running on top of a full telecom signalling protocol
+stck of MTP2/MTP3/SCCP/TCAP, or any of the SIGTRAN alternatvives.
+
+In order to avoid many of the complexities of MAP, which are difficult
+to implement in the plain C language evnironment of the Osmocom
+cellular network elements like the SGSN, we introduce the GSUP
+protocol.
+
+The GSUP protocol and the messages are designed after the
+corresponding MAP messages (see 3GPP TS 09.02) with the following
+main differences:
+
+* The encoding uses TLV structures instead of ASN.1 BER
+* Segmentation is not used, i.e. we rely on the fact that the
+ underlying transport protocol can transport signalling messages of
+ any size.
+
+=== Connection
+
+The protocol expects that a reliable, ordered, packet boundaries preserving
+connection is used (e.g. IPA over TCP). The remote peer is either a service
+that understands the protocol natively or a wrapper service that maps the
+messages to/from real MAP messages that can be used to directly communicate
+with an HLR.
+
+=== Using IPA
+
+By default, the following identifiers should be used:
+
+* IPA Stream ID: 0xEE (OSMO)
+* IPA OSMO protocol extension: 0x05
+
+For more information about the IPA multiplex, please see the 'OsmoBTS
+Abis/IP Specification'.
+
+=== Procedures
+
+==== Authentication management
+
+The SGSN sends a SEND_AUTHENTICATION_INFO_REQ message containing the MS's IMSI
+to the peer. On errors, especially if authentication info is not available for
+that IMSI, the peer returns a SEND_AUTHENTICATION_INFO_ERR message. Otherwise
+the peer returns a SEND_AUTHENTICATION_INFO_RES message. If this message
+contains at least one authentication tuple, the SGSN replaces all tuples that
+are assigned to the subscriber. If the message doesn't contain any tuple the
+SGSN may reject the Attach Request. (see 3GPP TS 09.02, 25.5.6)
+
+.Send Authentication Info (Normal Case)
+["mscgen"]
+----
+msc {
+ hscale="1.5";
+ SGSN [label="SGSN"], Peer [label="Network Peer (HLR)"];
+
+ SGSN => Peer [label="SEND AUTHENTICATION INFO REQUEST (IMSI)"];
+ Peer => SGSN [label="SEND AUTHENTICATION INFO RESPONSE (Tuples)"];
+}
+----
+
+.Send Authentication Info (Erroneous Case)
+["mscgen"]
+----
+msc {
+ hscale="1.5";
+ SGSN [label="SGSN"], Peer [label="Network Peer (HLR)"];
+
+ SGSN => Peer [label="SEND AUTHENTICATION INFO REQUEST (IMSI)"];
+ Peer => SGSN [label="SEND AUTHENTICATION INFO ERROR (Cause)"];
+}
+----
+
+==== Reporting of Authentication Failure
+
+Using this procedure, the SGSN reports authentication failures to the
+HLR.
+
+.Authentication Failure Report (Normal Case)
+["mscgen"]
+----
+msc {
+ hscale="1.5";
+ SGSN [label="SGSN"], Peer [label="Network Peer (HLR)"];
+
+ SGSN => Peer [label="AUTHENTICATION FAILURE REPORT (IMSI)"];
+}
+----
+
+==== Location Updating
+
+The SGSN sends a UPDATE_LOCATION_REQ to the peer. If the request is denied by
+the network, the peer returns an UPDATE_LOCATION_ERR message to the SGSN.
+Otherwise the peer returns an UPDATE_LOCATION_RES message containing all
+information fields that shall be inserted into the subscriber record. If
+the 'PDP info complete' information element is set in the message, the SGSN
+clears existing PDP information fields in the subscriber record first.
+(see 3GPP TS 09.02, 19.1.1.8)
+
+.Update Location (Normal Case)
+["mscgen"]
+----
+msc {
+ hscale="1.5";
+ SGSN [label="SGSN"], Peer [label="Network Peer (HLR)"];
+
+ SGSN => Peer [label="UPDATE LOCATION REQUEST (IMSI)"];
+ Peer => SGSN [label="INSERT SUBSCRIBER DATA"];
+ SGSN => Peer [label="INSERT SUBSCRIBER DATA ACK"];
+ Peer => SGSN [label="UPDATE LOCATTION RESULT"];
+}
+----
+
+.Update Location (Error Case)
+["mscgen"]
+----
+msc {
+ hscale="1.5";
+ SGSN [label="SGSN"], Peer [label="Network Peer (HLR)"];
+
+ SGSN => Peer [label="UPDATE LOCATION REQUEST (IMSI)"];
+ Peer => SGSN [label="UPDATE LOCATTION ERROR (Cause)"];
+}
+----
+
+==== Location Cancellation
+
+Using the Location Cancellation procedure, the Network Peer (HLR) can
+request the SGSN to remove a subscriber record.
+
+.Cancel Location (Normal Case)
+["mscgen"]
+----
+msc {
+ hscale="1.5";
+ SGSN [label="SGSN"], Peer [label="Network Peer (HLR)"];
+
+ Peer => SGSN [label="CANCEL LOCATION REQUEST (IMSI)"];
+ SGSN => Peer [label="CANCEL LOCATION RESULT"];
+}
+----
+
+.Cancel Location (Error Case)
+["mscgen"]
+----
+msc {
+ hscale="1.5";
+ SGSN [label="SGSN"], Peer [label="Network Peer (HLR)"];
+
+ Peer => SGSN [label="CANCEL LOCATION REQUEST (IMSI)"];
+ SGSN => Peer [label="CANCEL LOCATION ERROR (Cause)"];
+}
+----
+
+==== Purge MS
+
+Using the Purge MS procedure, the SGSN can request purging of MS
+related state from a previous SGSN during an inter-SGSN location
+update.
+
+.Purge MS (Normal Case)
+["mscgen"]
+----
+msc {
+ hscale="1.5";
+ SGSN [label="SGSN"], Peer [label="Network Peer (HLR)"];
+
+ SGSN => Peer [label="PURGE MS REQUEST (IMSI)"];
+ Peer => SGSN [label="PURGE MS RESULT"];
+}
+----
+
+==== Delete Subscriber Data
+
+Using the Delete Subscriber Data procedure, the Peer (HLR) can remove
+some of the subscriber data from the SGSN. This is used in case the
+subscription details (e.g. PDP Contexts / APNs) change while the
+subscriber is registred to that SGSN.
+
+.Delete Subscriber Data (Normal Case)
+["mscgen"]
+----
+msc {
+ hscale="1.5";
+ SGSN [label="SGSN"], Peer [label="Network Peer (HLR)"];
+
+ Peer => SGSN [label="DELETE SUBSCRIBER DATA REQUEST (IMSI)"];
+ SGSN => Peer [label="DELETE SUBSCRIBER DATA RESULT"];
+}
+----
+
+=== Message Format
+
+==== General
+
+Every message is based on the following message format
+
+[options="header",cols="5%,20%,45%,10%,10%,10%"]
+|===
+|IEI|IE|Type|Presence|Format|Length
+| |Message Type|<<gsup-ie-msgtype>>|M|V|1
+|01|IMSI|<<gsup-ie-imsi>>|M|TLV|2-10
+|===
+
+If a numeric range is indicated in the 'presence' column, multiple information
+elements with the same tag may be used in sequence. The information elements
+shall be sent in the given order. Nevertheless after the generic part the
+receiver shall be able to received them in any order. Unknown IE shall be
+ignored.
+
+==== Send Authentication Info Request
+
+Direction: SGSN => Network peer
+
+[options="header",cols="5%,20%,45%,10%,10%,10%"]
+|===
+|IEI|IE|Type|Presence|Format|Length
+| |Message Type|<<gsup-ie-msgtype>>|M|V|1
+|01|IMSI|<<gsup-ie-imsi>>|M|TLV|2-10
+|28|CN Domain|<<gsup-ie-cndomain>>|O|TLV|3
+|26|AUTS|<<gsup-ie-auts>>|C|TLV|18
+|20|RAND|<<gsup-ie-rand>>|C|TLV|18
+|===
+
+The conditional 'AUTS' and 'RAND' IEs are both present in case the SIM
+(via UE) requests an UMTS AKA re-synchronization procedure. Eiter
+both optional IEs are present, or none of them.
+
+==== Send Authentication Info Error
+
+Direction: Network peer => SGSN
+
+[options="header",cols="5%,20%,45%,10%,10%,10%"]
+|===
+|IEI|IE|Type|Presence|Format|Length
+| |Message Type|<<gsup-ie-msgtype>>|M|V|1
+|01|IMSI|<<gsup-ie-imsi>>|M|TLV|2-10
+|02|Cause|<<gsup-ie-cause>>|M|TLV|3
+|===
+
+==== Send Authentication Info Response
+
+Direction: Network peer => SGSN
+
+[options="header",cols="5%,20%,45%,10%,10%,10%"]
+|===
+|IEI|IE|Type|Presence|Format|Length
+| |Message Type|<<gsup-ie-msgtype>>|M|V|1
+|01|IMSI|<<gsup-ie-imsi>>|M|TLV|2-10
+|03|Auth Tuple|<<gsup-ie-authtuple>>|0-5|TLV|36
+|===
+
+==== Authentication Failure Report
+
+Direction: SGSN => Network peer
+
+[options="header",cols="5%,20%,45%,10%,10%,10%"]
+|===
+|IEI|IE|Type|Presence|Format|Length
+| |Message Type|<<gsup-ie-msgtype>>|M|V|1
+|01|IMSI|<<gsup-ie-imsi>>|M|TLV|2-10
+|28|CN Domain|<<gsup-ie-cndomain>>|O|TLV|3
+|===
+
+==== Update Location Request
+
+Direction: SGSN => Network peer
+
+[options="header",cols="5%,20%,45%,10%,10%,10%"]
+|===
+|IEI|IE|Type|Presence|Format|Length
+| |Message Type|<<gsup-ie-msgtype>>|M|V|1
+|01|IMSI|<<gsup-ie-imsi>>|M|TLV|2-10
+|28|CN Domain|<<gsup-ie-cndomain>>|O|TLV|3
+|===
+
+==== Update Location Error
+
+Direction: Network peer => SGSN
+
+[options="header",cols="5%,20%,45%,10%,10%,10%"]
+|===
+|IEI|IE|Type|Presence|Format|Length
+| |Message Type|<<gsup-ie-msgtype>>|M|V|1
+|01|IMSI|<<gsup-ie-imsi>>|M|TLV|2-10
+|02|Cause|<<gsup-ie-cause>>|M|TLV|3
+|===
+
+==== Update Location Result
+
+Direction: Network peer => SGSN
+
+[options="header",cols="5%,20%,45%,10%,10%,10%"]
+|===
+|IEI|IE|Type|Presence|Format|Length
+| |Message Type|<<gsup-ie-msgtype>>|M|V|1
+|01|IMSI|<<gsup-ie-imsi>>|M|TLV|2-10
+|08|MSISDN|<<gsup-ie-msisdn>>|O|TLV|0-9
+|09|HLR Number|<<gsup-ie-hlr>>|O|TLV|0-9
+|04|PDP info complete|<<gsup-ie-empty>>|O|TLV|2
+|05|PDP info|<<gsup-ie-pdpinfo>>|1-10|TLV|
+|===
+
+If the PDP info complete IE is present, the old PDP info list shall be cleared.
+
+==== Location Cancellation Request
+
+Direction: Network peer => SGSN
+
+[options="header",cols="5%,20%,45%,10%,10%,10%"]
+|===
+|IEI|IE|Type|Presence|Format|Length
+| |Message Type|<<gsup-ie-msgtype>>|M|V|1
+|01|IMSI|<<gsup-ie-imsi>>|M|TLV|2-10
+|28|CN Domain|<<gsup-ie-cndomain>>|O|TLV|3
+|06|Cancellation type|<<gsup-ie-canctype>>|O|TLV|3
+|===
+
+==== Location Cancellation Result
+
+Direction: SGSN => Network peer
+
+[options="header",cols="5%,20%,45%,10%,10%,10%"]
+|===
+|IEI|IE|Type|Presence|Format|Length
+| |Message Type|<<gsup-ie-msgtype>>|M|V|1
+|01|IMSI|<<gsup-ie-imsi>>|M|TLV|2-10
+|28|CN Domain|<<gsup-ie-cndomain>>|O|TLV|3
+|===
+
+==== Purge MS Request
+
+Direction: SGSN => Network peer
+
+[options="header",cols="5%,20%,45%,10%,10%,10%"]
+|===
+|IEI|IE|Type|Presence|Format|Length
+| |Message Type|<<gsup-ie-msgtype>>|M|V|1
+|01|IMSI|<<gsup-ie-imsi>>|M|TLV|2-10
+|28|CN Domain|<<gsup-ie-cndomain>>|O|TLV|3
+|09|HLR Number|<<gsup-ie-hlr>>|M|TLV|0-9
+|===
+
+==== Purge MS Error
+
+Direction: Network peer => SGSN
+
+[options="header",cols="5%,20%,45%,10%,10%,10%"]
+|===
+|IEI|IE|Type|Presence|Format|Length
+| |Message Type|<<gsup-ie-msgtype>>|M|V|1
+|01|IMSI|<<gsup-ie-imsi>>|M|TLV|2-10
+|02|Cause|<<gsup-ie-cause>>|M|TLV|3
+|===
+
+==== Purge MS Result
+
+Direction: Network peer => SGSN
+
+[options="header",cols="5%,20%,45%,10%,10%,10%"]
+|===
+|IEI|IE|Type|Presence|Format|Length
+| |Message Type|<<gsup-ie-msgtype>>|M|V|1
+|01|IMSI|<<gsup-ie-imsi>>|M|TLV|2-10
+|07|Freeze P-TMSI|<<gsup-ie-empty>>|M|TLV|2
+|===
+
+==== Insert Subscriber Data Request
+
+Direction: Network peer => SGSN
+
+[options="header",cols="5%,20%,45%,10%,10%,10%"]
+|===
+|IEI|IE|Type|Presence|Format|Length
+| |Message Type|<<gsup-ie-msgtype>>|M|V|1
+|01|IMSI|<<gsup-ie-imsi>>|M|TLV|2-10
+|28|CN Domain|<<gsup-ie-cndomain>>|O|TLV|3
+|08|MSISDN|<<gsup-ie-msisdn>>|O|TLV|0-9
+|09|HLR Number|<<gsup-ie-hlr>>|O|TLV|0-9
+|04|PDP info complete|<<gsup-ie-empty>>|M|TLV|2
+|05|PDP info|<<gsup-ie-pdpinfo>>|0-10|TLV|
+|14|PDP-Charging Characteristics|<<gsup-ie-charging>>|O|TLV|4
+|===
+
+If the PDP info complete IE is present, the old PDP info list shall be cleared.
+
+==== Insert Subscriber Data Error
+
+Direction: SGSN => Network peer
+
+[options="header",cols="5%,20%,45%,10%,10%,10%"]
+|===
+|IEI|IE|Type|Presence|Format|Length
+| |Message Type|<<gsup-ie-msgtype>>|M|V|1
+|01|IMSI|<<gsup-ie-imsi>>|M|TLV|2-10
+|02|Cause|<<gsup-ie-cause>>|M|TLV|3
+|===
+
+==== Insert Subscriber Data Result
+
+Direction: SGSN => Network peer
+
+[options="header",cols="5%,20%,45%,10%,10%,10%"]
+|===
+|IEI|IE|Type|Presence|Format|Length
+| |Message Type|<<gsup-ie-msgtype>>|M|V|1
+|01|IMSI|<<gsup-ie-imsi>>|M|TLV|2-10
+|===
+
+==== Delete Subscriber Data Request
+
+Direction: Network peer => SGSN
+
+[options="header",cols="5%,20%,45%,10%,10%,10%"]
+|===
+|IEI|IE|Type|Presence|Format|Length
+| |Message Type|<<gsup-ie-msgtype>>|M|V|1
+|01|IMSI|<<gsup-ie-imsi>>|M|TLV|2-10
+|28|CN Domain|<<gsup-ie-cndomain>>|O|TLV|3
+|10|PDP context id|<<gsup-ie-pdpinfo>> (no conditional IE)|0-10|TLV|
+|===
+
+==== Delete Subscriber Data Error
+
+Direction: SGSN => Network peer
+
+[options="header",cols="5%,20%,45%,10%,10%,10%"]
+|===
+|IEI|IE|Type|Presence|Format|Length
+| |Message Type|<<gsup-ie-msgtype>>|M|V|1
+|01|IMSI|<<gsup-ie-imsi>>|M|TLV|2-10
+|02|Cause|<<gsup-ie-cause>>|M|TLV|3
+|===
+
+==== Delete Subscriber Data Result
+
+Direction: Network peer => SGSN
+
+[options="header",cols="5%,20%,45%,10%,10%,10%"]
+|===
+|IEI|IE|Type|Presence|Format|Length
+| |Message Type|<<gsup-ie-msgtype>>|M|V|1
+|01|IMSI|<<gsup-ie-imsi>>|M|TLV|2-10
+|===
+
+=== Information Elements
+
+[[gsup-ie-msgtype]]
+==== Message Type
+
+[options="header",cols="10%,90%"]
+|===
+|Type|Description
+|0x04|Update Location Request
+|0x05|Update Location Error
+|0x06|Update Location Result
+|0x08|Send Auth Info Request
+|0x09|Send Auth Info Error
+|0x0a|Send Auth Info Result
+|0x0b|Authentication Failure Report
+|0x0c|Purge MS Request
+|0x0d|Purge MS Error
+|0x0e|Purge MS Result
+|0x10|Insert Subscriber Data Request
+|0x11|Insert Subscriber Data Error
+|0x12|Insert Subscriber Data Result
+|0x14|Delete Subscriber Data Request
+|0x15|Delete Subscriber Data Error
+|0x16|Delete Subscriber Data Result
+|0x1c|Location Cancellation Request
+|0x1d|Location Cancellation Error
+|0x1e|Location Cancellation Result
+|===
+
+[[gsup-ie-ipaddr]]
+==== IP Address
+
+The value part is encoded like in the Packet data protocol address IE defined
+in 3GPP TS 04.08, Chapter 10.5.6.4. PDP type organization must be set to
+'IETF allocated address'.
+
+[[gsup-ie-pdpinfo]]
+==== PDP Info
+
+This is a container for information elements describing a single PDP.
+
+[options="header",cols="5%,20%,45%,10%,10%,10%"]
+|===
+|IEI|IE|Type|Presence|Format|Length
+| |PDP Info IEI|<<gsup-iei>>|M|V|1
+| |Length of PDP Info IE||M|V|1
+|10|PDP Context ID|<<gsup-ie-pdpctxid>>|C|TLV|3
+|11|PDP Type|<<gsup-ie-pdptype>>|C|TLV|4
+|12|Access Point Name|<<gsup-ie-apn>>|C|TLV|3-102
+|13|Quality of Service|<<gsup-ie-qos>>|O|TLV|1-20
+|14|PDP-Charging Characteristics|<<gsup-ie-charging>>|O|TLV|4
+|===
+
+The conditional IE are mandantory unless mentioned otherwise.
+
+[[gsup-ie-pdptype]]
+==== PDP Type
+
+The PDP type value consists of 2 octets that are encoded like octet 4-5 of the
+End User Address defined in 3GPP TS 09.60, 7.9.18.
+
+[packetdiag]
+----
+{
+ colwidth = 8
+ node_height = 24
+
+ 0-6: PDP type IEI
+ 7: Res
+ 8-15: Length (2)
+ 16-19: Spare
+ 20-23: PDP type org
+ 24-31: PDP type number
+}
+----
+
+The spare bits are left undefined. While 09.60 defines them as '1 1 1 1', there
+are MAP traces where these bits are set to '0 0 0 0'. So the receiver shall
+ignore these bits.
+
+Examples:
+
+* IPv4: PDP type org: 1 (IETF), PDP type number: 0x21
+* IPv6: PDP type org: 1 (IETF), PDP type number: 0x57
+
+[[gsup-ie-pdpctxid]]
+==== PDP Context ID
+
+The PDP type context ID IE consists of a single integer byte wrapped in
+a TLV.
+
+[packetdiag]
+----
+{
+ colwidth = 8
+ node_height = 24
+
+ 0-6: PDP context ID IEI
+ 7: Res
+ 8-15: Length (1)
+ 16-23: PDP Context ID
+}
+----
+
+[[gsup-ie-authtuple]]
+==== Auth tuple
+
+This is a container for information elements describing a single authentication
+tuple.
+
+[options="header",cols="5%,20%,45%,10%,10%,10%"]
+|===
+|IEI|IE|Type|Presence|Format|Length
+| |Auth Tuple IEI|<<gsup-iei>>|M|V|1
+| |Length of Auth Tuple IE||M|V|1
+|20|RAND|<<gsup-ie-rand>>|M|TLV|18
+|21|SRES|<<gsup-ie-sres>>|M|TLV|6
+|22|Kc|<<gsup-ie-kc>>|M|TLV|10
+|23|IK|<<gsup-ie-ik>>|C|TLV|18
+|24|CK|<<gsup-ie-ck>>|C|TLV|18
+|25|AUTN|<<gsup-ie-autn>>|C|TLV|18
+|27|RES|<<gsup-ie-res>>|C|TLV|2-18
+|===
+
+The conditional IEs 'IK', 'CK', 'AUTN' and 'RES' are onl present in
+case the subscriber supports UMTS AKA.
+
+[[gsup-ie-rand]]
+==== RAND
+
+The 16-byte Random Challenge of the GSM Authentication Algorithm.
+
+[[gsup-ie-sres]]
+==== SRES
+
+The 4-byte Authentication Result of the GSM Authentication Algorithm.
+
+[[gsup-ie-kc]]
+==== Kc
+
+The 8-byte Encryption Key of the GSM Authentication and Key Agreemnt
+Algorithm.
+
+[[gsup-ie-ik]]
+==== IK
+
+The 16-byte Integrity Protection Key generated by the UMTS
+Authentication and Key Agreement Algorithm.
+
+[[gsup-ie-ck]]
+==== CK
+
+The 16-byte Ciphering Key generated by the UMTS Authentication and Key
+Agreement Algorithm.
+
+[[gsup-ie-autn]]
+==== AUTN
+
+The 16-byte Authentication Nonce sent from network to USIM in the UMTS
+Authentication and Key Agreement Algorithm.
+
+[[gsup-ie-auts]]
+==== AUTS
+
+The 14-byte Authentication Synchronization Nonce generated by the USIM
+in case the UMTS Authentication and Key Agreement Algorithm needs to
+re-synchronize the sequence counters between AUC and USIM.
+
+[[gsup-ie-res]]
+==== RES
+
+The (variable length, but typically 16 byte) Authentication Result
+generated by the USIM in the UMTS Authentication and Key Agreement
+Algorithm.
+
+[[gsup-ie-cndomain]]
+==== CN Domain
+
+This single-byte information element indicates the Core Network
+Domain, i.e. if the message is related to Circuit Switched or Packet
+Switched services.
+
+For backwards compatibility reasons, if no CN Domain IE is present
+within a request, the PS Domain is assumed.
+
+.CN Domain Number
+[options="header",cols="10%,90%"]
+|===
+|Type|Description
+|0x01|PS Domain
+|0x02|CS Domain
+|===
+
+[[gsup-ie-canctype]]
+==== Cancellation Type
+
+[packetdiag]
+----
+{
+ colwidth = 8
+ node_height = 24
+
+ 0-6: PDP type IEI
+ 7: Res
+ 8-15: Length (1)
+ 16-23: Canc. Type Nr.
+}
+----
+
+.Cancellation Type Number
+[options="header",cols="10%,90%"]
+|===
+|Number|Description
+|0x00|Update Procedure
+|0x01|Subscription Withdrawn
+|===
+
+[[gsup-iei]]
+==== IE Identifier (informational)
+
+These are the standard values for the IEI. See the message definitions for the
+IEI that shall be used for the encoding.
+
+.GSUP IE Identifiers
+[options="header",cols="15%,35%,50%"]
+|===
+|IEI|Info Element|Type / Encoding
+|0x01|IMSI|Mobile Identity, 3GPP TS 04.08 Ch. 10.5.1.4
+|0x02|Cause|<<gsup-ie-cause>>
+|0x03|Auth Tuple|<<gsup-ie-authtuple>>
+|0x04|PDP Info Compl|<<gsup-ie-empty>>
+|0x05|PDP Info|<<gsup-ie-pdpinfo>>
+|0x06|Cancel Type|<<gsup-ie-canctype>>
+|0x07|Freeze P-TMSI|<<gsup-ie-empty>>
+|0x08|MSISDN|ISDN-AddressString/octet, <<gsup-ie-msisdn>>
+|0x09|HLR Number|<<gsup-ie-hlr>>
+|0x10|PDP Context ID|<<gsup-ie-pdpctxid>>
+|0x11|PDP Type|<<gsup-ie-pdptype>>
+|0x12|Access Point Name|<<gsup-ie-apn>>
+|0x13|QoS|<<gsup-ie-qos>>
+|0x14|PDP-Charging Characteristics|<<gsup-ie-charging>>
+|0x20|RAND|<<gsup-ie-rand>>
+|0x21|SRES|<<gsup-ie-sres>>
+|0x22|Kc|<<gsup-ie-kc>>
+|0x23|IK|<<gsup-ie-ik>>
+|0x24|CK|<<gsup-ie-ck>>
+|0x25|AUTN|<<gsup-ie-autn>>
+|0x26|AUTS|<<gsup-ie-auts>>
+|0x27|RES|<<gsup-ie-res>>
+|0x28|CN Domain|<<gsup-ie-cndomain>>
+|===
+
+[[gsup-ie-empty]]
+==== Empty field
+
+This is used for flags, if and only if this IE is present, the flag is set.
+The semantics depend on the IEI and the context.
+
+[packetdiag]
+----
+{
+ colwidth = 8
+ node_height = 24
+
+ 0-6: PDP type IEI
+ 7: Res
+ 8-15: Length (0)
+}
+----
+
+[[gsup-ie-imsi]]
+==== IMSI
+
+The IMSI is encoded like in octet 4-N of the Called Party BCD Number
+defined in 3GPP TS 04.08, 10.5.4.7.
+
+[packetdiag]
+----
+{
+ colwidth = 8
+ node_height = 24
+
+ 0-6: PDP type IEI
+ 7: Res
+ 8-15: Length of IE content
+ 16-19: Digit 1
+ 20-23: Digit 2
+ 24-27: Digit ...
+ 28-31: Digit N
+ 32-39: see Note
+}
+----
+
+NOTE: Either '1 1 1 1 | Number digit N' (N odd) or 'Number digit N |
+Number digit N-1' (N even), where N is the number of digits.
+
+[[gsup-ie-msisdn]]
+==== ISDN-AddressString / MSISDN / Called Party BCD Number
+
+The MSISDN is encoded as an ISDN-AddressString in 3GPP TS 09.02 and Called Party
+BCD Number in 3GPP TS 04.08. It will be stored by the SGSN and then passed as is
+to the GGSN during the activation of the primary PDP Context.
+
+[packetdiag]
+----
+{
+ colwidth = 8
+ node_height = 24
+
+ 0-6: PDP type IEI
+ 7: Res
+ 8-15: Length of IE content
+ 16-19: NPI
+ 20-22: TON
+ 23: ext
+ 24-27: Digit 1
+ 28-31: Digit 2
+ 32-35: Digit ...
+ 36-39: Digit N
+}
+----
+
+[[gsup-ie-apn]]
+==== Access Point Name
+
+This encodes the Access Point Name of a PDP Context. The encoding
+is defined in 3GPP TS 23.003.
+
+[[gsup-ie-qos]]
+==== Quality of Service Subscribed Service
+
+This encodes the subscribed QoS of a subscriber. It will be used by the
+SGSN during the PDP Context activation. If the length of the QoS data
+is 3 (three) octets it is assumed that these are octets 3-5 of the TS
+3GPP TS 24.008 Quality of Service Octets. If it is more than three then
+then it is assumed that the first octet is the Allocation/Retention
+Priority and the reset are encoded as octets 3-N of 24.008.
+
+[packetdiag]
+----
+{
+ colwidth = 8
+ node_height = 24
+
+ 0-6: PDP type IEI
+ 7: Res
+ 8-15: Length of IE content
+ 16-23: Payload
+}
+----
+
+
+[[gsup-ie-charging]]
+==== PDP-Charging Characteristics
+
+This encodes the ChargingCharacteristics of 3GPP TS 32.215. A HLR may
+send this as part of the InsertSubscriberData or within a single PDP
+context definition. If the HLR supplies this information it must be
+used by the SGSN when activating a PDP context.
+
+[packetdiag]
+----
+{
+ colwidth = 8
+ node_height = 24
+
+ 0-3: Profile Index
+ 4-15: Behavior
+}
+----
+
+
+[[gsup-ie-hlr]]
+==== HLR Number encoded as 3GPP TS 09.02 ISDN-AddressString
+
+The HLR Number is encoded as an ISDN-AddressString in 3GPP TS 09.02. It
+will be stored by the SGSN can be used by the CDR module to keep a
+record.
+
+[packetdiag]
+----
+{
+ colwidth = 8
+ node_height = 24
+
+ 0-6: PDP type IEI
+ 7: Res
+ 8-15: Length of IE content
+ 16-19: NPI
+ 20-22: TON
+ 23: ext
+ 24-27: Digit 1
+ 28-31: Digit 2
+ 32-35: Digit ...
+ 36-39: Digit N
+}
+----
+
+[[gsup-ie-cause]]
+==== Cause
+
+This IE shall be encoded according to the 'GMM Cause' as described in
+Chapter 10.5.5.14 of 3GPP TS 04.08.