[[chapter_overview]] == Overview IMPORTANT: If you have used an earlier version of OsmoGbProxy please note that support for various features such as PLMN/APN patching, support for a secondary SGSN has been removed. === About OsmoGbProxy OsmoGbProxy is the Osmocom proxy for the 3GPP Gb interface. The Gb interface is defined by 3GPP as the protocol between the BSS and the SGSN inside the 2G/2.5G/2.75G packet switched network domain. As Osmocom implements a BTS-colocated PCU, there are potentially many Gb interface connections between all those many PCUs in the network and the SGSN. This can be cumbersome to configure/maintain at the SGSN side. OsmoGbProxy aggregates many PCU-facing Gb connections into one Gb connection to the SGSN. This is achieved by * maintaining separate NS-VCs on the PCU side and on the SGSN side * more or less transparently routing BSSGP peer-to-peer Virtual Circuits (BVCs) through the proxy * having some special handling for the signaling BVC (BVCI=0) which is shared among all the PCUs connected to the proxy === Data Model ==== gbproxy_config This contains the parsed configuration of the OsmoGbProxy. ==== gbproxy_nse The remote NS-entity that the proxy interacts with. Includes information about: * the [unique] NSEI of the peer * the Routeing Area (RA) of the peer * which side this NSE is facing - SGSN or BSS * the list of BVCs in this NSE ==== gbproxy_bvc A ptp-BVC on an NSE * the BVCI of this BVC * the routing area of this BVC * the BVC state machine ==== gbproxy_cell This contains a view of the cell and its associated BVCs * the unique BVCI of this cell * the routing area of this cell * one bss-side BVC * one BVC per SGSN in the pool ==== gbproxy_sgsn Represents one SGSN in the pool. Contains: * the NSE belonging to this SGSN * a (configurable) name of the SGSN * pool-related configuration of the SGSNs ==== IMSI cache In order to route messages to the correct BSS or SGSN OsmoGbProxy sometimes needs to cache where messages came from. In BSS->SGSN direction the IMSI-cache is needed for * paging ps reject * dummy paging response when SGSN-pooling is enabled and multiple SGSNs are configured. The IMSI contained in a paging ps or dummy paging message is cached together with the originating SGSN/NSE. The answer, which also contains the IMSI, is then routed back to the original SGSN. ==== TLLI cache In SGSN->BSS direction OsmoGbProxy needs a TLLI cache to correctly route the following messages: * suspend ack/nack * resume ack/nack Suspend/resume are sent over the signalling BVC to the SGSN. OsmoGbProxy saves the TLLI->NSE association in the TLLI cache and routes the ack/nack back to the signalling BVC of the originating NSE.