osmo-pcu/doc/manuals/gb/ns.adoc

279 lines
9.1 KiB
Plaintext

== Network Service (NS)
=== List of Messages
The following tables list the NS messages used by osmo-pcu and osmo-gbproxy, grouped by their level of
compliance with 3GPP TS 48.016.
==== Messages Compliant With 3GPP TS 48.016
The NS protocol is implemented inside libosmogb so none of the messages below are sent by OsmoPCU explicitly.
Instead corresponding functions from libosmogb are called which send and receive messages as necessary. See <<ns_init>> for details
on establishing NS connection.
.Messages compliant with 3GPP TS 48.016
[options="header",cols="10%,10%,20%,35%,5%,20%"]
|===
| TS 48.016 § | type code (hex) | This document § | Message | <-/-> | Received/Sent by OsmoPCU
| 9.2.1 | 0x0a | <<ns_alive>> | NS-ALIVE | <-/-> | Received/Sent
| 9.2.2 | 0x0b | <<ns_alive_ack>> | NS-ALIVE-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.5 | 0x02 | <<ns_reset>> | NS-RESET | <-/-> | Received/Sent
| 9.2.6 | 0x03 | <<ns_reset_ack>> | NS-RESET-ACK | <-/-> | Received/Sent
| 9.2.7 | 0x08 | <<ns_status>> | NS-STATUS | <-/-> | 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.10 | 0x00 | <<ns_unit_data>> | NS-UNITDATA | <-/-> | Received/Sent
| 9.3.1 | 0x0c | <<sns_ack>> | SNS-ACK | <-/-> | Received/Sent
| 9.3.2 | 0x0d | <<sns_add>> | SNS-ADD | <-/-> | Received/Sent
| 9.3.3 | 0x0e | <<sns_changeweight>> | SNS-CHANGEWEIGHT | <-/-> | Received/Sent
| 9.3.4 | 0x0f | <<sns_config>> | SNS-CONFIG | <-/-> | Received/Sent
| 9.3.5 | 0x10 | <<sns_config_ack>> | SNS-CONFIG | <-/-> | Received/Sent
| 9.3.6 | 0x11 | <<sns_delete>> | SNS-DELETE | <-/-> | Received/Sent
| 9.3.7 | 0x12 | <<sns_size>> | SNS-SIZE | <-/-> | Received/Sent
| 9.3.8 | 0x13 | <<sns_size_ack>> | SNS-SIZE-ACK | <-/-> | Received/Sent
|===
==== Messages Specific to OsmoPCU
There are no OsmoPCU specific NS messages.
==== Messages Not Implemented by OsmoPCU
All the NS protocol messages from 3GPP TS 48.016 are implemented in OsmoPCU.
=== Details on Compliant NS Messages
[[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
implementation 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 48.016 § 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 48.016 § 7.3.1.
The message conforms to 3GPP TS 48.016 § 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 48.016 § 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 48.016 § 7.2.
The message conforms to 3GPP TS 48.016 § 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 48.016 § 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 48.016 § 7.2.
The message conforms to 3GPP TS 48.016 § 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 48.016 § 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 48.016 § 7.5.1, otherwise the error cause is
logged if present in NS-STATUS.
The message conforms to 3GPP TS 48.016 § 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 48.016 § 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 48.016 § 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 48.016 § 9.2.2 specification.
[[sns_ack]]
==== SNS-ACK
[[sns_add]]
==== SNS-ADD
[[sns_changeweight]]
==== SNS-CHANGEWEIGHT
[[sns_config]]
==== SNS-CONFIG
[[sns_config_ack]]
==== SNS-CONFIG-ACK
[[sns_delete]]
==== SNS-DELETE
[[ssn_size]]
==== SNS-SIZE
[[sns_size_ack]]
==== SNS-SIZE-ACK
=== Information Elements Overview
All of the IEs handled by OsmoPCU are listed below, with limitations and
additions to 3GPP TS 48.016 specified in more detail.
==== IEs Conforming to 3GPP TS 48.016
The following Information Elements are accepted by OsmoPCU.
.IEs conforming to 3GPP TS 48.016
[options="header",cols="5%,10%,40%,5%,40%"]
|===
| tag (hex) | TS 48.016 § | IE name | <-/-> | Received/Sent by OsmoPCU
| 0x03 | 10.3.1 | BVCI | <-/-> | Received/Sent
| 0x00 | 10.3.2 | Cause | <-/-> | Received/Sent
| - | 10.3.2a | End Flag | <-/-> | Received/Sent
| 0x0b | 10.3.2b | IP Address | <-/-> | Received/Sent
| 0x05 | 10.3.2c | List of IP4 Elements | <-/-> | Received/Sent
| 0x06 | 10.3.2d | List of IP6 Elements | <-/-> | Received/Sent
| 0x07 | 10.3.2e | Maximum Number of NS-VCs | <-/-> | Received/Sent
| 0x08 | 10.3.2f | Number of IP4 Endpoints | <-/-> | Received/Sent
| 0x09 | 10.3.2g | Number of IP6 Endpoints | <-/-> | Received/Sent
| 0x02 | 10.3.3 | NS PDU | <-/-> | Received/Sent
| 0x01 | 10.3.5 | NSVCI | <-/-> | Received/Sent
| 0x04 | 10.3.6 | NSEI | <-/-> | Received/Sent
| - | 10.3.7 | PDU Type | <-/-> | Received/Sent
| 0x0a | 10.3.7a | Reset Flag | <-/-> | Received/Sent
| - | 10.3.8 | Spare Octet | <-/-> | Received/Sent
| - | 10.3.10 | Transaction ID | <-/-> | Received/Sent
|===
==== IEs Not Conforming to 3GPP TS 48.016
.IEs conforming to 3GPP TS 48.016
[options="header",cols="5%,10%,40%,5%,40%"]
|===
| tag (hex) | TS 48.016 § | IE name | <-/-> | Notice
| - | 10.3.9 | NS-SDU Control Bits | <-/-> | Not implemented yet
|===
All other IEs defined in 3GPP TS 48.016 § 10.3 are supported by OsmoPCU.
==== Additional Attributes and Parameters
There are no OsmoPCU specific additional Attributes and Parameters.
=== Details on IEs
[[ie_cause]]
==== Cause
This IE contains reason for a procedure or error as described in 3GPP TS 48.016 § 10.3.2.
[[ie_nsvci]]
==== NSVCI
This IE represents NSVCI identity described in <<ident>> and 3GPP TS 48.016 § 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 3GPP TS 48.016 §
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 3GPP TS 48.016
§ 10.3.1.
[[ie_nsei]]
==== NSEI
This IE represents NSEI identity described in <<ident>> and 3GPP TS 48.016 §
10.3.6.
[[ns_init]]
=== Gb NS Initialization / PCU bring-up
OsmoPCU binds and connects an UDP socket for NS using port numbers and IP
information given by OsmoBTS via the PCU socket. OsmoBTS in turn
receives this information from the BSC vi A-bis OML.
Following successful initialization of the UDP socket, the reset
procedure is initiated as described in <<ns_reset>>.