pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-gsm-manuals/+/29353 )
Change subject: osmux: Use local/remote CID terminology ......................................................................
osmux: Use local/remote CID terminology
This terminology is much more common and used in other protocols, like PFCP.
Related: SYS#5987 Change-Id: Ia5eb833c296c504555f273a7fc3af5d746af19c0 --- M common/chapters/osmux/mgcp_extension_osmux.adoc M common/chapters/osmux/mo_call_osmux_aoip.msc M common/chapters/osmux/mo_call_osmux_sccplite.msc M common/chapters/osmux/mo_call_osmux_sccplite_nat.msc M common/chapters/osmux/osmux.adoc 5 files changed, 20 insertions(+), 20 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-gsm-manuals refs/changes/53/29353/1
diff --git a/common/chapters/osmux/mgcp_extension_osmux.adoc b/common/chapters/osmux/mgcp_extension_osmux.adoc index e2b0947..59c1dcf 100644 --- a/common/chapters/osmux/mgcp_extension_osmux.adoc +++ b/common/chapters/osmux/mgcp_extension_osmux.adoc @@ -19,11 +19,11 @@
In request messages, the value part of `X-Osmux` specifies the CID to be used by OsmoMGW to _send_ Osmux frames to the remote peer for that connection, also -known as _sendCID_. +known as the MGW's _remote CID_ or the peer's _local CID_.
In response messages, the value part of `X-Osmux` specifies the CID where OsmoMGW expect to _receive_ Osmux frames from the remote peer for that -connection, also known as _recvCID_. +connection, also known as the MGW's _local CID_ or the peer's _remote CID_.
.Example: `X-Osmux` format with a known CID 3. ---- @@ -39,12 +39,12 @@
If the MGCP client is willing to use Osmux for a given connection, it shall specify so during `CRCX` time, and not later. If at `CRCX` time the MGCP client -doesn't yet know the _sendCID_, it can use an astersik (*) and provide -_sendCID_ later within `MDCX` messages. +doesn't yet know the MGW's _remote CID_, it can use an astersik (*) and provide +_remote CID_ later within `MDCX` messages.
All subsequent `MDCX` messages sent towards an Osmux connection must contain the -original _sendCID_ sent during `CRCX`. The same way, all `MDCX` response shall -contain the _recvCID_ sent during `CRCX`. +original _remote CID_ sent during `CRCX`. The same way, all `MDCX` response shall +contain the _local CID_ sent during `CRCX`.
The other required connection address parameters, such as IP address, port, and codecs, are negotiated through MGCP and SDP as usual, but in this case the IP @@ -72,7 +72,7 @@ a=ptime:20 ----
-.Example: response to `CRCX` containing the <<recvCID>> +.Example: response to `CRCX` containing the MGW's <<remote CID>> ---- 200 189 OK I: 07E41584 diff --git a/common/chapters/osmux/mo_call_osmux_aoip.msc b/common/chapters/osmux/mo_call_osmux_aoip.msc index 9cb2e50..27e79ba 100644 --- a/common/chapters/osmux/mo_call_osmux_aoip.msc +++ b/common/chapters/osmux/mo_call_osmux_aoip.msc @@ -14,7 +14,7 @@
# Allocate MGW/MSC Osmux endpoint m_sc -> mgw_msc [label="MGCP CRCX rtpbridge/*@mgw, X-Osmux: *"]; - mgw_msc box mgw_msc [label="Bind to MGW-local Osmux Port (1984)\nAllocate new endpoint 1, recvCID 5"]; + mgw_msc box mgw_msc [label="Bind to MGW-local Osmux Port (1984)\nAllocate new endpoint 1, MGW's local CID 5"]; mgw_msc -> m_sc [label="MGCP CRCX rtpbridge/1@mgw OK (MGW:1984, X-Osmux: 5)"];
bsc <- m_sc [label="BSSAP ASSGN REQ (3GPP AoIP, extension IE: Osmux CID 5)"]; @@ -37,7 +37,7 @@ ...;
mgw_bsc <- bsc [label="MGCP CRCX rtpbridge/2@mgw (MSC:1984, X-Osmux: 5)"]; - mgw_bsc box mgw_bsc [label="Bind to MGW-local Osmux Port (1985)\nConnect to MSC:1984\nAllocate new recvCID 7"]; + mgw_bsc box mgw_bsc [label="Bind to MGW-local Osmux Port (1985)\nConnect to MSC:1984\nAllocate new MGW's local CID 7"]; mgw_bsc -> bsc [label="MGCP CRCX rtpbridge/2@mgw OK (MGW:1985, X-Osmux: 7)"]; ...;
diff --git a/common/chapters/osmux/mo_call_osmux_sccplite.msc b/common/chapters/osmux/mo_call_osmux_sccplite.msc index 903da46..037805b 100644 --- a/common/chapters/osmux/mo_call_osmux_sccplite.msc +++ b/common/chapters/osmux/mo_call_osmux_sccplite.msc @@ -12,7 +12,7 @@
# Allocate MGW/MSC Osmux endpoint m_sc -> mgw_msc [label="MGCP CRCX *@mgw, X-Osmux: *"]; - mgw_msc box mgw_msc [label="Bind to MGW-local Osmux Port (1984)\nAllocate new endpoint 1, recvCID 5"]; + mgw_msc box mgw_msc [label="Bind to MGW-local Osmux Port (1984)\nAllocate new endpoint 1, MGW's local CID 5"]; mgw_msc -> m_sc [label="MGCP CRCX rtpbridge/1@mgw OK (MGW:1984, X-Osmux: 5)"];
bsc <- m_sc [label="BSSAP ASSGN REQ (CIC:1)"]; @@ -39,7 +39,7 @@
# MSC configures BSC-MGW MSC-side of the endpoint through MGCP UDP forwarding mgw_bsc <- m_sc [label="MGCP CRCX 1@mgw (MSC:1984, X-Osmux: 5)"]; - mgw_bsc box mgw_bsc [label="Bind to BTS-local Osmux Port (1985)\nAllocate new recvCID 7"]; + mgw_bsc box mgw_bsc [label="Bind to BTS-local Osmux Port (1985)\nAllocate new MGW's local CID 7"]; mgw_bsc -> m_sc [label="MGCP CRCX 1@mgw OK (MGW:1985, X-Osmux: 7)"]; mgw_bsc <- m_sc [label="MGCP MDCX 1@mgw (recvonly) "]; mgw_bsc box mgw_bsc [label="Connect Osmux socket to remote (MSC) Osmux Port"]; diff --git a/common/chapters/osmux/mo_call_osmux_sccplite_nat.msc b/common/chapters/osmux/mo_call_osmux_sccplite_nat.msc index 2aa8105..d309ebb 100644 --- a/common/chapters/osmux/mo_call_osmux_sccplite_nat.msc +++ b/common/chapters/osmux/mo_call_osmux_sccplite_nat.msc @@ -18,7 +18,7 @@
# NAT: MGW/MSC Osmux endpoint #bscnat -> bscnat [label="MGCP CRCX *@mgw, X-Osmux: *"]; - mgw_msc box mgw_msc [label="Bind to MGW-local Osmux Port (1984)\nAllocate new endpoint 2, recvCID 5"]; + mgw_msc box mgw_msc [label="Bind to MGW-local Osmux Port (1984)\nAllocate new endpoint 2, MGW's local CID 5"]; #mgw_msc -> m_sc [label="MGCP CRCX rtpbridge/1@mgw OK (MGW:1984, X-Osmux: 5)"]; bsc <- bscnat [label="BSSAP ASSGN REQ (CIC:2)"];
@@ -48,7 +48,7 @@
# MSC configures BSC-MGW MSC-side of the endpoint through MGCP UDP forwarding bscnat <- m_sc [label="MGCP CRCX 1@mgw (MSC:3000)"]; - bscnat box bscnat [label="Allocate new endpoint 2\nAllocate new recvCID 5\nBind to local Osmux Port (1984)\nBind to local RTP port 4000"]; + bscnat box bscnat [label="Allocate new endpoint 2\nAllocate new MGW's local CID 5\nBind to local Osmux Port (1984)\nBind to local RTP port 4000"]; mgw_bsc <- bscnat [label="MGCP CRCX 2@mgw (MSC:1984, X-Osmux: 5)"]; mgw_bsc -> bscnat [label="MGCP CRCX 2@mgw OK (MGW:1985, X-Osmux: 7)"]; bscnat -> m_sc [label="MGCP CRCX 1@mgw OK (MGW:4000)"]; diff --git a/common/chapters/osmux/osmux.adoc b/common/chapters/osmux/osmux.adoc index 5e53b60..68d628f 100644 --- a/common/chapters/osmux/osmux.adoc +++ b/common/chapters/osmux/osmux.adoc @@ -50,13 +50,13 @@
=== CID allocation
-Each peer (BSC/MGW and MSC/MGW) allocates its own _recvCID_, and receives from -the peer through the used GSM protocol the peer's _recvCID_, which becomes -the local _sendCID_ for that connection. +Each peer (BSC/MGW and MSC/MGW) allocates its own _local CID_, and receives from +the peer through the used GSM protocol a _remote CID_ (aka the peer's _local +CID_), which is then used to send Osmux frames the local for that connection.
---- -BSC/MGW(recvCID=Y,sendCID=?)<-X--MSC/MGW(recvCID=X,sendCID=?) -BSC/MGW(recvCID=Y,sendCID=X)--Y->MSC/MGW(recvCID=X,sendCID=Y) +BSC/MGW(localCID=Y,remoteCID=?)<-X--MSC/MGW(localCID=X,remoteCID=?) +BSC/MGW(localCID=Y,remoteCID=X)--Y->MSC/MGW(localCID=X,remoteCID=Y) ----
This way each peer is responsible for allocating and managing their own local @@ -75,13 +75,13 @@ BSC. Each of the peers could actually have more than one Osmux socket towards the other peer, by using a pool of ports or IP addresses, so there's really not limit if required as long as there's a way to infer the initially negotiated -`<srcIP, srcPort, dstIP, dstPort, sendCID>` tuple from the received audio +`<srcIP, srcPort, dstIP, dstPort, remoteCID>` tuple from the received audio packets.
However, due to some constrains from in between NATs explained in section above, BSC/MGW IP address and port are not a priory known, and could change between different connections coming from it. As a result, it is difficult to infer the -entire tuple, so for now MGW needs to allocate its Osmux _recvCID_ in a clever +entire tuple, so for now MGW needs to allocate its Osmux _local CID_ in a clever way, in order to be able to identify the full tuple from it.
Hence, currently OsmoMGW CID allocation implementation shares CID between all