Harald Welte | b682cd6 | 2016-02-29 15:09:55 +0100 | [diff] [blame] | 1 | == Network Service (NS) |
| 2 | |
| 3 | === List of Messages |
| 4 | |
| 5 | The following tables list the NS messages used by OsmoPCU, grouped by their |
| 6 | level of compliance with 3GPP TS 08.16. |
| 7 | |
Harald Welte | 032f94b | 2016-03-10 12:49:03 +0700 | [diff] [blame] | 8 | ==== Messages Compliant With 3GPP TS 08.16 |
Harald Welte | b682cd6 | 2016-02-29 15:09:55 +0100 | [diff] [blame] | 9 | |
Max | 4e2a1e3 | 2016-03-02 18:30:33 +0100 | [diff] [blame] | 10 | The NS protocol is implemented inside libosmocore so none of the messages below are sent by OsmoPCU explicitly. |
| 11 | Instead corresponding functions from libosmocore are called which send and receive messages as necessary. See <<ns_init>> for details |
| 12 | on establishing NS connection. |
| 13 | |
Harald Welte | 032f94b | 2016-03-10 12:49:03 +0700 | [diff] [blame] | 14 | .Messages compliant with 3GPP TS 08.16 |
Harald Welte | b682cd6 | 2016-02-29 15:09:55 +0100 | [diff] [blame] | 15 | [options="header",cols="10%,10%,20%,35%,5%,20%"] |
| 16 | |=== |
| 17 | | TS 08.16 § | type code (hex) | This document § | Message | <-/-> | Received/Sent by OsmoPCU |
Max | 4e2a1e3 | 2016-03-02 18:30:33 +0100 | [diff] [blame] | 18 | | 9.2.10 | 0x00 | <<ns_unit_data>> | NS-UNITDATA | <-/-> | Received/Sent |
| 19 | | 9.2.5 | 0x02 | <<ns_reset>> | NS-RESET | <-/-> | Received/Sent |
| 20 | | 9.2.6 | 0x03 | <<ns_reset_ack>> | NS-RESET-ACK | <-/-> | Received/Sent |
| 21 | | 9.2.3 | 0x04 | <<ns_block>> | NS-BLOCK | <-/-> | Received/Sent |
| 22 | | 9.2.4 | 0x05 | <<ns_block_ack>> | NS-BLOCK-ACK | <-/-> | Received/Sent |
| 23 | | 9.2.8 | 0x06 | <<ns_unblock>> | NS-UNBLOCK | <-/-> | Received/Sent |
| 24 | | 9.2.9 | 0x07 | <<ns_unblock_ack>> | NS-UNBLOCK-ACK | <-/-> | Received/Sent |
| 25 | | 9.2.7 | 0x08 | <<ns_status>> | NS-STATUS | <-/-> | Received/Sent |
| 26 | | 9.2.1 | 0x0a | <<ns_alive>> | NS-ALIVE | <-/-> | Received/Sent |
| 27 | | 9.2.2 | 0x0b | <<ns_alive_ack>> | NS-ALIVE-ACK | <-/-> | Received/Sent |
Harald Welte | b682cd6 | 2016-02-29 15:09:55 +0100 | [diff] [blame] | 28 | |=== |
| 29 | |
| 30 | ==== Messages Specific to OsmoPCU |
| 31 | |
| 32 | There are no OsmoPCU specific NS messages. |
| 33 | |
| 34 | ==== Messages Not Implemented by OsmoPCU |
| 35 | |
Max | 4e2a1e3 | 2016-03-02 18:30:33 +0100 | [diff] [blame] | 36 | All the NS protocol messages from 3GPP TS 08.16 are implemented in OsmoPCU. |
Harald Welte | b682cd6 | 2016-02-29 15:09:55 +0100 | [diff] [blame] | 37 | |
| 38 | === Details on Compliant NS Messages |
| 39 | |
Max | 4e2a1e3 | 2016-03-02 18:30:33 +0100 | [diff] [blame] | 40 | [[ns_unit_data]] |
| 41 | ==== NS-UNITDATA |
| 42 | |
Harald Welte | 32b58e6 | 2016-03-10 12:45:22 +0700 | [diff] [blame] | 43 | This PDU transfers one NS SDU (specified in 3GPP TS 08.18) between |
| 44 | OsmoPCU and SGSN. Upon receiving it OsmoPCU passes it to BSSGP |
| 45 | implementation to handle. It is also sent by BSSGP as necessary - see |
| 46 | <<bssgp>> for details. |
| 47 | |
Max | 4e2a1e3 | 2016-03-02 18:30:33 +0100 | [diff] [blame] | 48 | It contains BVCI (<<ie_bvci>>) and NS SDU (<<ie_nssdu>>) IEs. |
| 49 | |
| 50 | [[ns_reset]] |
| 51 | ==== NS-RESET |
| 52 | |
Harald Welte | 32b58e6 | 2016-03-10 12:45:22 +0700 | [diff] [blame] | 53 | This message is send by OsmoPCU in order to initiate reset procedure |
| 54 | described in 3GPP TS 08.16 § 7.3. The expected reply is NS-RESET-ACK |
| 55 | (<<ns_reset_ack>>) message. If no expected reply is received in 3 |
| 56 | seconds than the sending is retried up to 3 times. When this message |
| 57 | is received it is replied with NS-RESET-ACK (<<ns_reset_ack>>). |
Max | 4e2a1e3 | 2016-03-02 18:30:33 +0100 | [diff] [blame] | 58 | It might be ignored under conditions described in 3GPP TS 08.16 § 7.3.1. |
Harald Welte | 32b58e6 | 2016-03-10 12:45:22 +0700 | [diff] [blame] | 59 | |
Max | 4e2a1e3 | 2016-03-02 18:30:33 +0100 | [diff] [blame] | 60 | The message conforms to 3GPP TS 08.16 § 9.2.5 specification. |
Harald Welte | 32b58e6 | 2016-03-10 12:45:22 +0700 | [diff] [blame] | 61 | |
Max | 4e2a1e3 | 2016-03-02 18:30:33 +0100 | [diff] [blame] | 62 | It contains Cause (<<ie_cause>>), NSVCI (<<ie_nsvci>>) and NSEI (<<ie_nsei>>) IEs. |
| 63 | |
| 64 | [[ns_reset_ack]] |
| 65 | ==== NS-RESET-ACK |
| 66 | |
Harald Welte | 32b58e6 | 2016-03-10 12:45:22 +0700 | [diff] [blame] | 67 | This message is sent as a response to proper NS-RESET (<<ns_reset>>) |
| 68 | message initiating reset procedure. |
| 69 | |
Max | 4e2a1e3 | 2016-03-02 18:30:33 +0100 | [diff] [blame] | 70 | The message conforms to 3GPP TS 08.16 § 9.2.6 specification. |
Harald Welte | 32b58e6 | 2016-03-10 12:45:22 +0700 | [diff] [blame] | 71 | |
Max | 4e2a1e3 | 2016-03-02 18:30:33 +0100 | [diff] [blame] | 72 | It contains NSVCI (<<ie_nsvci>>) and NSEI (<<ie_nsei>>) IEs. |
| 73 | |
| 74 | [[ns_block]] |
| 75 | ==== NS-BLOCK |
| 76 | |
Harald Welte | 32b58e6 | 2016-03-10 12:45:22 +0700 | [diff] [blame] | 77 | Upon receiving this message corresponding NS-VC is marked as blocked |
| 78 | by OsmoPCU and NS-BLOCK-ACK (<<ns_block_ack>>) reply is transmitted. |
| 79 | When this message is sent by OsmoPCU corresponding NS-BLOCK-ACK |
| 80 | (<<ns_block_ack>>) reply is expected before NS-VC is actually marked |
| 81 | as blocked. This behavior follows the blocking procedure described in |
| 82 | 3GPP TS 08.16 § 7.2. |
| 83 | |
Max | 4e2a1e3 | 2016-03-02 18:30:33 +0100 | [diff] [blame] | 84 | The message conforms to 3GPP TS 08.16 § 9.2.3 specification. |
Harald Welte | 32b58e6 | 2016-03-10 12:45:22 +0700 | [diff] [blame] | 85 | |
Max | 4e2a1e3 | 2016-03-02 18:30:33 +0100 | [diff] [blame] | 86 | It contains Cause (<<ie_cause>>) and NSVCI (<<ie_nsvci>>) IEs. |
| 87 | |
| 88 | [[ns_block_ack]] |
| 89 | ==== NS-BLOCK-ACK |
| 90 | |
Harald Welte | 32b58e6 | 2016-03-10 12:45:22 +0700 | [diff] [blame] | 91 | This message is sent by OsmoPCU automatically upon reception of |
| 92 | correct NS-BLOCK (<<ns_block>>) message. It is expected as a reply |
| 93 | for NS-BLOCK (<<ns_block>>) message sent by OsmoPCU. |
| 94 | |
Max | 4e2a1e3 | 2016-03-02 18:30:33 +0100 | [diff] [blame] | 95 | The message conforms to 3GPP TS 08.16 § 9.2.4 specification. |
Harald Welte | 32b58e6 | 2016-03-10 12:45:22 +0700 | [diff] [blame] | 96 | |
Max | 4e2a1e3 | 2016-03-02 18:30:33 +0100 | [diff] [blame] | 97 | It contains NSVCI (<<ie_nsvci>>) IE. |
| 98 | |
| 99 | [[ns_unblock]] |
| 100 | ==== NS-UNBLOCK |
| 101 | |
Harald Welte | 32b58e6 | 2016-03-10 12:45:22 +0700 | [diff] [blame] | 102 | Upon receiving this message corresponding NS-VC is unblocked by |
| 103 | OsmoPCU and NS-UNBLOCK-ACK (<<ns_unblock_ack>>) reply is sent. When |
| 104 | this message is sent by OsmoPCU corresponding NS-UNBLOCK-ACK |
| 105 | (<<ns_unblock_ack>>) reply is expected before NS-VC is actually marked |
| 106 | as unblocked. This behavior follows the blocking procedure described |
| 107 | in 3GPP TS 08.16 § 7.2. |
| 108 | |
Max | 4e2a1e3 | 2016-03-02 18:30:33 +0100 | [diff] [blame] | 109 | The message conforms to 3GPP TS 08.16 § 9.2.8 specification. |
| 110 | |
| 111 | [[ns_unblock_ack]] |
| 112 | ==== NS-UNBLOCK-ACK |
| 113 | |
Harald Welte | 32b58e6 | 2016-03-10 12:45:22 +0700 | [diff] [blame] | 114 | Receiving this message notifies OsmoPCU that NS-VC unblocking request |
| 115 | is confirmed and thus NS-VC is marked as unblocked. This message is |
| 116 | also sent as a reply to NS-UNBLOCK (<<ns_unblock>>) message. |
| 117 | |
Max | 4e2a1e3 | 2016-03-02 18:30:33 +0100 | [diff] [blame] | 118 | The message conforms to 3GPP TS 08.16 § 9.2.9 specification. |
| 119 | |
| 120 | [[ns_status]] |
| 121 | ==== NS-STATUS |
| 122 | |
Harald Welte | 32b58e6 | 2016-03-10 12:45:22 +0700 | [diff] [blame] | 123 | This message is sent to inform other party about error conditions as a |
| 124 | response to various unexpected PDUs or PDUs with unexpected/missing |
| 125 | data. If this message is received for unknown NS-VC it is ignored in |
| 126 | accordance with 3GPP TS 08.16 § 7.5.1, otherwise the error cause is |
| 127 | logged if present in NS-STATUS. |
| 128 | |
Max | 4e2a1e3 | 2016-03-02 18:30:33 +0100 | [diff] [blame] | 129 | The message conforms to 3GPP TS 08.16 § 9.2.7 specification. |
Harald Welte | 32b58e6 | 2016-03-10 12:45:22 +0700 | [diff] [blame] | 130 | |
| 131 | It contains Cause (<<ie_cause>>) and might (depending on actual error) |
| 132 | contain NSVCI (<<ie_nsvci>>), NS PDU (<<ie_nspdu>>) and BVCI |
| 133 | (<<ie_bvci>>) IEs. |
Max | 4e2a1e3 | 2016-03-02 18:30:33 +0100 | [diff] [blame] | 134 | |
| 135 | [[ns_alive]] |
| 136 | ==== NS-ALIVE |
| 137 | |
Harald Welte | 32b58e6 | 2016-03-10 12:45:22 +0700 | [diff] [blame] | 138 | This message is sent periodically to test connectivity according to |
| 139 | 3GPP TS 08.16 § 4.5.3. The expected response is NS-ALIVE-ACK |
| 140 | (<<ns_alive_ack>>). If no such response arrives within given amount of |
| 141 | time (3 seconds) than another NS-ALIVE message is sent and failed test |
| 142 | attempt is recorded. After 10 failed attempts NS connection is |
| 143 | considered dead and OsmoPCU tries to reconnect. |
| 144 | |
Max | 4e2a1e3 | 2016-03-02 18:30:33 +0100 | [diff] [blame] | 145 | The message conforms to 3GPP TS 08.16 § 9.2.1 specification. |
| 146 | |
| 147 | [[ns_alive_ack]] |
| 148 | ==== NS-ALIVE-ACK |
| 149 | |
Harald Welte | 32b58e6 | 2016-03-10 12:45:22 +0700 | [diff] [blame] | 150 | This message is sent automatically in reply to NS-ALIVE (<<ns_alive>>) |
| 151 | message. |
| 152 | |
Max | 4e2a1e3 | 2016-03-02 18:30:33 +0100 | [diff] [blame] | 153 | The message conforms to 3GPP TS 08.16 § 9.2.2 specification. |
Harald Welte | b682cd6 | 2016-02-29 15:09:55 +0100 | [diff] [blame] | 154 | |
| 155 | === Information Elements Overview |
| 156 | |
| 157 | All of the IEs handled by OsmoPCU are listed below, with limitations and |
Harald Welte | 032f94b | 2016-03-10 12:49:03 +0700 | [diff] [blame] | 158 | additions to 3GPP TS 08.16 specified in more detail. |
Harald Welte | b682cd6 | 2016-02-29 15:09:55 +0100 | [diff] [blame] | 159 | |
Harald Welte | 032f94b | 2016-03-10 12:49:03 +0700 | [diff] [blame] | 160 | ==== IEs Conforming to 3GPP TS 08.16 |
Harald Welte | b682cd6 | 2016-02-29 15:09:55 +0100 | [diff] [blame] | 161 | |
Max | 4e2a1e3 | 2016-03-02 18:30:33 +0100 | [diff] [blame] | 162 | The following Information Elements are accepted by OsmoPCU. |
Harald Welte | b682cd6 | 2016-02-29 15:09:55 +0100 | [diff] [blame] | 163 | |
Harald Welte | 032f94b | 2016-03-10 12:49:03 +0700 | [diff] [blame] | 164 | .IEs conforming to 3GPP TS 08.16 |
Harald Welte | b682cd6 | 2016-02-29 15:09:55 +0100 | [diff] [blame] | 165 | [options="header",cols="5%,10%,40%,5%,40%"] |
| 166 | |=== |
| 167 | | tag (hex) | TS 08.16 § | IE name | <-/-> | Received/Sent by OsmoPCU |
Max | 4e2a1e3 | 2016-03-02 18:30:33 +0100 | [diff] [blame] | 168 | | 0x00 | 10.3.2 | Cause | <-/-> | Received/Sent |
| 169 | | 0x01 | 10.3.5 | NSVCI | <-/-> | Received/Sent |
| 170 | | 0x02 | 10.3.3 | NS PDU | <-/-> | Received/Sent |
| 171 | | 0x03 | 10.3.1 | BVCI | <-/-> | Received/Sent |
| 172 | | 0x04 | 10.3.6 | NSEI | <-/-> | Received/Sent |
Harald Welte | b682cd6 | 2016-02-29 15:09:55 +0100 | [diff] [blame] | 173 | |=== |
| 174 | |
Harald Welte | 032f94b | 2016-03-10 12:49:03 +0700 | [diff] [blame] | 175 | ==== IEs Not Conforming to 3GPP TS 08.16 |
Harald Welte | b682cd6 | 2016-02-29 15:09:55 +0100 | [diff] [blame] | 176 | |
Harald Welte | 032f94b | 2016-03-10 12:49:03 +0700 | [diff] [blame] | 177 | All IEs defined in 3GPP TS 08.16 § 10.3 are supported by OsmoPCU. |
Harald Welte | b682cd6 | 2016-02-29 15:09:55 +0100 | [diff] [blame] | 178 | |
| 179 | ==== Additional Attributes and Parameters |
| 180 | |
| 181 | There are no OsmoPCU specific additional Attributes and Parameters. |
| 182 | |
| 183 | === Details on IEs |
| 184 | |
Max | 4e2a1e3 | 2016-03-02 18:30:33 +0100 | [diff] [blame] | 185 | [[ie_cause]] |
| 186 | ==== Cause |
Harald Welte | b682cd6 | 2016-02-29 15:09:55 +0100 | [diff] [blame] | 187 | |
Harald Welte | 032f94b | 2016-03-10 12:49:03 +0700 | [diff] [blame] | 188 | This IE contains reason for a procedure or error as described in 3GPP TS 08.16 § 10.3.2. |
Max | 4e2a1e3 | 2016-03-02 18:30:33 +0100 | [diff] [blame] | 189 | |
| 190 | [[ie_nsvci]] |
| 191 | ==== NSVCI |
| 192 | |
Harald Welte | 032f94b | 2016-03-10 12:49:03 +0700 | [diff] [blame] | 193 | This IE represents NSVCI identity described in <<ident>> and 3GPP TS 08.16 § 10.3.5. |
Max | 4e2a1e3 | 2016-03-02 18:30:33 +0100 | [diff] [blame] | 194 | |
| 195 | [[ie_nspdu]] |
| 196 | ==== NS PDU |
| 197 | |
Harald Welte | 32b58e6 | 2016-03-10 12:45:22 +0700 | [diff] [blame] | 198 | This IE contains PDU (possibly truncated) which cause error described |
Harald Welte | 032f94b | 2016-03-10 12:49:03 +0700 | [diff] [blame] | 199 | in NS-STATUS message (<<ns_status>>) as described in 3GPP TS 08.16 § |
Harald Welte | 32b58e6 | 2016-03-10 12:45:22 +0700 | [diff] [blame] | 200 | 10.3.3. |
Max | 4e2a1e3 | 2016-03-02 18:30:33 +0100 | [diff] [blame] | 201 | |
| 202 | [[ie_nssdu]] |
| 203 | ==== NS SDU |
| 204 | |
| 205 | This IE contains BSSGP data - see <<bssgp>> for details. |
| 206 | |
| 207 | [[ie_bvci]] |
| 208 | ==== BVCI |
| 209 | |
Harald Welte | 032f94b | 2016-03-10 12:49:03 +0700 | [diff] [blame] | 210 | This IE represents BSSGP identity described in <<ident>> and 3GPP TS 08.16 |
Harald Welte | 32b58e6 | 2016-03-10 12:45:22 +0700 | [diff] [blame] | 211 | § 10.3.1. |
Max | 4e2a1e3 | 2016-03-02 18:30:33 +0100 | [diff] [blame] | 212 | |
| 213 | [[ie_nsei]] |
| 214 | ==== NSEI |
| 215 | |
Harald Welte | 032f94b | 2016-03-10 12:49:03 +0700 | [diff] [blame] | 216 | This IE represents NSEI identity described in <<ident>> and 3GPP TS 08.16 § |
Harald Welte | 32b58e6 | 2016-03-10 12:45:22 +0700 | [diff] [blame] | 217 | 10.3.6. |
Max | 4e2a1e3 | 2016-03-02 18:30:33 +0100 | [diff] [blame] | 218 | |
| 219 | [[ns_init]] |
Harald Welte | b682cd6 | 2016-02-29 15:09:55 +0100 | [diff] [blame] | 220 | === Gb NS Initialization / PCU bring-up |
| 221 | |
Harald Welte | 6fb2963 | 2016-03-10 12:53:06 +0700 | [diff] [blame] | 222 | OsmoPCU binds and connects an UDP socket for NS using port numbers and IP |
| 223 | information given by OsmoBTS via the PCU socket. OsmoBTS in turn |
| 224 | receives this information from the BSC vi A-bis OML. |
| 225 | |
| 226 | Following successful initialization of the UDP socket, the reset |
Harald Welte | 32b58e6 | 2016-03-10 12:45:22 +0700 | [diff] [blame] | 227 | procedure is initiated as described in <<ns_reset>>. |