blob: 3cd0d73c8fb003cee1324f5da5fe2b1dfd45918c [file] [log] [blame]
Harald Weltea5ad7a42019-03-21 22:52:44 +01001[[chapter_overview]]
2== Overview
3
Daniel Willmann7061bed2021-01-25 17:54:08 +01004IMPORTANT: If you have used an earlier version of OsmoGbProxy please note
5that support for various features such as PLMN/APN patching, support for a
6secondary SGSN has been removed.
7
Daniel Willmann376aa9e2020-09-24 20:23:34 +02008=== About OsmoGbProxy
Harald Weltea5ad7a42019-03-21 22:52:44 +01009
Daniel Willmann376aa9e2020-09-24 20:23:34 +020010OsmoGbProxy is the Osmocom proxy for the 3GPP Gb interface. The Gb
Harald Weltea5ad7a42019-03-21 22:52:44 +010011interface is defined by 3GPP as the protocol between the BSS and the
12SGSN inside the 2G/2.5G/2.75G packet switched network domain.
13
14As Osmocom implements a BTS-colocated PCU, there are potentially many
15Gb interface connections between all those many PCUs in the network
16and the SGSN. This can be cumbersome to configure/maintain at the
Daniel Willmann376aa9e2020-09-24 20:23:34 +020017SGSN side.
Harald Weltea5ad7a42019-03-21 22:52:44 +010018
Daniel Willmann376aa9e2020-09-24 20:23:34 +020019OsmoGbProxy aggregates many PCU-facing Gb connections into one Gb
Harald Weltea5ad7a42019-03-21 22:52:44 +010020connection to the SGSN. This is achieved by
21
Daniel Willmann7061bed2021-01-25 17:54:08 +010022* maintaining separate NS-VCs on the PCU side and on the SGSN side
Harald Weltea5ad7a42019-03-21 22:52:44 +010023* more or less transparently routing BSSGP peer-to-peer Virtual Circuits
24 (BVCs) through the proxy
25* having some special handling for the signaling BVC (BVCI=0) which is
26 shared among all the PCUs connected to the proxy
27
Daniel Willmann376aa9e2020-09-24 20:23:34 +020028
Harald Weltea5ad7a42019-03-21 22:52:44 +010029=== Data Model
30
31==== gbproxy_config
32
Daniel Willmann376aa9e2020-09-24 20:23:34 +020033This contains the parsed configuration of the OsmoGbProxy.
Harald Weltea5ad7a42019-03-21 22:52:44 +010034
Daniel Willmann7061bed2021-01-25 17:54:08 +010035==== gbproxy_nse
Harald Weltea5ad7a42019-03-21 22:52:44 +010036
Daniel Willmann7061bed2021-01-25 17:54:08 +010037The remote NS-entity that the proxy interacts with. Includes
38information about:
Harald Weltea5ad7a42019-03-21 22:52:44 +010039
40* the [unique] NSEI of the peer
Harald Weltea5ad7a42019-03-21 22:52:44 +010041* the Routeing Area (RA) of the peer
Daniel Willmann7061bed2021-01-25 17:54:08 +010042* which side this NSE is facing - SGSN or BSS
43* the list of BVCs in this NSE
Harald Weltea5ad7a42019-03-21 22:52:44 +010044
Daniel Willmann7061bed2021-01-25 17:54:08 +010045==== gbproxy_bvc
Harald Weltea5ad7a42019-03-21 22:52:44 +010046
Daniel Willmann7061bed2021-01-25 17:54:08 +010047A ptp-BVC on an NSE
Harald Weltea5ad7a42019-03-21 22:52:44 +010048
Daniel Willmann7061bed2021-01-25 17:54:08 +010049* the BVCI of this BVC
50* the routing area of this BVC
51* the BVC state machine
Harald Weltea5ad7a42019-03-21 22:52:44 +010052
Daniel Willmann7061bed2021-01-25 17:54:08 +010053==== gbproxy_cell
Harald Weltea5ad7a42019-03-21 22:52:44 +010054
Daniel Willmann7061bed2021-01-25 17:54:08 +010055This contains a view of the cell and its associated BVCs
Harald Weltea5ad7a42019-03-21 22:52:44 +010056
Daniel Willmann7061bed2021-01-25 17:54:08 +010057* the unique BVCI of this cell
58* the routing area of this cell
59* one bss-side BVC
60* one BVC per SGSN in the pool
Harald Weltea5ad7a42019-03-21 22:52:44 +010061
Daniel Willmann7061bed2021-01-25 17:54:08 +010062==== gbproxy_sgsn
Harald Weltea5ad7a42019-03-21 22:52:44 +010063
Daniel Willmann7061bed2021-01-25 17:54:08 +010064Represents one SGSN in the pool. Contains:
Harald Weltea5ad7a42019-03-21 22:52:44 +010065
Daniel Willmann7061bed2021-01-25 17:54:08 +010066* the NSE belonging to this SGSN
67* a (configurable) name of the SGSN
68* pool-related configuration of the SGSNs
Harald Weltea5ad7a42019-03-21 22:52:44 +010069
Daniel Willmann7061bed2021-01-25 17:54:08 +010070==== IMSI cache
Harald Weltea5ad7a42019-03-21 22:52:44 +010071
Daniel Willmann7061bed2021-01-25 17:54:08 +010072In order to route messages to the correct BSS or SGSN OsmoGbProxy
73sometimes needs to cache where messages came from.
Harald Weltea5ad7a42019-03-21 22:52:44 +010074
Daniel Willmann7061bed2021-01-25 17:54:08 +010075In BSS->SGSN direction the IMSI-cache is needed for
Harald Weltea5ad7a42019-03-21 22:52:44 +010076
Daniel Willmann7061bed2021-01-25 17:54:08 +010077* paging ps reject
78* dummy paging response
Harald Weltea5ad7a42019-03-21 22:52:44 +010079
Daniel Willmann7061bed2021-01-25 17:54:08 +010080when SGSN-pooling is enabled and multiple SGSNs are configured. The IMSI
81contained in a paging ps or dummy paging message is cached together with
82the originating SGSN/NSE. The answer, which also contains the IMSI, is
83then routed back to the original SGSN.
Harald Weltea5ad7a42019-03-21 22:52:44 +010084
Daniel Willmann7061bed2021-01-25 17:54:08 +010085==== TLLI cache
Harald Weltea5ad7a42019-03-21 22:52:44 +010086
Daniel Willmann7061bed2021-01-25 17:54:08 +010087In SGSN->BSS direction OsmoGbProxy needs a TLLI cache to correctly route the
88following messages:
Harald Weltea5ad7a42019-03-21 22:52:44 +010089
Daniel Willmann7061bed2021-01-25 17:54:08 +010090* suspend ack/nack
91* resume ack/nack
Harald Weltea5ad7a42019-03-21 22:52:44 +010092
Daniel Willmann7061bed2021-01-25 17:54:08 +010093Suspend/resume are sent over the signalling BVC to the SGSN. OsmoGbProxy saves
94the TLLI->NSE association in the TLLI cache and routes the ack/nack back to
95the signalling BVC of the originating NSE.