OsmoPCU » History » Revision 32
Revision 31 (laforge, 07/27/2023 08:32 PM) → Revision 32/33 (laforge, 11/02/2023 08:34 AM)
h1. osmo-pcu {{>toc}} A PCU (Packet Control Unit) is one of the two GPRS elements in the BSS. It implements the RLC and MAC layers of the GPRS Um (radio) interface on the MS-facing side, as well as the Gb Interface (NS,BSSGP) on the SGSN-facing side. OsmoPCU is the Osmocom implementation of this PCU functionality. Towards the SGSN, the BSSGP and NS protocols are implemented over UDP/IP, sometimes called "NS over IP". It has been tested with [[OsmoSGSN:]] as well as an Ericsson SGSN so far. h2. OsmoPCU in co-location with OsmoBTS OsmoPCU is usually used in co-location with [[OsmoBTS:]]. In this scenario all OsmoBTS variants are supported, including [[OsmoTRX:]] and PHY based variants, such as "sysmoBTS":https://sysmocom.de/products/bts/. "sysmoBTS":https://www.sysmocom.de/products/bts/. {{graphviz_link() digraph G { rankdir = LR; OsmoBTS -> OsmoBSC [label="Abis/IP"]; OsmoBSC -> OsmoMSC [label="3GPP AoIP"]; OsmoBTS -> OsmoPCU [label="pcu_sock"]; OsmoPCU -> OsmoSGSN [label="Gb/IP"]; OsmoMSC -> OsmoHLR [label="GSUP"]; OsmoSGSN -> OsmoHLR [label="GSUP"]; OsmoSGSN -> OsmoGGSN [label="Gp"]; OsmoGGSN -> Internet [label="Gi"]; OsmoPCU [color=red]; { rank=same OsmoBTS OsmoPCU } { rank=same OsmoMSC OsmoSGSN } } }} h2. OsmoPCU in co-location with OsmoBSC OsmoPCU can also be used in co-location with [[OsmoBSC:]]. This scenario is required to support third party BTSs that do not include an integrated PCU. This is mainly the case for classic E1 based BTS, such as the [[ericsson-rbs-6xxx:]] series. {{graphviz_link() digraph G { rankdir = LR; BTS -> OsmoBSC [label="Abis/IP"]; BTS -> OsmoPCU [label="GPRS/TRAU"]; OsmoBSC -> OsmoMSC [label="3GPP AoIP"]; OsmoBSC -> OsmoPCU [label="pcu_sock"]; OsmoPCU -> OsmoSGSN [label="Gb/IP"]; OsmoMSC -> OsmoHLR [label="GSUP"]; OsmoSGSN -> OsmoHLR [label="GSUP"]; OsmoSGSN -> OsmoGGSN [label="Gp"]; OsmoGGSN -> Internet [label="Gi"]; OsmoPCU [color=red]; { rank=same OsmoBSC OsmoPCU } } }} The support for BSC co-location in OsmoPCU and OsmoBSC, as well as the hardware specific extensions needed to support Ericsson RBS2000/RBS6000 base stations have been made possible through funding by the "NLnet foundation":https://nlnet.nl/ (see also: https://nlnet.nl/project/Osmocom-RBS/). h2. Interface between OsmoPCU and OsmoBTS/OsmoBSC The interface between OsmoPCU and OsmoBTS/OsmoBSC runs over UNIX socket of SOCK_SEQPACKET type. It is used to configure the network parameters inside the PCU and to exchange signalling information. It also features a custom L1 interface that allows PDCH MAC blocks. However, for enhanced performance, OsmoPCU also implements a direct PHY acces for some BTS models. h3. Documentation The primitives, which are exchanged between OsmoPCU and OsmoBTS/OsmoBSC are defined in pcuif_proto.h * pcuif_proto.h: https://gitea.osmocom.org/cellular-infrastructure/osmo-pcu/src/branch/master/include/osmocom/pcu/pcuif_proto.h Message flow charts that explain PDCH activation and deactivation can be found in the OsmoBTS Abis Protocol Specification * OsmoBTS Abis Protocol Specification: https://ftp.osmocom.org/docs/osmo-bts/master/osmobts-abis.pdf h3. Debugging One of the ways of debugging the PCU socket interface would be via socat: <pre> socat -t30 -x -v UNIX-LISTEN:/tmp/pcu_bts.socat,mode=755,type=5 UNIX-CONNECT:/tmp/pcu_bts,type=5 </pre> One might even forward it over network: <pre> socat -t30 -x -v UDP-LISTEN:1666,reuseaddr,fork UNIX-CONNECT:/tmp/pcu_bts,type=5 socat -t30 -x -v UNIX-LISTEN:/tmp/pcu_bts.socat,mode=755,type=5 UDP-CONNECT:127.0.0.1:1666 </pre> Note: in the examples above OsmoBTS (listening side) uses default @/tmp/pcu_bts@ socket while OsmoPCU (connecting side) is configured to use @/tmp/pcu_bts.socat@ via @pcu-socket /tmp/pcu_bts.socat@ config option. It's not recommeded to use outside of TTCN-3 test environment due to amount of traffic over the socket. h2. Manuals * User Manual: https://ftp.osmocom.org/docs/latest/osmopcu-usermanual.pdf * VTY Reference: https://ftp.osmocom.org/docs/latest/osmopcu-vty-reference.pdf * Gb/IP Manual: https://ftp.osmocom.org/docs/latest/osmopcu-gb.pdf h2. Source Code The source code is available from https://gitea.osmocom.org/cellular-infrastructure/osmo-pcu.git You can browse it online via https://gitea.osmocom.org/cellular-infrastructure/osmo-pcu h2. Test Suite We have a TTCN-3 test suite as part of our [[cellular-infrastructure:Titan_TTCN3_Testsuites]] * source code: https://gitea.osmocom.org/ttcn3/osmo-ttcn3-hacks/src/branch/master/pcu * results: https://jenkins.osmocom.org/jenkins/view/TTCN3/job/ttcn3-pcu-test/ h2. Mailing List / Forum There is a mailing list for (development) discussion regarding the PCU: osmocom-net-gprs@lists.osmocom.org You can subscribe to it (or manage your subscription) at http://lists.osmocom.org/cgi-bin/mailman/listinfo/osmocom-net-gprs Please make sure to read our [[cellular-infrastructure:MailingListRules]] before posting. There's now also a "2G RAN category in our discourse forum":https://discourse.osmocom.org/c/cni/geran h2. Features osmo-pcu is considered stable and is performing useful service for a number of users, but due to the complexity of GPRS there is still plenty of area for improvement. h3. Supported * GPRS CS1 to CS4 with dynamic link/rate adaption * EDGE MCS1-MCS9 with dynamic link/rate adaption * Single-slot and multi-slot operation on downlink * Single-slot operation on uplink * Independent TFI/USF per PDCH in single-slot allocation mode * Automatic or fixed PDCH allocation algorithm selection * Delayed release of downlink TBF * Active queue management for downlink TBF (!CoDel) * Initial setting of timing advance based on RACH * BSSGP BVC flow control support * Using pchan types of @TCH/F_TCH/H_PDCH@ or @TCH/F_PDCH@, OsmoBTS supports dynamic PDCH/TCH switching (implemented entirely in osmo-bts) * Ericsson RBS2000/RBS6000 support (BSC co-located) h3. Shortcomings / Limitations / Restrictions _Note: this list may be outdated_ * No GPRS/EGPRS mixed mode (yet) * No support for hand-over of any sort yet * No support of processing measurement reports * No timing advance loop, i.e. radial movement is limited * No support for power control * No Packet Access Reject message on congestion, access is just ignored * No PCCCH support * Only "Dynamic allocation RLC data block transfer" is supported * No network controlled measurement/cell reselection order supported * No PTCCH support * No support for Packet Flow Contexts (PFC) * No support for MS or PFC flow control * No support for RLC unacknowledged mode operation * No support for MBMS h2. Authors / Credits osmo-pcu was originally developed by Ivan Kluchnikov and Andreas Everberg. Today it is maintaned by Sysmocom. {{include(cellular-infrastructure:MacroCommercialSupport)}}