gbproxy-usermanual: Explain BSSGP/BVC handling

Related: SYS#5005
Change-Id: I383fcd3864a94177f13909c6b8c15648900d3201
This commit is contained in:
Daniel Willmann 2020-09-24 20:23:34 +02:00
parent 3ab0ad854a
commit 376aa9edaa
3 changed files with 121 additions and 5 deletions

View File

@ -0,0 +1,113 @@
[[chapter_details]]
== Proxy details
=== BVC handling
This section describes in more detail how BVCs are handled in OsmoGbProxy
If a BSS connects to OsmoGbProxy while the SGSN is not available it will
acknowledge the BVC RESET on the signalling BVC, but ignore other messages
(especially any PTP BVC RESET).
.BSS connects to OsmoGbProxy
[mscgen]
----
msc {
hscale="1.8";
bss1 [label="BSS1"], bss2 [label="BSS2"], gbproxy [label="GbProxy"], sgsn [label="SGSN"];
bss1 <=> gbproxy [label="NS link available"];
bss1 => gbproxy [label="BVC RESET (BVCI=0)"];
gbproxy => bss1 [label="BVC RESET ACK"];
bss1 -x gbproxy [label="PTP BVC RESET (ignored)"];
}
----
As soon as the SGSN is reachable through NS OsmoGbProxy will send a BVC RESET
to the signalling BVC towards the SGSN. After that completes it will reset the
signalling BVC of all BSS connections. At this point the BSS will send a BVC
RESET for its PTP BVCs which will be forwarded to the SGSN, similarly the PTP
BVC RESET ACK from the SGSN will be sent back to the BSS.
.SGSN connection to OsmoGbProxy
[mscgen]
----
msc {
hscale="1.8";
bss1 [label="BSS1"], bss2 [label="BSS2"], gbproxy [label="GbProxy"], sgsn [label="SGSN"];
gbproxy <=> sgsn [label="NS link available"];
gbproxy => sgsn [label="BVC RESET (BVCI=0)"];
sgsn => gbproxy [label="BVC RESET ACK"];
gbproxy => bss1 [label="BVC RESET (BVCI=0)"];
bss1 => gbproxy [label="BVC RESET ACK"];
bss1 box bss1 [label="PTP BVCs need to be reset"];
bss1 => gbproxy [label="PTP BVC RESET (BVCI=x)"];
gbproxy => sgsn [label="PTP BVC RESET (BVCI=x)"];
sgsn => gbproxy [label="PTP BVC RESET ACK (BVCI=x)"];
gbproxy => bss1 [label="PTP BVC RESET ACK (BVCI=x)"];
bss2 <=> sgsn [label="BVCI x established"];
}
----
The communication on the PTP BVC will then be forwarded between the BSS and the
SGSN.
If a BSS connects while the SGSN is up the PTP BVC RESET will directly be
forwarded.
.BSS connects to OsmoGbProxy
[mscgen]
----
msc {
hscale="1.8";
bss1 [label="BSS1"], bss2 [label="BSS2"], gbproxy [label="GbProxy"], sgsn [label="SGSN"];
bss2 <=> gbproxy [label="NS link available"];
bss2 => gbproxy [label="BVC RESET (BVCI=0)"];
gbproxy => bss2 [label="BVC RESET ACK"];
bss2 => gbproxy [label="PTP BVC RESET (BVCI=y)"];
gbproxy => sgsn [label="PTP BVC RESET (BVCI=y)"];
sgsn => gbproxy [label="PTP BVC RESET ACK (BVCI=y)"];
gbproxy => bss2 [label="PTP BVC RESET ACK (BVCI=y)"];
bss2 <=> sgsn [label="BVCI y established"];
}
----
If OsmoGbProxy looses the connection to the SGSN it will reset the signalling
BVC of all BSS connections. This ensures that the BSS will not send traffic
over a PTP BVC before its reset procedure has been completed.
.SGSN connection fails
[mscgen]
----
msc {
hscale="1.8";
bss1 [label="BSS1"], bss2 [label="BSS2"], gbproxy [label="GbProxy"], sgsn [label="SGSN"];
gbproxy <=> sgsn [label="NS link fails"];
gbproxy => bss1 [label="BVC RESET (BVCI=0)"];
gbproxy => bss2 [label="BVC RESET (BVCI=0)"];
}
----
When the connection to the SGSN is eventually restored the signalling BVC
between OsmoGbProxy and SGSN will be reset.
After that completes OsmoGbProxy will reset the signalling BVC on all BSS NS
connections and forward the PTP BVC RESET messages.
.SGSN connection restored
[mscgen]
----
msc {
hscale="1.8";
bss1 [label="BSS1"], bss2 [label="BSS2"], gbproxy [label="GbProxy"], sgsn [label="SGSN"];
gbproxy <=> sgsn [label="NS link available"];
gbproxy => sgsn [label="BVC RESET (BVCI=0)"];
sgsn => gbproxy [label="BVC RESET ACK"];
gbproxy => bss1 [label="BVC RESET (BVCI=0)"];
bss1 => gbproxy [label="BVC RESET ACK"];
bss1 box bss1 [label="PTP BVCs need to be reset"];
gbproxy => bss2 [label="BVC RESET (BVCI=0)"];
bss2 => gbproxy [label="BVC RESET ACK"];
bss2 box bss2 [label="PTP BVCs need to be reset"];
}
----

View File

@ -1,18 +1,18 @@
[[chapter_overview]]
== Overview
=== About OsmoGbPROXY
=== About OsmoGbProxy
OsmoGbPROXY is the Osmocom proxy for the 3GPP Gb interface. The Gb
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 sine.
SGSN side.
OsmoGbPROXY aggregates many PCU-facing Gb connections into one Gb
OsmoGbProxy aggregates many PCU-facing Gb connections into one Gb
connection to the SGSN. This is achieved by
* maintaining sepaate NS-VCs on the PCU side and on the SGSN side
@ -21,11 +21,12 @@ connection to the SGSN. This is achieved by
* 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.
This contains the parsed configuration of the OsmoGbProxy.
==== gproxy_peer

View File

@ -9,6 +9,8 @@ include::./common/chapters/preface.adoc[]
include::{srcdir}/chapters/gbproxy-overview.adoc[]
include::{srcdir}/chapters/gbproxy-details.adoc[]
include::{srcdir}/chapters/gbproxy-running.adoc[]
include::{srcdir}/chapters/gbproxy-control.adoc[]