BSC: Add series of message sequence charts about MGCP handling

Change-Id: Id5948677d23a58ce112b57f91bea953a93baab4c
diff --git a/doc/manuals/mgw/classic-bsc.msc b/doc/manuals/mgw/classic-bsc.msc
new file mode 100644
index 0000000..56d2889
--- /dev/null
+++ b/doc/manuals/mgw/classic-bsc.msc
@@ -0,0 +1,39 @@
+# MO Call on a classic E1 Abis BTS with classic E1 A BSC
+# not actually supported by OsmoBSC (nor planned), for refrence only
+msc {
+	hscale=2;
+	ms [label="MS"], bts [label="E1 BTS"], bsc[label="OsmoBSC"], trau[label="TRAU"], m_sc[label="MSC"]; 
+
+	ms box m_sc	[label="We assume a SDCCH is already established"];
+	...;
+
+	ms -> m_sc	[label="DTAP CC SETUP"];
+	ms <- m_sc	[label="DTAP CC CALL PROCEEDING"];
+
+	bsc <- m_sc 	[label="BSSAP ASSGN REQ"];
+	bsc box m_sc	[label="E1 TS for PCM specified by CIC"];
+	bts <- bsc 	[label="RSL CHAN ACT"];
+	bts -> bsc 	[label="RSL CHAN ACT ACK"];
+	bts box bsc	[label="E1 TS + 16k sub-slot configured for given lchan"];
+	ms <-> bsc	[label="Assignment"];
+	bsc -> m_sc	[label="BSSAP ASSGN CMPL"];
+
+	...;
+	trau <- m_sc	[label="PCM Audio in full E1 slot"];
+	bts <- trau	[label="A-bis TRAU frames on 16k sub-slot"];
+
+	...;
+	ms <- m_sc	[label="DTAP CC CONNECT"];
+	ms -> m_sc	[label="DTAP CC CONNECT ACK"];
+	trau <-> m_sc	[label="PCM Audio in full E1 slot"];
+	bts <-> trau	[label="A-bis TRAU frames on 16k sub-slot"];
+	---		[label="Voice Call in Progress"];
+	ms <- m_sc	[label="DTAP CC DISCONNET"];
+	ms <- m_sc	[label="DTAP CC RELEASE"];
+	ms <- m_sc	[label="DTAP CC RELEASE COMPL"];
+	...;
+	bsc <- m_sc	[label="BSSMAP CLEAR CMD"];
+	bsc -> m_sc	[label="BSSMAP CLEAR COMPL"];
+	bsc <- m_sc	[label="SCCP RLSD"];
+	bsc -> m_sc	[label="SCCP RLC"];
+}
diff --git a/doc/manuals/mgw/osmo-bsc-new-mgw-e1.msc b/doc/manuals/mgw/osmo-bsc-new-mgw-e1.msc
new file mode 100644
index 0000000..7912a73
--- /dev/null
+++ b/doc/manuals/mgw/osmo-bsc-new-mgw-e1.msc
@@ -0,0 +1,50 @@
+# MO-Call with E1 BTS + OsmoBSC with true 3GPP AoIP (planned
+# osmo-bsc_mgcp has to be extended to true MGW functionality!
+msc {
+	hscale=2;
+	ms [label="MS"], bts [label="E1 BTS"], bsc[label="OsmoBSC"], mgcp[label="osmo-bsc_mgcp"], m_sc[label="MSC"];
+
+	ms box m_sc	[label="We assume a SDCCH is already established"];
+	...;
+
+	ms -> m_sc	[label="DTAP CC SETUP"];
+	ms <- m_sc	[label="DTAP CC CALL PROCEEDING"];
+
+	m_sc box m_sc	[label="Bind arbitrary local port (4000)"];
+	bsc <- m_sc 	[label="BSSAP ASSGN REQ (3GPP AoIP MSC:4000)"];
+	bts <- bsc 	[label="RSL CHAN ACT"];
+	bts -> bsc 	[label="RSL CHAN ACT ACK"];
+	ms <-> bsc	[label="Assignment"];
+	...;
+
+	mgcp <- bsc	[label="MGCP CRCX ts1/ss2@abis (MSC:4000)"];
+	mgcp box mgcp	[label="Bind to MGW-local RTP Port (3000)\nConnect to MSC:4000"];
+	mgcp -> bsc	[label="MGCP CRCX ts1/ss2@a OK (MGW:3000)"];
+	...;
+
+	bsc -> m_sc	[label="BSSAP ASSGN CMPL (3GPP AoIP MGW:3000)"];
+	m_sc box m_sc	[label="Connect remote RTP to MGW addr from ASSGN CMPL"];
+	...;
+
+	mgcp <=> m_sc	[label="RTP Audio MGW:3000 MSC:4000"];
+	bts <=> mgcp	[label="TRAU Frame Audio (E1 TS1 SS2)"];
+	ms <=> bts	[label="Um Audio (bidirectional)"];
+	ms <-> m_sc	[label="DTAP CC ALERTING"];
+	...;
+
+	ms <- m_sc	[label="DTAP CC CONNECT"];
+	ms -> m_sc	[label="DTAP CC CONNECT ACK"];
+	---		[label="Voice Call in Progress"];
+	ms <- m_sc	[label="DTAP CC DISCONNET"];
+	ms <- m_sc	[label="DTAP CC RELEASE"];
+	ms <- m_sc	[label="DTAP CC RELEASE COMPL"];
+	...;
+	bsc <- m_sc	[label="BSSMAP CLEAR CMD"];
+	bsc -> m_sc	[label="BSSMAP CLEAR COMPL"];
+	bsc <- m_sc	[label="SCCP RLSD"];
+	bsc -> m_sc	[label="SCCP RLC"];
+	...;
+	mgcp <- bsc	[label="MGCP DLCX ts1/ss2@a"];
+	mgcp box mgcp	[label="Release MSC-facing local RTP port (3000)"];
+	mgcp -> bsc	[label="MGCP DLCX ts1/ss2@a OK"];
+}
diff --git a/doc/manuals/mgw/osmo-bsc-new-mgw.msc b/doc/manuals/mgw/osmo-bsc-new-mgw.msc
new file mode 100644
index 0000000..2bab84d
--- /dev/null
+++ b/doc/manuals/mgw/osmo-bsc-new-mgw.msc
@@ -0,0 +1,71 @@
+# MO-Call with OsmoBTS + OsmoBSC with true 3GPP AoIP (planned)
+msc {
+	hscale=2;
+	ms [label="MS"], bts [label="OsmoBTS"], bsc[label="OsmoBSC"], mgcp[label="osmo-bsc_mgcp"], m_sc[label="MSC"];
+
+	ms box m_sc	[label="We assume a SDCCH is already established"];
+	...;
+
+	ms -> m_sc	[label="DTAP CC SETUP"];
+	ms <- m_sc	[label="DTAP CC CALL PROCEEDING"];
+
+	m_sc box m_sc	[label="Bind arbitrary local port (4000)"];
+	bsc <- m_sc 	[label="BSSAP ASSGN REQ (3GPP AoIP MSC:4000)"];
+	bts <- bsc 	[label="RSL CHAN ACT"];
+	bts -> bsc 	[label="RSL CHAN ACT ACK"];
+	ms <-> bsc	[label="Assignment"];
+	...;
+
+	# connect BTS RTP with BSC-MGW RTP
+	bts <- bsc	[label="IPA CRCX"];
+	bts box bts	[label="Bind to BTS-local RTP Port (1000)"];
+	bts -> bsc	[label="IPA CRCX ACK (BTS:1000)"];
+	bsc -> mgcp	[label="MGCP CRCX 2@abis (BTS:1000)"];
+	mgcp box mgcp	[label="Bind to MGW-local RTP Port (2000)\nConnect to BTS:1000"];
+	bsc <- mgcp	[label="MGCP CRCX 2@abis OK (MGW:2000)"];
+	bts <- bsc	[label="IPA MDCX 2@abis (MGW:2000)"];
+	bts box bts	[label="Connect RTP socket to remote (MGW) RTP Port"];
+	bts -> bsc	[label="IPA MDCX 2@abis ACK"];
+	#bsc -> mgcp	[label="MGCP MDCX 2@abis (optional)"];
+	#bsc <- mgcp	[label="MGCP MDCX 2@abis OK (optional)"];
+	...;
+
+	mgcp <- bsc	[label="MGCP CRCX 1@a (MSC:4000)"];
+	mgcp box mgcp	[label="Bind to MGW-local RTP Port (3000)\nConnect to MSC:4000"];
+	mgcp -> bsc	[label="MGCP CRCX 1@a OK (MGW:3000)"];
+	...;
+
+	bsc -> m_sc	[label="BSSAP ASSGN CMPL (3GPP AoIP MGW:3000)"];
+	m_sc box m_sc	[label="Connect remote RTP to MGW addr from ASSGN CMPL"];
+	...;
+
+	mgcp <=> m_sc	[label="RTP Audio MGW:3000 MSC:4000"];
+	bts <=> mgcp	[label="RTP Audio BTS:1000 MGW:2000"];
+	ms <=> bts	[label="Um Audio (bidirectional)"];
+	ms <-> m_sc	[label="DTAP CC ALERTING"];
+	...;
+
+	ms <- m_sc	[label="DTAP CC CONNECT"];
+	ms -> m_sc	[label="DTAP CC CONNECT ACK"];
+	---		[label="Voice Call in Progress"];
+	ms <- m_sc	[label="DTAP CC DISCONNET"];
+	ms <- m_sc	[label="DTAP CC RELEASE"];
+	ms <- m_sc	[label="DTAP CC RELEASE COMPL"];
+	...;
+	bsc <- m_sc	[label="BSSMAP CLEAR CMD"];
+	bsc -> m_sc	[label="BSSMAP CLEAR COMPL"];
+	bsc <- m_sc	[label="SCCP RLSD"];
+	bsc -> m_sc	[label="SCCP RLC"];
+	...;
+	mgcp <- bsc	[label="MGCP DLCX 1@a"];
+	mgcp box mgcp	[label="Release MSC-facing local RTP port (3000)"];
+	mgcp -> bsc	[label="MGCP DLCX 1@a OK"];
+
+	bsc -> mgcp	[label="MGCP DLCX 2@abis"];
+	mgcp box mgcp	[label="Release BTS-facing local RTP port (2000)"];
+	bsc <- mgcp	[label="MGCP DLCX 2@abis OK"];
+
+	bts <- bsc	[label="IPA DLCX"];
+	bts box bts	[label="Release BTS-local RTP port (1000)"];
+	bts -> bsc	[label="IPA DLCX OK"];
+}
diff --git a/doc/manuals/mgw/osmo-bsc-old-sccplite.msc b/doc/manuals/mgw/osmo-bsc-old-sccplite.msc
new file mode 100644
index 0000000..f7298bf
--- /dev/null
+++ b/doc/manuals/mgw/osmo-bsc-old-sccplite.msc
@@ -0,0 +1,64 @@
+# MO-Call with OsmoBTS + OsmoBSC using A/IP with IPA/SCCPlite
+# Supported since 2010 using osmo-bsc + osmo-bsc_nat
+msc {
+	hscale=2;
+	ms [label="MS"], bts [label="OsmoBTS"], bsc[label="OsmoBSC"], mgcp[label="osmo-bsc_mgcp"], m_sc[label="MSC"]; 
+
+	ms box m_sc	[label="We assume a SDCCH is already established"];
+	...;
+
+	ms -> m_sc	[label="DTAP CC SETUP"];
+	ms <- m_sc	[label="DTAP CC CALL PROCEEDING"];
+
+	bsc <- m_sc 	[label="BSSAP ASSGN REQ"];
+	bts <- bsc 	[label="RSL CHAN ACT"];
+	bts -> bsc 	[label="RSL CHAN ACT ACK"];
+	ms <-> bsc	[label="Assignment"];
+	bsc -> m_sc	[label="BSSAP ASSGN CMPL"];
+
+	...;
+	bts <- bsc	[label="IPA CRCX"];
+	bts box bts	[label="Bind to BSC-local RTP Port"];
+	bts -> bsc	[label="IPA CRCX ACK"];
+	bts <- bsc	[label="IPA MDCX"];
+	bts box bts	[label="Connect RTP socket to remote (bsc_mgcp) RTP Port"];
+	bts -> bsc	[label="IPA MDCX ACK"];
+
+	mgcp <- m_sc	[label="MGCP CRCX"];
+	mgcp box mgcp	[label="Bind to BTS-local RTP Port"];
+	mgcp -> m_sc	[label="MGCP CRCX OK"];
+	mgcp <- m_sc	[label="MGCP MDCX (recvonly) "];
+	mgcp box mgcp	[label="Connect RTP socket to remote (MSC) RTP Port"];
+	mgcp -> m_sc	[label="MGCP MDCX OK"];
+	mgcp <= m_sc	[label="RTP Audio"];
+	bts <= mgcp	[label="RTP Audio"];
+	ms <= bts	[label="Um Audio (unidirectional)"];
+	ms <- m_sc	[label="DTAP CC ALERTING"];
+
+	...;
+	mgcp <- m_sc	[label="MGCP MDCX (sndrecv) "];
+	mgcp box mgcp	[label="Switch to bi-directional audio"];
+	mgcp -> m_sc	[label="MGCP MDCX OK"];
+	mgcp <=> m_sc	[label="RTP Audio"];
+	bts <=> mgcp	[label="RTP Audio"];
+	ms <=> bts	[label="Um Audio (bidirectional)"];
+	...;
+	ms <- m_sc	[label="DTAP CC CONNECT"];
+	ms -> m_sc	[label="DTAP CC CONNECT ACK"];
+	mgcp <- m_sc	[label="MGCP MDCX (sndrecv) "];
+	mgcp box mgcp	[label="Why?"];
+	mgcp -> m_sc	[label="MGCP MDCX OK"];
+	---		[label="Voice Call in Progress"];
+	ms <- m_sc	[label="DTAP CC DISCONNET"];
+	ms <- m_sc	[label="DTAP CC RELEASE"];
+	ms <- m_sc	[label="DTAP CC RELEASE COMPL"];
+	...;
+	bsc <- m_sc	[label="BSSMAP CLEAR CMD"];
+	bsc -> m_sc	[label="BSSMAP CLEAR COMPL"];
+	bsc <- m_sc	[label="SCCP RLSD"];
+	bsc -> m_sc	[label="SCCP RLC"];
+	...;
+	mgcp <- m_sc	[label="MGCP DLCX"];
+	mgcp box mgcp	[label="Release local RTP port"];
+	mgcp -> m_sc	[label="MGCP DLCX OK"];
+}