== Overview

=== About OsmoPCU

OsmoPCU is the Osmocom implementation of the GPRS PCU (Packet Control Unit)
element inside the GPRS network. Depending on the BTS type the PCU will be
co-located within the BTS or run in co-location with the BSC.

[[pcu_co_located_with_bts]]
==== OsmoPCU in co-location with OsmoBTS

In most OsmoPCU-supported base stations, the PCU is co-located with the BTS.
In this scenario OsmoPCU and OsmoBTS run on the same host system. Both are
interconnected using a unix domain socket based interface.
(see also: <<pcu_sock_iface>>)

[[fig-gprs-pcubts]]
.GPRS network architecture with PCU in BTS
[graphviz]
----
digraph G {
	rankdir=LR;
	MS0 [label="MS"]
	MS1 [label="MS"]
	MS0->BTS [label="Um"]
	MS1->BTS [label="Um"]
	BTS->BSC [label="Abis"]
	BSC->MSC [label="A"]
	BTS->PCU [label="pcu_sock"]
	PCU->SGSN [label="Gb"]
	SGSN->GGSN [label="GTP"]
	PCU [color=red]
	{ rank=same BTS PCU }
}
----

NOTE: Depending on the hardware architecture, OsmoPCU may also have direct
access on the PHY interface to exchange PDCH traffic efficiently. The socket
interface is then only used for signalling.

==== OsmoPCU in co-location with OsmoBSC

Classic E1 based BTSs usually do not include a PCU. Instead those base stations
typically rely on an external PCU that is co-located with the BSC. The
signalling traffic (paging, channel assignments ect.) is then exchanged with the
BTS via RSL, while the PDCH traffic is handled by the PCU through a dedicated
TRAU frame based E1 connection.

OsmoPCU supports this scenario as well. Due to the dedicated E1 connection, the
implementation is complex and strongly hardware specific. As of now (March 2023)
OsmoPCU supports Ericsson RBS2000/RBS6000 only. This implementation has been
made possible through funding by the NLnet Foundation.

[[fig-gprs-pcubts]]
.GPRS network architecture with PCU in BTS
[graphviz]
----
digraph G {
	rankdir=LR;
	MS0 [label="MS"]
	MS1 [label="MS"]
	MS0->BTS [label="Um"]
	MS1->BTS [label="Um"]
	BTS->BSC [label="Abis"]
	BSC->MSC [label="A"]
	BTS->PCU [label="pcu_sock"]
	PCU->SGSN [label="Gb"]
	SGSN->GGSN [label="GTP"]
	PCU [color=red]
	{ rank=same BTS PCU }
}
----

When OsmoPCU runs in co-location to OsmoBSC, both are connected through the
same unix domain socket interface as mentioned above.
(see also: <<pcu_co_located_with_bts>>) The socket is used to pass signalling
traffic between PCU and BSC while the PCU controls the PDCH by directly talking
to the BTS CCU (channel coding unit) through a dedicated E1 connection. The
E1 line interface uses TRAU frames and is vastly comparable to the interface that
is used when speech is transferred.

Since the PCU is mainly set up by OsmoBSC (or OsmoBTS) via the PCU socket, the
configuration in the BSC co-located scenario is no different from the BTS
co-located scenario. However, since the PCU requires a direct E1 connection to
the BTS an E1 line must be set up. (See also: <<cfg_e1_line>>)

=== Software Components

OsmoPCU consists of a variety of components, including

* Gb interface (NS/BSSGP protocol)
* `pcu_sock` interface towards OsmoBTS (or OsmoBSC)
* TBF management for uplink and downlink TBF
* RLC/MAC protocol implementation
* per-MS context for each MS currently served
* CSN.1 encoding/decoding routines

==== Gb Implementation

OsmoPCU implements the ETSI/3GPP specified Gb interface, including TS
08.16 (NS), TS 08.18 (BSSGP) protocols. As transport layer for NS, it
supports NS/IP (NS encapsulated in UDP/IP).

The actual Gb Implementation is part of the libosmogb library, which is
in turn part of the libosmocore software package.  This allows the same
Gb implementation to be used from OsmoPCU, OsmoGbProxy as well as
OsmoSGSN.

[[pcu_sock_iface]]
==== `pcu_sock` Interface to OsmoBTS/OsmoBSC

The interface towards OsmoBTS/OsmoBSC is called 'pcu_sock' and implemented
as a set of non-standardized primitives over a unix domain socket. The
default file system path for this socket is `/tmp/pcu_bts`.

The PCU socket path can be freely configured to a different file/path name,
primarily to permit running multiple independent BTS+PCU (or BSC+PCU) pairs
on a single Linux machine without having to use filesystem namespaces or other
complex configurations.

NOTE: If you change the PCU socket path on OsmoBTS/OsmoBSC by means of the
`pcu-socket` VTY configuration command, you must ensure to make the
identical change on the OsmoPCU side.
