Project

General

Profile

OsmoBSCNAT » History » Version 8

zecke2, 02/19/2016 10:48 PM
Add cellmgr to the mix

1 1 zecke2
== BSC NAT/MUX ==
2
3 3 zecke2
=== 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 zecke2
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 zecke2
13 7 laforge
{{{
14
#!graphviz
15
digraph G {
16
  rankdir=LR;
17
  nanobts1->OpenBSC1 [ label="Abis/IP" ];
18
  nanobts2->OpenBSC1 [ label="Abis/IP" ];
19
  nanobts3->OpenBSC2 [ label="Abis/IP" ];
20
  nanobts4->OpenBSC2 [ label="Abis/IP" ];
21 8 zecke2
  BSC1->cellmgr_ng1 [label="A/MTP" ];
22 7 laforge
  OpenBSC1->bsc_nat [ label="A/IP" ];
23
  OpenBSC2->bsc_nat [ label="A/IP" ];
24 8 zecke2
  cellmgr_ng1->bsc_nat [ label = "A/IP" ];
25 7 laforge
  bsc_nat->MSC      [ label="A/IP" ];
26
  nanobts2 [ label = "BTS 1" ];
27
  nanobts1 [ label = "BTS 2" ];
28
  nanobts3 [ label = "BTS 3" ];
29
  nanobts4 [ label = "BTS 4" ];
30 8 zecke2
  BSC1 [ label = "Traditional BTS/BSC" ];
31 7 laforge
  OpenBSC1 [ label = "OpenBSC 1" ];
32
  OpenBSC2 [ label = "OpenBSC 2" ];
33 8 zecke2
  cellmgr_ng1 [ label = "Cellmgr 1" ];
34 7 laforge
}
35
}}}
36 4 zecke2
=== Design ===
37
==== USSD Bypass ====
38
We want to implement certain USSD messages ourselves, the MSC does not provide an extension
39
API so it must be done inside the NAT. On ther other hand we do not want to have complicated code
40
inside the NAT, the development of new features should not require a restart of the NAT. This means
41
we will have a simple bypass that detects USSD messages that we want to handle and then forwards
42
them to an external process. To begin with we will have a static decision making, which will be turned
43
into more dynamic pattern matching.
44
45
46
===== Implementation in the NAT =====
47
The difficulty is the management of the SCCP Connection. In case of a USSD operation as part of a
48
SMS or as a voice call, we should hope that sending the response arrives before the MSC is sending
49
the connection release. If the Connection is created with the intention of USSD we will have to take
50
over the connection and close it on the MSC side. It might show that this approach is tricky and we
51
might need better handling on the connection close.
52
53 6 zecke2
 * ~~Keep track of the IMSI of every SCCP Connection. The increase in storage size is acceptable right now. We have not started to tune anything in the NAT anyway.~~ (done)
54
 * ~~Keep track of the Connection Type, identify SS requests in the CM Service Request.~~ (done)
55 5 zecke2
 * Listen on a port for incoming USSD Bypass connections. We will use the IPA protocol, with one extra stream identifier for control messages.
56
 * Identify USSD request to be forwarded to the MSC, send the IMSI and SCCP references to the bridge so it can start doing its job.
Add picture from clipboard (Maximum size: 48.8 MB)