# MO-Call with OsmoBTS + OsmoBSC with true 3GPP AoIP
msc {
	hscale=2;
	ms [label="MS"], bts [label="OsmoBTS\n1.1.1.1"], bsc[label="OsmoBSC"], mgcp[label="OsmoMGW@BSC\n3.3.3.3"], m_sc[label="MSC"], mgw_m[label="MGW@MSC\n5.5.5.5"];

	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 -> mgw_m	[label="Request allocation of local RTP port"];
	m_sc <- mgw_m	[label="Respond with RTP port the MGW bound to (5.5.5.5:4000)"];
	bsc <- m_sc 	[label="BSSAP ASSIGN REQ (3GPP AoIP, CN RTP IP/Port 5.5.5.5:4000)"];
	bts <- bsc 	[label="RSL CHAN ACT (TCH)"];
	bts -> bsc 	[label="RSL CHAN ACT ACK"];
	ms <-> bsc	[label="RR Assignment of TCH"];
	...;

	# connect BTS RTP with BSC-MGW RTP
	bts <- bsc	[label="IPA CRCX"];
	bts box bts	[label="Bind to BTS-local RTP Port (1.1.1.1:1000)"];
	bts -> bsc	[label="IPA CRCX ACK (1.1.1.1:1000)"];
	bsc -> mgcp	[label="MGCP CRCX rtpbridge/2@mgw (1.1.1.1:1000)"];
	mgcp box mgcp	[label="Bind to MGW-local RTP Port (3.3.3.3:2000)\nConnect to 1.1.1.1:1000"];
	bsc <- mgcp	[label="MGCP CRCX rtpbridge/2@mgw OK (3.3.3.3:2000)"];
	bts <- bsc	[label="IPA MDCX (3.3.3.3:2000)"];
	bts box bts	[label="Connect RTP socket to remote (MGW) RTP Port"];
	bts -> bsc	[label="IPA MDCX ACK"];
	bsc -> mgcp	[label="MGCP MDCX rtpbridge/2@mgw (optional)"];
	bsc <- mgcp	[label="MGCP MDCX rtpbridge/2@mgw OK (optional)"];
	...;

	mgcp <- bsc	[label="MGCP CRCX rtpbridge/2@mgw (5.5.5.5:4000)"];
	mgcp box mgcp	[label="Bind to MGW-local RTP Port (3.3.3.3:3000)\nConnect to 5.5.5.5:4000"];
	mgcp -> bsc	[label="MGCP CRCX rtpbridge/2@mgw OK (3.3.3.3:3000)"];
	...;

	bsc -> m_sc	[label="BSSAP ASSIGN CMPL (3GPP AoIP 3.3.3.3:3000)"];
	m_sc -> mgw_m	[label="Request MGW to connect RTP to remote endpoint 3.3.3.3:3000"];
	mgw_m box mgw_m [label="Connect RTP to 3.3.3.3:3000"];
	...;

	mgcp <=> mgw_m	[label="RTP Audio 3.3.3.3:3000 5.5.5.5:4000"];
	bts <=> mgcp	[label="RTP Audio 1.1.1.1:1000 3.3.3.3: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"];
	m_sc -> mgw_m	[label="Request release RTP port/termination"];
	mgw_m box mgw_m	[label="Release RTP port 5.5.5.5:4000"];
	bsc -> m_sc	[label="BSSMAP CLEAR COMPL"];
	bsc <- m_sc	[label="SCCP RLSD"];
	bsc -> m_sc	[label="SCCP RLC"];
	...;
	mgcp <- bsc	[label="MGCP DLCX rtpbridge/2@mgw"];
	mgcp box mgcp	[label="Release MSC-facing local RTP port (3.3.3.3:3000)"];
	mgcp -> bsc	[label="MGCP DLCX rtpbridge/2@mgw OK"];

	mgcp <- bsc	[label="MGCP DLCX rtpbridge/2@mgw"];
	mgcp box mgcp	[label="Release BTS-facing local RTP port (3.3.3.3:2000)"];
	mgcp -> bsc	[label="MGCP DLCX rtpbridge/2@mgw OK"];

	bts <- bsc	[label="IPA DLCX"];
	bts box bts	[label="Release BTS-local RTP port (1.1.1.1:1000)"];
	bts -> bsc	[label="IPA DLCX OK"];
}
