From d5b6a78b9f38c07ce231e195b9bce627e74b160d Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Mon, 26 Mar 2018 23:02:26 +0200 Subject: message sequence charts for GSM <-> SIP codec selection Those diagrams represent the current design of the way how GSM <-> SIP codec selection should work in the future. Related: OS#1683 Change-Id: If92379b41d859bdf7be4b7689dc0bbca7cb6e682 --- common/chapters/msc_mncc_mo_sip_mgcp.msc | 68 +++++++++++++++++++++++ common/chapters/msc_mncc_mo_sip_rel18x_mgcp.msc | 72 +++++++++++++++++++++++++ common/chapters/msc_mncc_mt_sip_mgcp.msc | 71 ++++++++++++++++++++++++ 3 files changed, 211 insertions(+) create mode 100644 common/chapters/msc_mncc_mo_sip_mgcp.msc create mode 100644 common/chapters/msc_mncc_mo_sip_rel18x_mgcp.msc create mode 100644 common/chapters/msc_mncc_mt_sip_mgcp.msc diff --git a/common/chapters/msc_mncc_mo_sip_mgcp.msc b/common/chapters/msc_mncc_mo_sip_mgcp.msc new file mode 100644 index 0000000..ab904be --- /dev/null +++ b/common/chapters/msc_mncc_mo_sip_mgcp.msc @@ -0,0 +1,68 @@ +msc { + hscale="3"; + ms [label="MS"], bsc [label="BSC"], mgw [label="MGW@MSC"], omsc [label="OsmoMSC"], osc [label="OsmoSIPcon"], sip [label="External SIP World"]; + |||; + ... [label="Mobile Originated call handled via osmo-sip-conector, OsmoMSC, OsmoMGW: No reliable 18x"]; + |||; + + ms <-> bsc [label="RR Establishment"]; + ms <-> omsc [label="MM Procedures (Auth/Ciph/...)"]; + ...; + + ms -> omsc [label="CC SETUP (called, bearer_cap)"]; + omsc -> osc [label="MNCC_SETUP_IND (calling, called, bearer_cap)"]; + osc box osc [label="bearer_cap -> SDP"]; + osc -> sip [label="SIP INVITE (from, to, SDP)"]; + osc <- sip [label="SIP 100 Trying (NO rel100)"]; + omsc <- osc [label="MNCC_CALL_PROC_REQ"]; + ms <- omsc [label="CC CALL PROCEEDING"]; + ...; + + sip box sip [label="SIP UA starts ringing"]; + osc <- sip [label="SIP 180 Ringing (NO SDP)"]; + omsc <- osc [label="MNCC_ALERT_REQ"]; + ms <- omsc [label="CC ALERTING"]; + + omsc box omsc [label="generate BSSMAP codec list from\n(without knowing SIP/SDP)"]; + bsc <- omsc [label="BSSMAP ASSIGNMENT REQ"]; + ms <-> bsc [label="RR ASSIGNMENT or RR MODE MODIFY"]; + bsc -> omsc [label="BSSMAP ASSIGNMENT COMPL"]; + omsc box omsc [label="determine chosen codec from\nBSSMAP Assignment"]; + mgw <- omsc [label="MGCP CRCX (RAN-side, chosen codec)"]; + mgw -> omsc [label="MGCP CRCX OK (RAN-side)"]; + + sip box sip [label="User accepts call"]; + osc <- sip [label="SIP 200 OK (SDP, finally)"]; + omsc <- osc [label="MNCC_SETUP_RSP"]; + ms <- omsc [label="CC CONNECT"]; + omsc <- osc [label="MNCC_RTP_CONNECT"]; + + omsc <- osc [label="MNCC_RTP_CREATE.req (SDP from SIP)"]; + mgw <- omsc [label="MGCP CRCX (EXT-side)"]; + mgw box mgw [label="If there is a common codec between RAN and CN, use that\nElse: Configure Transcoding in MGW"]; + mgw -> omsc [label="MGCP CRCX OK (EXT-side)"]; + omsc -> osc [label="MNCC_RTP_CREATE.resp (CN side IP/Port)"]; + mgw <- omsc [label="MGCP MDCX (sendrecv)"]; + mgw -> omsc [label="MGCP MDCX OK"]; + ms -> omsc [label="CC CONNECT ACK"]; + omsc -> osc [label="MNCC_SETUP_COMPL_IND"]; + osc -> sip [label="SIP ACK"]; + ...; + ms box ms [label="MO user releases call"]; + ms -> omsc [label="CC DISCONNECT"]; + omsc -> osc [label="MNCC_DISC_IND"]; + osc -> sip [label="SIP BYE"]; + osc <- sip [label="SIP 200 OK"]; + omsc <- osc [label="MNCC_REL_REQ"]; + ms <- omsc [label="CC RELEASE COMMAND"]; + ms -> omsc [label="CC REELASE COMPLETE"]; + omsc -> osc [label="MNCC_REL_CNF"]; + mgw <- omsc [label="MGCP DLCX (all connections on EP)"]; + mgw -> omsc [label="MGCP DLCX OK"]; + bsc <- omsc [label="BSSMAP CLEAR CMD"]; + ms <-> bsc [label="RR Disconnect"]; + bsc -> omsc [label="BSSMAP CLEAR CMPL"]; + +} + + diff --git a/common/chapters/msc_mncc_mo_sip_rel18x_mgcp.msc b/common/chapters/msc_mncc_mo_sip_rel18x_mgcp.msc new file mode 100644 index 0000000..cd12aa5 --- /dev/null +++ b/common/chapters/msc_mncc_mo_sip_rel18x_mgcp.msc @@ -0,0 +1,72 @@ +msc { + hscale="3"; + ms [label="MS"], bsc [label="BSC"], mgw [label="MGW@MSC"], omsc [label="OsmoMSC"], osc [label="OsmoSIPcon"], sip [label="External SIP World"]; + |||; + ... [label="Mobile Originated call handled via osmo-sip-conector, OsmoMSC, OsmoMGW: Reliable 18x"]; + |||; + + ms <-> bsc [label="RR Establishment"]; + ms <-> omsc [label="MM Procedures (Auth/Ciph/...)"]; + ...; + + ms -> omsc [label="CC SETUP (called, bearer_cap)"]; + omsc -> osc [label="MNCC_SETUP_IND (calling, called, bearer_cap)"]; + osc box osc [label="bearer_cap -> SDP"]; + osc -> sip [label="SIP INVITE (from, to, SDP)"]; + osc <- sip [label="SIP 100 Trying (rel100)"]; + omsc <- osc [label="MNCC_CALL_PROC_REQ"]; + ms <- omsc [label="CC CALL PROCEEDING"]; + ...; + + sip box sip [label="SIP UA starts ringing"]; + osc <- sip [label="SIP 180 Ringing (SDP)"]; + osc box osc [label="bearer_cap <- SDP"]; + omsc <- osc [label="MNCC_ALERT_REQ"]; + ms <- omsc [label="CC ALERTING"]; + osc -> sip [label="SIP PRACK (180 Ringing)"]; + osc <- sip [label="SIP 200 (PRACK)"]; + + omsc box omsc [label="generate BSSMAP codec list from\nSIP-negotiated bearer_cap"]; + bsc <- omsc [label="BSSMAP ASSIGNMENT REQ"]; + ms <-> bsc [label="RR ASSIGNMENT or RR MODE MODIFY"]; + bsc -> omsc [label="BSSMAP ASSIGNMENT COMPL"]; + omsc box omsc [label="determine chosen codec from\nBSSMAP Assignment"]; + mgw <- omsc [label="MGCP CRCX (RAN-side, chosen codec)"]; + mgw -> omsc [label="MGCP CRCX OK (RAN-side)"]; + + omsc <- osc [label="MNCC_RTP_CREATE.req (SDP from SIP)"]; + mgw <- omsc [label="MGCP CRCX (EXT-side)"]; + mgw box mgw [label="If there is a common codec between RAN and CN, use that\nElse: Configure Transcoding in MGW"]; + mgw -> omsc [label="MGCP CRCX OK (EXT-side)"]; + omsc -> osc [label="MNCC_RTP_CREATE.resp (CN side IP/Port)"]; + ...; + + sip box sip [label="User accepts call"]; + osc <- sip [label="SIP 200 OK (INVITE)"]; + omsc <- osc [label="MNCC_SETUP_RSP"]; + ms <- omsc [label="CC CONNECT"]; + omsc <- osc [label="MNCC_RTP_CONNECT"]; + mgw <- omsc [label="MGCP MDCX (sendrecv)"]; + mgw -> omsc [label="MGCP MDCX OK"]; + ms -> omsc [label="CC CONNECT ACK"]; + omsc -> osc [label="MNCC_SETUP_COMPL_IND"]; + osc -> sip [label="SIP ACK"]; + ...; + ms box ms [label="MO user releases call"]; + ms -> omsc [label="CC DISCONNECT"]; + omsc -> osc [label="MNCC_DISC_IND"]; + osc -> sip [label="SIP BYE"]; + osc <- sip [label="SIP 200 OK"]; + omsc <- osc [label="MNCC_REL_REQ"]; + ms <- omsc [label="CC RELEASE COMMAND"]; + ms -> omsc [label="CC REELASE COMPLETE"]; + omsc -> osc [label="MNCC_REL_CNF"]; + mgw <- omsc [label="MGCP DLCX (all connections on EP)"]; + mgw -> omsc [label="MGCP DLCX OK"]; + bsc <- omsc [label="BSSMAP CLEAR CMD"]; + ms <-> bsc [label="RR Disconnect"]; + bsc -> omsc [label="BSSMAP CLEAR CMPL"]; + +} + + diff --git a/common/chapters/msc_mncc_mt_sip_mgcp.msc b/common/chapters/msc_mncc_mt_sip_mgcp.msc new file mode 100644 index 0000000..003ec64 --- /dev/null +++ b/common/chapters/msc_mncc_mt_sip_mgcp.msc @@ -0,0 +1,71 @@ +msc { + hscale="3"; + ms [label="MS"], bsc [label="BSC"], mgw [label="MGW@MSC"], omsc [label="OsmoMSC"], osc [label="OsmoSIPcon"], sip [label="External SIP World"]; + |||; + ... [label="Mobile Terminated call handled via osmo-sip-conector, OsmoMSC, OsmoMGW"]; + |||; + + sip box sip [label="Somebody in SIP world dials a\nGSM subscriber"]; + osc <- sip [label="SIP INVITE (from, to, SDP)"]; + osc box osc [label="SDP -> bearer_capabilities"]; + omsc <- osc [label="MNCC_SETUP_REQ (calling, called, bearer_cap)"]; + osc -> sip [label="SIP 100 Trying"]; + bsc <- omsc [label="BSSMAP PAGING"]; + ms <- bsc [label="RR PAGING"]; + ms <-> bsc [label="RR Establishment"]; + ms <-> omsc [label="MM Procedures (Auth/Ciph/...)"]; + ...; + ms <- omsc [label="CC SETUP (calling, bearer_cap)"]; + ms -> omsc [label="CC CALL CONFIRMED (bearer_cap)"]; + omsc box omsc [label="generate BSSMAP codec list from\nMS-negotiated bearer_cap"]; + bsc <- omsc [label="BSSMAP ASSIGNMENT REQ"]; + ms <-> bsc [label="RR ASSIGNMENT or RR MODE MODIFY"]; + bsc -> omsc [label="BSSMAP ASSIGNMENT COMPL"]; + omsc box omsc [label="determine chosen codec from\nBSSMAP Assignment"]; + mgw <- omsc [label="MGCP CRCX (RAN-side, chosen codec)"]; + mgw -> omsc [label="MGCP CRCX OK (RAN-side)"]; + omsc -> osc [label="MNCC_CALL_CONF_IND"]; + + omsc <- osc [label="MNCC_RTP_CREATE.req"]; + mgw <- omsc [label="MGCP CRCX (EXT-side)"]; + mgw box mgw [label="If there is a common codec between RAN and CN, use that\nElse: Configure Transcoding in MGW"]; + mgw -> omsc [label="MGCP CRCX OK (EXT-side)"]; + omsc -> osc [label="MNCC_RTP_CREATE.resp (CN side IP/Port)"]; + ...; + ms box ms [label="MS starts ringing"]; + ms -> omsc [label="CC ALERTING"]; + omsc -> osc [label="MNCC_ALERT_IND"]; + osc -> sip [label="SIP 180 Ringing (SDP w/chosen codec?)"]; + ...; + ...; + ms box ms [label="MT user accepts call"]; + ms -> omsc [label="CC CONNECT"]; + omsc -> osc [label="MNCC_SETUP_CNF"]; + osc -> sip [label="SIP 200 OK (SDP w/chossen codec)"]; + osc <- sip [label="SIP ACK"]; + omsc <- osc [label="MNCC_RTP_CONNECT"]; + mgw <- omsc [label="MGCP MDCX (MNCC-side, sendrecv)"]; + mgw -> omsc [label="MGCP MDCX OK"]; + omsc <- osc [label="MNCC_SETUP_COMPL_REQ"]; + ms <- omsc [label="CC CONNECT ACK"]; + mgw <- omsc [label="MGCP MDCX (RAN-side, sendrecv)"]; + mgw -> omsc [label="MGCP MDCX OK"]; + ...; + ms box ms [label="MT user releases call"]; + ms -> omsc [label="CC DISCONNECT"]; + omsc -> osc [label="MNCC_DISC_IND"]; + osc -> sip [label="SIP BYE"]; + osc <- sip [label="SIP 200 OK"]; + omsc <- osc [label="MNCC_REL_REQ"]; + ms <- omsc [label="CC RELEASE COMMAND"]; + ms -> omsc [label="CC REELASE COMPLETE"]; + omsc -> osc [label="MNCC_REL_CNF"]; + mgw <- omsc [label="MGCP DLCX (all connections on EP)"]; + mgw -> omsc [label="MGCP DLCX OK"]; + bsc <- omsc [label="BSSMAP CLEAR CMD"]; + ms <-> bsc [label="RR Disconnect"]; + bsc -> omsc [label="BSSMAP CLEAR CMPL"]; + +} + + -- cgit v1.2.3