OsmoBSCNAT » History » Version 4
Anonymous, 02/19/2016 10:48 PM
Start to sketch out the design of the USSD bypass.
1 | 1 | == BSC NAT/MUX == |
|
---|---|---|---|
2 | |||
3 | 3 | === Introduction === |
|
4 | The OpenBSC NAT is masquerading multiple BSCs behind one. It listens for incoming BSCs on |
||
5 | port 5000 and connects to a specified MSC. It will forward Paging Requests and MGCP messgaes |
||
6 | to the right BSC (if it is connected). Each incoming SCCP connection gets patched with a different |
||
7 | Source Reference to avoid any collision between the different BSCs. |
||
8 | 2 | laforge | |
9 | 3 | To the network the NAT looks like a real BSC, to the BSC the NAT looks like almost a real MSC. One |
|
10 | difference is that MGCP messages are not send via UDP but inside the IPA protocol to avoid |
||
11 | any issues with firewalls and such. |
||
12 | 4 | ||
13 | === Design === |
||
14 | ==== USSD Bypass ==== |
||
15 | We want to implement certain USSD messages ourselves, the MSC does not provide an extension |
||
16 | API so it must be done inside the NAT. On ther other hand we do not want to have complicated code |
||
17 | inside the NAT, the development of new features should not require a restart of the NAT. This means |
||
18 | we will have a simple bypass that detects USSD messages that we want to handle and then forwards |
||
19 | them to an external process. To begin with we will have a static decision making, which will be turned |
||
20 | into more dynamic pattern matching. |
||
21 | |||
22 | |||
23 | ===== Implementation in the NAT ===== |
||
24 | The difficulty is the management of the SCCP Connection. In case of a USSD operation as part of a |
||
25 | SMS or as a voice call, we should hope that sending the response arrives before the MSC is sending |
||
26 | the connection release. If the Connection is created with the intention of USSD we will have to take |
||
27 | over the connection and close it on the MSC side. It might show that this approach is tricky and we |
||
28 | might need better handling on the connection close. |
||
29 | |||
30 | * Keep track of the IMSI of every SCCP Connection. The increase in storage size is acceptable right |
||
31 | now. We have not started to tune anything in the NAT anyway. (done) |
||
32 | * Keep track of the Connection Type, identify SS requests in the CM Service Request (done) |
||
33 | * Listen on a port for incoming USSD Bypass connections. We will use the IPA protocol, with one |
||
34 | extra stream identifier for control messages. |
||
35 | * Identify USSD request to be forwarded to the MSC, send the IMSI and SCCP references to the |
||
36 | bridge so it can start doing its job. |