merge gb-ns2 "chapters" in one

The files gb-nsw-{configuration-timer,configuration,maintenance} were
not actually chapters, but sub-chapters or sub-sub-chapters.  This
breaks our general idea that all of those files are top-level chapters.

It also breaks asciidoc validation on Debian 11:

asciidoc: WARNING: gb-ns2-configuration.adoc: line 1: section title out of sequence: expected level 1, got level 2
asciidoc: WARNING: gb-ns2-maintenance.adoc: line 6: section title out of sequence: expected level 2, got level 3

the only place where they were used was the osmo-gbproxy manual, and
there in the exact sequenc in which I now merged them over here.

Change-Id: I3c618e5af61b376435f400ef9c64245cec2f9b73
This commit is contained in:
Harald Welte 2022-11-28 17:46:55 +01:00
parent 6b21af4ff0
commit 15b74288c0
4 changed files with 317 additions and 314 deletions

View File

@ -1,36 +0,0 @@
==== Gb/NS Timer configuration
The NS protocol features a number of configurable timers.
.List of configurable NS timers
|===
|tns-block|(un)blocking timer timeout (secs)
|tns-block-retries|(un)blocking timer; number of retries
|tns-reset|reset timer timeout (secs)
|tns-reset-retries|reset timer; number of retries
|tns-test|test timer timeout (secs)
|tns-alive|alive timer timeout (secs)
|tns-alive-retries|alive timer; number of retries
|tsns-prov|SNS provision timeout (secs) used by all SNS auto configuration procedures.
|tsns-size-retries|SNS Size procedure; number of retries
|tsns-config-retries|SNS Config procedure; number of retries
|===
All timer can be configured by vty configuration
.Example of timeouts
----
ns
timer tns-block 3
timer tns-block-retries 3
timer tns-reset 3
timer tns-reset-retries 3
timer tns-test 30
timer tns-alive 3
timer tns-alive-retries 10
timer tsns-prov 10
timer tsns-size-retries 3
timer tsns-config-retries 3
----
// FIXME: ladder diagrams for every timer

View File

@ -1,163 +0,0 @@
=== Gb/NS configuration
This section describes the configuration that libosmogb exposes via the
VTY and is valid for OsmoSGSN and OsmoGbProxy.
==== Gb over Frame Relay over E1/T1
The Gb over Frame Relay over E1/T1 requires:
* a hdlc interface
* a frame relay role (fr or frnet)
* the DLCI
.Example: Gb over Frame Relay configuration #1
----
ns
bind fr sitea1 <1>
fr hdlc1 frnet <2>
nse 2001 <3>
nsvci fr sitea1 dlci 16 nsvci 11
----
<1> a Gb-over-FR bind with the name sitea1
<2> connect the hdlc1 device with the role frnet to sitea1
<3> one NSE (2001) with a single NS-VCI 11 on sitea1 with DLCI 16
.Example: Gb over Frame Relay configuration #2
----
ns
bind fr sitea1 <1>
fr hdlc1 frnet <2>
bind fr sitea2
fr hdlc2 frnet
bind fr sitea3
fr hdlc3 frnet
bind fr sitea4
fr hdlc4 frnet
bind fr siteb1
fr hdlc5 frnet
bind fr siteb2
fr hdlc6 frnet
bind fr sitec1
fr hdlc7 frnet
bind fr sitec2
fr hdlc8 frnet
nse 2001 <3>
nsvci fr sitea1 dlci 16 nsvci 11
nsvci fr sitea2 dlci 17 nsvci 12
nsvci fr sitea3 dlci 18 nsvci 13
nsvci fr sitea4 dlci 19 nsvci 14
nse 2002 <4>
nsvci fr siteb5 dlci 20 nsvci 15
nsvci fr siteb6 dlci 21 nsvci 16
nse 2003 <5>
nsvc fr sitec7 dlci 22 nsvci 17
nsvc fr sitec8 dlci 23 nsvci 18
----
<1> a Gb-over-FR bind with the name sitea1
<2> connect the hdlc1 device with the role frnet to sitea1
<3> one NSE (2001) with four NS-VCI (11..14) on sitea1..4 with their respective DLCI
<4> another NSE (2002) with two NS-VCI (15..16) on siteb1..2 with their respective DLCI
<5> another NSE (2003) with two NS-VCI (17..18) on sitec1..2 with their respective DLCI
==== Gb over IP "ip.access style"
The Gb over IP "ip.access style" can be used with a dynamic configuration or with a
static configuration
The static configuration requires to configure all endpoints on the BSS and SGSN.
In constrast the dynamic configuration allows the SGSN to have only a reduced configuration.
===== Gb over IP "ip.access style" dynamic configuration
.Example: Gb over IP/UDP ip.access style dynamic configuration (SGSN)
----
ns
bind udp ran1 <1>
listen 10.100.1.1 23000 <2>
accept-ipaccess <3>
----
<1> create a IP/UDP bind with name ran1
<2> bind to 10.100.1.1:23000
<3> accept unknown BSS of ip.access style
.Example: Gb over IP/UDP "ip.access style" dynamic configuration (GbProxy as BSS)
----
ns
bind udp ran1 <1>
listen 10.100.0.1 23000 <2>
nse 1001 <3>
nsvc ipa ran1 10.100.1.1 23000 nsvci 1001
----
<1> create a IP/UDP bind with name ran1
<2> bind to 10.100.1.1:23000
<3> accept unknown BSS of ip.access style
NOTE: The OsmoPCU supports ip.access style Gb/NS but doesn't support this vty configuration because
it's receiving the configuration from the BTS/BSC.
===== Gb over IP "ip.access style" static configuration
.Example: Gb over IP/UDP "ip.access style" static configuration (BSS & SGSN)
----
ns
bind udp ran1 <1>
listen 10.100.0.1 23000 <2>
nse 1001 <3>
nsvc ipa ran1 10.100.1.1 23000 nsvci 1001
----
<1> create a IP/UDP bind with name ran1
<2> bind to 10.100.0.1:23000
<3> NSE 1001 with nsvc 1001 as ip.access style
NOTE: The OsmoPCU supports "ip.access style" Gb/NS but doesn't support this vty configuration because
it's receiving the configuration from the BTS/BSC.
==== Gb over IP 3GPP static configuration
A static IP/UDP configuration without SNS as specified by 3GPP 48.016.
.Example: Gb over IP/UDP static configuration BSS/SGSN
----
ns
bind udp ran1 <1>
listen 10.100.0.1 23000 <2>
nse 1001 <3>
nsvc udp ran1 10.100.1.1 23000 signalling-weight 2 data-weight 2
nsvc udp ran1 10.100.1.2 23000 <4>
----
<1> create a IP/UDP bind with name ran1
<2> bind to 10.100.0.1:23000
<3> add NSE 1001 with 2 NSVC
<4> short configuration with default signalling and data weight of 1
==== Gb over IP 3GPP auto configuration as BSS
IP/UDP auto-configuration with initial endpoints to an SGSN.
The auto-configuration will use the first bind to connect to the
first endpoint. If this fails Osmocom will iterate over all endpoints and binds to find
a working combination.
.Example: Gb over IP/UDP auto-configuration as BSS
----
ns
bind udp ran1 <1>
listen 10.100.0.1 23000 <2>
bind udp ran2
listen 10.100.0.2 23000
bind udp ran3
listen 10.100.0.3 23000
nse 1001 <3>
ip-sns-bind ran1 <4>
ip-sns-bind ran2
ip-sns-remote 10.100.1.1 23000 <5>
ip-sns-remote 10.100.1.2 23000
----
<1> create a IP/UDP bind with name ran1
<2> bind to 10.100.0.1:23000
<3> add NSE 1001 with 2 initial SNS endpoints
<4> add ran1 to the list of available endpoints
<5> add 10.100.1.1 as initial endpoint

View File

@ -1,115 +0,0 @@
=== Gb/NS maintenance
This section describes common maintenance procedures.
[[ns2-nse-states]]
==== NSE states
A NSE can have the following states:
.NSE states
* ALIVE
* DEAD
For FR, IPA: The NSE is ALIVE if there is at least one NSVC in state UNBLOCKED.
For IP-SNS/UDP: The NSE is ALIVE if there is at least one NSVC ALIVE and the sum of all ALIVE NSVCs signalling weights > 0 and data weights > 0.
The state of the NSE is shown by vty.
.show ns
----
GbProxy# show ns nsei 1234
NSEI 01234: UDP, DEAD <1>
FSM Instance Name: 'GPRS-NS2-SNS-BSS(NSE01234-SNS)[0x6120000012a0]', ID: 'NSE01234-SNS'
Log-Level: 'DEBUG', State: 'BSS_SIZE'
Timer: 1
Maximum number of remote NS-VCs: 8192, IPv4 Endpoints: 8192, IPv6 Endpoints: 8192
1 NS-VC:
NSVCI none: DISABLED DYNAMIC data_weight=1 sig_weight=1 udp)[127.0.0.1]:23000<>[127.0.0.1]:22000
----
<1> NSE state
==== NSVC states
A NSVC can have the following states:
.nsvc states
[options="header"]
|=========================================================
| State | transport UNITDATA | Description
| DISABLED | No | Either the transport layer is unavailable (FR) or this NSVC is currently used by IP-SNS dynamic configuration.
| RESET | No | Sending out RESET PDU and awaiting data.
| BLOCKED | No* | The NSVC has been BLOCKED. * see 3GPP TS 48.016 § 7.2 exception
| UNBLOCKED/ALIVE | Yes | The NSVC transport UNITDATA.
| RECOVERING | No | The NSVC test procedure timed out. NSVC type is a IP-SNS which don't use RESET/BLOCK/UNBLOCK.
|=========================================================
[[fig-nsvc-states-reset-block]]
.Simplified state diagram for RESET BLOCK UNBLOCK NSVCs
[graphviz]
----
include::gb-ns2-nsvc-states-reset-block.dot[]
----
[[fig-nsvc-states-alive]]
.Simplified state diagram for IP-SNS/UDP
[graphviz]
----
include::gb-ns2-nsvc-states-alive.dot[]
----
==== Show information of a specific NSE
The NSE 1234 has been configured for as BSS with IP-SNS configuration.
.show ns on a dynamic configured IP-SNS NSE
----
GbProxy# show ns nsei 1234
NSEI 01234: UDP, DEAD <1>
FSM Instance Name: 'GPRS-NS2-SNS-BSS(NSE01234-SNS)[0x6120000012a0]', ID: 'NSE01234-SNS'
Log-Level: 'DEBUG', State: 'BSS_SIZE' <2>
Timer: 1
Maximum number of remote NS-VCs: 8192, IPv4 Endpoints: 8192, IPv6 Endpoints: 8192
1 NS-VC:
NSVCI none: DISABLED DYNAMIC data_weight=1 sig_weight=1 udp)[127.0.0.1]:23000<>[127.0.0.1]:22000
----
<1> A UDP NSE. A NSE can be ALIVE or DEAD
<2> The SNS state. CONFIGURED and LOCAL_PROCEDURE are ALIVE states
For description of NSE states see <<ns2-nse-states>>.
.show ns on a frame relay NSE
----
OsmoNSdummy# show ns nsei 02001
NSEI 02001: FR, ALIVE <1>
4 NS-VC:
NSVCI 00001: DISABLED PERSIST data_weight=1 sig_weight=1 fr)netif: hdlcnet1 dlci: 16 <2>
NSVCI 00002: DISABLED PERSIST data_weight=1 sig_weight=1 fr)netif: hdlcnet2 dlci: 17 <3>
NSVCI 00003: DISABLED PERSIST <4> data_weight=1 sig_weight=1 fr)netif: hdlcnet3 dlci: 18
NSVCI 00004: DISABLED PERSIST data_weight=1 sig_weight=1 fr)netif: hdlcnet4 dlci: 19
----
<1> A FR NSE. A NSE can be ALIVE or DEAD
<2> An unblocked NS-VC will be used for data and signalling. data and signalling weight are only relevant for UDP NSVC.
<3> NSVC is still blocked.
<4> A PERSIST NSVC is a configured via VTY.
==== Blocking a NSVC
.how to block a single NSVC
----
OsmoNSdummy# show ns nsei 01234
NSEI 01234: UDP, ALIVE since 0d 0h 41m 6s
2 NS-VC:
NSVCI 01234: UNBLOCKED PERSIST udp)[127.0.0.1]:23000\<1234>[127.0.0.1]:22000 ALIVE since 0d 0h 2m 36s
NSVCI 01235: UNBLOCKED PERSIST udp)[127.0.0.1]:23001\<1235>[127.0.0.1]:22001 ALIVE since 0d 0h 41m 6s
OsmoNSdummy# nsvc 1234 block
The NS-VC 01234 will be blocked.
OsmoNSdummy# show ns nsei 01234
NSEI 01234: UDP, ALIVE since 0d 0h 42m 7s
2 NS-VC:
NSVCI 01234: BLOCKED PERSIST udp)[127.0.0.1]:23000\<1234>[127.0.0.1]:22000 DEAD since 0d 0h 3m 37s
NSVCI 01235: UNBLOCKED PERSIST udp)[127.0.0.1]:23001\<1235>[127.0.0.1]:22001 ALIVE since 0d 0h 42m 7s
----

View File

@ -179,3 +179,320 @@ The PCU creates a dynamic NSE when it receives the configuration from BTS/BSC.
A NS-VC is always bound to a NSE and the bind (NS-VL). The NSVC can be either
persistent or dynamic.
=== Gb/NS configuration
This section describes the configuration that libosmogb exposes via the
VTY and is valid for OsmoSGSN and OsmoGbProxy.
==== Gb over Frame Relay over E1/T1
The Gb over Frame Relay over E1/T1 requires:
* a hdlc interface
* a frame relay role (fr or frnet)
* the DLCI
.Example: Gb over Frame Relay configuration #1
----
ns
bind fr sitea1 <1>
fr hdlc1 frnet <2>
nse 2001 <3>
nsvci fr sitea1 dlci 16 nsvci 11
----
<1> a Gb-over-FR bind with the name sitea1
<2> connect the hdlc1 device with the role frnet to sitea1
<3> one NSE (2001) with a single NS-VCI 11 on sitea1 with DLCI 16
.Example: Gb over Frame Relay configuration #2
----
ns
bind fr sitea1 <1>
fr hdlc1 frnet <2>
bind fr sitea2
fr hdlc2 frnet
bind fr sitea3
fr hdlc3 frnet
bind fr sitea4
fr hdlc4 frnet
bind fr siteb1
fr hdlc5 frnet
bind fr siteb2
fr hdlc6 frnet
bind fr sitec1
fr hdlc7 frnet
bind fr sitec2
fr hdlc8 frnet
nse 2001 <3>
nsvci fr sitea1 dlci 16 nsvci 11
nsvci fr sitea2 dlci 17 nsvci 12
nsvci fr sitea3 dlci 18 nsvci 13
nsvci fr sitea4 dlci 19 nsvci 14
nse 2002 <4>
nsvci fr siteb5 dlci 20 nsvci 15
nsvci fr siteb6 dlci 21 nsvci 16
nse 2003 <5>
nsvc fr sitec7 dlci 22 nsvci 17
nsvc fr sitec8 dlci 23 nsvci 18
----
<1> a Gb-over-FR bind with the name sitea1
<2> connect the hdlc1 device with the role frnet to sitea1
<3> one NSE (2001) with four NS-VCI (11..14) on sitea1..4 with their respective DLCI
<4> another NSE (2002) with two NS-VCI (15..16) on siteb1..2 with their respective DLCI
<5> another NSE (2003) with two NS-VCI (17..18) on sitec1..2 with their respective DLCI
==== Gb over IP "ip.access style"
The Gb over IP "ip.access style" can be used with a dynamic configuration or with a
static configuration
The static configuration requires to configure all endpoints on the BSS and SGSN.
In constrast the dynamic configuration allows the SGSN to have only a reduced configuration.
===== Gb over IP "ip.access style" dynamic configuration
.Example: Gb over IP/UDP ip.access style dynamic configuration (SGSN)
----
ns
bind udp ran1 <1>
listen 10.100.1.1 23000 <2>
accept-ipaccess <3>
----
<1> create a IP/UDP bind with name ran1
<2> bind to 10.100.1.1:23000
<3> accept unknown BSS of ip.access style
.Example: Gb over IP/UDP "ip.access style" dynamic configuration (GbProxy as BSS)
----
ns
bind udp ran1 <1>
listen 10.100.0.1 23000 <2>
nse 1001 <3>
nsvc ipa ran1 10.100.1.1 23000 nsvci 1001
----
<1> create a IP/UDP bind with name ran1
<2> bind to 10.100.1.1:23000
<3> accept unknown BSS of ip.access style
NOTE: The OsmoPCU supports ip.access style Gb/NS but doesn't support this vty configuration because
it's receiving the configuration from the BTS/BSC.
===== Gb over IP "ip.access style" static configuration
.Example: Gb over IP/UDP "ip.access style" static configuration (BSS & SGSN)
----
ns
bind udp ran1 <1>
listen 10.100.0.1 23000 <2>
nse 1001 <3>
nsvc ipa ran1 10.100.1.1 23000 nsvci 1001
----
<1> create a IP/UDP bind with name ran1
<2> bind to 10.100.0.1:23000
<3> NSE 1001 with nsvc 1001 as ip.access style
NOTE: The OsmoPCU supports "ip.access style" Gb/NS but doesn't support this vty configuration because
it's receiving the configuration from the BTS/BSC.
==== Gb over IP 3GPP static configuration
A static IP/UDP configuration without SNS as specified by 3GPP 48.016.
.Example: Gb over IP/UDP static configuration BSS/SGSN
----
ns
bind udp ran1 <1>
listen 10.100.0.1 23000 <2>
nse 1001 <3>
nsvc udp ran1 10.100.1.1 23000 signalling-weight 2 data-weight 2
nsvc udp ran1 10.100.1.2 23000 <4>
----
<1> create a IP/UDP bind with name ran1
<2> bind to 10.100.0.1:23000
<3> add NSE 1001 with 2 NSVC
<4> short configuration with default signalling and data weight of 1
==== Gb over IP 3GPP auto configuration as BSS
IP/UDP auto-configuration with initial endpoints to an SGSN.
The auto-configuration will use the first bind to connect to the
first endpoint. If this fails Osmocom will iterate over all endpoints and binds to find
a working combination.
.Example: Gb over IP/UDP auto-configuration as BSS
----
ns
bind udp ran1 <1>
listen 10.100.0.1 23000 <2>
bind udp ran2
listen 10.100.0.2 23000
bind udp ran3
listen 10.100.0.3 23000
nse 1001 <3>
ip-sns-bind ran1 <4>
ip-sns-bind ran2
ip-sns-remote 10.100.1.1 23000 <5>
ip-sns-remote 10.100.1.2 23000
----
<1> create a IP/UDP bind with name ran1
<2> bind to 10.100.0.1:23000
<3> add NSE 1001 with 2 initial SNS endpoints
<4> add ran1 to the list of available endpoints
<5> add 10.100.1.1 as initial endpoint
==== Gb/NS Timer configuration
The NS protocol features a number of configurable timers.
.List of configurable NS timers
|===
|tns-block|(un)blocking timer timeout (secs)
|tns-block-retries|(un)blocking timer; number of retries
|tns-reset|reset timer timeout (secs)
|tns-reset-retries|reset timer; number of retries
|tns-test|test timer timeout (secs)
|tns-alive|alive timer timeout (secs)
|tns-alive-retries|alive timer; number of retries
|tsns-prov|SNS provision timeout (secs) used by all SNS auto configuration procedures.
|tsns-size-retries|SNS Size procedure; number of retries
|tsns-config-retries|SNS Config procedure; number of retries
|===
All timer can be configured by vty configuration
.Example of timeouts
----
ns
timer tns-block 3
timer tns-block-retries 3
timer tns-reset 3
timer tns-reset-retries 3
timer tns-test 30
timer tns-alive 3
timer tns-alive-retries 10
timer tsns-prov 10
timer tsns-size-retries 3
timer tsns-config-retries 3
----
// FIXME: ladder diagrams for every timer
=== Gb/NS maintenance
This section describes common maintenance procedures.
[[ns2-nse-states]]
==== NSE states
A NSE can have the following states:
.NSE states
* ALIVE
* DEAD
For FR, IPA: The NSE is ALIVE if there is at least one NSVC in state UNBLOCKED.
For IP-SNS/UDP: The NSE is ALIVE if there is at least one NSVC ALIVE and the sum of all ALIVE NSVCs signalling weights > 0 and data weights > 0.
The state of the NSE is shown by vty.
.show ns
----
GbProxy# show ns nsei 1234
NSEI 01234: UDP, DEAD <1>
FSM Instance Name: 'GPRS-NS2-SNS-BSS(NSE01234-SNS)[0x6120000012a0]', ID: 'NSE01234-SNS'
Log-Level: 'DEBUG', State: 'BSS_SIZE'
Timer: 1
Maximum number of remote NS-VCs: 8192, IPv4 Endpoints: 8192, IPv6 Endpoints: 8192
1 NS-VC:
NSVCI none: DISABLED DYNAMIC data_weight=1 sig_weight=1 udp)[127.0.0.1]:23000<>[127.0.0.1]:22000
----
<1> NSE state
==== NSVC states
A NSVC can have the following states:
.nsvc states
[options="header"]
|=========================================================
| State | transport UNITDATA | Description
| DISABLED | No | Either the transport layer is unavailable (FR) or this NSVC is currently used by IP-SNS dynamic configuration.
| RESET | No | Sending out RESET PDU and awaiting data.
| BLOCKED | No* | The NSVC has been BLOCKED. * see 3GPP TS 48.016 § 7.2 exception
| UNBLOCKED/ALIVE | Yes | The NSVC transport UNITDATA.
| RECOVERING | No | The NSVC test procedure timed out. NSVC type is a IP-SNS which don't use RESET/BLOCK/UNBLOCK.
|=========================================================
[[fig-nsvc-states-reset-block]]
.Simplified state diagram for RESET BLOCK UNBLOCK NSVCs
[graphviz]
----
include::gb-ns2-nsvc-states-reset-block.dot[]
----
[[fig-nsvc-states-alive]]
.Simplified state diagram for IP-SNS/UDP
[graphviz]
----
include::gb-ns2-nsvc-states-alive.dot[]
----
==== Show information of a specific NSE
The NSE 1234 has been configured for as BSS with IP-SNS configuration.
.show ns on a dynamic configured IP-SNS NSE
----
GbProxy# show ns nsei 1234
NSEI 01234: UDP, DEAD <1>
FSM Instance Name: 'GPRS-NS2-SNS-BSS(NSE01234-SNS)[0x6120000012a0]', ID: 'NSE01234-SNS'
Log-Level: 'DEBUG', State: 'BSS_SIZE' <2>
Timer: 1
Maximum number of remote NS-VCs: 8192, IPv4 Endpoints: 8192, IPv6 Endpoints: 8192
1 NS-VC:
NSVCI none: DISABLED DYNAMIC data_weight=1 sig_weight=1 udp)[127.0.0.1]:23000<>[127.0.0.1]:22000
----
<1> A UDP NSE. A NSE can be ALIVE or DEAD
<2> The SNS state. CONFIGURED and LOCAL_PROCEDURE are ALIVE states
For description of NSE states see <<ns2-nse-states>>.
.show ns on a frame relay NSE
----
OsmoNSdummy# show ns nsei 02001
NSEI 02001: FR, ALIVE <1>
4 NS-VC:
NSVCI 00001: DISABLED PERSIST data_weight=1 sig_weight=1 fr)netif: hdlcnet1 dlci: 16 <2>
NSVCI 00002: DISABLED PERSIST data_weight=1 sig_weight=1 fr)netif: hdlcnet2 dlci: 17 <3>
NSVCI 00003: DISABLED PERSIST <4> data_weight=1 sig_weight=1 fr)netif: hdlcnet3 dlci: 18
NSVCI 00004: DISABLED PERSIST data_weight=1 sig_weight=1 fr)netif: hdlcnet4 dlci: 19
----
<1> A FR NSE. A NSE can be ALIVE or DEAD
<2> An unblocked NS-VC will be used for data and signalling. data and signalling weight are only relevant for UDP NSVC.
<3> NSVC is still blocked.
<4> A PERSIST NSVC is a configured via VTY.
==== Blocking a NSVC
.how to block a single NSVC
----
OsmoNSdummy# show ns nsei 01234
NSEI 01234: UDP, ALIVE since 0d 0h 41m 6s
2 NS-VC:
NSVCI 01234: UNBLOCKED PERSIST udp)[127.0.0.1]:23000\<1234>[127.0.0.1]:22000 ALIVE since 0d 0h 2m 36s
NSVCI 01235: UNBLOCKED PERSIST udp)[127.0.0.1]:23001\<1235>[127.0.0.1]:22001 ALIVE since 0d 0h 41m 6s
OsmoNSdummy# nsvc 1234 block
The NS-VC 01234 will be blocked.
OsmoNSdummy# show ns nsei 01234
NSEI 01234: UDP, ALIVE since 0d 0h 42m 7s
2 NS-VC:
NSVCI 01234: BLOCKED PERSIST udp)[127.0.0.1]:23000\<1234>[127.0.0.1]:22000 DEAD since 0d 0h 3m 37s
NSVCI 01235: UNBLOCKED PERSIST udp)[127.0.0.1]:23001\<1235>[127.0.0.1]:22001 ALIVE since 0d 0h 42m 7s
----