blob: 69d0672f6930ab6a8f9465b0ac678e03fce89721 [file] [log] [blame]
Harald Welte4ff37fe2016-02-20 10:56:10 +01001== Overview
2
3=== About OsmoPCU
4
Philipp Maier2342d602023-03-24 15:04:04 +01005OsmoPCU is the Osmocom implementation of the GPRS PCU (Packet Control Unit)
6element inside the GPRS network. Depending on the BTS type the PCU will be
7co-located within the BTS or run in co-location with the BSC.
Harald Welte4ff37fe2016-02-20 10:56:10 +01008
Philipp Maier2342d602023-03-24 15:04:04 +01009[[pcu_co_located_with_bts]]
10==== OsmoPCU in co-location with OsmoBTS
Harald Welte4ff37fe2016-02-20 10:56:10 +010011
Philipp Maier2342d602023-03-24 15:04:04 +010012In most OsmoPCU-supported base stations, the PCU is co-located with the BTS.
13In this scenario OsmoPCU and OsmoBTS run on the same host system. Both are
14interconnected using a unix domain socket based interface.
15(see also: <<pcu_sock_iface>>)
Harald Welte4ff37fe2016-02-20 10:56:10 +010016
17[[fig-gprs-pcubts]]
18.GPRS network architecture with PCU in BTS
19[graphviz]
20----
21digraph G {
22 rankdir=LR;
23 MS0 [label="MS"]
24 MS1 [label="MS"]
25 MS0->BTS [label="Um"]
26 MS1->BTS [label="Um"]
27 BTS->BSC [label="Abis"]
28 BSC->MSC [label="A"]
29 BTS->PCU [label="pcu_sock"]
30 PCU->SGSN [label="Gb"]
31 SGSN->GGSN [label="GTP"]
Pau Espin Pedrol7b7fb222021-01-29 13:04:36 +010032 PCU [color=red]
Philipp Maierf963a3d2023-03-24 11:33:03 +010033 { rank=same BTS PCU }
Harald Welte4ff37fe2016-02-20 10:56:10 +010034}
35----
36
Philipp Maier2342d602023-03-24 15:04:04 +010037NOTE: Depending on the hardware architecture, OsmoPCU may also have direct
38access on the PHY interface to exchange PDCH traffic efficiently. The socket
39interface is then only used for signalling.
40
41==== OsmoPCU in co-location with OsmoBSC
42
43Classic E1 based BTSs usually do not include a PCU. Instead those base stations
44typically rely on an external PCU that is co-located with the BSC. The
45signalling traffic (paging, channel assignments ect.) is then exchanged with the
46BTS via RSL, while the PDCH traffic is handled by the PCU through a dedicated
47TRAU frame based E1 connection.
48
49OsmoPCU supports this scenario as well. Due to the dedicated E1 connection, the
50implementation is complex and strongly hardware specific. As of now (March 2023)
51OsmoPCU supports Ericsson RBS2000/RBS6000 only. This implementation has been
52made possible through funding by the NLnet Foundation.
53
54[[fig-gprs-pcubts]]
55.GPRS network architecture with PCU in BTS
56[graphviz]
57----
58digraph G {
59 rankdir=LR;
60 MS0 [label="MS"]
61 MS1 [label="MS"]
62 MS0->BTS [label="Um"]
63 MS1->BTS [label="Um"]
64 BTS->BSC [label="Abis"]
65 BSC->MSC [label="A"]
66 BTS->PCU [label="pcu_sock"]
67 PCU->SGSN [label="Gb"]
68 SGSN->GGSN [label="GTP"]
69 PCU [color=red]
70 { rank=same BTS PCU }
71}
72----
73
74When OsmoPCU runs in co-location to OsmoBSC, both are connected through the
75same unix domain socket interface as mentioned above.
76(see also: <<pcu_co_located_with_bts>>) The socket is used to pass signalling
77traffic between PCU and BSC while the PCU controls the PDCH by directly talking
78to the BTS CCU (channel coding unit) through a dedicated E1 connection. The
79E1 line interface uses TRAU frames and is vastly comparable to the interface that
80is used when speech is transferred.
81
82Since the PCU is mainly set up by OsmoBSC (or OsmoBTS) via the PCU socket, the
83configuration in the BSC co-located scenario is no different from the BTS
84co-located scenario. However, since the PCU requires a direct E1 connection to
85the BTS an E1 line must be set up. (See also: <<cfg_e1_line>>)
86
Harald Welte4ff37fe2016-02-20 10:56:10 +010087=== Software Components
88
89OsmoPCU consists of a variety of components, including
90
91* Gb interface (NS/BSSGP protocol)
Philipp Maier2342d602023-03-24 15:04:04 +010092* `pcu_sock` interface towards OsmoBTS (or OsmoBSC)
Harald Welte4ff37fe2016-02-20 10:56:10 +010093* TBF management for uplink and downlink TBF
94* RLC/MAC protocol implementation
95* per-MS context for each MS currently served
96* CSN.1 encoding/decoding routines
97
98==== Gb Implementation
99
100OsmoPCU implements the ETSI/3GPP specified Gb interface, including TS
10108.16 (NS), TS 08.18 (BSSGP) protocols. As transport layer for NS, it
102supports NS/IP (NS encapsulated in UDP/IP).
103
104The actual Gb Implementation is part of the libosmogb library, which is
105in turn part of the libosmocore software package. This allows the same
106Gb implementation to be used from OsmoPCU, OsmoGbProxy as well as
107OsmoSGSN.
108
Philipp Maier2342d602023-03-24 15:04:04 +0100109[[pcu_sock_iface]]
110==== `pcu_sock` Interface to OsmoBTS/OsmoBSC
Harald Welte4ff37fe2016-02-20 10:56:10 +0100111
Philipp Maier2342d602023-03-24 15:04:04 +0100112The interface towards OsmoBTS/OsmoBSC is called 'pcu_sock' and implemented
113as a set of non-standardized primitives over a unix domain socket. The
Harald Welte4ff37fe2016-02-20 10:56:10 +0100114default file system path for this socket is `/tmp/pcu_bts`.
115
Philipp Maier2342d602023-03-24 15:04:04 +0100116The PCU socket path can be freely configured to a different file/path name,
117primarily to permit running multiple independent BTS+PCU (or BSC+PCU) pairs
118on a single Linux machine without having to use filesystem namespaces or other
119complex configurations.
Harald Welte4ff37fe2016-02-20 10:56:10 +0100120
Philipp Maier2342d602023-03-24 15:04:04 +0100121NOTE: If you change the PCU socket path on OsmoBTS/OsmoBSC by means of the
Harald Welte4ff37fe2016-02-20 10:56:10 +0100122`pcu-socket` VTY configuration command, you must ensure to make the
123identical change on the OsmoPCU side.