Harald Welte | 4ff37fe | 2016-02-20 10:56:10 +0100 | [diff] [blame] | 1 | == Overview |
| 2 | |
| 3 | === About OsmoPCU |
| 4 | |
| 5 | OsmoPCU is the Osmocom implementation of the GPRS PCU (Packet Control |
| 6 | Unit) element inside the GPRS network. |
| 7 | |
| 8 | The OsmoPCU is co-located within the BTS and connects to OsmoBTS via its |
Jonathan Brielmaier | 58721eb | 2016-05-25 15:01:11 +0200 | [diff] [blame] | 9 | PCU socket interface. |
Harald Welte | 4ff37fe | 2016-02-20 10:56:10 +0100 | [diff] [blame] | 10 | |
| 11 | On the other side, OsmoPCU is connected via the Gb interface to the |
| 12 | SGSN. |
| 13 | |
| 14 | [[fig-gprs-pcubts]] |
| 15 | .GPRS network architecture with PCU in BTS |
| 16 | [graphviz] |
| 17 | ---- |
| 18 | digraph G { |
| 19 | rankdir=LR; |
| 20 | MS0 [label="MS"] |
| 21 | MS1 [label="MS"] |
| 22 | MS0->BTS [label="Um"] |
| 23 | MS1->BTS [label="Um"] |
| 24 | BTS->BSC [label="Abis"] |
| 25 | BSC->MSC [label="A"] |
| 26 | BTS->PCU [label="pcu_sock"] |
| 27 | PCU->SGSN [label="Gb"] |
| 28 | SGSN->GGSN [label="GTP"] |
| 29 | } |
| 30 | ---- |
| 31 | |
| 32 | === Software Components |
| 33 | |
| 34 | OsmoPCU consists of a variety of components, including |
| 35 | |
| 36 | * Gb interface (NS/BSSGP protocol) |
| 37 | * `pcu_sock` interface towards OsmoBTS |
| 38 | * TBF management for uplink and downlink TBF |
| 39 | * RLC/MAC protocol implementation |
| 40 | * per-MS context for each MS currently served |
| 41 | * CSN.1 encoding/decoding routines |
| 42 | |
| 43 | ==== Gb Implementation |
| 44 | |
| 45 | OsmoPCU implements the ETSI/3GPP specified Gb interface, including TS |
| 46 | 08.16 (NS), TS 08.18 (BSSGP) protocols. As transport layer for NS, it |
| 47 | supports NS/IP (NS encapsulated in UDP/IP). |
| 48 | |
| 49 | The actual Gb Implementation is part of the libosmogb library, which is |
| 50 | in turn part of the libosmocore software package. This allows the same |
| 51 | Gb implementation to be used from OsmoPCU, OsmoGbProxy as well as |
| 52 | OsmoSGSN. |
| 53 | |
| 54 | ==== `pcu_sock` Interface to OsmoBTS |
| 55 | |
| 56 | The interface towards OsmoBTS is called 'pcu_sock' and implemented as a |
| 57 | set of non-standardized primitives over a unix domain socket. The |
| 58 | default file system path for this socket is `/tmp/pcu_bts`. |
| 59 | |
| 60 | The PCU socket can be changed on both OmsoBTS and OsmoPCU to a different |
| 61 | file/path name, primarily to permit running multiple independent BTS+PCU |
| 62 | pairs on a single Linux machine without having to use filesystem |
| 63 | namespaces or other complex configurations. |
| 64 | |
| 65 | NOTE: If you change the PCU socket path on OsmoBTS by means of the |
| 66 | `pcu-socket` VTY configuration command, you must ensure to make the |
| 67 | identical change on the OsmoPCU side. |