
               GPRS Subscriber Update Protocol

1. General

This document describes the remote protocol that is used by the SGSN to update
and manage the local subscriber list. The protocol and the messages are
designed after the corresponding MAP messages (see GSM 09.02) with the
following differences:

  - The encoding uses TLV structures instead of ASN.1 encodings
  - Segmentation is not used

See the specification of the Gr interface (GSM 03.60).

2. 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.

2. Procedures

2.1. 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 availabe 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 GSM 09.02, 25.5.6)

2.2. 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 GSM 09.02, 19.1.1.8)

[...]

3. Message Format

3.1. General

Every message is based on the following message format

  IEI	Info Element		Type			Pres.	Format	Length
	Message type		4.2.1			M	V	1
  01	IMSI			4.2.9			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.

3.2.1. Send Authentication Info Request

SGSN -> Network peer

  IEI	Info Element		Type			Pres.	Format	Length
	Message type		4.2.1			M	V	1
  01	IMSI			4.2.9			M	TLV	2-10

3.2.2. Send Authentication Info Error

Network peer -> SGSN

  IEI	Info Element		Type			Pres.	Format	Length
	Message type		4.2.1			M	V	1
  01	IMSI			4.2.9			M	TLV	2-10
  02	Cause			GMM cause,		M	TLV	3
				04.08: 10.5.5.14

3.2.3. Send Authentication Info Response

Network peer -> SGSN

  IEI	Info Element		Type			Pres.	Format	Length
	Message type		4.2.1			M	V	1
  01	IMSI			4.2.9			M	TLV	2-10
  03	Auth tuple		4.2.5			0-5	TLV	36

3.2.4. Update Location Request

SGSN -> Network peer

  IEI	Info Element		Type			Pres.	Format	Length
	Message type		4.2.1			M	V	1
  01	IMSI			4.2.9			M	TLV	2-10

3.2.5. Update Location Error

Network peer -> SGSN

  IEI	Info Element		Type			Pres.	Format	Length
	Message type		4.2.1			M	V	1
  01	IMSI			4.2.9			M	TLV	2-10
  02	Cause			GMM cause,		M	TLV	3
				04.08: 10.5.5.14

3.2.6. Update Location Result

Network peer -> SGSN

  IEI	Info Element		Type			Pres.	Format	Length
	Message type		4.2.1			M	V	1
  01	IMSI			4.2.9			M	TLV	2-10
  04	PDP info complete	4.2.8			O	TLV	2
  05	PDP info		4.2.3			1-10	TLV

If the PDP info complete IE is present, the old PDP info list shall be cleared.

3.2.7. Location Cancellation Request

Network peer -> SGSN

  IEI	Info Element		Type			Pres.	Format	Length
	Message type		4.2.1			M	V	1
  01	IMSI			4.2.9			M	TLV	2-10
  06	Cancellation type	4.2.6			M	TLV	3

3.2.8. Location Cancellation Result

SGSN -> Network peer

  IEI	Info Element		Type			Pres.	Format	Length
	Message type		4.2.1			M	V	1
  01	IMSI			4.2.9			M	TLV	2-10

3.2.9. Purge MS Request

SGSN -> Network peer

  IEI	Info Element		Type			Pres.	Format	Length
	Message type		4.2.1			M	V	1
  01	IMSI			4.2.9			M	TLV	2-10

3.2.10. Purge MS Error

Network peer -> SGSN

TODO

3.2.11. Purge MS Result

Network peer -> SGSN

TODO

3.2.12. Insert Subscriber Data Request

Network peer -> SGSN

  IEI	Info Element		Type			Pres.	Format	Length
	Message type		4.2.1			M	V	1
  01	IMSI			4.2.9			M	TLV	2-10
  04	PDP info complete	4.2.8			O	TLV	2
  05	PDP info		4.2.3			0-10	TLV

If the PDP info complete IE is present, the old PDP info list shall be cleared.

3.2.13. Insert Subscriber Data Error

SGSN -> Network peer

  IEI	Info Element		Type			Pres.	Format	Length
	Message type		4.2.1			M	V	1
  01	IMSI			4.2.9			M	TLV	2-10
  02	Cause			GMM cause,		M	TLV	3
				04.08: 10.5.5.14

3.2.14. Insert Subscriber Data Result

SGSN -> Network peer

  IEI	Info Element		Type			Pres.	Format	Length
	Message type		4.2.1			M	V	1
  01	IMSI			4.2.9			M	TLV	2-10

3.2.15. Delete Subscriber Data Request

Network peer -> SGSN

  IEI	Info Element		Type			Pres.	Format	Length
	Message type		4.2.1			M	V	1
  01	IMSI			4.2.9			M	TLV	2-10
  10	PDP context id		4.2.3			0-10	TLV
				(no conditional IE)

3.2.16. Delete Subscriber Data Error

SGSN -> Network peer

  IEI	Info Element		Type			Pres.	Format	Length
	Message type		4.2.1			M	V	1
  01	IMSI			4.2.9			M	TLV	2-10
  02	Cause			GMM cause,		M	TLV	3
				04.08: 10.5.5.14

3.2.17. Delete Subscriber Data Result

Network peer -> SGSN

  IEI	Info Element		Type			Pres.	Format	Length
	Message type		4.2.1			M	V	1
  01	IMSI			4.2.9			M	TLV	2-10

4. Information Elements

4.1. General

[...]

4.2.1. Message Type

  +---------------------------------------------------+
  | 8 7 6 5 4 3 2 1                                   |
  |                                                   |
  | 0 0 0 0 0 1 0 0  - Update Location Request        |
  | 0 0 0 0 0 1 0 1  - Update Location Error          |
  | 0 0 0 0 0 1 1 0  - Update Location Result         |
  |                                                   |
  | 0 0 0 0 1 0 0 0  - Send Auth Info Request         |
  | 0 0 0 0 1 0 0 1  - Send Auth Info Error           |
  | 0 0 0 0 1 0 1 0  - Send Auth Info Result          |
  |                                                   |
  | 0 0 0 0 1 1 0 0  - Purge MS Request               |
  | 0 0 0 0 1 1 0 1  - Purge MS Error                 |
  | 0 0 0 0 1 1 1 0  - Purge MS Result                |
  |                                                   |
  | 0 0 0 1 0 0 0 0  - Insert Subscr. Data Request    |
  | 0 0 0 1 0 0 0 1  - Insert Subscr. Data Error      |
  | 0 0 0 1 0 0 1 0  - Insert Subscr. Data Result     |
  |                                                   |
  | 0 0 0 1 0 1 0 0  - Delete Subscr. Data Request    |
  | 0 0 0 1 0 1 0 1  - Delete Subscr. Data Error      |
  | 0 0 0 1 0 1 1 0  - Delete Subscr. Data Result     |
  |                                                   |
  | 0 0 0 1 1 1 0 0  - Location Cancellation Request  |
  | 0 0 0 1 1 1 0 1  - Location Cancellation Error    |
  | 0 0 0 1 1 1 1 0  - Location Cancellation Result   |
  |                                                   |
  +---------------------------------------------------+

4.2.2. IP Address

The value part is encoded like in the Packet data protocol address IE defined
in GSM 04.08, 10.5.6.4. PDP type organization must be set to 'IETF allocated
address'.

4.2.3. PDP Info

This is a container for information elements describing a single PDP.

  IEI	Info Element		Type			Pres.	Format	Length
	PDP Info IEI					M	V	1
	Length of PDP Info IE	length, no ext		M	V	1
  10	PDP context id		big endian int, 1-N 	C	TLV	3
  11	PDP type		4.2.4			C	TLV	4
  12	Access point name	04.08, 10.5.6.1		C	TLV	3-102

The conditional IE are mandantory unless mentioned otherwise.

4.2.4. PDP Type

The PDP type value consists of 2 octets that are encoded like octet 4-5 of the
End User Address defined in GSM 09.60, 7.9.18.

     8      7      6      5      4      3      2      1
  +-----------------------------------------------------+
  |     |  PDP type IEI                                 | octet 1
  +-----------------------------------------------------+
  |   Length of PDP type IE contents (2)                | octet 2
  +-----------------------------------------------------+
  |  Spare                    |   PDP type org.         | octet 3
  +-----------------------------------------------------+
  |  PDP type number                                    | octet 4
  +-----------------------------------------------------+

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

4.2.5. Auth tuple

This is a container for information elements describing a single authentication
tuple.

IEI	Info Element		Type			Pres.	Format	Length
	Auth. Tuple IEI					M	V	1
	Length of Ath Tuple IE	length, no ext		M	V	1
20	RAND			octet string (16)	M	TLV	18
21	SRES			octet string (4)	M	TLV	6
22	Kc			octet string (8)	M	TLV	10

4.2.6. Cancellation Type

     8      7      6      5      4      3      2      1
  +-----------------------------------------------------+
  |     |  Cancellation type IEI                        | octet 1
  +-----------------------------------------------------+
  |   Length of Cancellation Type IE contents (1)       | octet 2
  +-----------------------------------------------------+
  |   Cancellation type number                          | octet 4
  +-----------------------------------------------------+

Where the cancellation type number is:

  +---------------------------------------------------+
  | 8 7 6 5 4 3 2 1                                   |
  |                                                   |
  | 0 0 0 0 0 0 0 0  - Update Procedure               |
  | 0 0 0 0 0 0 0 1  - Subscription Withdraw          |
  +---------------------------------------------------+

4.2.7. 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.

  +---------------------------------------------------------+
  | IEI    Info Element   Type                              |
  |                                                         |
  | 0x01   IMSI           Mobile identity, 04.08: 10.5.1.4  |
  | 0x02   Cause          GMM cause, 04.08: 10.5.5.14       |
  | 0x03   Auth tuple     4.2.5                             |
  | 0x04   PDP info compl 4.2.8                             |
  | 0x05   PDP info       4.2.3                             |
  | 0x06   Cancel type    4.2.6                             |
  | 0x10   PDP context id big endian int                    |
  | 0x11   PDP type       4.2.4                             |
  | 0x12   APN            04.08, 10.5.6.1                   |
  | 0x20   RAND           octet string                      |
  | 0x21   SRES           octet string                      |
  | 0x22   Kc             octet string                      |
  +---------------------------------------------------------+


4.2.8 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.

     8      7      6      5      4      3      2      1
  +-----------------------------------------------------+
  |     |  IEI                                          | octet 1
  +-----------------------------------------------------+
  |   Length of IE contents (0)                         | octet 2
  +-----------------------------------------------------+

4.2.9. IMSI

The IMSI is encoded like in octet 4-N of the Called Party BCD Number defined in GSM 04.08, 10.5.4.7.

     8      7      6      5      4      3      2      1
  +-----------------------------------------------------+
  |     |  IMSI IEI                                     | octet 1
  +-----------------------------------------------------+
  |  Length of IMSI IE contents                         | octet 2
  +-----------------------------------------------------+
  |  Number digit 2           |   Number digit 1        | octet 3
  +-----------------------------------------------------+
  |  Number digit 4           |   Number digit 3        | octet 4
  +-----------------------------------------------------+
  :                                                     :   :
  +-----------------------------------------------------+
  |  see note 1)                                        | octet 2+(N+1)div2
  +-----------------------------------------------------+

Note 1) 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.
