Project

General

Profile

Osmo-gbproxy design » History » Version 1

laforge, 02/19/2016 10:48 PM
gb proxy design spec

1 1 laforge
[[PageOutline]]
2
= osmo-gbproxy design spec =
3
4
== NS protocol handling ==
5
6
The Gb gateway terminates all the NS-VC's from the BSS, as well as the
7
NS-VC to the SGSN.
8
9
Most NS PDU types are for NS link management only and thus will only
10
have relevance for the specific link.  No forwarding/routing is
11
required.
12
13
Only the NS-UNITDATA messages containing the BSSGP payload will need to
14
be forwarded between downlink and uplink NS-VCs and vice-versa.
15
16
== BSSGP ==
17
18
As most BSSGP messages indicate the PTP BVCI in the NS UNIT DATA header,
19
the PTP BVCI can be used to map those messages.
20
21
However, some of the BSSGP messages are destined for the so-called
22
signalling functional entity, which has the BVCI 0.
23
24
Since the Gb gateway masquerades the existance of many signalling
25
functional entities behind just one, it needs to somehow route the
26
BVCI 0 messages from the SGSN to the correct BSS.
27
28
=== Handling of SIGNALLING PDUs ===
29
30
All of the PDU types below are sent on the SIGNALLING BVC, i.e. on
31
BVCI=0.  As such, if those messages are sent by the SGSN, the gateway
32
does not immediately know to which BSS to send the message to.
33
34
Thus, some message-specific special processing is needed in order to
35
route the PDU correctly.
36
37
The following complete list of SIGNALLING PDUs is taken from Table 5.4
38
of GSM TS 08.18.
39
40
==== PAGING_PS / PAGING_CS ====
41
42
The message contains one (and only one) of the following IEs:
43
 * BVCI (11.3.6)
44
 * Location Area (11.3.17)
45
 * Routeing Area (11.3.31)
46
 * BSS Area Indication (11.3.3)
47
48
If the BVCI is given, we can simply look-up the BSS that uses this BVCI
49
for its PTP service, and then send the current message to BVCI 0 of that
50
BSS.
51
52
In all other cases, the gateway needs to iterate over a local list of
53
all BSS in order to determine which BSS is applicable.  THere may be
54
multiple BSS that each need a copy of the PAGING PS message.
55
56
=== SUSPEND ===
57
58
Is sent from MS -> BSS -> SGSN, thus no processing needed.
59
60
If multiple BSS per routeing area are desired, the RA + TLLI tuple needs
61
to be stored for inverse mapping of RESUME ACK / NACK.
62
63
=== SUSPEND ACK / NACK ===
64
65
The message contains the Routeing area of the BSS.  As long as there is
66
only one BSS in each routeing area, we can safely lookup the BSS and
67
forward the message there
68
69
LIMITATION: Only one BSS per routeing area
70
71
If multiple BSS per routeing area are desired, the RA + TLLI tuple
72
information gathered from snooping the SUSPEND messages needs to be used
73
for the reverse mapping. (This is not implemented so far)
74
75
=== RESUME ===
76
77
Is sent from MS -> BSS -> SGSN, thus no processing needed.
78
79
If multiple BSS per routeing area are desired, the RA + TLLI tuple needs
80
to be stored for inverse mapping of RESUME ACK / NACK.
81
82
=== RESUME ACK / NACK ===
83
84
The message contains the Routeing area of the BSS.  As long as there is
85
only one BSS in each routeing area, we can safely lookup the BSS and
86
forward the message there
87
88
LIMITATION: Only one BSS per routeing area
89
90
If multiple BSS per routeing area are desired, the RA + TLLI tuple
91
information gathered from snooping the RESUME messages needs to be used
92
for the reverse mapping. (This is not implemented so far)
93
94
=== FLUSH LL ===
95
96
The message contains the ''old BVCI'' as IE, so the mapping to the target
97
BSS can be made based on that BVCI
98
99
=== FLUSH LL ACK ===
100
101
Is sent from BSS -> SGSN, thus no processing needed.
102
103
=== BVC BLOCK ===
104
105
Is sent from BSS -> SGSN, thus no processing needed.
106
107
=== BVC BLOCK ACK ===
108
109
Contains the BVCI as IE, so the mapping to the target BSS can be made on
110
that BVCI.
111
112
=== BVC UNBLOCK ===
113
114
Is sent from BSS -> SGSN, thus no processing needed.
115
116
=== BVC UNBLOCK ACK ===
117
118
Contains the BVCI as IE, so the mapping to the target BSS can be made on
119
that BVCI.
120
121
=== BVC RESET ===
122
123
Contains the BVCI as IE, so the mapping to the target BSS can be made on
124
that BVCI.
125
126
=== BVC RESET ACK ===
127
128
Contains the BVCI as IE, so the mapping to the target BSS can be made on
129
that BVCI.
130
131
=== STATUS ===
132
133
If sent from BSS to SGSN, no need for modification.
134
135
If sent from SGSN to BSS and it includes the conditional BVCI IE, we can
136
use that to map to the target BSS.
137
138
If sent from SGSN to BSS, and it does not include the conditional BVCI
139
IE, we simply have to drop it.
140
141
=== SGSN INVOKE TRACE ===
142
143
This message might only contain the PDU type (11.3.26), Trace Type
144
(11.3.38) and Trace Reference (11.3.37), without any additional information.
145
146
It is thus not possible to determine to which BSS the trace request
147
should be sent.  Even with the optional IEs present in the message,
148
it is still not possible to correctly map the message to the intended
149
BSS:
150
 * Trigger ID (11.3.40)
151
 * OMC Id (11.3.23)
152
 * Transaction Id (11.3.39)
153
154
The only optional IE that could be of assistance is:
155
 * Mobile Id (11.3.20)
156
If we were keeping a IMSI/IMEI/IMEISV map in the gateway, we could map.
157
But it is a lot of effort for a trace feature
158
159
Another option is to forward the SGSN INVOKE TRACE message to all of the
160
BSS connected to the gateway.  It is unclear what impact this might have
161
e.g. on BSS performance.
162
163
At the moment we simply drop all SGSN INVOKE TRACE events and create
164
a log file entry about each such incident.
Add picture from clipboard (Maximum size: 48.8 MB)