<p>daniel <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-sgsn/+/22491">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  pespin: Looks good to me, but someone else must approve
  lynxis lazus: Looks good to me, approved

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">manual/gbproxy: Update overview chapter<br><br>* Remove mention of features that are no longer supported<br>* Update the data model<br><br>Related: SYS#5115, SYS#5005<br>Change-Id: Icb9095f4002f2a0a4562fccecae109075cb93c7b<br>---<br>M doc/manuals/chapters/gbproxy-overview.adoc<br>1 file changed, 44 insertions(+), 77 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/doc/manuals/chapters/gbproxy-overview.adoc b/doc/manuals/chapters/gbproxy-overview.adoc</span><br><span>index 1564157..3cd0d73 100644</span><br><span>--- a/doc/manuals/chapters/gbproxy-overview.adoc</span><br><span>+++ b/doc/manuals/chapters/gbproxy-overview.adoc</span><br><span>@@ -1,6 +1,10 @@</span><br><span> [[chapter_overview]]</span><br><span> == Overview</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+IMPORTANT: If you have used an earlier version of OsmoGbProxy please note</span><br><span style="color: hsl(120, 100%, 40%);">+that support for various features such as PLMN/APN patching, support for a</span><br><span style="color: hsl(120, 100%, 40%);">+secondary SGSN has been removed.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> === About OsmoGbProxy</span><br><span> </span><br><span> OsmoGbProxy is the Osmocom proxy for the 3GPP Gb interface.  The Gb</span><br><span>@@ -15,7 +19,7 @@</span><br><span> OsmoGbProxy aggregates many PCU-facing Gb connections into one Gb</span><br><span> connection to the SGSN.  This is achieved by</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-* maintaining sepaate NS-VCs on the PCU side and on the SGSN side</span><br><span style="color: hsl(120, 100%, 40%);">+* maintaining separate NS-VCs on the PCU side and on the SGSN side</span><br><span> * more or less transparently routing BSSGP peer-to-peer Virtual Circuits</span><br><span>   (BVCs) through the proxy</span><br><span> * having some special handling for the signaling BVC (BVCI=0) which is</span><br><span>@@ -28,101 +32,64 @@</span><br><span> </span><br><span> This contains the parsed configuration of the OsmoGbProxy.</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-==== gproxy_peer</span><br><span style="color: hsl(120, 100%, 40%);">+==== gbproxy_nse</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-A "peer" is any remote NS-entity that the proxy interacts with.  A peer</span><br><span style="color: hsl(0, 100%, 40%);">-includes information about:</span><br><span style="color: hsl(120, 100%, 40%);">+The remote NS-entity that the proxy interacts with. Includes</span><br><span style="color: hsl(120, 100%, 40%);">+information about:</span><br><span> </span><br><span> * the [unique] NSEI of the peer</span><br><span style="color: hsl(0, 100%, 40%);">-* the [unique] BVCI of the peer</span><br><span> * the Routeing Area (RA) of the peer</span><br><span style="color: hsl(120, 100%, 40%);">+* which side this NSE is facing - SGSN or BSS</span><br><span style="color: hsl(120, 100%, 40%);">+* the list of BVCs in this NSE</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-==== gbproxy_tlli_state</span><br><span style="color: hsl(120, 100%, 40%);">+==== gbproxy_bvc</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-One of the (unique) TLLI of any of the subscribers/UEs attached to any of</span><br><span style="color: hsl(0, 100%, 40%);">-the BTSs/PCUs served by the proxy.</span><br><span style="color: hsl(120, 100%, 40%);">+A ptp-BVC on an NSE</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-==== gbproxy_link_info</span><br><span style="color: hsl(120, 100%, 40%);">+* the BVCI of this BVC</span><br><span style="color: hsl(120, 100%, 40%);">+* the routing area of this BVC</span><br><span style="color: hsl(120, 100%, 40%);">+* the BVC state machine</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-One of the [unique] subscribers/connections that are served through this</span><br><span style="color: hsl(0, 100%, 40%);">-proxy.  The information includes</span><br><span style="color: hsl(120, 100%, 40%);">+==== gbproxy_cell</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-* the TLLI on BSS side</span><br><span style="color: hsl(0, 100%, 40%);">-* the TLLI on SGSN side (may be different due to P-TMSI rewriting)</span><br><span style="color: hsl(0, 100%, 40%);">-* the NSEI of the SGSN for this link</span><br><span style="color: hsl(0, 100%, 40%);">-* a timestamp when we last conversed with this subscriber</span><br><span style="color: hsl(0, 100%, 40%);">-* state related to IMSI acquisition</span><br><span style="color: hsl(0, 100%, 40%);">-** a temporary queue of stored messages (until IMSI acquisition succeeds)</span><br><span style="color: hsl(0, 100%, 40%);">-** N(U) rewriting state (inserting IDENTTIY REQ changes LLC sequence numbers)</span><br><span style="color: hsl(120, 100%, 40%);">+This contains a view of the cell and its associated BVCs</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-==== gbproxy_match</span><br><span style="color: hsl(120, 100%, 40%);">+* the unique BVCI of this cell</span><br><span style="color: hsl(120, 100%, 40%);">+* the routing area of this cell</span><br><span style="color: hsl(120, 100%, 40%);">+* one bss-side BVC</span><br><span style="color: hsl(120, 100%, 40%);">+* one BVC per SGSN in the pool</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-A single matching rule against which IMSIs are matched.  The matching rule</span><br><span style="color: hsl(0, 100%, 40%);">-is expressed as regular expression.  There can be one such matching rule for</span><br><span style="color: hsl(0, 100%, 40%);">-each</span><br><span style="color: hsl(120, 100%, 40%);">+==== gbproxy_sgsn</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-* routing between two different SGSNs, see below</span><br><span style="color: hsl(0, 100%, 40%);">-* patching of messages (e.g. APN, PLMN)</span><br><span style="color: hsl(120, 100%, 40%);">+Represents one SGSN in the pool. Contains:</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+* the NSE belonging to this SGSN</span><br><span style="color: hsl(120, 100%, 40%);">+* a (configurable) name of the SGSN</span><br><span style="color: hsl(120, 100%, 40%);">+* pool-related configuration of the SGSNs</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-=== Advanced Features</span><br><span style="color: hsl(120, 100%, 40%);">+==== IMSI cache</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-==== PLMN patching</span><br><span style="color: hsl(120, 100%, 40%);">+In order to route messages to the correct BSS or SGSN OsmoGbProxy</span><br><span style="color: hsl(120, 100%, 40%);">+sometimes needs to cache where messages came from.</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-This feature permits to modify the PLMN inside any BSSGP messages</span><br><span style="color: hsl(0, 100%, 40%);">-containing the Routing Area ID (RAID).</span><br><span style="color: hsl(120, 100%, 40%);">+In BSS->SGSN direction the IMSI-cache is needed for</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-The configured core-mcc and core-mnc will be used towards the SGSN,</span><br><span style="color: hsl(0, 100%, 40%);">-irrespective of which MCC/MNC the PCU is using/reporting on Gb.</span><br><span style="color: hsl(120, 100%, 40%);">+* paging ps reject</span><br><span style="color: hsl(120, 100%, 40%);">+* dummy paging response</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-==== APN patching</span><br><span style="color: hsl(120, 100%, 40%);">+when SGSN-pooling is enabled and multiple SGSNs are configured. The IMSI</span><br><span style="color: hsl(120, 100%, 40%);">+contained in a paging ps or dummy paging message is cached together with</span><br><span style="color: hsl(120, 100%, 40%);">+the originating SGSN/NSE. The answer, which also contains the IMSI, is</span><br><span style="color: hsl(120, 100%, 40%);">+then routed back to the original SGSN.</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-This will transparently re-write the APN name inside SM ACTIVATE PDP</span><br><span style="color: hsl(0, 100%, 40%);">-REQUEST messages on the way from the MS to the SGSN.  The patching is</span><br><span style="color: hsl(0, 100%, 40%);">-performed based on matching on the IMSI of the subscriber.</span><br><span style="color: hsl(120, 100%, 40%);">+==== TLLI cache</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-The configured core-apn will be used towards the SGSN, irrespective</span><br><span style="color: hsl(0, 100%, 40%);">-of which APN the MS is requesting in its Layer3 signaling.</span><br><span style="color: hsl(120, 100%, 40%);">+In SGSN->BSS direction OsmoGbProxy needs a TLLI cache to correctly route the</span><br><span style="color: hsl(120, 100%, 40%);">+following messages:</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-APN patching can only be performed if no GPRS encryption is enabled in</span><br><span style="color: hsl(0, 100%, 40%);">-the network!</span><br><span style="color: hsl(120, 100%, 40%);">+* suspend ack/nack</span><br><span style="color: hsl(120, 100%, 40%);">+* resume ack/nack</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-APN patching is useful in case a valid APN cannot reliably be</span><br><span style="color: hsl(0, 100%, 40%);">-provisioned via other means, such as via the SIM Card, OTA-DM or via</span><br><span style="color: hsl(0, 100%, 40%);">-CAMEL rewriting in the SGSN.</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-==== P-TMSI patching</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-This feature transparently rewrite the P-TMSI between MS and SGSN.  This</span><br><span style="color: hsl(0, 100%, 40%);">-is required when using the Secondary SGSN support, as both SGSNs could</span><br><span style="color: hsl(0, 100%, 40%);">-allocate overlapping TMSIs and we must make sure they're unique across</span><br><span style="color: hsl(0, 100%, 40%);">-both SGSNs.</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-P-TMSI patching is required by (and hence automatically enablede if</span><br><span style="color: hsl(0, 100%, 40%);">-secondary SGSN support is enabled.</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-P-TMSI patching can only be performed if no GPRS encryption is enabled in</span><br><span style="color: hsl(0, 100%, 40%);">-the network!</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-==== IMSI Acquisition</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-This is a special feature where the proxy will by itself inject GMM IDENTITY</span><br><span style="color: hsl(0, 100%, 40%);">-REQUEST messages for the IMSI into the downlink BSSGP traffic in order</span><br><span style="color: hsl(0, 100%, 40%);">-to establish the IMSI of subscribers for which it is not otherwise known</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-IMSI acquisition is automatically enabled if secondary SGSN support is</span><br><span style="color: hsl(0, 100%, 40%);">-enabled.</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-==== Secondary SGSN Support</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-This allows the proxy to connect not only to one SGSN, but to two</span><br><span style="color: hsl(0, 100%, 40%);">-different SGSNs.  IMSI matching rules are applied to determine which of</span><br><span style="color: hsl(0, 100%, 40%);">-the SGSNs is to be used for traffic of this subscriber.</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-One possible use case of this feature is to have a "local break-out" for</span><br><span style="color: hsl(0, 100%, 40%);">-subscribers who are native to this network (and hence save</span><br><span style="color: hsl(0, 100%, 40%);">-latencies/overhead of back-hauling all related traffic via the</span><br><span style="color: hsl(0, 100%, 40%);">-SGSN+GGSN) while at the same time maintaining the classic behavior for</span><br><span style="color: hsl(0, 100%, 40%);">-inbound roaming subscribers, where the roaming agreements mandate that</span><br><span style="color: hsl(0, 100%, 40%);">-data traffic is brought back to the GGSN in the HPLMN via the SGSN of</span><br><span style="color: hsl(0, 100%, 40%);">-the VPLMN.</span><br><span style="color: hsl(120, 100%, 40%);">+Suspend/resume are sent over the signalling BVC to the SGSN. OsmoGbProxy saves</span><br><span style="color: hsl(120, 100%, 40%);">+the TLLI->NSE association in the TLLI cache and routes the ack/nack back to</span><br><span style="color: hsl(120, 100%, 40%);">+the signalling BVC of the originating NSE.</span><br><span>\ No newline at end of file</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-sgsn/+/22491">change 22491</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-sgsn/+/22491"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-sgsn </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Icb9095f4002f2a0a4562fccecae109075cb93c7b </div>
<div style="display:none"> Gerrit-Change-Number: 22491 </div>
<div style="display:none"> Gerrit-PatchSet: 3 </div>
<div style="display:none"> Gerrit-Owner: daniel <dwillmann@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: daniel <dwillmann@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: lynxis lazus <lynxis@fe80.eu> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>