aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMax <msuraev@sysmocom.de>2016-03-02 18:30:33 +0100
committerNeels Hofmeyr <neels@hofmeyr.de>2018-11-27 18:30:23 +0100
commit4e2a1e3e98fa8d55907e720a5e82893b5b371e13 (patch)
treee826f8cb2bf8b7ada4edccbb3731bcf497e7d08f
parentc182b98998c8e9fb5a920cc5f57a17c45fb10daf (diff)
OsmoPCU: expand NS documentation
Add table with NS messages. Add corresponding sections. Clarify spec numbers.
-rw-r--r--doc/manuals/gb/ns.adoc153
-rw-r--r--doc/manuals/osmopcu-gb.adoc6
2 files changed, 141 insertions, 18 deletions
diff --git a/doc/manuals/gb/ns.adoc b/doc/manuals/gb/ns.adoc
index 0cc073b..3788389 100644
--- a/doc/manuals/gb/ns.adoc
+++ b/doc/manuals/gb/ns.adoc
@@ -7,10 +7,24 @@ level of compliance with 3GPP TS 08.16.
==== Messages Compliant With TS 08.16
+The NS protocol is implemented inside libosmocore so none of the messages below are sent by OsmoPCU explicitly.
+Instead corresponding functions from libosmocore are called which send and receive messages as necessary. See <<ns_init>> for details
+on establishing NS connection.
+
.Messages compliant with TS 08.16
[options="header",cols="10%,10%,20%,35%,5%,20%"]
|===
| TS 08.16 § | type code (hex) | This document § | Message | <-/-> | Received/Sent by OsmoPCU
+| 9.2.10 | 0x00 | <<ns_unit_data>> | NS-UNITDATA | <-/-> | Received/Sent
+| 9.2.5 | 0x02 | <<ns_reset>> | NS-RESET | <-/-> | Received/Sent
+| 9.2.6 | 0x03 | <<ns_reset_ack>> | NS-RESET-ACK | <-/-> | Received/Sent
+| 9.2.3 | 0x04 | <<ns_block>> | NS-BLOCK | <-/-> | Received/Sent
+| 9.2.4 | 0x05 | <<ns_block_ack>> | NS-BLOCK-ACK | <-/-> | Received/Sent
+| 9.2.8 | 0x06 | <<ns_unblock>> | NS-UNBLOCK | <-/-> | Received/Sent
+| 9.2.9 | 0x07 | <<ns_unblock_ack>> | NS-UNBLOCK-ACK | <-/-> | Received/Sent
+| 9.2.7 | 0x08 | <<ns_status>> | NS-STATUS | <-/-> | Received/Sent
+| 9.2.1 | 0x0a | <<ns_alive>> | NS-ALIVE | <-/-> | Received/Sent
+| 9.2.2 | 0x0b | <<ns_alive_ack>> | NS-ALIVE-ACK | <-/-> | Received/Sent
|===
==== Messages Specific to OsmoPCU
@@ -19,16 +33,92 @@ There are no OsmoPCU specific NS messages.
==== Messages Not Implemented by OsmoPCU
-.3GPP TS 08.16 messages not implemented by OsmoPCU
-[options="header",cols="10%,10%,80%"]
-|===
-| TS 08.16 § | type code (hex) | Message
-|===
-
+All the NS protocol messages from 3GPP TS 08.16 are implemented in OsmoPCU.
=== Details on Compliant NS Messages
-FIXME
+[[ns_unit_data]]
+==== NS-UNITDATA
+
+This PDU transfers one NS SDU (specified in 3GPP TS 08.18) between OsmoPCU and SGSN. Upon receiving it OsmoPCU passes it to BSSGP
+implementaton to handle. It is also sent by BSSGP as necessary - see <<bssgp>> for details.
+It contains BVCI (<<ie_bvci>>) and NS SDU (<<ie_nssdu>>) IEs.
+
+[[ns_reset]]
+==== NS-RESET
+
+This message is send by OsmoPCU in order to initiate reset procedure described in 3GPP TS 08.16 § 7.3. The expected reply is
+NS-RESET-ACK (<<ns_reset_ack>>) message. If no expected reply is received in 3 seconds than the sending is retried up to 3 times.
+When this message is received it is replied with NS-RESET-ACK (<<ns_reset_ack>>).
+It might be ignored under conditions described in 3GPP TS 08.16 § 7.3.1.
+The message conforms to 3GPP TS 08.16 § 9.2.5 specification.
+It contains Cause (<<ie_cause>>), NSVCI (<<ie_nsvci>>) and NSEI (<<ie_nsei>>) IEs.
+
+[[ns_reset_ack]]
+==== NS-RESET-ACK
+
+This message is sent as a response to proper NS-RESET (<<ns_reset>>) message initiating reset procedure.
+The message conforms to 3GPP TS 08.16 § 9.2.6 specification.
+It contains NSVCI (<<ie_nsvci>>) and NSEI (<<ie_nsei>>) IEs.
+
+[[ns_block]]
+==== NS-BLOCK
+
+Upon receiving this message corresponding NS-VC is marked as blocked by OsmoPCU and NS-BLOCK-ACK (<<ns_block_ack>>) reply is
+transmitted.
+When this message is sent by OsmoPCU corresponding NS-BLOCK-ACK (<<ns_block_ack>>) reply is expected before NS-VC is actually marked
+as blocked.
+This behavior follows the blocking procedure described in 3GPP TS 08.16 § 7.2.
+The message conforms to 3GPP TS 08.16 § 9.2.3 specification.
+It contains Cause (<<ie_cause>>) and NSVCI (<<ie_nsvci>>) IEs.
+
+[[ns_block_ack]]
+==== NS-BLOCK-ACK
+
+This message is sent by OsmoPCU automatically upon reception of correct NS-BLOCK (<<ns_block>>) message.
+It is expected as a reply for NS-BLOCK (<<ns_block>>) message sent by OsmoPCU.
+The message conforms to 3GPP TS 08.16 § 9.2.4 specification.
+It contains NSVCI (<<ie_nsvci>>) IE.
+
+[[ns_unblock]]
+==== NS-UNBLOCK
+
+Upon receiving this message corresponding NS-VC is unblocked by OsmoPCU and NS-UNBLOCK-ACK (<<ns_unblock_ack>>) reply is sent.
+When this message is sent by OsmoPCU corresponding NS-UNBLOCK-ACK (<<ns_unblock_ack>>) reply is expected before NS-VC is actually
+marked as unblocked.
+This behavior follows the blocking procedure described in 3GPP TS 08.16 § 7.2.
+The message conforms to 3GPP TS 08.16 § 9.2.8 specification.
+
+[[ns_unblock_ack]]
+==== NS-UNBLOCK-ACK
+
+Receiving this message notifies OsmoPCU that NS-VC unblocking request is confirmed and thus NS-VC is marked as unblocked.
+This message is also sent as a reply to NS-UNBLOCK (<<ns_unblock>>) message.
+The message conforms to 3GPP TS 08.16 § 9.2.9 specification.
+
+[[ns_status]]
+==== NS-STATUS
+
+This message is sent to inform other party about error conditions as a response to various unexpected PDUs or PDUs with
+unexpected/missing data. If this message is received for unknown NS-VC it is ignored in accordance with 3GPP TS
+08.16 § 7.5.1, otherwise the error cause is logged if present in NS-STATUS.
+The message conforms to 3GPP TS 08.16 § 9.2.7 specification.
+It contains Cause (<<ie_cause>>) and might (depending on actual error) contain NSVCI (<<ie_nsvci>>), NS PDU (<<ie_nspdu>>) and BVCI (<<ie_bvci>>) IEs.
+
+[[ns_alive]]
+==== NS-ALIVE
+
+This message is sent periodically to test connectivity according to 3GPP TS 08.16 § 4.5.3. The expected response is
+NS-ALIVE-ACK (<<ns_alive_ack>>). If no such response arrives within given amount of time (3 seconds) than another
+NS-ALIVE message is sent and failed test attempt is recorded.
+After 10 failed attempts NS connection is considered dead and OsmoPCU tries to reconnect.
+The message conforms to 3GPP TS 08.16 § 9.2.1 specification.
+
+[[ns_alive_ack]]
+==== NS-ALIVE-ACK
+
+This message is sent automatically in reply to NS-ALIVE (<<ns_alive>>) message.
+The message conforms to 3GPP TS 08.16 § 9.2.2 specification.
=== Information Elements Overview
@@ -37,22 +127,22 @@ additions to TS 08.16 specified in more detail.
==== IEs Conforming to TS 08.16
-The following Information Elements are accepted by OsmoPCU. Not all IEs are
-actually evaluated.
+The following Information Elements are accepted by OsmoPCU.
.IEs conforming to TS 08.16
[options="header",cols="5%,10%,40%,5%,40%"]
|===
| tag (hex) | TS 08.16 § | IE name | <-/-> | Received/Sent by OsmoPCU
+| 0x00 | 10.3.2 | Cause | <-/-> | Received/Sent
+| 0x01 | 10.3.5 | NSVCI | <-/-> | Received/Sent
+| 0x02 | 10.3.3 | NS PDU | <-/-> | Received/Sent
+| 0x03 | 10.3.1 | BVCI | <-/-> | Received/Sent
+| 0x04 | 10.3.6 | NSEI | <-/-> | Received/Sent
|===
==== IEs Not Conforming to TS 08.16
-.IEs not conforming to TS 08.16
-[options="header",cols="5%,10%,30%,55%"]
-|===
-| tag (hex) | TS 08.16 § | IE name | Description
-|===
+All IEs defined in TS 08.16 § 10.3 are supported by OsmoPCU.
==== Additional Attributes and Parameters
@@ -60,8 +150,39 @@ There are no OsmoPCU specific additional Attributes and Parameters.
=== Details on IEs
-FIXME
+[[ie_cause]]
+==== Cause
+
+This IE contains reason for a procedure or error as described in TS 08.16 § 10.3.2.
+
+[[ie_nsvci]]
+==== NSVCI
+
+This IE represents NSVCI identity described in <<ident>> and TS 08.16 § 10.3.5.
+
+[[ie_nspdu]]
+==== NS PDU
+
+This IE contains PDU (possibly truncated) which cause error described in NS-STATUS message (<<ns_status>>) as described in TS 08.16 § 10.3.3.
+
+[[ie_nssdu]]
+==== NS SDU
+
+This IE contains BSSGP data - see <<bssgp>> for details.
+
+[[ie_bvci]]
+==== BVCI
+
+This IE represents BSSGP identity described in <<ident>> and TS 08.16 § 10.3.1.
+
+[[ie_nsei]]
+==== NSEI
+
+This IE represents NSEI identity described in <<ident>> and TS 08.16 § 10.3.6.
+[[ns_init]]
=== Gb NS Initialization / PCU bring-up
-FIXME
+OsmoPCU create NS listening socket using UDP port given by OsmoBTS via PCU socket. OsmoBTS in turn receive it from BSC.
+After that OsmoPCU tried to connect to remote NS ip:port over UDP using parameters received from BTS.
+Following successful connection the reset procedure is initiated as described in <<ns_reset>>.
diff --git a/doc/manuals/osmopcu-gb.adoc b/doc/manuals/osmopcu-gb.adoc
index 6ebcf18..620d336 100644
--- a/doc/manuals/osmopcu-gb.adoc
+++ b/doc/manuals/osmopcu-gb.adoc
@@ -37,6 +37,7 @@ document. For details on the messages and IEs that comply with abovementioned
The OsmoPCU Gb interface consists of the NS (Network Services) and
BSSGP (Base Station Subsystem Gateway Protocol), encapsulated in UDP
(User Datagram Protocol) and IP (Internet Protocol) version 4.
+Use of other underlying protocols (e. g. FrameRelay) is not supported.
.UDP port numbers used by OsmoPCU Gb/IP
[options="header",width="50%",cols="35%,65%"]
@@ -60,6 +61,7 @@ OsmoBSC or the BSC component inside OsmoNITB.
include::gb/gb-startup.msc[]
----
+[[ident]]
=== Identities
The Gb interface identities of the PCU are configured via BSC ->
@@ -70,8 +72,8 @@ NSVCI:: NS Virtual Connection Identifier
BVCI:: BSSGP Virtual Connection Identifier
For an explanation of those identifiers and their use in the NS and
-BSSGP protocols, please see the reelvant 3GPP specifications for NS
-and BSSGP.
+BSSGP protocols, please see the reelvant 3GPP specifications for NS (TS 08.16)
+and BSSGP (TS 08.18).
In most cases, all above identities belong to different namespaces and
must be unique within their respective namespace and within the SGSN