<p>lynxis lazus has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-gsm-manuals/+/23393">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">common/chapters: extend gb/ns2 chapters<br><br>Merge gb-variants.adoc into gb-ns2.adoc<br>Add a general overview of the internal structure which is also used<br>by the vty.<br>Move the configuration into a seperate adoc to allow the PCU manual to skip<br>the part which doesn't apply for it.<br>Copy the timer configuration into gb.adoc to allow document newer<br>timers. All users of the NS2 code will use the timer sub-chapter.<br><br>Change-Id: I902b850528cbc04bd469590babd84cccf64300e8<br>---<br>A common/chapters/gb-ns2-configuration-timer.adoc<br>A common/chapters/gb-ns2-configuration.adoc<br>A common/chapters/gb-ns2.adoc<br>D common/chapters/gb-variants.adoc<br>4 files changed, 446 insertions(+), 179 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-gsm-manuals refs/changes/93/23393/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/common/chapters/gb-ns2-configuration-timer.adoc b/common/chapters/gb-ns2-configuration-timer.adoc</span><br><span>new file mode 100644</span><br><span>index 0000000..ab8585f</span><br><span>--- /dev/null</span><br><span>+++ b/common/chapters/gb-ns2-configuration-timer.adoc</span><br><span>@@ -0,0 +1,36 @@</span><br><span style="color: hsl(120, 100%, 40%);">+==== Gb/NS Timer configuration</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+The NS protocol features a number of configurable timers.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+.List of configurable NS timers</span><br><span style="color: hsl(120, 100%, 40%);">+|===</span><br><span style="color: hsl(120, 100%, 40%);">+|tns-block|(un)blocking timer timeout (secs)</span><br><span style="color: hsl(120, 100%, 40%);">+|tns-block-retries|(un)blocking timer; number of retries</span><br><span style="color: hsl(120, 100%, 40%);">+|tns-reset|reset timer timeout (secs)</span><br><span style="color: hsl(120, 100%, 40%);">+|tns-reset-retries|reset timer; number of retries</span><br><span style="color: hsl(120, 100%, 40%);">+|tns-test|test timer timeout (secs)</span><br><span style="color: hsl(120, 100%, 40%);">+|tns-alive|alive timer timeout (secs)</span><br><span style="color: hsl(120, 100%, 40%);">+|tns-alive-retries|alive timer; number of retries</span><br><span style="color: hsl(120, 100%, 40%);">+|tsns-prov|SNS provision timeout (secs) used by all SNS auto configuration procedures.</span><br><span style="color: hsl(120, 100%, 40%);">+|tsns-size-retries|SNS Size procedure; number of retries</span><br><span style="color: hsl(120, 100%, 40%);">+|tsns-config-retries|SNS Config procedure; number of retries</span><br><span style="color: hsl(120, 100%, 40%);">+|===</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+All timer can be configured by vty configuration</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+.Example of timeouts</span><br><span style="color: hsl(120, 100%, 40%);">+----</span><br><span style="color: hsl(120, 100%, 40%);">+ns</span><br><span style="color: hsl(120, 100%, 40%);">+ timer tns-block 3</span><br><span style="color: hsl(120, 100%, 40%);">+ timer tns-block-retries 3</span><br><span style="color: hsl(120, 100%, 40%);">+ timer tns-reset 3</span><br><span style="color: hsl(120, 100%, 40%);">+ timer tns-reset-retries 3</span><br><span style="color: hsl(120, 100%, 40%);">+ timer tns-test 30</span><br><span style="color: hsl(120, 100%, 40%);">+ timer tns-alive 3</span><br><span style="color: hsl(120, 100%, 40%);">+ timer tns-alive-retries 10</span><br><span style="color: hsl(120, 100%, 40%);">+ timer tsns-prov 10</span><br><span style="color: hsl(120, 100%, 40%);">+ timer tsns-size-retries 3</span><br><span style="color: hsl(120, 100%, 40%);">+ timer tsns-config-retries 3</span><br><span style="color: hsl(120, 100%, 40%);">+----</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+// FIXME: ladder diagrams for every timer</span><br><span>diff --git a/common/chapters/gb-ns2-configuration.adoc b/common/chapters/gb-ns2-configuration.adoc</span><br><span>new file mode 100644</span><br><span>index 0000000..51ad0ec</span><br><span>--- /dev/null</span><br><span>+++ b/common/chapters/gb-ns2-configuration.adoc</span><br><span>@@ -0,0 +1,172 @@</span><br><span style="color: hsl(120, 100%, 40%);">+=== Gb/NS configuration</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+This section describes the configuration that libosmogb exposes via the</span><br><span style="color: hsl(120, 100%, 40%);">+VTY and is valid for OsmoSGSN and OsmoGbProxy.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+==== Gb over Frame Relay over E1/T1</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+The Gb over Frame Relay over E1/T1 requires:</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+* a hdlc interface</span><br><span style="color: hsl(120, 100%, 40%);">+* a frame relay role (fr or frnet)</span><br><span style="color: hsl(120, 100%, 40%);">+* the DLCI</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+.Example: Gb over Frame Relay configuration #1</span><br><span style="color: hsl(120, 100%, 40%);">+----</span><br><span style="color: hsl(120, 100%, 40%);">+ns</span><br><span style="color: hsl(120, 100%, 40%);">+ bind fr sidea1 <1></span><br><span style="color: hsl(120, 100%, 40%);">+  fr hdlcnet1 frnet <2></span><br><span style="color: hsl(120, 100%, 40%);">+ nse 2001 <3></span><br><span style="color: hsl(120, 100%, 40%);">+  nsvci fr sidea1 dlci 16 nsvci 11</span><br><span style="color: hsl(120, 100%, 40%);">+----</span><br><span style="color: hsl(120, 100%, 40%);">+<1> a Gb-over-FR bind with the name sidea1</span><br><span style="color: hsl(120, 100%, 40%);">+<2> connect the hdlcnet1 device with the role frnet to sidea1</span><br><span style="color: hsl(120, 100%, 40%);">+<3> one NSE (2001) with a single NS-VCI 11 on sidea1 with DLCI 16</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+.Example: Gb over Frame Relay configuration #2</span><br><span style="color: hsl(120, 100%, 40%);">+----</span><br><span style="color: hsl(120, 100%, 40%);">+ns</span><br><span style="color: hsl(120, 100%, 40%);">+ bind fr sidea1 <1></span><br><span style="color: hsl(120, 100%, 40%);">+  fr hdlcnet1 frnet <2></span><br><span style="color: hsl(120, 100%, 40%);">+ bind fr sidea2</span><br><span style="color: hsl(120, 100%, 40%);">+  fr hdlcnet2 frnet</span><br><span style="color: hsl(120, 100%, 40%);">+ bind fr sidea3</span><br><span style="color: hsl(120, 100%, 40%);">+  fr hdlcnet3 frnet</span><br><span style="color: hsl(120, 100%, 40%);">+ bind fr sidea4</span><br><span style="color: hsl(120, 100%, 40%);">+  fr hdlcnet4 frnet</span><br><span style="color: hsl(120, 100%, 40%);">+ bind fr sideb1</span><br><span style="color: hsl(120, 100%, 40%);">+  fr hdlcnet5 frnet</span><br><span style="color: hsl(120, 100%, 40%);">+ bind fr sideb2</span><br><span style="color: hsl(120, 100%, 40%);">+  fr hdlcnet6 frnet</span><br><span style="color: hsl(120, 100%, 40%);">+ bind fr sidec1</span><br><span style="color: hsl(120, 100%, 40%);">+  fr hdlcnet7 frnet</span><br><span style="color: hsl(120, 100%, 40%);">+ bind fr sidec2</span><br><span style="color: hsl(120, 100%, 40%);">+  fr hdlcnet8 frnet</span><br><span style="color: hsl(120, 100%, 40%);">+ nse 2001 <3></span><br><span style="color: hsl(120, 100%, 40%);">+  nsvci fr sidea1 dlci 16 nsvci 11</span><br><span style="color: hsl(120, 100%, 40%);">+  nsvci fr sidea2 dlci 17 nsvci 12</span><br><span style="color: hsl(120, 100%, 40%);">+  nsvci fr sidea3 dlci 18 nsvci 13</span><br><span style="color: hsl(120, 100%, 40%);">+  nsvci fr sidea4 dlci 19 nsvci 14</span><br><span style="color: hsl(120, 100%, 40%);">+ nse 2002 <4></span><br><span style="color: hsl(120, 100%, 40%);">+  nsvci fr sideb5 dlci 20 nsvci 15</span><br><span style="color: hsl(120, 100%, 40%);">+  nsvci fr sideb6 dlci 21 nsvci 16</span><br><span style="color: hsl(120, 100%, 40%);">+ nse 2003 <5></span><br><span style="color: hsl(120, 100%, 40%);">+  nsvc fr sidec7 dlci 22 nsvci 17</span><br><span style="color: hsl(120, 100%, 40%);">+  nsvc fr sidec8 dlci 23 nsvci 18</span><br><span style="color: hsl(120, 100%, 40%);">+----</span><br><span style="color: hsl(120, 100%, 40%);">+<1> a Gb-over-FR bind with the name sidea1</span><br><span style="color: hsl(120, 100%, 40%);">+<2> connect the hdlcnet1 device with the role frnet to sidea1</span><br><span style="color: hsl(120, 100%, 40%);">+<3> one NSE (2001) with four NS-VCI (11..14) on sidea1..4 with their respective DLCI</span><br><span style="color: hsl(120, 100%, 40%);">+<4> another NSE (2002) with two NS-VCI (15..16) on sideb1..2 with their respective DLCI</span><br><span style="color: hsl(120, 100%, 40%);">+<5> another NSE (2003) with two NS-VCI (17..18) on sidec1..2 with their respective DLCI</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+==== Gb over IP "ip.access style"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+The Gb over IP "ip.access style" can be used with a dynamic configuration or with a</span><br><span style="color: hsl(120, 100%, 40%);">+static configuration</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+The static configuration requires to configure all endpoints on the BSS and SGSN.</span><br><span style="color: hsl(120, 100%, 40%);">+In difference the dynamic configuration allows the SGSN to have only a reduced configuration.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+===== Gb over IP "ip.access style" dynamic configuration</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+.Example: Gb over IP/UDP ip.access style dynamic configuration (SGSN)</span><br><span style="color: hsl(120, 100%, 40%);">+----</span><br><span style="color: hsl(120, 100%, 40%);">+ns</span><br><span style="color: hsl(120, 100%, 40%);">+ bind udp ran1 <1></span><br><span style="color: hsl(120, 100%, 40%);">+  listen 10.100.1.1 23000 <2></span><br><span style="color: hsl(120, 100%, 40%);">+  accept-ipaccess <3></span><br><span style="color: hsl(120, 100%, 40%);">+----</span><br><span style="color: hsl(120, 100%, 40%);">+<1> create a IP/UDP bind with name ran1</span><br><span style="color: hsl(120, 100%, 40%);">+<2> bind to 10.100.1.1:23000</span><br><span style="color: hsl(120, 100%, 40%);">+<3> accept unknown BSS of ip.access style</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+.Example: Gb over IP/UDP "ip.access style" dynamic configuration (GbProxy as BSS)</span><br><span style="color: hsl(120, 100%, 40%);">+----</span><br><span style="color: hsl(120, 100%, 40%);">+ns</span><br><span style="color: hsl(120, 100%, 40%);">+ bind udp ran1 <1></span><br><span style="color: hsl(120, 100%, 40%);">+  listen 10.100.0.1 23000 <2></span><br><span style="color: hsl(120, 100%, 40%);">+ nse 1001 <3></span><br><span style="color: hsl(120, 100%, 40%);">+  nsvc ipa ran1 10.100.1.1 23000 nsvci 1001</span><br><span style="color: hsl(120, 100%, 40%);">+----</span><br><span style="color: hsl(120, 100%, 40%);">+<1> create a IP/UDP bind with name ran1</span><br><span style="color: hsl(120, 100%, 40%);">+<2> bind to 10.100.1.1:23000</span><br><span style="color: hsl(120, 100%, 40%);">+<3> accept unknown BSS of ip.access style</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+NOTE: The OsmoPCU supports ip.access style Gb/NS but doesn't support this vty configuration because</span><br><span style="color: hsl(120, 100%, 40%);">+it's receiving the configuration from the BTS/BSC.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+===== Gb over IP "ip.access style" static configuration</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+.Example: Gb over IP/UDP "ip.access style" dynamic configuration (SGSN)</span><br><span style="color: hsl(120, 100%, 40%);">+----</span><br><span style="color: hsl(120, 100%, 40%);">+ns</span><br><span style="color: hsl(120, 100%, 40%);">+ bind udp ran1 <1></span><br><span style="color: hsl(120, 100%, 40%);">+  listen 10.100.0.1 23000 <2></span><br><span style="color: hsl(120, 100%, 40%);">+----</span><br><span style="color: hsl(120, 100%, 40%);">+<1> create a IP/UDP bind with name ran1</span><br><span style="color: hsl(120, 100%, 40%);">+<2> bind to 10.100.0.1:23000</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+.Example: Gb over IP/UDP "ip.access style" dynamic configuration (GbProxy as BSS)</span><br><span style="color: hsl(120, 100%, 40%);">+----</span><br><span style="color: hsl(120, 100%, 40%);">+ns</span><br><span style="color: hsl(120, 100%, 40%);">+ bind udp ran1 <1></span><br><span style="color: hsl(120, 100%, 40%);">+  listen 10.100.0.1 23000 <2></span><br><span style="color: hsl(120, 100%, 40%);">+ nse 1001 <3></span><br><span style="color: hsl(120, 100%, 40%);">+  nsvc ipa ran1 10.100.1.1 23000 nsvci 1001</span><br><span style="color: hsl(120, 100%, 40%);">+----</span><br><span style="color: hsl(120, 100%, 40%);">+<1> create a IP/UDP bind with name ran1</span><br><span style="color: hsl(120, 100%, 40%);">+<2> bind to 10.100.0.1:23000</span><br><span style="color: hsl(120, 100%, 40%);">+<3> NSE 1001 with nsvc 1001 as ip.access style</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+NOTE: The OsmoPCU supports "ip.access style" Gb/NS but doesn't support this vty configuration because</span><br><span style="color: hsl(120, 100%, 40%);">+it's receiving the configuration from the BTS/BSC.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+==== Gb over IP 3GPP static configuration</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+A static IP/UDP configuration without SNS as specified by 3GPP 48.016.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+.Example: Gb over IP/UDP static configuration BSS/SGSN</span><br><span style="color: hsl(120, 100%, 40%);">+----</span><br><span style="color: hsl(120, 100%, 40%);">+ns</span><br><span style="color: hsl(120, 100%, 40%);">+ bind udp ran1 <1></span><br><span style="color: hsl(120, 100%, 40%);">+  listen 10.100.0.1 23000 <2></span><br><span style="color: hsl(120, 100%, 40%);">+ nse 1001 <3></span><br><span style="color: hsl(120, 100%, 40%);">+  nsvc udp ran1 10.100.1.1 23000 signalling-weight 2 data-weight 2</span><br><span style="color: hsl(120, 100%, 40%);">+  nsvc udp ran1 10.100.1.2 23000 <4></span><br><span style="color: hsl(120, 100%, 40%);">+----</span><br><span style="color: hsl(120, 100%, 40%);">+<1> create a IP/UDP bind with name ran1</span><br><span style="color: hsl(120, 100%, 40%);">+<2> bind to 10.100.0.1</span><br><span style="color: hsl(120, 100%, 40%);">+<3> NSE 1001 with 2 NSVC</span><br><span style="color: hsl(120, 100%, 40%);">+<4> short configuration with default signalling and data weight of 1</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+==== Gb over IP 3GPP auto configuration BSS</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+IP/UDP auto-configuration with initial endpoints to do an SGSN.</span><br><span style="color: hsl(120, 100%, 40%);">+The auto-configuration will use the first bind to connect to the</span><br><span style="color: hsl(120, 100%, 40%);">+first endpoint. If this fails Osmocom will iterate over all endpoints and binds to find</span><br><span style="color: hsl(120, 100%, 40%);">+a working combination.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+.Example: Gb over IP/UDP auto-configuration as BSS</span><br><span style="color: hsl(120, 100%, 40%);">+----</span><br><span style="color: hsl(120, 100%, 40%);">+ns</span><br><span style="color: hsl(120, 100%, 40%);">+ bind udp ran1 <1></span><br><span style="color: hsl(120, 100%, 40%);">+  listen 10.100.0.1 23000 <2></span><br><span style="color: hsl(120, 100%, 40%);">+ bind udp ran2</span><br><span style="color: hsl(120, 100%, 40%);">+  listen 10.100.0.2 23000</span><br><span style="color: hsl(120, 100%, 40%);">+ bind udp ran3</span><br><span style="color: hsl(120, 100%, 40%);">+  listen 10.100.0.3 23000</span><br><span style="color: hsl(120, 100%, 40%);">+ nse 1001 <3></span><br><span style="color: hsl(120, 100%, 40%);">+  ip-sns-bind ran1 <4></span><br><span style="color: hsl(120, 100%, 40%);">+  ip-sns-bind ran2</span><br><span style="color: hsl(120, 100%, 40%);">+  ip-sns-endpoint 10.100.1.1 <5></span><br><span style="color: hsl(120, 100%, 40%);">+  ip-sns-endpoint 10.100.1.2</span><br><span style="color: hsl(120, 100%, 40%);">+----</span><br><span style="color: hsl(120, 100%, 40%);">+<1> create a IP/UDP bind with name ran1</span><br><span style="color: hsl(120, 100%, 40%);">+<2> bind to 10.100.0.1</span><br><span style="color: hsl(120, 100%, 40%);">+<3> NSE 1001 with 2 initial SNS endpoints</span><br><span style="color: hsl(120, 100%, 40%);">+<4> add ran1 to the list of available endpoints</span><br><span style="color: hsl(120, 100%, 40%);">+<5> add 10.100.1.1 as initial endpoint</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>diff --git a/common/chapters/gb-ns2.adoc b/common/chapters/gb-ns2.adoc</span><br><span>new file mode 100644</span><br><span>index 0000000..a89f8cf</span><br><span>--- /dev/null</span><br><span>+++ b/common/chapters/gb-ns2.adoc</span><br><span>@@ -0,0 +1,238 @@</span><br><span style="color: hsl(120, 100%, 40%);">+== Gb/NS Network Service</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+'libosmogb' is part of the libosmocore.git repository and implements the</span><br><span style="color: hsl(120, 100%, 40%);">+Gb interface protocol stack consisting of the NS and BSSGP layers. It</span><br><span style="color: hsl(120, 100%, 40%);">+is used in a variety of Osmocom project, including OsmoSGSN, OsmoPCU,</span><br><span style="color: hsl(120, 100%, 40%);">+OsmoGbProxy.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+NOTE: <<3gpp-ts-48-016>> specify Network Service</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[[gb_variants]]</span><br><span style="color: hsl(120, 100%, 40%);">+=== Gb interface variants</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+There are a multiple variants of the Gb interface. This</span><br><span style="color: hsl(120, 100%, 40%);">+section tries to provide an overview into what those variants are, how</span><br><span style="color: hsl(120, 100%, 40%);">+they differ from each other.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+The two peers involved in any Gb interface must always be in agreement</span><br><span style="color: hsl(120, 100%, 40%);">+about the specific Gb interface variant before they are able to</span><br><span style="color: hsl(120, 100%, 40%);">+connect.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+The following variants are supported by Osmocom:</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+* Gb-over-Frame-Relay over E1/T1</span><br><span style="color: hsl(120, 100%, 40%);">+* Gb-over-IP "ip.access style"</span><br><span style="color: hsl(120, 100%, 40%);">+* Gb-over IP 3GPP static configuration</span><br><span style="color: hsl(120, 100%, 40%);">+* Gb-over-IP 3GPP auto-configuration</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[[gb-fr]]</span><br><span style="color: hsl(120, 100%, 40%);">+==== Gb over Frame Relay over E1/T1</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+Historically, this is the first Gb interface that was specified as part</span><br><span style="color: hsl(120, 100%, 40%);">+of GSM Release 97 when GPRS was first introduced.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+Like all other terrestrial GSM interfaces, it uses circuit-switched</span><br><span style="color: hsl(120, 100%, 40%);">+technology from the PDH/ISDN family of systems: E1 or T1 lines as per</span><br><span style="color: hsl(120, 100%, 40%);">+ITU-T G.703 / G.704.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+GSM TS 08.16 and later <<3gpp-ts-48-016>> specify that Frame Relay (FR)</span><br><span style="color: hsl(120, 100%, 40%);">+shall be used as transport layer between the E1/T1 bit-stream and the</span><br><span style="color: hsl(120, 100%, 40%);">+NS-level Gb messages.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+Two peer entities such as a GPRS BSS and a SGSN are interconnected by a</span><br><span style="color: hsl(120, 100%, 40%);">+NS-VCG (Virtual Connection Group) consisting of any number of NS-VCs</span><br><span style="color: hsl(120, 100%, 40%);">+(Virtual Connections).</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+Each NS-VC in turn operates over a Frame Relay Permanent Virtual Circuit</span><br><span style="color: hsl(120, 100%, 40%);">+(PVC), identified by its DLCI (Data Link Connection Identifier).</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+The protocol stacking is BSSGP/NS/FR/E1.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+===== FR Driver Support</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+The Osmocom NS/FR support currently requires the individual Frame Relay</span><br><span style="color: hsl(120, 100%, 40%);">+Links to be exposed as Linux kernel HDLC net-devices. The Osmocom NS</span><br><span style="color: hsl(120, 100%, 40%);">+implementation has to be instructed which `hdlcX` network devices it</span><br><span style="color: hsl(120, 100%, 40%);">+shall use for each NS-VC, and which DLCIs to use on them.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+The Linux kernel Frame Relay LMI support (which only implements the user</span><br><span style="color: hsl(120, 100%, 40%);">+role anyway) is not used. Instead, the ITU-T Q.933 LMI is implemented</span><br><span style="color: hsl(120, 100%, 40%);">+as part of the Osmocom NS code in libosmogb. Osmocom NS code is configuring</span><br><span style="color: hsl(120, 100%, 40%);">+the hdlcX device to match the correct mode (fr) and lmi (none).</span><br><span style="color: hsl(120, 100%, 40%);">+This is equivalent to the user-space command `sethdlc hdlcX fr lmi none`.</span><br><span style="color: hsl(120, 100%, 40%);">+ The net-devices will be also brought _up_ by the Osmocom NS code equivalent to</span><br><span style="color: hsl(120, 100%, 40%);">+ `ip link set hdlcX up` command.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+As the Osmocom Gb implementation uses AF_PACKET sockets on those</span><br><span style="color: hsl(120, 100%, 40%);">+`hdlcX` network interfaces, the respective program must be running with</span><br><span style="color: hsl(120, 100%, 40%);">+`CAP_NET_RAW` capability.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[[gb-gre-fr]]</span><br><span style="color: hsl(120, 100%, 40%);">+==== Gb over Frame Relay encapsulated in GRE/IP</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+This is a variant of the Gb-over-FR specified above. However, an</span><br><span style="color: hsl(120, 100%, 40%);">+external router (e.g. certain ancient Cisco routers) is used to take the</span><br><span style="color: hsl(120, 100%, 40%);">+Frame Relay frames from the physical E1/T1 TDM circuit and wrap them</span><br><span style="color: hsl(120, 100%, 40%);">+into the GRE encapsulation as per IETF RFC 2784.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+NOTE: GRE/IP has been removed from Osmocom NS code.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[[gb-ip-access]]</span><br><span style="color: hsl(120, 100%, 40%);">+==== Gb over IP "ip.access style"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+This is a non-standard variant of Gb which is not found in the GSM/3GPP</span><br><span style="color: hsl(120, 100%, 40%);">+specifications.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+It uses an UDP/IP based transport layer, while not yet implementing the</span><br><span style="color: hsl(120, 100%, 40%);">+IP-SNS that is normally required by a true 3GPP Gb over IP interface</span><br><span style="color: hsl(120, 100%, 40%);">+described further below. Hence, this variant resembles an intermediate</span><br><span style="color: hsl(120, 100%, 40%);">+state where a Gb interface originally designed for Frame Relay is used</span><br><span style="color: hsl(120, 100%, 40%);">+over IP without any of the IP-specific procedures specified by 3GPP.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+The major difference to 3GPP Gb over IP specified below are:</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+* No support for the IP-SNS and its SNS-SIZE, SNS-ADD, SNS-DELETE,</span><br><span style="color: hsl(120, 100%, 40%);">+  SNS-WEIGHT procedures</span><br><span style="color: hsl(120, 100%, 40%);">+* Use of the NS-RESET, NS-BLOCK and NS-UNBLOCK procedures which are</span><br><span style="color: hsl(120, 100%, 40%);">+  normally forbidden over an IP network.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+The protocol stacking is BSSGP/NS/UDP/IP.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[[gb-ip-sns]]</span><br><span style="color: hsl(120, 100%, 40%);">+==== Gb over IP 3GPP static and auto-configuration</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+This is the only official, 3GPP-standardized way of speaking a Gb</span><br><span style="color: hsl(120, 100%, 40%);">+interface over IP based transport.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+It features the IP Sub-Network Service (IP-SNS) which allows either</span><br><span style="color: hsl(120, 100%, 40%);">+static configuration or dynamic configuration.</span><br><span style="color: hsl(120, 100%, 40%);">+The static configuration requires to specify the NSE and related NS-VC</span><br><span style="color: hsl(120, 100%, 40%);">+configuration via vty similiar to Gb-over-FR.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+===== Gb over IP 3GPP auto-configuration</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+The auto-configuration allow to dynamically exchange information about</span><br><span style="color: hsl(120, 100%, 40%);">+IP endpoints (IP+port tuples) between the Gb interface peers.</span><br><span style="color: hsl(120, 100%, 40%);">+This means that normally only one initial IP endpoint needs to be configured.</span><br><span style="color: hsl(120, 100%, 40%);">+All additional IP endpoints and their relative weight for load distribution are then negotiated via the</span><br><span style="color: hsl(120, 100%, 40%);">+IP-SNS auto-configuration procedure.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+The major differences of this true IP based Gb compared to any of the</span><br><span style="color: hsl(120, 100%, 40%);">+above are:</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+* No use of the NS-RESET, NS-BLOCK or NS-UNBLOCK procedures</span><br><span style="color: hsl(120, 100%, 40%);">+* Ability to use some NS-VCs only for signaling (data_weight=0) or only</span><br><span style="color: hsl(120, 100%, 40%);">+  for user plane traffic (signaling_weight=0). This helps with SGSNs</span><br><span style="color: hsl(120, 100%, 40%);">+  that have an internal control/user plane separation architecture.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+Once the IP endpoints of the peers are known to each other, A full mesh</span><br><span style="color: hsl(120, 100%, 40%);">+of NS-VCs between all BSS endpoints and all SGSN endpoints is</span><br><span style="color: hsl(120, 100%, 40%);">+established.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+<<fig-gb-sns-nsvcs>> below illustrates a deployment with two IP</span><br><span style="color: hsl(120, 100%, 40%);">+endpoints on both the BSS (PCU) and the SGSN, as well as the resulting</span><br><span style="color: hsl(120, 100%, 40%);">+four NS-VCs established between them.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[[fig-gb-sns-nsvcs]]</span><br><span style="color: hsl(120, 100%, 40%);">+.IP sub-network relationship between NS-VCs and NS-VLs (from 3GPP TS 48.016)</span><br><span style="color: hsl(120, 100%, 40%);">+image::./common/images/gb-ip-nsvc.pdf[]</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+The sequence of messages in an IP-SNS enabled Gb interface bring-up can</span><br><span style="color: hsl(120, 100%, 40%);">+be seen in <<fig-ip-sns-sequence>>. Here we have a PCU/BSS with a</span><br><span style="color: hsl(120, 100%, 40%);">+single IP endpoint and a SGSN with two IP endpoints, which results in</span><br><span style="color: hsl(120, 100%, 40%);">+only two NS-VC being established.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+Furthermore, for each of the cells in the BSS/PCU, we can see the</span><br><span style="color: hsl(120, 100%, 40%);">+BVC-RESET procedure for its corresponding PTP BVC.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[[fig-ip-sns-sequence]]</span><br><span style="color: hsl(120, 100%, 40%);">+.Initialization of Gb interface using IP-SNS procedures</span><br><span style="color: hsl(120, 100%, 40%);">+[mscgen]</span><br><span style="color: hsl(120, 100%, 40%);">+----</span><br><span style="color: hsl(120, 100%, 40%);">+include::gb-ip-sns.msc[]</span><br><span style="color: hsl(120, 100%, 40%);">+----</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+==== PCU Configuration</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+// FIXME: remove the PCU configuration from here</span><br><span style="color: hsl(120, 100%, 40%);">+// FIXME: Full example configuration</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+.Example: osmo-pcu configuration for use with IP-SNS</span><br><span style="color: hsl(120, 100%, 40%);">+----</span><br><span style="color: hsl(120, 100%, 40%);">+pcu</span><br><span style="color: hsl(120, 100%, 40%);">+ gb-dialect ip-sns</span><br><span style="color: hsl(120, 100%, 40%);">+----</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+NOTE: The initial IP endpoint for osmo-pcu is not configured in the PCU</span><br><span style="color: hsl(120, 100%, 40%);">+itself, but in the BSC, who downloads the Gb interface configuration to</span><br><span style="color: hsl(120, 100%, 40%);">+the BTS during BTS OML start-up, which in turn passes it to the PCU over</span><br><span style="color: hsl(120, 100%, 40%);">+the unix domain socket between BTS and PCU</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+=== General structure</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+The general structure of the configuration is split into 3 parts</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+* binds (NS-VL)</span><br><span style="color: hsl(120, 100%, 40%);">+* nse (NS-E)</span><br><span style="color: hsl(120, 100%, 40%);">+* timeouts</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+==== bind (NS-VL)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+A bind represent a NS-VL. A bind has a specific type (IP/UDP or FR)</span><br><span style="color: hsl(120, 100%, 40%);">+and a unique name.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+==== NS-E</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+A NSE node represent a NS Entity. A NSE is either persistant or dynamic.</span><br><span style="color: hsl(120, 100%, 40%);">+A persistant NSE is configured by vty. A dynamic NSE is created on-demand</span><br><span style="color: hsl(120, 100%, 40%);">+without any vty node. The SGSN/GbProxy creates dynamic NSE when a BSS connects</span><br><span style="color: hsl(120, 100%, 40%);">+to the SGSN (see accept-ipaccess).</span><br><span style="color: hsl(120, 100%, 40%);">+The PCU creates a dynamic NSE when it receives the configuration from BTS/BSC.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+==== NS-VC</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+A NS-VC is always bound to a NSE and the bind (NS-VL). The NSVC can be either</span><br><span style="color: hsl(120, 100%, 40%);">+persitant or dynamic.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+=== vty commands</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# describe the ns2 vty with examples</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+FIXME: show ns == show ns entities + show ns binds</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+NSEI 01234: UDP, DEAD</span><br><span style="color: hsl(120, 100%, 40%);">+ NSVCI 01234: RESET PERSIST data_weight=1 sig_weight=1 udp)[127.0.0.1]:23000<1234>[127.0.0.1]:22000</span><br><span style="color: hsl(120, 100%, 40%);">+UDP bind: 127.0.0.1:23000 DSCP: 0</span><br><span style="color: hsl(120, 100%, 40%);">+  IP-SNS signalling weight: 1 data weight: 1</span><br><span style="color: hsl(120, 100%, 40%);">+  1 NS-VC:</span><br><span style="color: hsl(120, 100%, 40%);">+    NSVCI 01234: udp)[127.0.0.1]:23000<1234>[127.0.0.1]:22000</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+FIXME: show ns entities</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+FIXME: show ns binds</span><br><span style="color: hsl(120, 100%, 40%);">+OsmoNSdummy# show ns binds</span><br><span style="color: hsl(120, 100%, 40%);">+UDP bind: 127.0.0.1:23000 DSCP: 0</span><br><span style="color: hsl(120, 100%, 40%);">+  IP-SNS signalling weight: 1 data weight: 1</span><br><span style="color: hsl(120, 100%, 40%);">+  1 NS-VC:</span><br><span style="color: hsl(120, 100%, 40%);">+    NSVCI 01234: udp)[127.0.0.1]:23000<1234>[127.0.0.1]:22000</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+FIXME: nsvc 1234 block</span><br><span style="color: hsl(120, 100%, 40%);">+FIXME: nsvc 1234 unblock</span><br><span style="color: hsl(120, 100%, 40%);">+FIXME: nsvc 1234 reset</span><br><span style="color: hsl(120, 100%, 40%);">+FIXME: nse 101 sns reset</span><br><span style="color: hsl(120, 100%, 40%);">+FIXME: nse 104 drop</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+==== Blocking / Unblocking / Resetting NS Virtual Connections</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+The user can manually perform operations on individual NSVCs:</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+* blocking a NSVC</span><br><span style="color: hsl(120, 100%, 40%);">+* unblocking a NSVC</span><br><span style="color: hsl(120, 100%, 40%);">+* resetting a NSVC</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+The VTY command used for this is the `nsvc (nsei|nsvci) <0-65535></span><br><span style="color: hsl(120, 100%, 40%);">+(block|unblock|reset)` command available from the ENABLE node.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>diff --git a/common/chapters/gb-variants.adoc b/common/chapters/gb-variants.adoc</span><br><span>deleted file mode 100644</span><br><span>index dc978f6..0000000</span><br><span>--- a/common/chapters/gb-variants.adoc</span><br><span>+++ /dev/null</span><br><span>@@ -1,179 +0,0 @@</span><br><span style="color: hsl(0, 100%, 40%);">-[[gb_variants]]</span><br><span style="color: hsl(0, 100%, 40%);">-== Gb interface variants</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-There are a couple of variants of the Gb interface out there.  This</span><br><span style="color: hsl(0, 100%, 40%);">-section tries to provide an overview into what those variants are, how</span><br><span style="color: hsl(0, 100%, 40%);">-they differ from each other and how to configure Osmocom software</span><br><span style="color: hsl(0, 100%, 40%);">-accordingly.</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-The two peers involved in any Gb interface must always be in agreement</span><br><span style="color: hsl(0, 100%, 40%);">-about the specific Gb interface variant before they are  able to</span><br><span style="color: hsl(0, 100%, 40%);">-connect.</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-=== Gb over Frame Relay over E1/T1</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-Historically, this is the first Gb interface that was specified as part</span><br><span style="color: hsl(0, 100%, 40%);">-of GSM Release 97 when GPRS was first introduced.</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-Like all other terrestrial GSM interfaces, it uses circuit-switched</span><br><span style="color: hsl(0, 100%, 40%);">-technology from the PDH/ISDN family of systems:  E1 or T1 lines as per</span><br><span style="color: hsl(0, 100%, 40%);">-ITU-T G.703 / G.704.</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-GSM TS 08.16 and later <<3gpp-ts-48-016>> specify that Frame Relay (FR)</span><br><span style="color: hsl(0, 100%, 40%);">-shall be used as transport layer between the E1/T1 bit-stream and the</span><br><span style="color: hsl(0, 100%, 40%);">-NS-level Gb messages.</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-Two peer entities such as a GPRS BSS and a SGSN are interconnected by a</span><br><span style="color: hsl(0, 100%, 40%);">-NS-VCG (Virtual Connection Group) consisting of any number of NS-VCs</span><br><span style="color: hsl(0, 100%, 40%);">-(Virtual Connections).</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-Each NS-VC in turn operates over a Frame Relay Permanent Virtual Circuit</span><br><span style="color: hsl(0, 100%, 40%);">-(PVC), identified by its DLCI (Data Link Connection Identifier).</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-The protocol stacking is BSSGP/NS/FR/E1.</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-.Example: Gb over Frame Relay configuration</span><br><span>-----</span><br><span style="color: hsl(0, 100%, 40%);">-ns</span><br><span style="color: hsl(0, 100%, 40%);">- nse 2001 nsvci 11 frnet hdlcnet1 dlci 16 <1></span><br><span style="color: hsl(0, 100%, 40%);">- nse 2001 nsvci 12 frnet hdlcnet2 dlci 17</span><br><span style="color: hsl(0, 100%, 40%);">- nse 2001 nsvci 13 frnet hdlcnet3 dlci 18</span><br><span style="color: hsl(0, 100%, 40%);">- nse 2001 nsvci 14 frnet hdlcnet4 dlci 19</span><br><span style="color: hsl(0, 100%, 40%);">- nse 2002 nsvci 15 frnet hdlcnet5 dlci 20 <2></span><br><span style="color: hsl(0, 100%, 40%);">- nse 2002 nsvci 16 frnet hdlcnet6 dlci 21</span><br><span style="color: hsl(0, 100%, 40%);">- nse 2003 nsvci 17 frnet hdlcnet7 dlci 22 <3></span><br><span style="color: hsl(0, 100%, 40%);">- nse 2003 nsvci 18 frnet hdlcnet8 dlci 23</span><br><span>-----</span><br><span style="color: hsl(0, 100%, 40%);">-<1> one NSE (2001) with four NS-VCI (11..14) on hdlcnet1..4 with their respective DLCI</span><br><span style="color: hsl(0, 100%, 40%);">-<2> another NSE (2002) with two NS-VCI (15..16) on hdlcnet5..6 with their respective DLCI</span><br><span style="color: hsl(0, 100%, 40%);">-<3> another NSE (2003) with two NS-VCI (17..18) on hdlcnet7..8 with their respective DLCI</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-==== FR Driver Support</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-The Osmocom NS/FR support currently requires the individual Frame Relay</span><br><span style="color: hsl(0, 100%, 40%);">-Links to be exposed as Linux kernel HDLC net-devices.  The Osmocom NS</span><br><span style="color: hsl(0, 100%, 40%);">-implementation has to be instructed which `hdlcX` network devices it</span><br><span style="color: hsl(0, 100%, 40%);">-shall use for each NS-VC, and which DLCIs to use on them.</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-The Linux kernel Frame Relay LMI support (which only implements the user</span><br><span style="color: hsl(0, 100%, 40%);">-role anyway) is not used.  Instead, the ITU-T Q.933 LMI is implemented</span><br><span style="color: hsl(0, 100%, 40%);">-as part of the Osmocom NS code in libosmogb.  You must hence use</span><br><span style="color: hsl(0, 100%, 40%);">-`sethdlc hdlcX fr lmi none` to configure the HDLC net-devices for use</span><br><span style="color: hsl(0, 100%, 40%);">-with Osmocom.  The net-devices must also be _up_, e.g. using the</span><br><span style="color: hsl(0, 100%, 40%);">-`ip link set hdlcX up` command in some system start-up script.</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-As the Osmocom Gb implementation uses AF_PACKET sockets on those</span><br><span style="color: hsl(0, 100%, 40%);">-`hdlcX` network interfaces, the respective program must be running with</span><br><span style="color: hsl(0, 100%, 40%);">-`CAP_NET_RAW` capability.</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-=== Gb over Frame Relay encapsulated in GRE/IP</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-This is a variant of the Gb-over-FR specified above.  However, an</span><br><span style="color: hsl(0, 100%, 40%);">-external router (e.g. certain ancient Cisco routers) is used to take the</span><br><span style="color: hsl(0, 100%, 40%);">-Frame Relay frames from the physical E1/T1 TDM circuit and wrap them</span><br><span style="color: hsl(0, 100%, 40%);">-into the GRE encapsulation as per IETF RFC 2784.</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-Those GRE/IP messages from the external Cisco router are then passed to</span><br><span style="color: hsl(0, 100%, 40%);">-the Osmocom Gb stack (e.g. to `osmo-gbproxy`).</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-The protocol stacking is BSSGP/NS/FR/GRE/IP.</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-FIXME: Example configuration</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>-----</span><br><span style="color: hsl(0, 100%, 40%);">-ns</span><br><span style="color: hsl(0, 100%, 40%);">- encapsulation framerelay-gre enabled 1</span><br><span style="color: hsl(0, 100%, 40%);">- encapsulation framerelay-gre local-ip 127.0.0.1</span><br><span>-----</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-=== Gb over IP "ip.access style"</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-This is a non-standard variant of Gb which is not found in the GSM/3GPP</span><br><span style="color: hsl(0, 100%, 40%);">-specifications.</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-It uses an UDP/IP based transport layer, while not yet implementing the</span><br><span style="color: hsl(0, 100%, 40%);">-IP-SNS that is normally required by a true 3GPP Gb over IP interface</span><br><span style="color: hsl(0, 100%, 40%);">-described further below.  Hence, this variant resembles an intermediate</span><br><span style="color: hsl(0, 100%, 40%);">-state where a Gb interface originally designed for Frame Relay is used</span><br><span style="color: hsl(0, 100%, 40%);">-over IP without any of the IP-specific procedures specified by 3GPP.</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-The major difference to 3GPP Gb over IP specified below are:</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-* No support for the IP-SNS and its SNS-SIZE, SNS-ADD, SNS-DELETE,</span><br><span style="color: hsl(0, 100%, 40%);">-  SNS-WEIGHT procedures</span><br><span style="color: hsl(0, 100%, 40%);">-* Use of the NS-RESET, NS-BLOCK and NS-UNBLOCK procedures which are</span><br><span style="color: hsl(0, 100%, 40%);">-  normally forbidden over an IP network.</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-The protocol stacking is BSSGP/NS/UDP/IP.</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-FIXME: Full example configuration</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>-----</span><br><span style="color: hsl(0, 100%, 40%);">-ns</span><br><span style="color: hsl(0, 100%, 40%);">- encapsulation udp local-ip 127.0.0.1</span><br><span style="color: hsl(0, 100%, 40%);">- encapsulation udp local-port 23000</span><br><span>-----</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-[[gb-ip-sns]]</span><br><span style="color: hsl(0, 100%, 40%);">-=== 3GPP Gb over IP with IP-SNS</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-This is the only official, 3GPP-standardized way of speaking a Gb</span><br><span style="color: hsl(0, 100%, 40%);">-interface over IP based transport.</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-It features the IP Sub-Network Service (IP-SNS) in order to dynamically</span><br><span style="color: hsl(0, 100%, 40%);">-exchange information about IP endpoints (IP+port tuples) between the Gb</span><br><span style="color: hsl(0, 100%, 40%);">-interface peers.  This means that normally only one basic / first IP</span><br><span style="color: hsl(0, 100%, 40%);">-endpoint needs to be configured.  All additional IP endpoints and their</span><br><span style="color: hsl(0, 100%, 40%);">-relative weight for load distribution are then negotiated via the</span><br><span style="color: hsl(0, 100%, 40%);">-IP-SNS.</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-The major differences of this true IP based Gb compared to any of the</span><br><span style="color: hsl(0, 100%, 40%);">-above are:</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-* No use of the NS-RESET, NS-BLOCK or NS-UNBLOCK procedures</span><br><span style="color: hsl(0, 100%, 40%);">-* Ability to use some NS-VCs only for signaling (data_weight=0) or only</span><br><span style="color: hsl(0, 100%, 40%);">-  for user plane traffic (signaling_weight=0).  This helps with SGSNs</span><br><span style="color: hsl(0, 100%, 40%);">-  that have an internal control/user plane separation architecture.</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-Once the IP endpoints of the peers are known to each other, A full mesh</span><br><span style="color: hsl(0, 100%, 40%);">-of NS-VCs between all PCU-side endpoints and all SGSN endpoints is</span><br><span style="color: hsl(0, 100%, 40%);">-established.</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-<<fig-gb-sns-nsvcs>> below illustrates a deployment with two IP</span><br><span style="color: hsl(0, 100%, 40%);">-endpoints on both the BSS (PCU) and the SGSN, as well as the resulting</span><br><span style="color: hsl(0, 100%, 40%);">-four NS-VCs established between them.</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-[[fig-gb-sns-nsvcs]]</span><br><span style="color: hsl(0, 100%, 40%);">-.IP sub-network relationship between NS-VCs and NS-VLs (from 3GPP TS 48.016)</span><br><span style="color: hsl(0, 100%, 40%);">-image::./common/images/gb-ip-nsvc.pdf[]</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-The sequence of messages in an IP-SNS enabled Gb interface bring-up can</span><br><span style="color: hsl(0, 100%, 40%);">-be seen in <<fig-ip-sns-sequence>>.  Here we have a PCU/BSS with a</span><br><span style="color: hsl(0, 100%, 40%);">-single IP endpoint and a SGSN with two IP endpoints, which results in</span><br><span style="color: hsl(0, 100%, 40%);">-only two NS-VC being established.</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-Furthermore, for each of the cells in the BSS/PCU, we can see the</span><br><span style="color: hsl(0, 100%, 40%);">-BVC-RESET procedure for its corresponding PTP BVC.</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-[[fig-ip-sns-sequence]]</span><br><span style="color: hsl(0, 100%, 40%);">-.Initialization of Gb interface using IP-SNS procedures</span><br><span style="color: hsl(0, 100%, 40%);">-[mscgen]</span><br><span>-----</span><br><span style="color: hsl(0, 100%, 40%);">-include::gb-ip-sns.msc[]</span><br><span>-----</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-==== PCU Configuration</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-FIXME: Full example configuration</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-.Example: osmo-pcu configuration for use with IP-SNS</span><br><span>-----</span><br><span style="color: hsl(0, 100%, 40%);">-pcu</span><br><span style="color: hsl(0, 100%, 40%);">- gb-dialect ip-sns</span><br><span>-----</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-NOTE: The initial IP endpoint for osmo-pcu is not configured in the PCU</span><br><span style="color: hsl(0, 100%, 40%);">-itself, but in the BSC, who downloads the Gb interface configuration to</span><br><span style="color: hsl(0, 100%, 40%);">-the BTS during BTS OML start-up, which in turn passes it to the PCU over</span><br><span style="color: hsl(0, 100%, 40%);">-the unix domain socket between BTS and PCU</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-gsm-manuals/+/23393">change 23393</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-gsm-manuals/+/23393"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-gsm-manuals </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I902b850528cbc04bd469590babd84cccf64300e8 </div>
<div style="display:none"> Gerrit-Change-Number: 23393 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: lynxis lazus <lynxis@fe80.eu> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>