aboutsummaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2016-07-23 21:00:13 +0200
committerNeels Hofmeyr <neels@hofmeyr.de>2018-11-27 18:10:00 +0100
commit779ba709054da691e2ff685dd5a1f07e033b7724 (patch)
treec19ebec1e313f1468a9070bd508aebdf12f111d5 /doc
parented9c53d575b03df2642ce9dbd134d8d51101437a (diff)
GSUP: Add ladder diagrams for protocol transactions / procedures
Diffstat (limited to 'doc')
-rw-r--r--doc/manuals/Makefile1
-rw-r--r--doc/manuals/chapters/gsup.adoc159
2 files changed, 153 insertions, 7 deletions
diff --git a/doc/manuals/Makefile b/doc/manuals/Makefile
index 803a74b..612c10f 100644
--- a/doc/manuals/Makefile
+++ b/doc/manuals/Makefile
@@ -22,6 +22,7 @@ include $(TOPDIR)/build/Makefile.inc
osmosgsn-usermanual.pdf: chapters/*.adoc
clean:
+ rm -rf osmosgsn-usermanual__*.{svg,png}
rm -rf $(cleanfiles)
gen-sgsn-vty-docbook: FORCE
diff --git a/doc/manuals/chapters/gsup.adoc b/doc/manuals/chapters/gsup.adoc
index 7ea3481..2a9563b 100644
--- a/doc/manuals/chapters/gsup.adoc
+++ b/doc/manuals/chapters/gsup.adoc
@@ -4,15 +4,30 @@
=== General
This chapter 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 3GPP TS 09.02) with the
-following differences:
-
-* The encoding uses TLV structures instead of ASN.1 encodings
-* Segmentation is not used
+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
@@ -43,6 +58,46 @@ 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
@@ -53,7 +108,97 @@ 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