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