<p>pespin has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-mgw/+/14681">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">doc: Document X-Osmux extension<br><br>Change-Id: Ie53f98777070fc00ed085646f698d20f8cf49553<br>---<br>M doc/manuals/chapters/mgcp_extensions.adoc<br>1 file changed, 115 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-mgw refs/changes/81/14681/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/doc/manuals/chapters/mgcp_extensions.adoc b/doc/manuals/chapters/mgcp_extensions.adoc</span><br><span>index a68d785..32a3f0e 100644</span><br><span>--- a/doc/manuals/chapters/mgcp_extensions.adoc</span><br><span>+++ b/doc/manuals/chapters/mgcp_extensions.adoc</span><br><span>@@ -66,3 +66,118 @@</span><br><span> a=rtpmap:97 GSM-EFR/8000</span><br><span> a=ptime:40</span><br><span> ----</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+=== `X-Osmux`</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+`X-Osmux` indicates to OsmoMGW that a given connection of an `rtpbridge`</span><br><span style="color: hsl(120, 100%, 40%);">+endpoint has to be configured in order to handle Osmux frames instead of RTP</span><br><span style="color: hsl(120, 100%, 40%);">+messages on the data plane.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+==== `X-Osmux` Format</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+The value part of `X-Osmux` must be one integer in range [0..255], or</span><br><span style="color: hsl(120, 100%, 40%);">+alternatively only on request messages, an asterisk (*) if the value is not yet</span><br><span style="color: hsl(120, 100%, 40%);">+known.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+`X-Osmux` must be issued in the MGCP header section (typically as its last</span><br><span style="color: hsl(120, 100%, 40%);">+item), before the SDP section starts.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+`X-Osmux` can be included inside `CRCX` and `MDCX` request messages, as well as</span><br><span style="color: hsl(120, 100%, 40%);">+their respective response messages.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+In request messages, the value part of `X-Osmux` specifies the CID to be used by</span><br><span style="color: hsl(120, 100%, 40%);">+OsmoMGW to <<send>> Osmux frames to the remote peer for that connection, also</span><br><span style="color: hsl(120, 100%, 40%);">+known as <<sendCID>>.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+In response messages, the value part of `X-Osmux` specifies the CID where</span><br><span style="color: hsl(120, 100%, 40%);">+OsmoMGW expect to <<receive>> Osmux frames from the remote peer for that</span><br><span style="color: hsl(120, 100%, 40%);">+connection, also known as <<recvCID>>.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+.Example: `X-Osmux` format with a known CID 3.</span><br><span style="color: hsl(120, 100%, 40%);">+----</span><br><span style="color: hsl(120, 100%, 40%);">+X-Osmux: 3</span><br><span style="color: hsl(120, 100%, 40%);">+----</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+.Example: `X-Osmux` format with a wildcard (not yet known) CID.</span><br><span style="color: hsl(120, 100%, 40%);">+----</span><br><span style="color: hsl(120, 100%, 40%);">+X-Osmux: *</span><br><span style="color: hsl(120, 100%, 40%);">+----</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+==== `X-Osmux` Considerations</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+If the MGCP client is willing to use Osmux for a given connection, it shall</span><br><span style="color: hsl(120, 100%, 40%);">+specify so during `CRCX` time, and not later. If at `CRCX` time the MGCP client</span><br><span style="color: hsl(120, 100%, 40%);">+doesn't yet know the <<sendCID>>, it can use an astersik (*) and provide</span><br><span style="color: hsl(120, 100%, 40%);">+<<sendCID>> later within `MDCX` messages.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+All subsequent `MDCX` messages sent towards an Osmux connection must contain the</span><br><span style="color: hsl(120, 100%, 40%);">+original <<sendCID>> sent during `CRCX`. The same way, all `MDCX` response shall</span><br><span style="color: hsl(120, 100%, 40%);">+contain the <<recvCID>> sent during `CRCX`.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+The other required connection address parameters, such as IP address, port, and</span><br><span style="color: hsl(120, 100%, 40%);">+codecs, are negotiated through MGCP and SDP as usual, but in this case the IP</span><br><span style="color: hsl(120, 100%, 40%);">+address and port specific the Osmux socket IP address and port to use, that</span><br><span style="color: hsl(120, 100%, 40%);">+together with the Osmux CID conform the entire tuple identifying a Osmux stream.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+Since Osmux only supports AMR codec payloads, the SDP must specify use of AMR</span><br><span style="color: hsl(120, 100%, 40%);">+codec.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+.Example: `CRCX` message that instructs OsmoMGW to create an Osmux connection</span><br><span style="color: hsl(120, 100%, 40%);">+----</span><br><span style="color: hsl(120, 100%, 40%);">+CRCX 189 rtpbridge/1@mgw MGCP 1.0</span><br><span style="color: hsl(120, 100%, 40%);">+C: 36</span><br><span style="color: hsl(120, 100%, 40%);">+M: sendrecv</span><br><span style="color: hsl(120, 100%, 40%);">+X-Osmux: 2</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+v=0</span><br><span style="color: hsl(120, 100%, 40%);">+o=- 36 23 IN IP4 172.18.2.20</span><br><span style="color: hsl(120, 100%, 40%);">+s=-</span><br><span style="color: hsl(120, 100%, 40%);">+c=IN IP4 1.2.3.4</span><br><span style="color: hsl(120, 100%, 40%);">+t=0 0</span><br><span style="color: hsl(120, 100%, 40%);">+m=audio 2342 RTP/AVP 112</span><br><span style="color: hsl(120, 100%, 40%);">+a=fmtp:112</span><br><span style="color: hsl(120, 100%, 40%);">+a=rtpmap:112 AMR/8000/1</span><br><span style="color: hsl(120, 100%, 40%);">+a=ptime:20</span><br><span style="color: hsl(120, 100%, 40%);">+----</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+.Example: response to `CRCX` containing the <<recvCID>></span><br><span style="color: hsl(120, 100%, 40%);">+----</span><br><span style="color: hsl(120, 100%, 40%);">+200 189 OK</span><br><span style="color: hsl(120, 100%, 40%);">+I: 07E41584</span><br><span style="color: hsl(120, 100%, 40%);">+X-Osmux: 2</span><br><span style="color: hsl(120, 100%, 40%);">+Z: rtpbridge/1@mgw</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+v=0</span><br><span style="color: hsl(120, 100%, 40%);">+o=- foo 21 IN IP4 172.18.1.20</span><br><span style="color: hsl(120, 100%, 40%);">+s=-</span><br><span style="color: hsl(120, 100%, 40%);">+c=IN IP4 172.18.1.20</span><br><span style="color: hsl(120, 100%, 40%);">+t=0 0</span><br><span style="color: hsl(120, 100%, 40%);">+m=audio 11002 RTP/AVP 112</span><br><span style="color: hsl(120, 100%, 40%);">+a=rtpmap:112 AMR/8000</span><br><span style="color: hsl(120, 100%, 40%);">+a=ptime:20</span><br><span style="color: hsl(120, 100%, 40%);">+----</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+==== `X-Osmux` Support</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+`X-Osmux` is known to be supported by OsmoMGW on the MGCP server side, and by</span><br><span style="color: hsl(120, 100%, 40%);">+OsmoBSC as well as OsmoMSC on the MGCP client side (through libosmo-mgcp-cli).</span><br><span style="color: hsl(120, 100%, 40%);">+No other programs supporting this feature are known or envisioned at the time of</span><br><span style="color: hsl(120, 100%, 40%);">+writing this document.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+In OmoMGW, Osmux support is managed through VTY.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+.Example: Sample config file section with Osmux configuation</span><br><span style="color: hsl(120, 100%, 40%);">+----</span><br><span style="color: hsl(120, 100%, 40%);">+mgcp</span><br><span style="color: hsl(120, 100%, 40%);">+ ...</span><br><span style="color: hsl(120, 100%, 40%);">+ osmux on <1></span><br><span style="color: hsl(120, 100%, 40%);">+ osmux bind-ip 172.18.1.20 <2></span><br><span style="color: hsl(120, 100%, 40%);">+ osmux port 1984 <3></span><br><span style="color: hsl(120, 100%, 40%);">+ osmux batch-factor 4 <4></span><br><span style="color: hsl(120, 100%, 40%);">+ osmux dummy on <5></span><br><span style="color: hsl(120, 100%, 40%);">+----</span><br><span style="color: hsl(120, 100%, 40%);">+<1> Allow clients to set allocate Osmux connections in `rtpbridge` endpoints, while still allowing RTP connections</span><br><span style="color: hsl(120, 100%, 40%);">+<2> Bind the Osmux socket to the provided IP address</span><br><span style="color: hsl(120, 100%, 40%);">+<3> Bind the Osmux socket to the provided UDP port</span><br><span style="color: hsl(120, 100%, 40%);">+<4> Batch up to 4 RTP payloads of the same stream on each Osmux frame</span><br><span style="color: hsl(120, 100%, 40%);">+<5> Periodically send Osmux dummy frames, useful to punch a hole in NATs and maintain connections opened.</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-mgw/+/14681">change 14681</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-mgw/+/14681"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-mgw </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Ie53f98777070fc00ed085646f698d20f8cf49553 </div>
<div style="display:none"> Gerrit-Change-Number: 14681 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>