aboutsummaryrefslogtreecommitdiffstats
path: root/doc/manuals/abis
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2016-02-20 10:56:10 +0100
committerNeels Hofmeyr <neels@hofmeyr.de>2018-11-27 17:54:20 +0100
commit524fdd3ac8d24dabcfb8c62961a2740920ad271b (patch)
treec968b2487004c17d7150dcb632a7fce47f54c8f9 /doc/manuals/abis
parenta6a18b66eed93b1b6bb3719e98255d2a87585412 (diff)
initial checkin of manuals to public repo
The manuals existed in different form for several years in an internal sysmocom repository. However, since they had just recently been converted from docboox-xml to asciidoc and all files have been re-shuffled for enabling the public release, there's not much point in keeping the history with git-filter-branch.
Diffstat (limited to 'doc/manuals/abis')
-rw-r--r--doc/manuals/abis/abis-startup.msc23
-rw-r--r--doc/manuals/abis/ipa.adoc106
-rw-r--r--doc/manuals/abis/oml-mo-bts.msc26
-rw-r--r--doc/manuals/abis/oml-mo-carrier.msc24
-rw-r--r--doc/manuals/abis/oml-mo-channel.msc20
-rw-r--r--doc/manuals/abis/oml-mo-sitemgr.msc17
-rw-r--r--doc/manuals/abis/oml-mo-transceiver.msc23
-rw-r--r--doc/manuals/abis/oml-startup.msc34
-rw-r--r--doc/manuals/abis/oml-startup2.msc50
-rw-r--r--doc/manuals/abis/oml-startup3.msc51
-rw-r--r--doc/manuals/abis/oml.adoc937
-rw-r--r--doc/manuals/abis/rsl-startup-pri.msc22
-rw-r--r--doc/manuals/abis/rsl-startup-sec.msc16
-rw-r--r--doc/manuals/abis/rsl-tch-rtp.msc56
-rw-r--r--doc/manuals/abis/rsl.adoc681
-rw-r--r--doc/manuals/abis/rtp.adoc33
16 files changed, 2119 insertions, 0 deletions
diff --git a/doc/manuals/abis/abis-startup.msc b/doc/manuals/abis/abis-startup.msc
new file mode 100644
index 00000000..d30fe41d
--- /dev/null
+++ b/doc/manuals/abis/abis-startup.msc
@@ -0,0 +1,23 @@
+msc {
+ bts [label="BTS"], bsc [label="BSC"];
+
+ bts => bsc [label="TCP Connect (Port 3002, OML)"];
+ bts box bsc [label="IPA CCM Identification (Port 3002)"];
+ bts <= bsc [label="OML Configuration of BTS via OML"];
+ ...;
+ bts <= bsc [label="OML (TRX=0) IPA RSL CONNECT"];
+ bts => bsc [label="TCP Connect (Port 3003, RSL, TRX 0)"];
+ bts box bsc [label="IPA CCM Identification Port 3003"];
+ bts <= bsc [label="RSL BCCH filling (System Information)"];
+ bts <= bsc [label="RSL SACCH filling (SI 5/6)"];
+ ...;
+ bts <= bsc [label="OML (TRX=1) IPA RSL CONNECT"];
+ bts => bsc [label="TCP Connect (Port 3003, RSL, TRX 1)"];
+ bts box bsc [label="IPA CCM Identification (Port 3003)"];
+ bts <= bsc [label="RSL SACCH filling (SI 5/6)"];
+ ...;
+ bts <= bsc [label="OML (TRX=N) IPA RSL CONNECT"];
+ bts => bsc [label="TCP Connect (Port 3003, RSL, TRX N)"];
+ bts box bsc [label="IPA CCM Identification (Port 3003)"];
+ bts <= bsc [label="RSL SACCH filling (SI 5/6)"];
+}
diff --git a/doc/manuals/abis/ipa.adoc b/doc/manuals/abis/ipa.adoc
new file mode 100644
index 00000000..9768cdd6
--- /dev/null
+++ b/doc/manuals/abis/ipa.adoc
@@ -0,0 +1,106 @@
+== IPA Multiplex
+
+The ETSI/3GPP specifications for A-bis transport (ETSI/3GPP TS 08.56)
+specify the transmission of RSL and OML messages over a LAPD based
+framing on top of 64kBit/s signalling times slots (B-channels) on E1
+lines.
+
+OsmoBTS does not implement this LAPD based transport, but instead
+implements A-bis over IP in a flavor first observed by ip.access nanoBTS
+products. The OsmoBTS implementation is a clean-room re-implementation
+based on the observation and dissection of protocol traces.
+
+LAPD as used in E1 signalling channels provides in-order transmission
+and reliable delivery. This is why TCP was chosen as Layer 4 transport
+protocol on top of IP. TCP however, is a stream based transport
+protocol, which doesn't preserve the boundaries of messages.
+
+To work around this shortcoming, an additional framing layer called the
+IPA multiplex was introduced between TCP and the RSL and OML messages.
+
+.Protocol Stacking
+[width="30%"]
+|===
+|RSL + OML (this document)
+|IPA (this document)
+|TCP (IETF RFC 793)
+|IP (IETF RFC 791)
+|Ethernet (IEEE 802.3)
+|===
+
+=== IPA Header
+
+Each higher-layer PDU is encapsulated by a three-byte IPA header with
+the following structure:
+
+.IPA Header Structure
+[options="header",cols="10%,15%,15%,60%"]
+|===
+|Offset (Octets)|Length|Name|Description
+|0|2|Length|Length of the variable-length payload section in network
+byte order (excluding the length of the IPA Header)
+|2|1|Stream Identifier|Identifies the stream of the payload
+|3|Variable|Payload|higher-layer PDU (i.e. RSL or OML message)
+|===
+
+=== IPA Stream Identifiers
+
+The IPA Stream Identifier serves to differentiate different streams
+within the multiplex. In the context of A-bis, it can be seen as
+analogous to the LAPD TEI on classic A-bis over E1.
+
+The following IPA stream identifiers are being used in A-bis/IP:
+
+.IPA Stream Identifiers
+[options="header",width="70%",cols="20%,20%,60%"]
+|===
+|Value (Hex)|Name|Description
+|0x00|RSL|A-bis RSL according to this document, TRX 0
+|0x01|RSL|A-bis RSL according to this document, TRX 1
+|0x0n|RSL|A-bis RSL according to this document, TRX n
+|0xfe|CCM|IPA Connection Management
+|0xff|OML|A-bis OML according to this document
+|===
+
+
+=== IPA Connection Management (CCM)
+
+The IPA Connection Management is a sub-layer underneath the IPA
+multiplex which is used to manage the connection itself. It supports
+functions like Identity Management and Keep-Alive.
+
+==== Identity Management
+
+When a BTS connects to the BSC, the BSC must identify the connected BTS
+somehow. In ETSI/3GPP A-bis, the E1 multiplex + signalling timeslot
+number is used for this. In IP, there is no similar usable identity.
+Hence, the Unit ID is used for this purpose.
+
+.Procedure for IPA peer identification is as follows
+[options="header",cols="20%,80%"]
+|===
+|Direction|Operation
+|BTS -> BSC|BTS connects the TCP connection to be used with IPA
+|BTS <- BSC|BSC requests BTS identity with ID_GET
+|BTS -> BSC|BTS responds BTS Unit ID with ID_RESP
+|BTS <- BSC|BSC responds with ID_ACK, if the Unit ID is known to the BSC
+|===
+
+Following the above peer identification procedure, transfer of
+higher-level messages such as OML or RSL commences.
+
+==== IPA CCM Messages
+
+IPA CCM supports the following messages
+
+.IPA CCM Messages
+[options="header"]
+[cols="10%,15%,75%"]
+|===
+|Value|Name|Purpose
+|0x00|PING|Request a PONG from the peer
+|0x01|PONG|Response to a PING
+|0x04|ID_GET|Request Identity from peer
+|0x05|ID_RESP|Response to ID_GET
+|0x06|ID_ACK|Identity Acknowledged
+|===
diff --git a/doc/manuals/abis/oml-mo-bts.msc b/doc/manuals/abis/oml-mo-bts.msc
new file mode 100644
index 00000000..75c283fb
--- /dev/null
+++ b/doc/manuals/abis/oml-mo-bts.msc
@@ -0,0 +1,26 @@
+msc {
+ bts [label="BTS"], bsc [label="BSC"];
+ # this is for the BTS Object
+ --- [label="Initial state after establishing OML"];
+ bts => bsc [label="STATE CHG REP (Disabled/Notinstalled/Locked)"];
+ --- [label="MO requests software activation"];
+ bts => bsc [label="SW Activate Req"];
+ bts <= bsc [label="SW Activate Req Ack"];
+ --- [label="BTS instructs BTS to activate software"];
+ bts <= bsc [label="Activate SW"];
+ bts => bsc [label="Activate SW Ack"];
+ --- [label="MO reports new state after SW activation"];
+ bts => bsc [label="STATE CHG REP (Disabled/Dependency)"];
+ bts => bsc [label="SW Activated Report"];
+ --- [label="Configure the MO with its attributes"];
+ bts <= bsc [label="Set BTS Attributes"];
+ bts => bsc [label="Set BTS Attributes Ack"];
+ bts <= bsc [label="OPSTART"];
+ bts => bsc [label="OPSTART ACK"];
+ --- [label="As this object is locked, we need to unlock it"];
+ bts <= bsc [label="Change Adm State (Unlocked)"];
+ bts => bsc [label="Change Adm State Ack (Unlocked)"];
+ bts => bsc [label="STATE CHG REP (Disabled/Dependency/Unlocked)"];
+ --- [label="Initialize Radio Transceiver, Radio Carrier, Channels"];
+ bts => bsc [label="STATE CHG REP (Enabled/OK)"];
+}
diff --git a/doc/manuals/abis/oml-mo-carrier.msc b/doc/manuals/abis/oml-mo-carrier.msc
new file mode 100644
index 00000000..fc5070f6
--- /dev/null
+++ b/doc/manuals/abis/oml-mo-carrier.msc
@@ -0,0 +1,24 @@
+msc {
+ bts [label="Radio Carrier"], bsc [label="BSC"];
+ --- [label="Initial state after establishing OML"];
+ bts => bsc [label="STATE CHG REP (Disabled/Notinstalled/Locked)"];
+ --- [label="MO requests software activation"];
+ bts => bsc [label="SW Activate Req"];
+ bts <= bsc [label="SW Activate Req Ack"];
+ --- [label="BTS instructs BTS to activate software"];
+ bts <= bsc [label="Activate SW"];
+ bts => bsc [label="Activate SW Ack"];
+ --- [label="MO reports new state after SW activation"];
+ bts => bsc [label="STATE CHG REP (Disabled/Offline)"];
+ bts => bsc [label="SW Activated Report"];
+ --- [label="Configure the MO with its attributes"];
+ bts <= bsc [label="Set Radio Carrier Attributes"];
+ bts => bsc [label="Set Radio Carrier Attributes Ack"];
+ bts <= bsc [label="OPSTART"];
+ bts => bsc [label="OPSTART ACK"];
+ --- [label="As this object is locked, we need to unlock it"];
+ bts <= bsc [label="Change Adm State (Unlocked)"];
+ bts => bsc [label="Change Adm State Ack (Unlocked)"];
+ bts => bsc [label="STATE CHG REP (Disabled/OK/Unlocked)"];
+ bts => bsc [label="STATE CHG REP (Enabled)"];
+}
diff --git a/doc/manuals/abis/oml-mo-channel.msc b/doc/manuals/abis/oml-mo-channel.msc
new file mode 100644
index 00000000..624ae724
--- /dev/null
+++ b/doc/manuals/abis/oml-mo-channel.msc
@@ -0,0 +1,20 @@
+msc {
+ bts [label="Channel"], bsc [label="BSC"];
+ --- [label="Initial state after establishing OML"];
+ bts => bsc [label="STATE CHG REP (Disabled/Notinstalled/Locked)"];
+ --- [label="MO reports new state after SW activation of Baseband Transceiver"];
+ bts => bsc [label="STATE CHG REP (Disabled/Dependency)"];
+ bts => bsc [label="SW Activated Report"];
+ --- [label="Configure the MO with its attributes"];
+ bts <= bsc [label="Set Channel Attributes"];
+ bts => bsc [label="Set Channel Attributes Ack"];
+ bts <= bsc [label="OPSTART"];
+ bts => bsc [label="OPSTART ACK"];
+ --- [label="As this object is locked, we need to unlock it"];
+ bts <= bsc [label="Change Adm State (Unlocked)"];
+ bts => bsc [label="Change Adm State Ack (Unlocked)"];
+ bts => bsc [label="STATE CHG REP (Disabled/Dependency/Unlocked)"];
+ --- [label="Initialize Radio Carrier / Baseband Transceiver"];
+ bts => bsc [label="STATE CHG REP (Disabled/Offline)"];
+ bts => bsc [label="STATE CHG REP (Enabled/OK)"];
+}
diff --git a/doc/manuals/abis/oml-mo-sitemgr.msc b/doc/manuals/abis/oml-mo-sitemgr.msc
new file mode 100644
index 00000000..39e4d159
--- /dev/null
+++ b/doc/manuals/abis/oml-mo-sitemgr.msc
@@ -0,0 +1,17 @@
+msc {
+ bts [label="Site Manager"], bsc [label="BSC"];
+ # this is for the Site Manager Object
+ --- [label="Initial state after establishing OML"];
+ bts => bsc [label="STATE CHG REP (Disabled/Notinstalled)"];
+ --- [label="MO requests software activation"];
+ bts => bsc [label="SW Activate Req"];
+ bts <= bsc [label="SW Activate Req Ack"];
+ --- [label="BTS instructs BTS to activate software"];
+ bts <= bsc [label="Activate SW"];
+ bts => bsc [label="Activate SW Ack"];
+ --- [label="MO reports new state after SW activation"];
+ bts => bsc [label="STATE CHG REP (Enabled)"];
+ bts => bsc [label="SW Activated Report"];
+ bts <= bsc [label="OPSTART"];
+ bts => bsc [label="OPSTART ACK"];
+}
diff --git a/doc/manuals/abis/oml-mo-transceiver.msc b/doc/manuals/abis/oml-mo-transceiver.msc
new file mode 100644
index 00000000..d40e7cc0
--- /dev/null
+++ b/doc/manuals/abis/oml-mo-transceiver.msc
@@ -0,0 +1,23 @@
+msc {
+ bts [label="Baseband Transceiver"], bsc [label="BSC"];
+ --- [label="Initial state after establishing OML"];
+ bts => bsc [label="STATE CHG REP (Disabled/Notinstalled/Locked)"];
+ --- [label="MO requests software activation"];
+ bts => bsc [label="SW Activate Req"];
+ bts <= bsc [label="SW Activate Req Ack"];
+ --- [label="BTS instructs BTS to activate software"];
+ bts <= bsc [label="Activate SW"];
+ bts => bsc [label="Activate SW Ack"];
+ --- [label="MO reports new state after SW activation"];
+ bts => bsc [label="STATE CHG REP (Disabled/Dependency)"];
+ bts => bsc [label="SW Activated Report"];
+ --- [label="BSC requests RSL establishment"];
+ bts <= bsc [label="IPA RSL Connect"];
+ bts => bsc [label="IPA RSL Connect ACK"];
+ bts <= bsc [label="OPSTART"];
+ bts => bsc [label="OPSTART ACK"];
+ --- [label="As this object is locked, we need to unlock it"];
+ bts <= bsc [label="Change Adm State (Unlocked)"];
+ bts => bsc [label="Change Adm State Ack (Unlocked)"];
+ bts => bsc [label="STATE CHG REP (Disabled/Dependency/Unlocked)"];
+}
diff --git a/doc/manuals/abis/oml-startup.msc b/doc/manuals/abis/oml-startup.msc
new file mode 100644
index 00000000..de5d0392
--- /dev/null
+++ b/doc/manuals/abis/oml-startup.msc
@@ -0,0 +1,34 @@
+msc {
+ hscale = 2;
+
+ chan [label="Channel"], rc [label="Radio Carrier"], smg [label="Site Manager"], bts [label="BTS"], bsc [label="BSC"];
+
+ bts => bsc [label="TCP Connect (Port 3003, OML)"];
+ bts box bsc [label="IPA CCM Identification (Port 3003)"];
+ |||;
+ smg => bsc [label="(Site Mgr) STATE CHG REP (Disabled/NotInstalled)"];
+ bts => bsc [label="(BTS) STATE CHG REP (Disabled/NotInstalled/Locked)"];
+ rc => bsc [label="(TRANSC) STATE CHG REP (Disabled/NotInstalled/Locked)"];
+ chan => bsc [label="(Ch 0) STATE CHG REP (Disabled/NotInstalled/Locked)"];
+ chan => bsc [label="(Ch 1) STATE CHG REP (Disabled/NotInstalled/Locked)"];
+ chan => bsc [label="(Ch 2) STATE CHG REP (Disabled/NotInstalled/Locked)"];
+ chan => bsc [label="(Ch 3) STATE CHG REP (Disabled/NotInstalled/Locked)"];
+ chan => bsc [label="(Ch 4) STATE CHG REP (Disabled/NotInstalled/Locked)"];
+ chan => bsc [label="(Ch 5) STATE CHG REP (Disabled/NotInstalled/Locked)"];
+ chan => bsc [label="(Ch 6) STATE CHG REP (Disabled/NotInstalled/Locked)"];
+ chan => bsc [label="(Ch 7) STATE CHG REP (Disabled/NotInstalled/Locked)"];
+ rc => bsc [label="(RC) STATE CHG REP (Disabled/NotInstalled/Locked)"];
+ bts => bsc [label="(GPRS-NSE) STATE CHG REP (Disabled/NotInstalled/Locked)"];
+ bts => bsc [label="(GPRS-CELL) STATE CHG REP (Disabled/NotInstalled/Locked)"];
+ bts => bsc [label="(GPRS-NSVC0) STATE CHG REP (Disabled/NotInstalled/Locked)"];
+ bts => bsc [label="(GPRS-NSVC1) STATE CHG REP (Disabled/NotInstalled/Locked)"];
+ |||;
+ smg => bsc [label="(Site Mgr) SW Activate Req"];
+ smg <= bsc [label="(Site Mgr) SW Activate Req Ack"];
+ smg <= bsc [label="(Site Mgr) Activate SW"];
+ smg => bsc [label="(Site Mgr) Activate SW Ack"];
+ smg => bsc [label="(Site Mgr) STATE CHG REP (Enabled)"];
+ smg => bsc [label="(Site Mgr) SW Activated Report"];
+ smg <= bsc [label="(Site Mgr) OPSTART"];
+ smg => bsc [label="(Site Mgr) OPSTART ACK"];
+}
diff --git a/doc/manuals/abis/oml-startup2.msc b/doc/manuals/abis/oml-startup2.msc
new file mode 100644
index 00000000..8a97e124
--- /dev/null
+++ b/doc/manuals/abis/oml-startup2.msc
@@ -0,0 +1,50 @@
+msc {
+ hscale = 2;
+
+ chan [label="Channel"], rc [label="Radio Carrier"], bts [label="BTS"], bsc [label="BSC"];
+
+ bts box bsc [label="OML Connect + Site Manager Init"];
+ ...;
+ bts => bsc [label="(BTS) SW Activate Req"];
+ bts <= bsc [label="(BTS) SW Activate Req Ack"];
+ bts <= bsc [label="(BTS) Activate SW"];
+ bts => bsc [label="(BTS) Activate SW Ack"];
+ bts => bsc [label="(BTS) STATE CHG REP (Disabled/Dependency)"];
+ bts => bsc [label="(BTS) SW Activated Report"];
+ |||;
+ rc => bsc [label="(TRANSC) SW Activate Req"];
+ rc => bsc [label="(RC) SW Activated Req"];
+ |||;
+ bts <= bsc [label="(BTS) Set BTS Attributes"];
+ bts => bsc [label="(BTS) Set BTS Attributes Ack"];
+ bts <= bsc [label="(BTS) OPSTART"];
+ bts => bsc [label="(BTS) OPSTART Ack"];
+ |||;
+ bts <= bsc [label="(BTS) Change Adm State (Unlocked)"];
+ bts => bsc [label="(BTS) Change Adm State ACK (Unlocked)"];
+ bts => bsc [label="(BTS) STATE CHG REP (Disabled/Dependency/Unlcoked)"];
+ |||;
+ rc <= bsc [label="(TRANSC) SW Activate Req Ack"];
+ rc <= bsc [label="(TRANSC) Activate SW"];
+ rc => bsc [label="(TRANSC) Activate SW Ack"];
+ rc => bsc [label="(TRANSC) STATE CHG REP (Disabled/Dependency)"];
+ rc => bsc [label="(TRANSC) SW Activated Report"];
+
+ chan => bsc [label="(CHAN 0) STATE CHG REP (Disabled/Dependency)"];
+ chan => bsc [label="(CHAN 1) STATE CHG REP (Disabled/Dependency)"];
+ chan => bsc [label="(CHAN 2) STATE CHG REP (Disabled/Dependency)"];
+ chan => bsc [label="(CHAN 3) STATE CHG REP (Disabled/Dependency)"];
+ chan => bsc [label="(CHAN 4) STATE CHG REP (Disabled/Dependency)"];
+ chan => bsc [label="(CHAN 5) STATE CHG REP (Disabled/Dependency)"];
+ chan => bsc [label="(CHAN 6) STATE CHG REP (Disabled/Dependency)"];
+ chan => bsc [label="(CHAN 7) STATE CHG REP (Disabled/Dependency)"];
+ |||;
+ chan => bsc [label="(CHAN 0) SW Activated Report"];
+ chan => bsc [label="(CHAN 1) SW Activated Report"];
+ chan => bsc [label="(CHAN 2) SW Activated Report"];
+ chan => bsc [label="(CHAN 3) SW Activated Report"];
+ chan => bsc [label="(CHAN 4) SW Activated Report"];
+ chan => bsc [label="(CHAN 5) SW Activated Report"];
+ chan => bsc [label="(CHAN 6) SW Activated Report"];
+ chan => bsc [label="(CHAN 7) SW Activated Report"];
+}
diff --git a/doc/manuals/abis/oml-startup3.msc b/doc/manuals/abis/oml-startup3.msc
new file mode 100644
index 00000000..c1fffd2c
--- /dev/null
+++ b/doc/manuals/abis/oml-startup3.msc
@@ -0,0 +1,51 @@
+msc {
+ hscale = 2;
+
+ chan [label="Channel"], rc [label="Radio Carrier"], bts [label="BTS"], bsc [label="BSC"];
+
+ ...;
+ rc <= bsc [label="(RC) SW Activate Req Ack"];
+ rc <= bsc [label="(RC) Activate SW"];
+ rc => bsc [label="(RC) Activate SW Ack"];
+ rc => bsc [label="(RC) STATE CHG REP (Disabled/Offline)"];
+ rc => bsc [label="(RC) SW Activated Report"];
+ rc <= bsc [label="(TRANSC) IPA RSL Connect"];
+ rc => bsc [label="(TRANSC) IPA RSL Connect Ack"];
+ rc <= bsc [label="(TRANSC) OPSTART"];
+ rc => bsc [label="(TRANSC) OPSTART Ack"];
+ rc <= bsc [label="(TRANSC) Change Adm State (Unlocked)"];
+ rc => bsc [label="(TRANSC) Change Adm State Ack (Unlocked)"];
+ rc => bsc [label="(TRANSC) STATE CHG REP (Disabled/Dependency/Unlocked)"];
+ |||;
+ chan <= bsc [label="(CHAN 0) Set Channel Attributes"];
+ chan => bsc [label="(CHAN 0) Set Channel Attributes Ack"];
+ chan <= bsc [label="(CHAN 0) OPSTART"];
+ chan => bsc [label="(CHAN 0) OPSTART Ack"];
+ chan <= bsc [label="(CHAN 0) Change Adm State (Unlocked)"];
+ chan => bsc [label="(CHAN 0) Change Adm State Ack (Unlocked)"];
+ chan => bsc [label="(CHAN 0) STATE CHG REP (Disabled/Dependency/Unlocked)"];
+ ...;
+ chan <= bsc [label="(CHAN 7) Set Channel Attributes"];
+ chan => bsc [label="(CHAN 7) Set Channel Attributes Ack"];
+ chan <= bsc [label="(CHAN 7) OPSTART"];
+ chan => bsc [label="(CHAN 7) OPSTART Ack"];
+ chan <= bsc [label="(CHAN 7) Change Adm State (Unlocked)"];
+ chan => bsc [label="(CHAN 7) Change Adm State Ack (Unlocked)"];
+ chan => bsc [label="(CHAN 7) STATE CHG REP (Disabled/Dependency/Unlocked)"];
+ |||;
+ rc <= bsc [label="(RC) Set Radio Carrier Attributes"];
+ rc => bsc [label="(RC) Set Radio Carrier Attributes Ack"];
+ rc <= bsc [label="(RC) OPSTART"];
+ rc => bsc [label="(RC) OPSTART Ack"];
+ rc <= bsc [label="(RC) Change Adm State (Unlocked)"];
+ rc => bsc [label="(RC) Change Adm State Ack (Unlocked)"];
+ rc => bsc [label="(RC) STATE CHG REP (Disabled/OK/Unlocked)"];
+ rc => bsc [label="(RC) STATE CHG REP (Enabled)"];
+ rc => bsc [label="(TRANSC) STATE CHG REP (Disabled/Offline)"];
+ rc => bsc [label="(TRANSC) STATE CHG REP (Enabled/OK)"];
+ |||;
+ chan => bsc [label="(CHAN 0) STATE CHG REP (Disabled/Offline)"];
+ chan => bsc [label="(CHAN 0) STATE CHG REP (Enabled/OK)"];
+ |||;
+ bts => bsc [label="(BTS) STATE CHG REP (Enabled/OK)"];
+}
diff --git a/doc/manuals/abis/oml.adoc b/doc/manuals/abis/oml.adoc
new file mode 100644
index 00000000..778a084b
--- /dev/null
+++ b/doc/manuals/abis/oml.adoc
@@ -0,0 +1,937 @@
+== Organization & Maintenance Link (OML)
+
+=== List of Messages
+
+The following tables list the OML messages used by OsmoBTS, grouped by their
+level of compliance with 3GPP TS 12.21.
+
+==== Messages Compliant With TS 12.21
+
+Specific limitations apply, see the linked sections.
+
+.Messages compliant with TS 12.21
+[options="header",cols="10%,10%,20%,35%,5%,20%"]
+|===
+| TS 12.21 § | type code (hex) | This document § | Message | <-/-> | Received/Sent by OsmoBTS
+6+<| *SW Download Management Messages:*
+| 8.3.7 | 0x10 | <<sw_act_rep>> | SW Activated Report | -> | Sent
+6+<| *Air Interface Management Messages:*
+.3+.| 8.6.1 | 0x41 .3+.| <<set_bts_attr>> | Set BTS Attributes | <- | Received
+ | 0x42 | Set BTS Attributes Ack | -> | Sent
+ | 0x43 | Set BTS Attributes Nack | -> | Sent
+.3+.| 8.6.2 | 0x44 .3+.| <<set_radio_attr>> | Set Radio Carrier Attributes | <- | Received
+ | 0x45 | Set Radio Carrier Attributes Ack | -> | Sent
+ | 0x46 | Set Radio Carrier Attributes Nack | -> | Sent
+.3+.| 8.6.3 | 0x47 .3+.| <<set_chan_attr>> | Set Channel Attributes | <- | Received
+ | 0x48 | Set Channel Attributes Ack | -> | Sent
+ | 0x49 | Set Channel Attributes Nack | -> | Sent
+6+<| *State Management and Event Report Messages:*
+ | 8.8.1 | 0x61 | <<state_changed_rep>> | State Changed Event Report | -> | Sent
+.3+.| 8.8.5 | 0x69 .3+.| <<chg_adm_state>> | Change Administrative State | <- | Received
+ | 0x6A | Change Administrative State Ack | -> | Sent
+ | 0x6B | Change Administrative State Nack | -> | Sent
+6+<| *Equipment Management Messages:*
+.3+.| 8.9.2 | 0x74 .3+.| <<opstart>> | Opstart | <- | Received
+ | 0x75 | Opstart Ack | -> | Sent
+ | 0x76 | Opstart Nack | -> | Sent
+|===
+
+
+==== Messages Specific to OsmoBTS
+
+.Messages specific to OsmoBTS, not found in 3GPP TS 12.21
+[options="header"]
+[options="header",cols="20%,55%,5%,20%"]
+|===
+| This document § | Message | <-/-> | Received/Sent by OsmoBTS
+| <<ipacc_set_attr>> | Set Attribute | <- | Received
+|===
+
+
+==== Messages Not Implemented by OsmoBTS
+.3GPP TS 12.21 messages not implemented by OsmoBTS
+[options="header",cols="10%,10%,80%"]
+|===
+| TS 12.21 § | type code (hex) | Message
+3+<| *SW Download Management Messages:*
+.3+.| 8.3.1 | 0x01 | Load Data Initiate
+ | 0x02 | Load Data Initiate Ack
+ | 0x03 | Load Data Initiate Nack
+.2+.| 8.3.2 | 0x04 | Load Data Segment
+ | 0x05 | Load Data Segment Ack
+ | 8.3.3 | 0x06 | Load Data Abort
+.3+.| 8.3.4 | 0x07 | Load Data End
+ | 0x08 | Load Data End Ack
+ | 0x09 | Load Data End Nack
+.3+.| 8.3.5 | 0x0A | SW Activate Request
+ | 0x0B | SW Activate Request Ack
+ | 0x0C | SW Activate Request Nack
+.3+.| 8.3.6 | 0x0D | Activate SW
+ | 0x0E | Activate SW Ack
+ | 0x0F | Activate SW Nack
+3+<| *A-bis Interface Management Messages:*
+.3+.| 8.4.1 | 0x21 | Establish TEI
+ | 0x22 | Establish TEI Ack
+ | 0x23 | Establish TEI Nack
+.3+.| 8.4.2 | 0x24 | Connect Terrestrial Signalling
+ | 0x25 | Connect Terrestrial Signalling Ack
+ | 0x26 | Connect Terrestrial Signalling Nack
+.3+.| 8.4.3 | 0x27 | Disconnect Terrestrial Signalling
+ | 0x28 | Disconnect Terrestrial Signalling Ack
+ | 0x29 | Disconnect Terrestrial Signalling Nack
+.3+.| 8.4.4 | 0x2A | Connect Terrestrial Traffic
+ | 0x2B | Connect Terrestrial Traffic Ack
+ | 0x2C | Connect Terrestrial Traffic Nack
+.3+.| 8.4.5 | 0x2D | Disconnect Terrestrial Traffic
+ | 0x2E | Disconnect Terrestrial Traffic Ack
+ | 0x2F | Disconnect Terrestrial Traffic Nack
+3+<| *Transmission Management Messages:*
+.3+.| 8.5.1 | 0x31 | Connect Multi-Drop Link
+ | 0x32 | Connect Multi-Drop Link Ack
+ | 0x33 | Connect Multi-Drop Link Nack
+.3+.| 8.5.2 | 0x34 | Disconnect Multi-Drop Link
+ | 0x35 | Disconnect Multi-Drop Link Ack
+ | 0x36 | Disconnect Multi-Drop Link Nack
+3+<| *Test Management Messages:*
+.3+.| 8.7.1 | 0x51 | Perform Test
+ | 0x52 | Perform Test Ack
+ | 0x53 | Perform Test Nack
+.3+.| 8.7.2 | 0x54 | Test Report
+ | 0x55 | Send Test Report
+ | 0x56 | Send Test Report Ack
+ | 8.7.3 | 0x57 | Send Test Report Nack
+.3+.| 8.7.4 | 0x58 | Stop Test
+ | 0x59 | Stop Test Ack
+ | 0x5A | Stop Test Nack
+3+<| *State Management and Event Report Messages:*
+ | 8.8.2 | 0x62 | Failure Event Report
+.3+.| 8.8.3 | 0x63 | Stop Sending Event Reports
+ | 0x64 | Stop Sending Event Reports Ack
+ | 0x65 | Stop Sending Event Reports Nack
+.3+.| 8.8.4 | 0x66 | Restart Sending Event Reports
+ | 0x67 | Restart Sending Event Reports Ack
+ | 0x68 | Restart Sending Event Reports Nack
+.3+.| 8.8.6 | 0x6C | Change Administrative State Request
+ | 0x6D | Change Administrative State Request Ack
+ | 0x6E | Change Administrative State Request Nack
+.3+.| 8.8.7 | 0x93 | Report Outstanding Alarms
+ | 0x94 | Report Outstanding Alarms Ack
+ | 0x95 | Report Outstanding Alarms Nack
+3+<| *Equipment Management Messages:*
+.3+.| 8.9.1 | 0x71 | Changeover
+ | 0x72 | Changeover Ack
+ | 0x73 | Changeover Nack
+.3+.| 8.9.3 | 0x87 | Reinitialize
+ | 0x88 | Reinitialize Ack
+ | 0x89 | Reinitialize Nack
+.3+.| 8.9.4 | 0x77 | Set Site Outputs
+ | 0x78 | Set Site Outputs Ack
+ | 0x79 | Set Site Outputs Nack
+.3+.| 8.9.5 | 0x90 | Change HW Configuration
+ | 0x91 | Change HW Configuration Ack
+ | 0x92 | Change HW Configuration Nack
+3+<| *Measurement Management Messages:*
+ | 8.10.1 | 0x8A | Measurement Result Request
+ | 8.10.2 | 0x8B | Measurement Result Response
+ | 8.10.3 | 0x8C | Stop Measurement
+ | 8.10.4 | 0x8D | Start Measurement
+3+<| *Other Messages:*
+ | 8.11.1 | 0x81 | Get Attributes
+ | 8.11.3 | 0x82 | Get Attribute(s) Response
+ | 8.11.1 | 0x83 | Get Attributes Nack
+.3+.| 8.11.2 | 0x84 | Set Alarm Threshold
+ | 0x85 | Set Alarm Threshold Ack
+ | 0x86 | Set Alarm Threshold Nack
+|===
+
+
+=== Details on Compliant OML Messages
+
+[[sw_act_rep]]
+==== SW Activated Report
+
+OsmoBTS will send an _SW Activated Report_ when RF has been activated
+successfully. The message is compliant with 3GPP TS 12.21 § 8.3.7.
+
+Upon RF activation, two _SW Activated Report_ messages will be sent, for the Object Classes
+
+- Radio Carrier (0x02)
+- Baseband Transceiver (0x04)
+
+[[set_bts_attr]]
+==== Set BTS Attributes
+
+OsmoBTS will receive a _Set BTS Attributes_ message and reply with a
+corresponding ACK message on success. IE handling is fully compliant to TS
+12.21, except that a change of BCCH ARFCN or BSIC while in operation is not
+supported, and hence the _Starting Time_ IE is rejected.
+
+._Set BTS Attributes_ IEs not handled by OsmoBTS
+[options="header",cols="10%,30%,60%"]
+|===
+| TS 12.21 § | IE Name | Handling
+| 9.4.52 | Starting Time | not supported (provokes NACK cause 0x10)
+|===
+
+
+[[set_radio_attr]]
+==== Set Radio Carrier Attributes
+
+This message conforms to 3GPP TS 12.21, with the following limitation,
+as frequency hopping is not supported by OsmoBTS:
+
+._Set Radio Carrier Attributes_ IE limitations
+[options="header",cols="10%,30%,60%"]
+|===
+| TS 12.21 § | IE Name | Handling
+| 9.4.5 | ARFCN List | ignored
+|===
+
+
+[[set_chan_attr]]
+==== Set Channel Attributes
+
+This message conforms to 3GPP TS 12.21, with the following limitation: OpenBTS
+does not support frequency hopping, and the following 3GPP TS 12.21 IEs provoke
+a NACK response when sent to OsmoBTS, as frequency hopping is not
+supported:
+
+._Set Channel Attributes_ IE limitations
+[options="header",cols="10%,30%,60%"]
+|===
+| TS 12.21 § | IE Name | Handling
+| 9.4.21 | HSN | not supported (provokes NACK cause 0x10)
+| 9.4.27 | MAIO | not supported (provokes NACK cause 0x10)
+| 9.4.52 | Starting Time | not supported (provokes NACK cause 0x10)
+|===
+
+[[state_changed_rep]]
+==== State Changed Event Report
+
+This message is compliant with 3GPP TS 12.21. Exactly these IEs are sent by
+OsmoBTS:
+
+[options="header"]
+[cols="30%,25%,15%,15%,15%"]
+|===
+| INFORMATION ELEMENT | REFERENCE | PRESENCE | FORMAT | LENGTH
+| Message Type (0xf5) | 3GPP TS 12.21 9.1 | M | V | 1
+| Object Class | 3GPP TS 12.21 9.2 | M | V | 1
+| Object Instance | 3GPP TS 12.21 9.3 | M | V | 3
+| Operational State | 3GPP TS 12.21 9.4.38 | O | TV | 2
+| Availability Status | 3GPP TS 12.21 9.4.7 | O | TL16V (with length of 1) | 3
+|===
+
+[[chg_adm_state]]
+==== Change Administrative State
+
+This message is compliant with 3GPP TS 12.21 § 8.8.5. It applies to all of the
+Objects Classes defined in 3GPP TS 12.21 § 9.2 as well as
+<<addnl_obj_classes>>.
+
+[[opstart]]
+==== Opstart
+
+This message is compliant with 3GPP TS 12.21 § 8.9.2. It applies to all of the
+Objects Classes defined in 3GPP TS 12.21 § 9.2 as well as
+<<addnl_obj_classes>>.
+
+
+=== Details on OsmoBTS Specific Messages
+
+[[ipacc_set_attr]]
+==== Set Attribute
+
+The message type is 0xf5. This message is sent to OsmoBTS to set
+attributes on instances of managed objects of the non-standard
+additional Object Classes (see <<addnl_obj_classes>>).
+
+The message specifics depend on the Object Class and are detailed in
+<<addnl_obj_classes>>.
+
+[options="header"]
+[cols="30%,25%,15%,15%,15%"]
+|===
+| INFORMATION ELEMENT | REFERENCE | PRESENCE | FORMAT | LENGTH
+| Message Type (0xf5) | 3GPP TS 12.21 9.1 | M | V | 1
+| Object Class | 3GPP TS 12.21 9.2 | M | V | 1
+| Object Instance | 3GPP TS 12.21 9.3 | M | V | 3
+5+<| _Object Class specific IEs follow, see <<addnl_obj_classes>>..._
+|===
+
+
+[[addnl_obj_classes]]
+=== Additional Object Classes
+
+In addition to 3GPP TS 12.21 Chapter 9.2, the following managed objects
+are supported:
+
+.Additional Managed Object Classes
+[options="header"]
+[cols="20%,20%,60%"]
+|===
+| Value | Name | Description
+| 0xf0 | GPRS NSE | GPRS-NS Entity
+| 0xf1 | GPRS CELL | GPRS Cell Entity
+| 0xf2 | GPRS NSVC | GPRS NS Virtual Circuit
+|===
+
+==== GPRS-NSE Managed Object
+
+There is one NS Entity per BTS. It supports the *Set Attribute* message
+with the following Information Elements:
+
+[options="header"]
+[cols="30%,25%,15%,15%,15%"]
+|===
+| INFORMATION ELEMENT | REFERENCE | PRESENCE | FORMAT | LENGTH
+| Message Type | 3GPP TS 12.21 9.1 | M | V | 1
+| Object Class | 3GPP TS 12.21 9.2 | M | V | 1
+| Object Instance | 3GPP TS 12.21 9.3 | M | V | 3
+| GPRS NSEI | <<NM_ATT_IPACC_NSEI>> | O | TL16V | >= 5
+| GPRS NS Configuration | <<NM_ATT_IPACC_NS_LINK_CFG>> | O | TL16V | >= 10
+| GPRS BSSGP Configuration | <<NM_ATT_IPACC_BSSGP_CFG>> | O | TL16V | >= 14
+|===
+
+==== GPRS Cell Managed Object
+
+There is one GPRS Cell entity per BTS. It supports the *Set Attribute*
+message with the following Information Elements:
+
+[options="header"]
+[cols="30%,25%,15%,15%,15%"]
+|===
+| INFORMATION ELEMENT | REFERENCE | PRESENCE | FORMAT | LENGTH
+| Message Type | 3GPP TS 12.21 9.1 | M | V | 1
+| Object Class | 3GPP TS 12.21 9.2 | M | V | 1
+| Object Instance | 3GPP TS 12.21 9.3 | M | V | 3
+| GPRS Routing Area Code | <<NM_ATT_IPACC_RAC>> | O | TL16V | >= 4
+| GPRS Paging Configuration | <<NM_ATT_IPACC_GPRS_PAGING_CFG>> | O | TL16V | >= 5
+| GPRS RLC Configuration | <<NM_ATT_IPACC_RLC_CFG>> | O | TL16V | >= 12
+| GPRS Coding Schemes | <<NM_ATT_IPACC_CODING_SCHEMES>> | O | TL16V | >= 5
+| GPRS RLC Configuration 2 | <<NM_ATT_IPACC_RLC_CFG_2>> | O | TL16V | >= 8
+| GPRS RLC Configuration 3 | <<NM_ATT_IPACC_RLC_CFG_3>> | O | TL16V | >= 4
+|===
+
+==== GPRS NS-VC Managed Object
+
+There are two GPRS NS-VC instances per BTS. It supports the *Set
+Attribute* message with the following Information Elements:
+
+[options="header"]
+[cols="30%,25%,15%,15%,15%"]
+|===
+| INFORMATION ELEMENT | REFERENCE | PRESENCE | FORMAT | LENGTH
+| Message Type | 3GPP TS 12.21 9.1 | M | V | 1
+| Object Class | 3GPP TS 12.21 9.2 | M | V | 1
+| Object Instance | 3GPP TS 12.21 9.3 | M | V | 3
+| GPRS NSVCI | <<NM_ATT_IPACC_NSVCI>> | O | TL16V | >= 5
+| GPRS NS Link Configuration | <<NM_ATT_IPACC_NS_LINK_CFG>> | O | TL16V | >= 11
+|===
+
+
+=== Information Elements Overview
+
+All of the IEs handled by OsmoBTS are listed below, with limitations and
+additions to TS 12.21 specified in more detail.
+
+==== IEs Conforming to TS 12.21
+
+The following Information Elements are accepted by OsmoBTS. Not all IEs are
+actually evaluated.
+
+.IEs conforming to TS 12.21
+[options="header",cols="5%,10%,40%,5%,40%"]
+|===
+| tag (hex) | TS 12.21 § | IE name | <-/-> | Received/Sent by OsmoBTS
+| 0x00 | 9.4.1 | Abis Channel | | _ignored_
+| 0x01 | 9.4.2 | Additional Info | | _ignored_
+| 0x02 | 9.4.3 | Additional Text | | _ignored_
+| 0x03 | 9.4.4 | Administrative State | <- -> | Received & Sent
+| 0x04 | 9.4.5 | ARFCN List | <- | Received, with exactly 1 ARFCN: see <<NM_ATT_ARFCN_LIST>>;
+ ignored by _Set Radio Attribute_ message (<<set_radio_attr>>)
+| 0x05 | 9.4.6 | Autonomously Report | | _ignored_
+| 0x06 | 9.4.7 | Availability Status | -> | Sent
+| 0x07 | 9.4.8 | BCCH ARFCN | <- | Received
+| 0x08 | 9.4.9 | BSIC | <- | Received
+| 0x09 | 9.4.10 | BTS Air Timer | <- | Received
+| 0x0a | 9.4.11 | CCCH Load Indication Period | <- | Received
+| 0x0b | 9.4.12 | CCCH Load Threshold | <- | Received
+| 0x0c | 9.4.13 | Channel Combination | <- | Received, with additional channel combinations: see <<ie_chan_comb>>
+| 0x0d | 9.4.14 | Connection Failure Criterion | <- | Received, with limitations see <<ie_conn_fail_crit>>
+| 0x0e | 9.4.15 | Destination | | _ignored_
+| 0x0f | 9.4.16 | Event Type | | _ignored_
+| 0x11 | 9.4.17 | File Data | | _ignored_
+| 0x12 | 9.4.18 | File Id | | _ignored_
+| 0x13 | 9.4.19 | File Version | | _ignored_
+| 0x14 | 9.4.20 | GSM Time | | _ignored_
+| 0x16 | 9.4.22 | HW Configuration | | _ignored_
+| 0x18 | 9.4.24 | Intave Parameter | <- | _ignored_
+| 0x19 | 9.4.25 | Interference level Boundaries | <- | _ignored_
+| 0x1a | 9.4.26 | List of Required Attributes | | _ignored_
+| 0x1c | 9.4.28 | Manufacturer Dependent State | | _ignored_
+| 0x1d | 9.4.29 | Manufacturer Dependent Thresholds | | _ignored_
+| 0x1e | 9.4.30 | Manufacturer Id | | _ignored_
+| 0x1f | 9.4.31 | Max Timing Advance | <- | Received
+| 0x20 | 9.4.34 | Multi-drop BSC Link | | _ignored_
+| 0x21 | 9.4.35 | Multi-drop next BTS Link | | _ignored_
+| 0x22 | 9.4.36 | Nack Causes | -> | Sent
+| 0x23 | 9.4.37 | Ny1 | <- | Received
+| 0x24 | 9.4.38 | Operational State | -> | Sent
+| 0x25 | 9.4.39 | Overload Period | <- | _ignored_
+| 0x26 | 9.4.40 | Physical Config | | _ignored_
+| 0x27 | 9.4.41 | Power Class | | _ignored_
+| 0x28 | 9.4.42 | Power Output Thresholds | | _ignored_
+| 0x29 | 9.4.43 | Probable Cause | | _ignored_
+| 0x2a | 9.4.44 | RACH Busy Threshold | <- | Received
+| 0x2b | 9.4.45 | RACH Load Averaging Slots | <- | _ignored_
+| 0x2c | 9.4.46 | Radio Sub Channel | | _ignored_
+| 0x2d | 9.4.47 | RF Max Power Reduction | <- | Received
+| 0x2e | 9.4.48 | Site Inputs | | _ignored_
+| 0x2f | 9.4.49 | Site Outputs | | _ignored_
+| 0x30 | 9.4.50 | Source | | _ignored_
+| 0x31 | 9.4.51 | Specific Problems | | _ignored_
+| 0x33 | 9.4.53 | T200 | <- | _ignored_ (1s on DCCH, 2s on ACCH)
+| 0x34 | 9.4.54 | TEI | | _ignored_
+| 0x35 | 9.4.55 | Test Duration | | _ignored_
+| 0x36 | 9.4.56 | Test No | | _ignored_
+| 0x37 | 9.4.57 | Test Report Info | | _ignored_
+| 0x38 | 9.4.58 | VSWR Thresholds | | _ignored_
+| 0x39 | 9.4.59 | Window Size | | _ignored_
+| 0x40 | 9.4.60 | TSC | <- | Received, with limitations: see <<NM_ATT_TSC>>
+| 0x41 | 9.4.61 | SW Configuration | | _ignored_
+| 0x43 | 9.4.63 | Perceived Severity | | _ignored_
+| 0x44 | 9.4.64 | Get Attribute Response Info | | _ignored_
+| 0x45 | 9.4.65 | Outstanding Alarm Sequence | | _ignored_
+| 0x46 | 9.4.66 | HW Conf Change Info | | _ignored_
+| 0x47 | 9.4.32 | Measurement Result | | _ignored_
+|===
+
+==== IEs Not Conforming to TS 12.21
+
+.IEs not conforming to TS 12.21
+[options="header",cols="5%,10%,30%,55%"]
+|===
+| tag (hex) | TS 12.21 § | IE name | Description
+| 0x15 | 9.4.21 | HSN | presence causes NACK response
+| 0x17 | 9.4.23 | HW Description | _ignored_ by OsmoBTS, but coding may differ, see <<ie_hw_desc>>
+| 0x1b | 9.4.27 | MAIO | presence causes NACK response
+| 0x32 | 9.4.52 | Starting Time | presence causes NACK response
+| 0x42 | 9.4.62 | SW Description | not supported
+| 0x48 | 9.4.33 | Measurement Type | not supported
+|===
+
+
+==== Additional Attributes and Parameters
+
+The following Information Elements are defined in addition to those
+specified in 3GPP TS 12.21 Chapter 9.4.
+
+All of these additional IEs are _received_ by OsmoBTS.
+
+The content of these attributes is not used by OsmoBTS, but
+simply passed to OsmoPCU connected to the PCU socket.
+
+.Additional IEs handled by OsmoBTS but not defined in TS 12.21
+[options="header",cols="5%,50%,45%"]
+|===
+| tag (hex) | IE name | Description
+| 0x80 | RSL Destination IP Address | <<NM_ATT_IPACC_DST_IP>>
+| 0x81 | RSL Destination TCP Port | <<NM_ATT_IPACC_DST_IP_PORT>>
+| 0x85 | RSL IPA Stream ID | <<NM_ATT_IPACC_STREAM_ID>>
+| 0x9a | GPRS Routing Area Code | <<NM_ATT_IPACC_RAC>>
+| 0x9c | GPRS Paging Configuration | <<NM_ATT_IPACC_GPRS_PAGING_CFG>>
+| 0x9d | GPRS NSEI | <<NM_ATT_IPACC_NSEI>>
+| 0x9e | GPRS BVCI | <<NM_ATT_IPACC_BVCI>>
+| 0x9f | GPRS NSVCI | <<NM_ATT_IPACC_NSVCI>>
+| 0xa0 | GPRS NS Configuration | <<NM_ATT_IPACC_NS_CFG>>
+| 0xa1 | GPRS BSSGP Configuration | <<NM_ATT_IPACC_BSSGP_CFG>>
+| 0xa2 | GPRS NS Link Configuration | <<NM_ATT_IPACC_NS_LINK_CFG>>
+| 0xa3 | GPRS RLC Configuration | <<NM_ATT_IPACC_RLC_CFG>>
+| 0xa8 | GPRS Coding Schemes | <<NM_ATT_IPACC_CODING_SCHEMES>>
+| 0xa9 | GPRS RLC Configuration 2 | <<NM_ATT_IPACC_RLC_CFG_2>>
+| 0xac | GPRS RLC Configuration 3 | <<NM_ATT_IPACC_RLC_CFG_3>>
+|===
+
+
+=== Details on IEs
+
+[[ie_hw_desc]]
+==== HW Description
+
+TS 12.21 suggests a series of 5 length-value pairs for the _HW Description_ IE.
+Instead, OsmoBTS interprets it as a single TL16V. The value of this IE is
+ignored by OsmoBTS, yet the coding may affect message parsing.
+
+[width="40%",cols="90%,10%"]
+[grid="none"]
+|===
+| Attribute Identifier (0x17) | 1
+| Length | 2-3
+| Ignored | N
+|===
+
+
+[[NM_ATT_ARFCN_LIST]]
+==== ARFCN List
+
+Since OsmoBTS does not support frequency hopping, the _ARFCN List_ must contain
+exactly one ARFCN.
+
+[[ie_chan_comb]]
+==== Additional Channel Combinations
+
+In addition to 3GPP TS 12.21 Chapter 9.4.13, the following channel
+combinations are supported:
+
+.Additional Channel Combinations
+[options="header"]
+[cols="10%,90%"]
+|===
+| Value | Description
+| 0x0b | Reserved for PBCCH + PCCCH + PDTCH/F + PACCH/F + PTCCH/F
+| 0x0c | Reserved for PBCCH + PDTCH/F + PACCH/F + PTCCH/F
+| 0x0d | PDTCH/F + PACCH/F + PTCCH/F
+| 0x80 | Reserved for Dynamic TCH/F / PDCH
+| 0x81 | Reserved for Dynamic TCH/F / TCH/H
+|===
+
+[[ie_conn_fail_crit]]
+==== Connection Fail Criterion
+
+3GPP TS 12.21 Chapter 9.4.14 specifies two different options for the
+_Connection Failure Criterion_. OsmoBTS only implements the option
+coded as 0x01, i.e. based upon uplink SACCH error rate
+(RADIO_LINK_TIMEOUT).
+
+[[NM_ATT_TSC]]
+==== TSC
+
+Due to limitations in the currently supported PHY implementations,
+OsmoBTS supports only one global TSC for all channels on one TRX, rather
+than a separate TSC for each timeslot, as expected by 3GPP TS 12.21.
+
+
+[[NM_ATT_IPACC_DST_IP]]
+==== RSL Destination IP Address
+
+The value part of this attribute has a length of 4 octets and is encoded
+as IPv4 address in network byte order.
+
+[width="40%",cols="90%,10%"]
+[grid="none"]
+|===
+| Attribute Identifier (0x80) | 1
+| IPv4 Address (MSB first) | 2-5
+|===
+
+
+[[NM_ATT_IPACC_DST_IP_PORT]]
+==== RSL Destination TCP Port
+
+The value part of this attribute has a length of 2 octets and contains
+the TCP destination port for the RSL connection, encoded in network byte
+order.
+
+[width="40%",cols="90%,10%"]
+[grid="none"]
+|===
+| Attribute Identifier (0x81) | 1
+| Port number (MSB first) | 2-3
+|===
+
+
+[[NM_ATT_IPACC_STREAM_ID]]
+==== RSL IPA Stream ID
+
+The value part of this attribute has a length of one octet and specifies
+the IPA stream ID to be used for the RSL connection of this TRX.
+
+[width="40%",cols="90%,10%"]
+[grid="none"]
+|===
+| Attribute Identifier (0x85) | 1
+| Stream ID | 2
+|===
+
+
+[[NM_ATT_IPACC_RAC]]
+==== GPRS Routing Area Code
+
+The value part of the GPRS Routing Area code consist of a single octet
+encoding the GPRS Routing Area Code.
+
+The content of this attribute is not used by OsmoBTS, but
+simply passed to OsmoPCU connected to the PCU socket.
+
+
+[[NM_ATT_IPACC_GPRS_PAGING_CFG]]
+==== GPRS Paging Configuration
+
+The value part of this attribute consists of two octets encoded as
+follows:
+
+[options="header"]
+[cols="10%,90%"]
+|===
+| Offset | Description
+| 0 | GPRS Paging repeat time in units of 50ms intervals
+| 1 | GPRS Paging repeat count
+|===
+
+
+[[NM_ATT_IPACC_NSEI]]
+==== GPRS NSEI
+
+The value part of the GPRS NSEI is encoded as 16bit integer value in
+network byte order.
+
+The content of this attribute is not used by OsmoBTS, but
+simply passed to OsmoPCU connected to the PCU socket.
+
+
+[[NM_ATT_IPACC_BVCI]]
+==== GPRS BVCI
+
+The value part of this attribute consists of two octets encoding the
+BSSGP Virtual Circuit Identifier (BVCI) as unsigned 16 bit integer in
+network byte order.
+
+
+[[NM_ATT_IPACC_NSVCI]]
+==== GPRS NSVCI
+
+The value part of the GPRS NSVCI attribute is a 16bit unsigned integer
+in network byte order, encoding the GPRS NSVCI as specified in 3GPP TS
+08.16.
+
+The content of this attribute is not used by OsmoBTS, but
+simply passed to OsmoPCU connected to the PCU socket.
+
+
+[[NM_ATT_IPACC_NS_CFG]]
+==== GPRS NS Configuration
+
+The value part of the GPRS NS Configuration consist of an array of 7 octets, each
+describing one GPRS NS related timer:
+
+The content of this attribute is not used by OsmoBTS, but
+simply passed to OsmoPCU connected to the PCU socket.
+
+
+[[NM_ATT_IPACC_BSSGP_CFG]]
+==== GPRS BSSGP Configuration
+
+The value part of the GPRS BSSGP configuration consists of an array of
+11 octets, each describing one GPRS BSSGP related timer:
+
+[options="header"]
+[cols="10%,90%"]
+|===
+| Offset | Description
+| 0 | Blocking Timer (T1)
+| 1 | Blocking Retries
+| 2 | Unblocking Retries
+| 3 | Reset Timer (T2)
+| 4 | Reset Retries
+| 5 | Suspend Timer (T3) in units of 100ms
+| 6 | Suspend Retries
+| 7 | Resume Timer (T4) in units of 100ms
+| 8 | Resume Retries
+| 9 | Capability Update Timer (T5)
+| 10 | Capability Update Retries
+|===
+
+The detailed description of the meaning of those timers is given in the
+GPRS BSSGP specification 3GPP TS 08.18.
+
+The content of this attribute is not used by OsmoBTS, but
+simply passed to OsmoPCU connected to the PCU socket.
+
+
+[[NM_ATT_IPACC_NS_LINK_CFG]]
+==== GPRS NS Link Configuration
+
+The content of this attribute is 8 octets long and encoded as follows:
+[options="header"]
+[cols="10%,10%,80%"]
+|===
+| Offset | Length | Description
+| 0 | 2 | GPRS-NS Remote UDP Port Number (SGSN side)
+| 2 | 4 | GPRS-NS Remote IPv4 Address (SGSN side)
+| 6 | 2 | GPRS-NS Local UDP Port Number (BTS side)
+|===
+
+All values are encoded in network byte order.
+
+The content of this attribute is not used by OsmoBTS, but
+simply passed to OsmoPCU connected to the PCU socket.
+
+
+[[NM_ATT_IPACC_RLC_CFG]]
+==== GPRS RLC Configuration
+
+The value part of the GPRS RLC Configuration consists of an array of 9
+octets, each describing a RLC timer:
+
+[options="header"]
+[width="60%",cols="10%,80%,10%"]
+|===
+| Offset | Description | Unit
+| 0 | GPRS RLC Timer T3142 | s
+| 1 | GPRS RLC Timer T3169 | s
+| 2 | GPRS RLC Timer T3191 | s
+| 3 | GPRS RLC Timer T3193 | 10ms
+| 4 | GPRS RLC Timer T3195 | s
+| 5 | GPRS RLC Timer T3101 | s
+| 6 | GPRS RLC Timer T3103 | s
+| 7 | GPRS RLC Timer T3105 | s
+| 8 | GPRS RLC CV Countdown | -
+|===
+
+The meaning of the RLC timers are specified in 3GPP TS 04.60.
+
+The countdown value specifies the RLC CV value from which the countdown
+procedure is started.
+
+The content of this attribute is not used by OsmoBTS, but
+simply passed to OsmoPCU connected to the PCU socket.
+
+
+[[NM_ATT_IPACC_CODING_SCHEMES]]
+==== GPRS Coding Schemes
+
+The value part of the GPRS Coding Schemes consists of two octets
+encoding the available GPRS and EDGE coding schemes.
+
+[options="header"]
+|===
+| *bit* | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
+| byte at offset 0 | MCS9 | x | x | x | CS4 | CS3 | CS2 | CS1
+| byte at offset 1 | MCS8 | MCS7| MCS6 | MCS5 | MCS4| MCS3 | MCS2 | MCS1
+|===
+
+The content of this attribute is not used by OsmoBTS, but
+simply passed to OsmoPCU connected to the PCU socket.
+
+
+[[NM_ATT_IPACC_RLC_CFG_2]]
+==== GPRS RLC Configuration 2
+
+The value part of this attribute is 8 octets long and encoded as
+follows:
+[options="header"]
+[width="60%",cols="10%,10%,70%,10%"]
+|===
+| Offset | Length | Description | Unit
+| 0 | 2 | Downlink TBF Extension Timer | 10ms
+| 2 | 2 | Uplink TBF Extension Timer | 10ms
+| 4 | 2 | Initial GPRS Coding Scheme | -
+|===
+
+The Initial GPRS Coding Scheme is encoded as follows:
+[options="header"]
+[width="40%",cols="50%,50%"]
+|===
+| Value | Description
+| 1 | CS 1
+| 2 | CS 2
+| 3 | CS 3
+| 4 | CS 4
+|===
+
+The content of this attribute is not used by OsmoBTS, but
+simply passed to OsmoPCU connected to the PCU socket.
+
+
+[[NM_ATT_IPACC_RLC_CFG_3]]
+==== GPRS RLC Configuration 3
+
+The content of this attribute contains information about the initial MCS
+used for new EDGE TBFs.
+
+It is encoded as follows:
+[options="header"]
+[width="40%",cols="50%,50%"]
+|===
+| Value | Description
+| 1 | MCS 1
+| 2 | MCS 2
+| 3 | MCS 3
+| 4 | MCS 4
+| 5 | MCS 5
+| 6 | MCS 6
+| 7 | MCS 7
+| 8 | MCS 8
+| 9 | MCS 9
+|===
+
+The content of this attribute is not used by OsmoBTS, but
+simply passed to OsmoPCU connected to the PCU socket.
+
+=== A-bis OML Initialization / BTS bring-up
+
+At the time an Abis/IP BTS connects to via OML to the BSC, it is
+initialized according to the procedures described in 3GPP TS 12.21 as
+amended in this document.
+
+Each Managed Object (MO) is separately initialized. The initialization
+sequence and parameters differ slightly depending on the MO involved.
+
+Some parts of the sequences described below are optional, such as the
+Software activation. In the OsmoBTS case, the software is nod modular
+and thus all MOs start with the software fully activated. Thus, no
+__Software Activate Request__ is being sent by the MO to the BSC, nor
+does the BSC need to initialize the __Activate Software__ procedure.
+
+Still, the full sequences are shown in order to explain the Abis/IP
+protocol.
+
+Also, the initial state of the MOs at time of OML connection
+initialization is not always guaranteed to be Disabled/Notinstalled.
+Rather, the BSC implementation has to deal with the initial state as
+reported by the MOs at time of re-connection.
+
+==== Site Manager MO Initialization
+
+.A-bis OML Initialization of Site Manager MO
+["mscgen"]
+----
+include::oml-mo-sitemgr.msc[]
+----
+
+As the Site Manager MO does not depend on other MOs, nor does it have an
+Administrative state (__Locked/Unlocked__), it immediately ends up in the
+__Enabled__ state.
+
+==== BTS MO Initialization
+
+.A-bis OML Initialization of BTS MO
+["mscgen"]
+----
+include::oml-mo-bts.msc[]
+----
+
+As can be seen in the BTS MO, its state is
+
+* Availability state __Dependency__, meaning it depends on other MOs to
+ be initialized before becoming enabled.
+* Administrative state __Locked__, as the object is first waiting to
+ receive attributes in the __Locked__ state, before the __Change
+ Administrative State (Unlocked)__ procedure is used to request
+ transitioning into Unlocked state.
+
+==== Baseband Transceiver MO Initialization
+
+.A-bis OML Initialization of Baseband Transceiver MO
+["mscgen"]
+----
+include::oml-mo-transceiver.msc[]
+----
+
+There is one Baseband Transceiver MO per TRX in the BTS. For a
+multi-TRX BTS, the above procedure must be repeated for each TRX.
+
+
+==== Radio Carrier MO Initialization
+
+.A-bis OML Initialization of Radio Carrier MO
+["mscgen"]
+----
+include::oml-mo-carrier.msc[]
+----
+
+There is one Radio Carrier MO per TRX in the BTS. For a multi-TRX BTS,
+the above procedure must be repeated for each TRX.
+
+
+==== Channel MO Initialization
+
+.A-bis OML Initialization of Radio Carrier MO
+["mscgen"]
+----
+include::oml-mo-channel.msc[]
+----
+
+There are 8 Timeslots in each TRX, and correspondingly 8 Channel MOs in
+every TRX. The above procedure must thus be repeated for each timeslot
+in each transceiver of the BTS.
+
+
+==== Full Initialization of entire BTS
+
+Some of the steps are optional, as is their detailed ordering. In
+reality, the procedures for different MOs may overlap. The message
+sequence charts in this document have been hand-crafted to avoid such
+overlap for the sake of clarity.
+
+[[oml-msc-1]]
+.A-bis OML BTS bring-up (1/3)
+["mscgen"]
+----
+include::oml-startup.msc[]
+----
+
+As can be seen in <<oml-msc-1>>, after the OML TCP connection is
+established
+
+. the identity is exchanged via IPA CCM,
+. the BTS sends an 'OML EVENT STATE CHANGED REPORT' for every
+ Managed Object
+. the BTS subsequently requests the activation of its 'Site Manager' Object
+ which the BSC performs by the 'Activate SW' command.
+. After successful activation of the software in the Site Manager,
+.. the state changes to 'Enabled', and an event report is generated
+ accordingly
+.. the BSC is notified about the SW activation in an associated report
+. Finally, the BSC requests the start of the Site Manager
+.. using the 'OPSTART' command,
+.. which is subsequently acknowledged by the Site Manager.
+
+[[oml-msc-2]]
+.A-bis OML BTS bring-up (2/3)
+["mscgen"]
+----
+include::oml-startup2.msc[]
+----
+
+[[oml-msc-3]]
+.A-bis OML BTS bring-up (3/3)
+["mscgen"]
+----
+include::oml-startup3.msc[]
+----
+
+In <<oml-msc-2>>, we can see
+
+. Software Activation and associated state transitions of the BTS MO
+. Setting of the BTS Attributes followed by OPSTART
+. Software Activation and associated state transitions of the 'Baseband
+ Transceiver' MO
+. Software Activation and associated state transitions of the 'Radio
+ Carrier' MO
+. Once the 'Baseband Transceiver' MO has its software activated, the
+ 'Channel' MOs (one for each timeslot) indicate their state change and
+ software activation, too.
+
+In <<oml-msc-3>>, we can see
+
+. The 'Radio Carrier' MO Software Activation
+. The Request to the 'Baseband Transceiver' MO to establish the RSL
+ signalling connection to the BSC.
+. Subsequent OPSTART and Change of Administrative State on the 'Baseband
+ Transceiver' MO
+. The following procedure for each of the 'Channel' MOs:
+.. Setting the Channel Attributes (such as channel combination)
+.. OPSTART
+.. Changing the Administrative State to Unlocked
+.. Subsequent State Change Event Report with the new state
+. After all 'Channel' MOs are initialized, the Radio Carrier goes through
+ a similar procedure of
+.. Setting its attributes
+.. OPSTART
+.. Changing its Administrative State to Unlocked
+.. Subsequent State Change Event Report with the new State (Enabled/OK)
+. All 'Channel' MOs now also report their state as Enabled/OK
+. Finally, the BTS reports its state as Enabled/OK
+
diff --git a/doc/manuals/abis/rsl-startup-pri.msc b/doc/manuals/abis/rsl-startup-pri.msc
new file mode 100644
index 00000000..a4798df9
--- /dev/null
+++ b/doc/manuals/abis/rsl-startup-pri.msc
@@ -0,0 +1,22 @@
+msc {
+ bts [label="TRX"], bsc [label="BSC"];
+
+ bts => bsc [label="TCP Connect (Port 3003, RSL)"];
+ bts box bsc [label="IPA CCM Identification (Port 3003)"];
+ |||;
+
+ bts <= bsc [label="BCCH Information (SI1)"];
+ bts <= bsc [label="BCCH Information (SI2)"];
+ ...;
+ bts <= bsc [label="BCCH Information (SI3)"];
+ bts <= bsc [label="BCCH Information (SI4)"];
+ |||;
+ bts <= bsc [label="SACCH FILLING (SI5)"];
+ ...;
+ bts <= bsc [label="SACCH FILLING (SI6)"];
+ |||;
+ bts => bsc [label="RF Resource Indication"];
+ ...;
+ bts => bsc [label="RF Resource Indication"];
+ ...;
+}
diff --git a/doc/manuals/abis/rsl-startup-sec.msc b/doc/manuals/abis/rsl-startup-sec.msc
new file mode 100644
index 00000000..d961412b
--- /dev/null
+++ b/doc/manuals/abis/rsl-startup-sec.msc
@@ -0,0 +1,16 @@
+msc {
+ bts [label="TRX"], bsc [label="BSC"];
+
+ bts => bsc [label="TCP Connect (Port 3003, RSL)"];
+ bts box bsc [label="IPA CCM Identification (Port 3003)"];
+ |||;
+
+ bts <= bsc [label="SACCH FILLING (SI5)"];
+ ...;
+ bts <= bsc [label="SACCH FILLING (SI6)"];
+ |||;
+ bts => bsc [label="RF Resource Indication"];
+ ...;
+ bts => bsc [label="RF Resource Indication"];
+ ...;
+}
diff --git a/doc/manuals/abis/rsl-tch-rtp.msc b/doc/manuals/abis/rsl-tch-rtp.msc
new file mode 100644
index 00000000..55228b48
--- /dev/null
+++ b/doc/manuals/abis/rsl-tch-rtp.msc
@@ -0,0 +1,56 @@
+msc {
+ hscale = 2;
+
+ ms [label="MS"], bts [label="BTS"], bsc [label="BSC"], Msc [label="MSC"], mgw [label="MGW"];
+
+ ms => bts [label="L1 RACH burst"];
+ bts => bsc [label="RSL CHAN RQD"];
+ bts <= bsc [label="RSL CHAN ACT"];
+ bts => bsc [label="RSL CHAN ACT ACK"];
+ bts <= bsc [label="RSL IMM ASS CMD (RR IMM ASS)"];
+ ms <= bts [label="RR IMMEDIATE ASSIGN"];
+ ms => bts [label="LAPDm SABM (CM SERVICE REQ)"];
+ ms <= bts [label="LAPDm FIXME"];
+ bts => bsc [label="RSL ESTABLISH IND (CM SERVICE REQ)"];
+ bsc => Msc [label="CR (BSSAP COMPLETE L3 (CM SERVICE REQ))"];
+ ...;
+ ms box Msc [label="MM Common Procedures (INFO, ID, AUTH, CIPH)"];
+ ...;
+ ms => bts [label="CC SETUP"];
+ bts => bsc [label="RSL DATA IND (CC SETUP)"];
+ bsc => Msc [label="DT1 (DTAP (CC SETUP))"];
+ ...;
+ ms box Msc [label="CC Signalling"];
+ ...;
+ bsc <= Msc [label="BSSAP ASSIGNMENT CMD (TCH)"];
+ bts <= bsc [label="RSL IPA CRCX", id="1"];
+ bts => bsc [label="RSL IPA CRCX ACK (IP/Port @ BTS)"];
+ bsc => Msc [label="FIXME"];
+ Msc => mgw [label="FIXME"];
+ bts <- mgw [label="Start RTP + RTCP UDP Flows"];
+
+ bts <= bsc [label="RSL DATA REQ (RR CHAN MOD MODIFY)"];
+ ms <= bts [label="RR CHAN MOD MODIFY"];
+ ms => bts [label="RR CHAN MOD MODIFY ACK"];
+ bts => bsc [label="RSL DATA IND (RR CHAN MOD MODIFY ACK)"];
+ |||;
+ bts <= bsc [label="RSL MODE MODIFY REQ"];
+ bts => bsc [label="RSL MODE MODIFY ACK"];
+
+ Msc <= mgw [label="FIXME"];
+ bsc <= Msc [label="FIXME"];
+ bts <= bsc [label="RSL IPA MDCX (IP/Port @ MGW)", id="2"];
+ bts => bsc [label="RSL IPA MDCX ACK"];
+
+ bts -> mgw [label="Start RTP + RTCP UDP Flows"];
+ ms box mgw [label="Active Voice Call"];
+ bts => bsc [label="RSL MEAS RES"];
+ ...;
+
+ bts <= bsc [label="RSL IPA DLCX"];
+ bts => bsc [label="RSL IPA DLCX ACK"];
+ bts -x mgw [label="Stop RTP + RTCP UDP Flows"];
+
+ bts <= bsc [label="RSL RF CHAN REL"];
+ bts => bsc [label="RSL RF CHAN REL ACK"];
+}
diff --git a/doc/manuals/abis/rsl.adoc b/doc/manuals/abis/rsl.adoc
new file mode 100644
index 00000000..e157b25e
--- /dev/null
+++ b/doc/manuals/abis/rsl.adoc
@@ -0,0 +1,681 @@
+== Radio Signalling Link (RSL)
+
+=== List of Messages
+
+The following tables list the RSL messages used by OsmoBTS A-bis/IP,
+grouped by their level of compliance with 3GPP TS 08.58.
+
+==== Messages Compliant With TS 08.58
+
+Specific limitations apply, see the linked sections.
+
+.Messages compliant with TS 08.58
+[options="header",cols="10%,20%,45%,5%,20%"]
+|===
+| TS 08.58 § | This document § | Message | <-/-> | Received/Sent by OsmoBTS
+5+<| *Radio link layer management messages*
+| 8.3.1 | - | DATA REQUEST | <- | Received
+| 8.3.2 | - | DATA INDICATION | -> | Sent
+| 8.3.3 | - | ERROR INDICATION | -> | Sent
+| 8.3.4 | - | ESTABLISH REQUEST | <- | Received
+| 8.3.5 | - | ESTABLISH CONFIRM | -> | Sent
+| 8.3.6 | - | ESTABLISH INDICATION | -> | Sent
+| 8.3.7 | - | RELEASE REQUEST | <- | Received
+| 8.3.8 | - | RELEASE CONFIRM | -> | Sent
+| 8.3.9 | - | RELEASE INDICATION | -> | Sent
+| 8.3.10 | - | UNIT DATA REQUEST | <- | Received
+| 8.3.11 | - | UNIT DATA INDICATION | -> | Sent
+5+<| *DEDICATED CHANNEL MANAGEMENT MESSAGES*
+| 8.4.1 | - | CHANNEL ACTIVATION | <- | Received
+| 8.4.2 | - | CHANNEL ACTIVATION ACKNOWLEDGE | -> | Sent
+| 8.4.3 | - | CHANNEL ACTIVATION NEGATIVE ACKNOWLEDGE | -> | Sent
+| 8.4.4 | - | CONNECTION FAILURE INDICATION | -> | Sent
+| 8.4.5 | - | DEACTIVATE SACCH | <- | Received
+| 8.4.6 | - | ENCRYPTION COMMAND | <- | Received
+| 8.4.7 | - | HANDOVER DETECTION | -> | Sent
+| 8.4.8 | <<MEASUREMENT_RESULT>> | MEASUREMENT RESULT | -> | Sent
+| 8.4.9 | <<MODE_MODIFY>> | MODE MODIFY | <- | Received
+| 8.4.10 | - | MODE MODIFY ACKNOWLEDGE | -> | Sent
+| 8.4.11 | - | MODE MODIFY NEGATIVE ACKNOWLEDGE | -> | Sent
+| 8.4.14 | - | RF CHANNEL RELEASE | <- | Received
+| 8.4.15 | <<MS_POWER_CONTROL>> | MS POWER CONTROL | <- | Received
+| 8.4.19 | - | RF CHANNEL RELEASE ACKNOWLEDGE | -> | Sent
+| 8.4.20 | <<SACCH_INFO_MODIFY>> | SACCH INFO MODIFY | <- | Received
+5+<| *COMMON CHANNEL MANAGEMENT MESSAGES*
+| 8.5.1 | <<BCCH_INFORMATION>> | BCCH INFORMATION | <- | Received
+| 8.5.2 | - | CCCH LOAD INDICATION | -> | Sent
+| 8.5.3 | <<CHANNEL_REQUIRED>> | CHANNEL REQUIRED | -> | Sent
+| 8.5.5 | <<PAGING_COMMAND>> | PAGING COMMAND | <- | Received
+| 8.5.6 | - | IMMEDIATE ASSIGN COMMAND | <- | Received
+| 8.5.8 | <<SMS_BROADCAST_COMMAND>> | SMS BROADCAST COMMAND | <- | Received
+5+<| *TRX MANAGEMENT MESSAGES*
+| 8.6.1 | <<RF_RESOURCE_INDICATION>> | RF RESOURCE INDICATION | -> | Sent
+| 8.6.2 | <<SACCH_FILLING>> | SACCH FILLING | <- | Received
+| 8.6.4 | - | ERROR REPORT | -> | Sent
+|===
+
+==== Messages Specific to OsmoBTS
+
+.Messages specific to OsmoBTS, not found in 3GPP TS 08.58
+[options="header",cols="15%,15%,45%,5%,20%"]
+|===
+2+| This document § | Message | <-/-> | Received/Sent by OsmoBTS
+5+<| *User Plane Transport Management* (<<user_plane_txp_mgmt>>)
+.3+.| <<rsl_crcx>> | <<rsl_crcx_msg>> | RSL Create Connection (CRCX) | <- | Received
+ | <<rsl_crcx_msg_ack>> | RSL Create Connection (CRCX) ACK | -> | Sent
+ | <<rsl_crcx_msg_nack>> | RSL Create Connection (CRCX) NACK | -> | Sent
+.3+.| <<rsl_mdcx>> | <<rsl_mdcx_msg>> | RSL Modify Connection (MDCX) | <- | Received
+ | <<rsl_mdcx_msg_ack>> | RSL Modify Connection (MDCX) ACK | -> | Sent
+ | <<rsl_mdcx_msg_nack>> | RSL Modify Connection (MDCX) NACK | -> | Sent
+.3+.| <<rsl_dlcx>> | <<rsl_dlcx_msg>> | RSL Delete Connection (DLCX) | <- | Received
+ | <<rsl_dlcx_msg_ack>> | RSL Delete Connection (DLCX) ACK | -> | Sent
+ | <<rsl_dlcx_msg_nack>> | RSL Delete Connection (DLCX) NACK | -> | Sent
+ | <<rsl_dlcx_ind>> | <<rsl_dlcx_ind_msg>> | RSL Delete Connection (DLCX) Indication | -> | Sent
+|===
+
+==== Messages Not Implemented by OsmoBTS
+
+.3GPP TS 08.58 messages not implemented by OsmoBTS
+[options="header",cols="10%,90%"]
+|===
+| TS 08.58 § | Message
+2+<| *DEDICATED CHANNEL MANAGEMENT MESSAGES*
+| 8.4.12 | PHYSICAL CONTEXT REQUEST
+| 8.4.13 | PHYSICAL CONTEXT CONFIRM
+| 8.4.16 | BS POWER CONTROL
+| 8.4.17 | PREPROCESS CONFIGURE
+| 8.4.18 | PREPROCESSED MEASUREMENT RESULT
+| 8.4.21 | TALKER DETECTION
+| 8.4.22 | LISTENER DETECTION
+| 8.4.23 | REMOTE CODEC CONFIGURATION REPORT
+| 8.4.24 | ROUND TRIP DELAY REPORT
+| 8.4.25 | PRE-HANDOVER NOTIFICATION
+| 8.4.26 | MULTIRATE CODEC MODIFICATION REQUEST
+| 8.4.27 | MULTIRATE CODEC MODIFICATION ACKNOLEWDGE
+| 8.4.28 | MULTIRATE CODEC MODIFICATION NEGATIVE ACKNOWLEDGE
+| 8.4.29 | MULTIRATE CODEC MODIFICATION PERFORMED
+| 8.4.30 | TFO REPORT
+| 8.4.31 | TFO MODIFICATION REQUEST
+2+<| *COMMON CHANNEL MANAGEMENT MESSAGES*
+| 8.5.4 | DELETE INDICATION
+| 8.5.7 | SMS BROADCAST REQUEST
+| 8.5.9 | CBCH LOAD INDICATION
+| 8.5.10 | NOTIFICATION COMMAND
+2+<| *TRX MANAGEMENT MESSAGES*
+| 8.6.3 | OVERLOAD
+2+<| *LOCATION SERVICES MESSAGES*
+| 8.7.1 | LOCATION INFORMATION
+|===
+
+
+=== Message Limitation Details
+
+[[MEASUREMENT_RESULT]]
+==== Measurement Result
+
+Conforms to 3GPP TS 08.58 § 8.4.8 with this limitation:
+
+._Measuremet Result_ IE limitations
+[options="header",cols="10%,30%,60%"]
+|===
+| TS 08.58 § | IE Name | Handling
+| 9.3.37 | MS Timing Offset | never sent by OsmoBTS
+|===
+
+[[MODE_MODIFY]]
+==== Mode Modify
+
+Conforms to 3GPP TS 08.58 § 8.4.9 with these limitations:
+
+._Mode Modify_ IE limitations
+[options="header",cols="10%,30%,60%"]
+|===
+| TS 08.58 § | IE Name | Handling
+| 9.3.45 | Main channel reference | _ignored_
+| 9.3.53 | MultiRate Control | _ignored_
+| 9.3.54 | Supported Codec Types | _ignored_
+|===
+
+[[MS_POWER_CONTROL]]
+==== MS Power Control
+
+Conforms to 3GPP TS 08.58 § 8.4.15 with these limitations:
+
+._MS Power Control_ IE limitations
+[options="header",cols="10%,30%,60%"]
+|===
+| TS 08.58 § | IE Name | Handling
+| 9.3.31 | MS Power Parameters | _ignored_
+|===
+
+
+[[SACCH_INFO_MODIFY]]
+==== SACCH Info Modify
+
+Conforms to 3GPP TS 08.58 § 8.4.20, with these exceptions:
+
+._SACCH Info Modify_ IE limitations
+[options="header",cols="10%,30%,60%"]
+|===
+| TS 08.58 § | IE Name | Handling
+| 9.3.30 | System Info Type | See below for available types
+| 9.3.23 | Starting Time | not supported, provokes an _Error Report_ response
+|===
+
+._System Info Type_ values that can occur on the SACCH
+[options="header",width="50%",cols="20%,80%"]
+|===
+| Value | Name
+| 0x05 | RSL_SYSTEM_INFO_5
+| 0x06 | RSL_SYSTEM_INFO_6
+| 0x0d | RSL_SYSTEM_INFO_5bis
+| 0x0e | RSL_SYSTEM_INFO_5ter
+| 0x47 | RSL_EXT_MEAS_ORDER
+| 0x48 | RSL_MEAS_INFO
+|===
+
+[[BCCH_INFORMATION]]
+==== BCCH Information
+
+Conforms to 3GPP TS 08.58 § 8.5.1, with these limitations and extensions:
+
+._BCCH Information_ IE details
+[options="header",cols="10%,30%,60%"]
+|===
+| TS 08.58 § | IE Name | Handling
+| 9.3.30 | System Info Type | See <<SACCH_INFO_MODIFY>> for available types
+| 9.3.11 | L3 Info | This IE may be included instead of a 9.3.39 _Full BCCH Info_ IE.
+ The _Full BCCH Info_ takes precedence over _L3 Info_.
+ To stop SI transmission, both of these IEs must be omitted.
+|===
+
+
+[[CHANNEL_REQUIRED]]
+==== Channel Required
+
+Conforms to 3GPP TS 08.58 § 8.5.3, with these limitations:
+
+._Channel Required_ message IE details
+[options="header",cols="10%,30%,60%"]
+|===
+| TS 08.58 § | IE Name | Handling
+| 9.3.16 | Physical Context | never sent by OsmoBTS
+|===
+
+
+[[PAGING_COMMAND]]
+==== Paging Command
+
+Conforms to 3GPP TS 08.58 § 8.5.5, with these limitations:
+
+._Paging Command_ message IE details
+[options="header",cols="10%,30%,60%"]
+|===
+| TS 08.58 § | IE Name | Handling
+| 9.3.49 | eMLPP Priority | _ignored_
+|===
+
+NOTE: If adding the identity to the paging queue fails, the BSC is not notified
+in any way.
+
+[[SMS_BROADCAST_COMMAND]]
+=== SMS Broadcast Command
+
+Conforms to 3GPP TS 08.58 § 8.5.8, with these limitations:
+
+._Broadcast Command_ message IE details
+[options="header",cols="10%,30%,60%"]
+|===
+| TS 08.58 § | IE Name | Handling
+| 9.3.44 | SMSCB Channel Indicator | _ignored_
+|===
+
+
+[[RF_RESOURCE_INDICATION]]
+==== RF Resource Indication
+
+This message does not conform to 3GPP TS 08.58 § 8.6.1, in that it omits the
+_Resource Information_ IE that would contain the actual payload data, which
+renders this message void.
+
+._RF Resource Indication_ message IE exceptions
+[options="header",cols="10%,30%,60%"]
+|===
+| TS 08.58 § | IE Name | Handling
+| 9.3.21 | Resource Information | OsmoBTS omits this IE, though TS 08.58
+ specifies it as mandatory.
+|===
+
+
+[[SACCH_FILLING]]
+==== SACCH Filling
+
+Conforms to 3GPP TS 08.58 § 8.6.2, with these limitations:
+
+._SACCH Filling_ message IE limitations
+[options="header",cols="10%,30%,60%"]
+|===
+| TS 08.58 § | IE Name | Handling
+| 9.3.30 | System Info Type | See <<SACCH_INFO_MODIFY>> for available types
+| 9.3.23 | Starting Time | _ignored_
+|===
+
+
+[[user_plane_txp_mgmt]]
+=== User Plane Transport Management
+
+This chapter defines the A-bis/IP specific RSL procedures that are
+introduced in addition to the 3GPP TS 08.58 standard procedures.
+
+In classic A-bis over E1, user plane traffic is carried over 16kBps
+sub-slots of 64kBps E1 time-slots according to ETSI/3GPP TS 08.60. As
+the E1 line is a dedicated line between BTS and BSC, no further
+addressing information is required.
+
+In A-bis/IP as described by the present document, new RSL procedures
+have been introduced in order to deal with the different properties of
+the underlying IP based transport medium.
+
+[[rsl_crcx]]
+==== RSL Create Connection (CRCX)
+
+This procedure is used by the BSC to request the BTS to allocate + bind
+to a BTS-local UDP port for the subsequent transmission of user-plane
+data via RTP.
+
+To do so, the BSC sends the *Create Connection (CRCX)* message. In case of
+successful outcome, the BTS responds with *Create Connection (CRCX)
+ACK*. In case of any error, the BTS responds with *Create Connection
+(CRCX) NACK*.
+
+See <<rsl_crcx_msg>>, <<rsl_crcx_msg_ack>>, <<rsl_crcx_msg_nack>>
+
+[[rsl_mdcx]]
+==== RSL Modify Connection (MDCX)
+
+This procedure is used by the BSC to request the BTS to modify an
+already-bound BTS-local UDP port for user-plane RTP. It is used in
+particular to configure the remote IP address and UDP port to which the
+BTS shall send user-plane RTP traffic. This remote address is normally
+either a Media Gateway (MGW) of some sort, but could also be the RTP
+socket of the corresponding other leg of a mobile-to-mobile call.
+
+To modify a user-plane connection, the BSC sends the *Modify Connection*
+message. In case of successful outcome, the BTS responds with
+*Modify Connection (MDCX) ACK*. In case of any error, the BTS responds
+with *Modify Connection (MDCX) NACK*.
+
+See <<rsl_mdcx_msg>>, <<rsl_mdcx_msg_ack>>, <<rsl_mdcx_msg_nack>>
+
+[[rsl_dlcx]]
+==== RSL Delete Connection (DLCX)
+
+This procedure is used by the BSC to request the BTS to delete an
+already-existing BTS-local UDP port for user-plane RTP.
+
+To delete a user-plane connection, the BSC sends the *Delete Connection
+(DLCX)* message. In case of successful outcome, the BTS responds with
+*Delete Connection (DLCX) ACK*. In case of any error, the BTS responds
+with *Delete Connection (DLCX) NACK*.
+
+See <<rsl_dlcx_msg>>, <<rsl_dlcx_msg_ack>>, <<rsl_dlcx_msg_nack>>
+
+[[rsl_dlcx_ind]]
+==== RSL Delete Connection (DLCX) Indication
+
+When a BTS-local UDP connection for user-plane RTP is automatically
+released at the time of RF CHANNEL RELEASE, the BTS sends a unilateral,
+non-acknowledged *RSL Delete Connection (DLCX) Indication* to the BSC.
+
+See <<rsl_dlcx_ind_msg>>
+
+
+=== Message Formats and Contents
+
+[[rsl_crcx_msg]]
+==== Create Connection (CRCX)
+
+This message is sent by the BSC to the BTS in order to request the
+creation of a user-plane RTP connection for the specified *Channel
+number*.
+
+[options="header"]
+[cols="30%,25%,15%,15%,15%"]
+|===
+| INFORMATION ELEMENT | REFERENCE | PRESENCE | FORMAT | LENGTH
+| Message discriminator | 08.58 9.1 | M | V | 1
+| Message type | <<own_msg_types>> | M | V | 1
+| Channel number | 08.58 9.3.1 | M | TV | 2
+| Destination IP Address | <<RSL_IE_IPAC_REMOTE_IP>> | O | TV | 5
+| Destination IP Port | <<RSL_IE_IPAC_REMOTE_PORT>> | O | TV | 3
+| IP Speech Mode | <<RSL_IE_IPAC_SPEECH_MODE>> | O | TV | 2
+| RTP Payload Type 2 | <<RSL_IE_IPAC_RTP_PAYLOAD2>> | O | TV | 2
+|===
+
+[[rsl_crcx_msg_ack]]
+==== Create Connection (CRCX) ACK
+
+This message is sent by the BTS to the BSC in order to acknowledge the
+successful outcome of creating a user-plane RTP connection. It is sent
+in response to the *Create Connection (CRCX)*.
+
+[options="header"]
+[cols="30%,25%,15%,15%,15%"]
+|===
+| INFORMATION ELEMENT | REFERENCE | PRESENCE | FORMAT | LENGTH
+| Message discriminator | 08.58 9.1 | M | V | 1
+| Message type | <<own_msg_types>> | M | V | 1
+| Channel number | 08.58 9.3.1 | M | TV | 2
+| Connection Id | <<RSL_IE_IPAC_CONN_ID>> | M | TV | 3
+| Source IP Address | <<RSL_IE_IPAC_LOCAL_IP>> | O | TV | 5
+| Source IP Port | <<RSL_IE_IPAC_LOCAL_PORT>> | O | TV | 3
+| RTP Payload Type 2 | <<RSL_IE_IPAC_RTP_PAYLOAD2>> | O | TV | 2
+|===
+
+[[rsl_crcx_msg_nack]]
+==== Create Connection (CRCX) NACK
+
+This message is sent by the BTS to the BSC in order to signal the
+unsuccessful outcome of creating a user-plane RTP connection. It is
+sent in response to the *Create Connection (CRCX)*.
+
+[options="header"]
+[cols="30%,25%,15%,15%,15%"]
+|===
+| INFORMATION ELEMENT | REFERENCE | PRESENCE | FORMAT | LENGTH
+| Message discriminator | 08.58 9.1 | M | V | 1
+| Message type | <<own_msg_types>> | M | V | 1
+| Channel number | 08.58 9.3.1 | M | TV | 2
+| Destination IP Address | <<RSL_IE_IPAC_REMOTE_IP>> | O | TV | 5
+| Destination IP Port | <<RSL_IE_IPAC_REMOTE_PORT>> | O | TV | 3
+| Cause | 08.58 9.3.26 | O | TLV | >= 3
+|===
+
+
+[[rsl_mdcx_msg]]
+==== Modify Connection (MDCX)
+
+This message is sent by the BSC to the BTS in order to modify the
+properties of a user-plane RTP connection.
+
+[options="header"]
+[cols="30%,25%,15%,15%,15%"]
+|===
+| INFORMATION ELEMENT | REFERENCE | PRESENCE | FORMAT | LENGTH
+| Message discriminator | 08.58 9.1 | M | V | 1
+| Message type | <<own_msg_types>> | M | V | 1
+| Channel number | 08.58 9.3.1 | M | TV | 2
+| Connection Id | <<RSL_IE_IPAC_CONN_ID>> | O | TV | 3
+| Destination IP Address | <<RSL_IE_IPAC_REMOTE_IP>> | O | TV | 5
+| Destination IP Port | <<RSL_IE_IPAC_REMOTE_PORT>> | O | TV | 3
+| IP Speech Mode | <<RSL_IE_IPAC_SPEECH_MODE>> | O | TV | 2
+| RTP Payload Type 2 | <<RSL_IE_IPAC_RTP_PAYLOAD2>> | O | TV | 2
+|===
+
+[[rsl_mdcx_msg_ack]]
+==== Modify Connection (MDCX) ACK
+
+This message is sent by the BTS to the BSC in order to acknowledge the
+successful modification of a user-plane RTP connection. It is sent in
+response to a *Modify Connection (MDCX)*
+
+[options="header"]
+[cols="30%,25%,15%,15%,15%"]
+|===
+| INFORMATION ELEMENT | REFERENCE | PRESENCE | FORMAT | LENGTH
+| Message discriminator | 08.58 9.1 | M | V | 1
+| Message type | <<own_msg_types>> | M | V | 1
+| Channel number | 08.58 9.3.1 | M | TV | 2
+| Connection Id | <<RSL_IE_IPAC_CONN_ID>> | O | TV | 3
+| Source IP Address | <<RSL_IE_IPAC_LOCAL_IP>> | C | TV | 5
+| Source IP Port | <<RSL_IE_IPAC_LOCAL_PORT>> | C | TV | 3
+| RTP Payload Type 2 | <<RSL_IE_IPAC_RTP_PAYLOAD2>> | O | TV | 2
+|===
+
+[[rsl_mdcx_msg_nack]]
+==== Modify Connection (MDCX) NACK
+
+This message is sent by the BTS to the BSC in order to signal the
+unsuccessful outcome of modifying the user-plane RTP connection for the
+specified Channel number. It is sent in response to the *Modify
+Connection (MDCX)*.
+
+[options="header"]
+[cols="30%,25%,15%,15%,15%"]
+|===
+| INFORMATION ELEMENT | REFERENCE | PRESENCE | FORMAT | LENGTH
+| Message discriminator | 08.58 9.1 | M | V | 1
+| Message type | <<own_msg_types>> | M | V | 1
+| Channel number | 08.58 9.3.1 | M | TV | 2
+| Cause | 08.58 9.3.26 | M | TLV | >= 3
+|===
+
+[[rsl_dlcx_ind_msg]]
+==== Delete Connection (DLCX) Indication
+
+This message is sent by the BTS in order to indicate the automatic
+deletion of a BTS-local UDP connection for user-plane RTP traffic at the
+time of RF Channel release.
+
+[options="header"]
+[cols="30%,25%,15%,15%,15%"]
+|===
+| INFORMATION ELEMENT | REFERENCE | PRESENCE | FORMAT | LENGTH
+| Message discriminator | 08.58 9.1 | M | V | 1
+| Message type | <<own_msg_types>> | M | V | 1
+| Channel number | 08.58 9.3.1 | M | TV | 2
+| Connection Id | <<RSL_IE_IPAC_CONN_ID>> | M | TV | 3
+| Connection Id | <<RSL_IE_IPAC_CONN_STAT>> | M | TV | 3
+| Cause | 08.58 9.3.26 | M | TLV | >= 3
+|===
+
+[[rsl_dlcx_msg]]
+==== Delete Connection (DLCX)
+
+This message is sent by the BSC to the BTS in order to request the
+disconnection of a user-plane RTP connection for the specified Channel
+number.
+
+[options="header"]
+[cols="30%,25%,15%,15%,15%"]
+|===
+| INFORMATION ELEMENT | REFERENCE | PRESENCE | FORMAT | LENGTH
+| Message discriminator | 08.58 9.1 | M | V | 1
+| Message type | <<own_msg_types>> | M | V | 1
+| Channel number | 08.58 9.3.1 | M | TV | 2
+| Connection Id | <<RSL_IE_IPAC_CONN_ID>> | O | TV | 3
+|===
+
+[[rsl_dlcx_msg_ack]]
+==== Delete Connection (DLCX) ACK
+
+This message is sent by the BTS in order to signal the successful
+outcome of deleting the user-plane RTP connection for the specified
+Channel number. It is sent in response to the *Delete Connection
+(DLCX)*.
+
+[options="header"]
+[cols="30%,25%,15%,15%,15%"]
+|===
+| INFORMATION ELEMENT | REFERENCE | PRESENCE | FORMAT | LENGTH
+| Message discriminator | 08.58 9.1 | M | V | 1
+| Message type | <<own_msg_types>> | M | V | 1
+| Channel number | 08.58 9.3.1 | M | TV | 2
+| Connection Id | <<RSL_IE_IPAC_CONN_ID>> | O | TV | 3
+| Connection Statistics | <<RSL_IE_IPAC_CONN_STAT>> | C | TV | 29
+|===
+
+[[rsl_dlcx_msg_nack]]
+==== Delete Connection (DLCX) NACK
+
+This message is sent by the BTS in order to signal the unsuccessful
+outcome of deleting the user-plane RTP connection for the specified
+Channel number. It is sent in response to the *Delete Connection
+(DLCX)*.
+
+[options="header"]
+[cols="30%,25%,15%,15%,15%"]
+|===
+| INFORMATION ELEMENT | REFERENCE | PRESENCE | FORMAT | LENGTH
+| Message discriminator | 08.58 9.1 | M | V | 1
+| Message type | <<own_msg_types>> | M | V | 1
+| Channel number | 08.58 9.3.1 | M | TV | 2
+| Connection Id | <<RSL_IE_IPAC_CONN_ID>> | O | TV | 3
+| Cause | 08.58 9.3.26 | M | TLV | >= 3
+|===
+
+
+=== Information Element Codings
+
+[[own_msg_types]]
+==== A-bis/IP specific RSL Message discriminators
+
+The following message descriminators are used in addition to those
+indicated in 3GPP TS 08.58 Section 9.1:
+
+.OsmoBTS specific new message discriminators
+[options="header",cols="10%,50%,40%"]
+|===
+| Message Type | Message | This document §
+| 0x70 | Create Connection (CRCX) | <<rsl_crcx_msg>>
+| 0x71 | Create Connection (CRCX) ACK | <<rsl_crcx_msg_ack>>
+| 0x72 | Create Connection (CRCX) NACK | <<rsl_crcx_msg_nack>>
+| 0x73 | Modify Connection (MDCX) | <<rsl_mdcx_msg>>
+| 0x74 | Modify Connection (MDCX) ACK | <<rsl_mdcx_msg_ack>>
+| 0x75 | Modify Connection (MDCX) NACK | <<rsl_mdcx_msg_nack>>
+| 0x76 | Delete Connection (DLCX) Indication | <<rsl_dlcx_ind_msg>>
+| 0x77 | Delete Connection (DLCX) | <<rsl_dlcx_msg>>
+| 0x78 | Delete Connection (DLCX) ACK | <<rsl_dlcx_msg_ack>>
+| 0x79 | Delete Connection (DLCX) NACK | <<rsl_dlcx_msg_nack>>
+|===
+
+==== A-bis/IP specific RSL IEIs
+
+The following Information Element Identifiers (IEIs) are used in
+addition to those indicated in 3GPP TS 08.58 Section 9.3.1:
+
+.A-bis/IP specific information elements
+[options="header",cols="10%,50%,40%"]
+|===
+| IEI | Name | This document §
+| 0xf0 | RSL_IE_IPAC_REMOTE_IP | <<RSL_IE_IPAC_REMOTE_IP>>
+| 0xf1 | RSL_IE_IPAC_REMOTE_PORT | <<RSL_IE_IPAC_REMOTE_PORT>>
+| 0xf3 | RSL_IE_IPAC_LOCAL_PORT | <<RSL_IE_IPAC_LOCAL_PORT>>
+| 0xf4 | RSL_IE_IPAC_SPEECH_MODE | <<RSL_IE_IPAC_SPEECH_MODE>>
+| 0xf5 | RSL_IE_IPAC_LOCAL_IP | <<RSL_IE_IPAC_LOCAL_IP>>
+| 0xf6 | RSL_IE_IPAC_CONN_STAT | <<RSL_IE_IPAC_CONN_STAT>>
+| 0xf8 | RSL_IE_IPAC_CONN_ID | <<RSL_IE_IPAC_CONN_ID>>
+| 0xfc | RSL_IE_IPAC_RTP_PAYLOAD2 | <<RSL_IE_IPAC_RTP_PAYLOAD2>>
+|===
+
+[[RSL_IE_IPAC_REMOTE_IP]]
+==== RSL_IE_IPAC_REMOTE_IP
+
+This information element contains the remote (MGW side) IPv4 address in
+network byte order. It is encoded as fixed-size element with one byte
+IEI followed by four bytes IPv4 address.
+
+[[RSL_IE_IPAC_REMOTE_PORT]]
+==== RSL_IE_IPAC_REMOTE_PORT
+
+This information element contains the remote (MGW side) UDP port in
+network byte order. It is encoded as fixed-size element with one byte
+IEI followed by two bytes UDP port number.
+
+[[RSL_IE_IPAC_LOCAL_PORT]]
+==== RSL_IE_IPAC_LOCAL_PORT
+
+This information element contains the local (BTS side) IPv4 address in
+network byte order. It is encoded as fixed-size element with one byte
+IEI followed by two bytes UDP port number.
+
+[[RSL_IE_IPAC_SPEECH_MODE]]
+==== RSL_IE_IPAC_SPEECH_MODE
+
+This information element encodes the speech mode. It is set according
+to the voice codec used on the connection. It is encoded as a fixed-size
+element of two bytes, with one byte IEI followed by one byte Speech mode
+indicator.
+
+.A-bis/IP Speech Mode Indicator Values
+[options="header",width="40%",cols="20%,80%"]
+|===
+| Value | Description
+| 0x00 | TCH/F with FR codec
+| 0x01 | TCH/F with EFR codec
+| 0x02 | TCH/F with AMR codec
+| 0x03 | TCH/H with HR codec
+| 0x05 | TCH/H with AMR codec
+|===
+
+[[RSL_IE_IPAC_LOCAL_IP]]
+==== RSL_IE_IPAC_LOCAL_IP
+
+This information element contains the local (BTS side) IPv4 address in
+network byte order. It is encoded as fixed-size element with one byte
+IEI followed by four bytes IPv4 address.
+
+[[RSL_IE_IPAC_CONN_STAT]]
+==== RSL_IE_IPAC_CONN_STAT
+
+This information element contains statistics about the RTP connection.
+
+It is encoded as 29 bytes, with the first byte as IEI and 28 bytes
+fixed-length payload encoded as follows:
+
+.A-bis/IP Connection Statistics
+[options="header",width="60%",cols="15%,15%,70%"]
+|===
+| Offset | Size | Description
+| 0 | 4 | Total number of RTP packets sent
+| 4 | 4 | Total number of octets sent
+| 8 | 4 | Total number of RTP packets received
+| 12 | 4 | Total number of octets received
+| 16 | 4 | Total number of lost packets in Rx direction
+| 20 | 4 | Inter-arrival Jitter
+| 24 | 4 | Average transmission delay
+|===
+
+All the above values are each encoded in network byte order.
+
+A detailed definition of the individual values is given in RFC 1889.
+
+[[RSL_IE_IPAC_CONN_ID]]
+==== RSL_IE_IPAC_CONN_ID
+
+This IE is a TV with a value length of two bytes. The value is a 16 bit
+connection ID in network byte order.
+
+
+[[RSL_IE_IPAC_RTP_PAYLOAD2]]
+==== RSL_IE_IPAC_RTP_PAYLOAD2
+
+This information element contains the RTP payload identifier, which is
+used in the PT (Payload Type) field of the RTP header in subsequent
+transmissions of the RTP flow.
+
+=== A-bis RSL Initialization / BTS bring-up
+
+Upon receiving the 'IPA RSL CONNECT' OML message by the respective
+'Baseband Transceiver' MO, the BTS proceeds with establishing a separate
+TCP connection for the given TRX.
+
+[[rsl-msc-pri]]
+.A-bis RSL BTS bring-up for primary TRX
+["mscgen"]
+----
+include::rsl-startup-pri.msc[]
+----
+
+[[rsl-msc-sec]]
+.A-bis RSL BTS bring-up for secondary TRXs
+["mscgen"]
+----
+include::rsl-startup-sec.msc[]
+----
+
+As can be seen by the differences between <<rsl-msc-pri>> and
+<<rsl-msc-sec>>, the initialization of the primary and secondary TRX
+slightly differ. As the secondary TRX has no BCCH, it does not (need
+to) receive any 'RSL BCCH INFORMATION' messages from the BSC.
+
diff --git a/doc/manuals/abis/rtp.adoc b/doc/manuals/abis/rtp.adoc
new file mode 100644
index 00000000..e64b5c11
--- /dev/null
+++ b/doc/manuals/abis/rtp.adoc
@@ -0,0 +1,33 @@
+== User-Plane Traffic via RTP
+
+RTP (Realtime Transfer Protocol) is a protocol for streaming of audio
+and video streaming data. It is specified by IETF RFC 1889.
+
+OsmoBTS A-bis/IP implements RTP as transport medium for circuit-switched
+user-plane traffic, contrary to the E1 sub-slot based transport as
+specified in 3GPP TS 08.60.
+
+The RTP transport endpoint parameters are configured using the RSL User
+Plane Transport Management procedures described in <<user_plane_txp_mgmt>>.
+
+RTCP is implemented in addition to RTP, on a UDP port number of the RTP
+port incremented by one.
+
+=== RTP Payload Formats
+
+The RTP payload format depends on the voice codec used on the radio
+channel. The OsmoBTS is simply passing the GSM speech frames between
+the Um radio interface channels and the RTP payload (and vice-versa).
+
+No transcoding function is implemented in the BTS!
+
+.RTP Payload formats
+[options="header",width="60%",cols="15%,15%,70%"]
+|===
+| TCH | Codec | RTP payload format specification
+| TCH/F | FR | IETF RFC 3551 Section 4.5.8
+| TCH/F | EFR | IETF RFC 3551 Section 4.5.9
+| TCH/F | AMR | IETF RFC 4867
+| TCH/H | HR | IETF RFC 5993
+| TCH/H | AMR | IETF RFC 4867
+|===