blob: 9efc8c096bfaee2bad4a0bf7bf402cc78164155c [file] [log] [blame]
Harald Welte9f1331b2016-02-20 10:56:10 +01001[[gsup]]
2== GPRS Subscriber Update Protocol
3
4=== General
5
6This chapter describes the remote protocol that is used by the SGSN to update
7and manage the local subscriber list. The protocol and the messages are
8designed after the corresponding MAP messages (see 3GPP TS 09.02) with the
9following differences:
10
11* The encoding uses TLV structures instead of ASN.1 encodings
12* Segmentation is not used
13
14For more information, see the specification of the Gr interface (3GPP TS 03.60).
15
16=== Connection
17
18The protocol expects that a reliable, ordered, packet boundaries preserving
19connection is used (e.g. IPA over TCP). The remote peer is either a service
20that understands the protocol natively or a wrapper service that maps the
21messages to/from real MAP messages that can be used to directly communicate
22with an HLR.
23
24=== Using IPA
25
26By default, the following identifiers should be used:
27
28* IPA Stream ID: 0xEE (OSMO)
29* IPA OSMO protocol extension: 0x05
30
31For more information about the IPA multiplex, please see the 'OsmoBTS
32Abis/IP Specifiation'.
33
34=== Procedures
35
36==== Authentication management
37
38The SGSN sends a SEND_AUTHENTICATION_INFO_REQ message containing the MS's IMSI
39to the peer. On errors, especially if authentication info is not availabe for
40that IMSI, the peer returns a SEND_AUTHENTICATION_INFO_ERR message. Otherwise
41the peer returns a SEND_AUTHENTICATION_INFO_RES message. If this message
42contains at least one authentication tuple, the SGSN replaces all tuples that
43are assigned to the subscriber. If the message doesn't contain any tuple the
44SGSN may reject the Attach Request. (see 3GPP TS 09.02, 25.5.6)
45
46==== Location Updating
47
48The SGSN sends a UPDATE_LOCATION_REQ to the peer. If the request is denied by
49the network, the peer returns an UPDATE_LOCATION_ERR message to the SGSN.
50Otherwise the peer returns an UPDATE_LOCATION_RES message containing all
51information fields that shall be inserted into the subscriber record. If
52the 'PDP info complete' information element is set in the message, the SGSN
53clears existing PDP information fields in the subscriber record first.
54(see 3GPP TS 09.02, 19.1.1.8)
55
56...
57
58=== Message Format
59
60==== General
61
62Every message is based on the following message format
63
64[options="header",cols="5%,20%,45%,10%,10%,10%"]
65|===
66|IEI|IE|Type|Presence|Format|Length
67| |Message Type|<<gsup-ie-msgtype>>|M|V|1
68|01|IMSI|<<gsup-ie-imsi>>|M|TLV|2-10
69|===
70
71If a numeric range is indicated in the 'presence' column, multiple information
72elements with the same tag may be used in sequence. The information elements
73shall be sent in the given order. Nevertheless after the generic part the
74receiver shall be able to received them in any order. Unknown IE shall be
75ignored.
76
77==== Send Authentication Info Request
78
79Direction: SGSN -> Network peer
80
81[options="header",cols="5%,20%,45%,10%,10%,10%"]
82|===
83|IEI|IE|Type|Presence|Format|Length
84| |Message Type|<<gsup-ie-msgtype>>|M|V|1
85|01|IMSI|<<gsup-ie-imsi>>|M|TLV|2-10
86|===
87
88==== Send Authentication Info Error
89
90Direction: Network peer -> SGSN
91
92[options="header",cols="5%,20%,45%,10%,10%,10%"]
93|===
94|IEI|IE|Type|Presence|Format|Length
95| |Message Type|<<gsup-ie-msgtype>>|M|V|1
96|01|IMSI|<<gsup-ie-imsi>>|M|TLV|2-10
97|02|Cause|<<gsup-ie-cause>>|M|TLV|3
98|===
99
100==== Send Authentication Info Response
101
102Direction: Network peer -> SGSN
103
104[options="header",cols="5%,20%,45%,10%,10%,10%"]
105|===
106|IEI|IE|Type|Presence|Format|Length
107| |Message Type|<<gsup-ie-msgtype>>|M|V|1
108|01|IMSI|<<gsup-ie-imsi>>|M|TLV|2-10
109|03|Auth Tuple|<<gsup-ie-authtuple>>|0-5|TLV|36
110|===
111
112==== Update Location Request
113
114Direction: SGSN -> Network peer
115
116[options="header",cols="5%,20%,45%,10%,10%,10%"]
117|===
118|IEI|IE|Type|Presence|Format|Length
119| |Message Type|<<gsup-ie-msgtype>>|M|V|1
120|01|IMSI|<<gsup-ie-imsi>>|M|TLV|2-10
121|===
122
123==== Update Location Error
124
125Direction: Network peer -> SGSN
126
127[options="header",cols="5%,20%,45%,10%,10%,10%"]
128|===
129|IEI|IE|Type|Presence|Format|Length
130| |Message Type|<<gsup-ie-msgtype>>|M|V|1
131|01|IMSI|<<gsup-ie-imsi>>|M|TLV|2-10
132|02|Cause|<<gsup-ie-cause>>|M|TLV|3
133|===
134
135==== Update Location Result
136
137Direction: Network peer -> SGSN
138
139[options="header",cols="5%,20%,45%,10%,10%,10%"]
140|===
141|IEI|IE|Type|Presence|Format|Length
142| |Message Type|<<gsup-ie-msgtype>>|M|V|1
143|01|IMSI|<<gsup-ie-imsi>>|M|TLV|2-10
144|08|MSISDN|<<gsup-ie-msisdn>>|O|TLV|0-9
145|09|HLR Number|<<gsup-ie-hlr>>|O|TLV|0-9
146|04|PDP info complete|<<gsup-ie-empty>>|O|TLV|2
147|05|PDP info|<<gsup-ie-pdpinfo>>|1-10|TLV|
148|===
149
150If the PDP info complete IE is present, the old PDP info list shall be cleared.
151
152==== Location Cancellation Request
153
154Direction: Network peer -> SGSN
155
156[options="header",cols="5%,20%,45%,10%,10%,10%"]
157|===
158|IEI|IE|Type|Presence|Format|Length
159| |Message Type|<<gsup-ie-msgtype>>|M|V|1
160|01|IMSI|<<gsup-ie-imsi>>|M|TLV|2-10
161|06|Cancellation type|<<gsup-ie-canctype>>|O|TLV|3
162|===
163
164==== Location Cancellation Result
165
166Direction: SGSN -> Network peer
167
168[options="header",cols="5%,20%,45%,10%,10%,10%"]
169|===
170|IEI|IE|Type|Presence|Format|Length
171| |Message Type|<<gsup-ie-msgtype>>|M|V|1
172|01|IMSI|<<gsup-ie-imsi>>|M|TLV|2-10
173|===
174
175==== Purge MS Request
176
177Direction: SGSN -> Network peer
178
179[options="header",cols="5%,20%,45%,10%,10%,10%"]
180|===
181|IEI|IE|Type|Presence|Format|Length
182| |Message Type|<<gsup-ie-msgtype>>|M|V|1
183|01|IMSI|<<gsup-ie-imsi>>|M|TLV|2-10
184|09|HLR Number|<<gsup-ie-hlr>>|M|TLV|0-9
185|===
186
187==== Purge MS Error
188
189Direction: Network peer -> SGSN
190
191[options="header",cols="5%,20%,45%,10%,10%,10%"]
192|===
193|IEI|IE|Type|Presence|Format|Length
194| |Message Type|<<gsup-ie-msgtype>>|M|V|1
195|01|IMSI|<<gsup-ie-imsi>>|M|TLV|2-10
196|02|Cause|<<gsup-ie-cause>>|M|TLV|3
197|===
198
199==== Purge MS Result
200
201Direction: Network peer -> SGSN
202
203[options="header",cols="5%,20%,45%,10%,10%,10%"]
204|===
205|IEI|IE|Type|Presence|Format|Length
206| |Message Type|<<gsup-ie-msgtype>>|M|V|1
207|01|IMSI|<<gsup-ie-imsi>>|M|TLV|2-10
208|07|Freeze P-TMSI|<<gsup-ie-empty>>|M|TLV|2
209|===
210
211==== Insert Subscriber Data Request
212
213Direction: Network peer -> SGSN
214
215[options="header",cols="5%,20%,45%,10%,10%,10%"]
216|===
217|IEI|IE|Type|Presence|Format|Length
218| |Message Type|<<gsup-ie-msgtype>>|M|V|1
219|01|IMSI|<<gsup-ie-imsi>>|M|TLV|2-10
220|04|PDP info complete|<<gsup-ie-empty>>|M|TLV|2
221|05|PDP info|<<gsup-ie-pdpinfo>>|0-10|TLV|
222|===
223
224If the PDP info complete IE is present, the old PDP info list shall be cleared.
225
226==== Insert Subscriber Data Error
227
228Direction: SGSN -> Network peer
229
230[options="header",cols="5%,20%,45%,10%,10%,10%"]
231|===
232|IEI|IE|Type|Presence|Format|Length
233| |Message Type|<<gsup-ie-msgtype>>|M|V|1
234|01|IMSI|<<gsup-ie-imsi>>|M|TLV|2-10
235|02|Cause|<<gsup-ie-cause>>|M|TLV|3
236|===
237
238==== Insert Subscriber Data Result
239
240Direction: SGSN -> Network peer
241
242[options="header",cols="5%,20%,45%,10%,10%,10%"]
243|===
244|IEI|IE|Type|Presence|Format|Length
245| |Message Type|<<gsup-ie-msgtype>>|M|V|1
246|01|IMSI|<<gsup-ie-imsi>>|M|TLV|2-10
247|===
248
249==== Delete Subscriber Data Request
250
251Direction: Network peer -> SGSN
252
253[options="header",cols="5%,20%,45%,10%,10%,10%"]
254|===
255|IEI|IE|Type|Presence|Format|Length
256| |Message Type|<<gsup-ie-msgtype>>|M|V|1
257|01|IMSI|<<gsup-ie-imsi>>|M|TLV|2-10
258|10|PDP context id|<<gsup-ie-pdpinfo>> (no conditional IE)|0-10|TLV|
259|===
260
261==== Delete Subscriber Data Error
262
263Direction: SGSN -> Network peer
264
265[options="header",cols="5%,20%,45%,10%,10%,10%"]
266|===
267|IEI|IE|Type|Presence|Format|Length
268| |Message Type|<<gsup-ie-msgtype>>|M|V|1
269|01|IMSI|<<gsup-ie-imsi>>|M|TLV|2-10
270|02|Cause|<<gsup-ie-cause>>|M|TLV|3
271|===
272
273==== Delete Subscriber Data Result
274
275Direction: Network peer -> SGSN
276
277[options="header",cols="5%,20%,45%,10%,10%,10%"]
278|===
279|IEI|IE|Type|Presence|Format|Length
280| |Message Type|<<gsup-ie-msgtype>>|M|V|1
281|01|IMSI|<<gsup-ie-imsi>>|M|TLV|2-10
282|===
283
284=== Information Elements
285
286[[gsup-ie-msgtype]]
287==== Message Type
288
289[options="header",cols="10%,90%"]
290|===
291|Type|Description
292|0x04|Update Location Request
293|0x05|Update Location Error
294|0x06|Update Location Result
295|0x08|Send Auth Info Request
296|0x09|Send Auth Info Error
297|0x0a|Send Auth Info Result
298|0x0c|Purge MS Request
299|0x0d|Purge MS Error
300|0x0e|Purge MS Result
301|0x10|Insert Subscriber Data Request
302|0x11|Insert Subscriber Data Error
303|0x12|Insert Subscriber Data Result
304|0x14|Delete Subscriber Data Request
305|0x15|Delete Subscriber Data Error
306|0x16|Delete Subscriber Data Result
307|0x1c|Location Cancellation Request
308|0x1d|Location Cancellation Error
309|0x1e|Location Cancellation Result
310|===
311
312[[gsup-ie-ipaddr]]
313==== IP Address
314
315The value part is encoded like in the Packet data protocol address IE defined
316in 3GPP TS 04.08, Chapter 10.5.6.4. PDP type organization must be set to
317'IETF allocated address'.
318
319[[gsup-ie-pdpinfo]]
320==== PDP Info
321
322This is a container for information elements describing a single PDP.
323
324[options="header",cols="5%,20%,45%,10%,10%,10%"]
325|===
326|IEI|IE|Type|Presence|Format|Length
327| |PDP Info IEI|<<gsup-iei>>|M|V|1
328| |Length of PDP Info IE||M|V|1
329|10|PDP Context ID|<<gsup-ie-pdpctxid>>|C|TLV|3
330|11|PDP Type|<<gsup-ie-pdptype>>|C|TLV|4
331|12|Access Point Name|3GPP TS 04.08, Ch. 10.5.6.1|C|TLV|3-102
332|13|Quality of Service|<<gsup-ie-qos>>|O|TLV|1-20
333|===
334
335The conditional IE are mandantory unless mentioned otherwise.
336
337[[gsup-ie-pdptype]]
338==== PDP Type
339
340The PDP type value consists of 2 octets that are encoded like octet 4-5 of the
341End User Address defined in 3GPP TS 09.60, 7.9.18.
342
343[packetdiag]
344----
345{
346 colwidth = 8
347 node_height = 24
348
349 0-6: PDP type IEI
350 7: Res
351 8-15: Length (2)
352 16-19: Spare
353 20-23: PDP type org
354 24-31: PDP type number
355}
356----
357
358The spare bits are left undefined. While 09.60 defines them as '1 1 1 1', there
359are MAP traces where these bits are set to '0 0 0 0'. So the receiver shall
360ignore these bits.
361
362Examples:
363
364* IPv4: PDP type org: 1 (IETF), PDP type number: 0x21
365* IPv6: PDP type org: 1 (IETF), PDP type number: 0x57
366
367[[gsup-ie-pdpctxid]]
368==== PDP Context ID
369
370The PDP type context ID IE consists of a single integer byte wrapped in
371a TLV.
372
373[packetdiag]
374----
375{
376 colwidth = 8
377 node_height = 24
378
379 0-6: PDP context ID IEI
380 7: Res
381 8-15: Length (1)
382 16-23: PDP Context ID
383}
384----
385
386[[gsup-ie-authtuple]]
387==== Auth tuple
388
389This is a container for information elements describing a single authentication
390tuple.
391
392[options="header",cols="5%,20%,45%,10%,10%,10%"]
393|===
394|IEI|IE|Type|Presence|Format|Length
395| |Auth Tuple IEI|<<gsup-iei>>|M|V|1
396| |Length of Auth Tuple IE||M|V|1
397|20|RAND|<<gsup-ie-rand>>|M|TLV|18
398|21|SRES|<<gsup-ie-sres>>|M|TLV|6
399|22|Kc|<<gsup-ie-kc>>|M|TLV|10
400|===
401
402[[gsup-ie-rand]]
403==== RAND
404
405The 16-byte Random Challenge of the GSM Authentication Algorithm.
406
407[[gsup-ie-sres]]
408==== SRES
409
410The 4-byte Authentication Result of the GSM Authentication Algorithm.
411
412[[gsup-ie-kc]]
413==== Kc
414
415The 8-byte Encryption Key of the GSM Authentication and Key Agreemnt
416Algorithm.
417
418[[gsup-ie-canctype]]
419==== Cancellation Type
420
421[packetdiag]
422----
423{
424 colwidth = 8
425 node_height = 24
426
427 0-6: PDP type IEI
428 7: Res
429 8-15: Length (1)
430 16-23: Canc. Type Nr.
431}
432----
433
434.Cancellation Type Number
435[options="header",cols="10%,90%"]
436|===
437|Number|Description
438|0x00|Update Procedure
439|0x01|Subscription Withdrawn
440|===
441
442[[gsup-iei]]
443==== IE Identifier (informational)
444
445These are the standard values for the IEI. See the message definitions for the
446IEI that shall be used for the encoding.
447
448.GSUP IE Identifiers
449[options="header",cols="15%,35%,50%"]
450|===
451|IEI|Info Element|Type / Encoding
452|0x01|IMSI|Mobile Identity, 3GPP TS 04.08 Ch. 10.5.1.4
453|0x02|Cause|<<gsup-ie-cause>>
454|0x03|Auth Tuple|<<gsup-ie-authtuple>>
455|0x04|PDP Info Compl|<<gsup-ie-empty>>
456|0x05|PDP Info|<<gsup-ie-pdpinfo>>
457|0x06|Cancel Type|<<gsup-ie-canctype>>
458|0x07|Freeze P-TMSI|<<gsup-ie-empty>>
459|0x08|MSISDN|ISDN-AddressString/octet, <<gsup-ie-msisdn>>
460|0x09|HLR Number|<<gsup-ie-hlr>>
461|0x10|PDP Context ID|<<gsup-ie-pdpctxid>>
462|0x11|PDP Type|<<gsup-ie-pdptype>>
463|0x12|QoS|<<gsup-ie-qos>>
464|0x20|RAND|<<gsup-ie-rand>>
465|0x21|SRES|<<gsup-ie-sres>>
466|0x22|Kc|<<gsup-ie-kc>>
467|===
468
469[[gsup-ie-empty]]
470==== Empty field
471
472This is used for flags, if and only if this IE is present, the flag is set.
473The semantics depend on the IEI and the context.
474
475[packetdiag]
476----
477{
478 colwidth = 8
479 node_height = 24
480
481 0-6: PDP type IEI
482 7: Res
483 8-15: Length (0)
484}
485----
486
487[[gsup-ie-imsi]]
488==== IMSI
489
490The IMSI is encoded like in octet 4-N of the Called Party BCD Number
491defined in 3GPP TS 04.08, 10.5.4.7.
492
493[packetdiag]
494----
495{
496 colwidth = 8
497 node_height = 24
498
499 0-6: PDP type IEI
500 7: Res
501 8-15: Length of IE content
502 16-19: Digit 1
503 20-23: Digit 2
504 24-27: Digit ...
505 28-31: Digit N
506 32-39: see Note
507}
508----
509
510NOTE: Either '1 1 1 1 | Number digit N' (N odd) or 'Number digit N |
511Number digit N-1' (N even), where N is the number of digits.
512
513[[gsup-ie-msisdn]]
514==== ISDN-AddressString / MSISDN / Called Party BCD Number
515
516The MSISDN is encoded as an ISDN-AddressString in 3GPP TS 09.02 and Called Party
517BCD Number in 3GPP TS 04.08. It will be stored by the SGSN and then passed as is
518to the GGSN during the activation of the primary PDP Context.
519
520[packetdiag]
521----
522{
523 colwidth = 8
524 node_height = 24
525
526 0-6: PDP type IEI
527 7: Res
528 8-15: Length of IE content
529 16-19: NPI
530 20-22: TON
531 23: ext
532 24-27: Digit 1
533 28-31: Digit 2
534 32-35: Digit ...
535 36-39: Digit N
536}
537----
538
539[[gsup-ie-qos]]
540==== Quality of Service Subscribed Service
541
542This encodes the subscribed QoS of a subscriber. It will be used by the
543SGSN during the PDP Context activation. If the length of the QoS data
544is 3 (three) octets it is assumed that these are octets 3-5 of the TS
5453GPP TS 24.008 Quality of Service Octets. If it is more than three then
546then it is assumed that the first octet is the Allocation/Retention
547Priority and the reset are encoded as octets 3-N of 24.008.
548
549[packetdiag]
550----
551{
552 colwidth = 8
553 node_height = 24
554
555 0-6: PDP type IEI
556 7: Res
557 8-15: Length of IE content
558 16-23: Payload
559}
560----
561
562[[gsup-ie-hlr]]
563==== HLR Number encoded as 3GPP TS 09.02 ISDN-AddressString
564
565The HLR Number is encoded as an ISDN-AddressString in 3GPP TS 09.02. It
566will be stored by the SGSN can be used by the CDR module to keep a
567record.
568
569[packetdiag]
570----
571{
572 colwidth = 8
573 node_height = 24
574
575 0-6: PDP type IEI
576 7: Res
577 8-15: Length of IE content
578 16-19: NPI
579 20-22: TON
580 23: ext
581 24-27: Digit 1
582 28-31: Digit 2
583 32-35: Digit ...
584 36-39: Digit N
585}
586----
587
588[[gsup-ie-cause]]
589==== Cause
590
591This IE shall be encoded according to the 'GMM Cause' as described in
592Chapter 10.5.5.14 of 3GPP TS 04.08.