279 lines
9.1 KiB
Plaintext
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>>.
|