== Overview === About OsmoPCU OsmoPCU is the Osmocom implementation of the GPRS PCU (Packet Control Unit) element inside the GPRS network. The OsmoPCU is co-located within the BTS and connects to OsmoBTS via its PCU socket interface. On the other side, OsmoPCU is connected via the Gb interface to the SGSN. [[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"] } ---- === Software Components OsmoPCU consists of a variety of components, including * Gb interface (NS/BSSGP protocol) * `pcu_sock` interface towards OsmoBTS * 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` Interface to OsmoBTS The interface towards OsmoBTS 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 can be changed on both OmsoBTS and OsmoPCU to a different file/path name, primarily to permit running multiple independent BTS+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 by means of the `pcu-socket` VTY configuration command, you must ensure to make the identical change on the OsmoPCU side.