https://projects.osmocom.org/https://projects.osmocom.org/favicon.ico?16647414092021-09-30T09:50:55ZOpen Source Mobile CommunicationsOsmoBTS - Bug #5242: A-bis/RSL: CRCX ACK indicates '0.0.0.0' as the local/bind addresshttps://projects.osmocom.org/issues/5242?journal_id=226092021-09-30T09:50:55Zfixeria
<ul></ul><p>Interestingly enough, osmo-bsc does not include <em>RSL_IE_IPAC_REMOTE</em>{IP,PORT}_ in its CRCX messages:</p>
<pre><code class="c syntaxhl"><span class="n">msgb_tv_put</span><span class="p">(</span><span class="n">msg</span><span class="p">,</span> <span class="n">RSL_IE_IPAC_SPEECH_MODE</span><span class="p">,</span> <span class="n">lchan</span><span class="o">-></span><span class="n">abis_ip</span><span class="p">.</span><span class="n">speech_mode</span><span class="p">);</span>
<span class="n">msgb_tv_put</span><span class="p">(</span><span class="n">msg</span><span class="p">,</span> <span class="n">RSL_IE_IPAC_RTP_PAYLOAD</span><span class="p">,</span> <span class="n">lchan</span><span class="o">-></span><span class="n">abis_ip</span><span class="p">.</span><span class="n">rtp_payload</span><span class="p">);</span>
</code></pre>
<p>however it does include them in the MDCX messages:</p>
<pre><code class="c syntaxhl"><span class="n">msgb_tv16_put</span><span class="p">(</span><span class="n">msg</span><span class="p">,</span> <span class="n">RSL_IE_IPAC_CONN_ID</span><span class="p">,</span> <span class="n">lchan</span><span class="o">-></span><span class="n">abis_ip</span><span class="p">.</span><span class="n">conn_id</span><span class="p">);</span>
<span class="n">msgb_v_put</span><span class="p">(</span><span class="n">msg</span><span class="p">,</span> <span class="n">RSL_IE_IPAC_REMOTE_IP</span><span class="p">);</span>
<span class="n">att_ip</span> <span class="o">=</span> <span class="p">(</span><span class="kt">uint32_t</span> <span class="o">*</span><span class="p">)</span><span class="n">msgb_put</span><span class="p">(</span><span class="n">msg</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="kt">uint32_t</span><span class="p">));</span>
<span class="o">*</span><span class="n">att_ip</span> <span class="o">=</span> <span class="n">htonl</span><span class="p">(</span><span class="n">dest_ip</span><span class="p">);</span>
<span class="n">msgb_tv16_put</span><span class="p">(</span><span class="n">msg</span><span class="p">,</span> <span class="n">RSL_IE_IPAC_REMOTE_PORT</span><span class="p">,</span> <span class="n">dest_port</span><span class="p">);</span>
<span class="n">msgb_tv_put</span><span class="p">(</span><span class="n">msg</span><span class="p">,</span> <span class="n">RSL_IE_IPAC_SPEECH_MODE</span><span class="p">,</span> <span class="n">lchan</span><span class="o">-></span><span class="n">abis_ip</span><span class="p">.</span><span class="n">speech_mode</span><span class="p">);</span>
<span class="n">msgb_tv_put</span><span class="p">(</span><span class="n">msg</span><span class="p">,</span> <span class="n">RSL_IE_IPAC_RTP_PAYLOAD</span><span class="p">,</span> <span class="n">lchan</span><span class="o">-></span><span class="n">abis_ip</span><span class="p">.</span><span class="n">rtp_payload</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="n">lchan</span><span class="o">-></span><span class="n">abis_ip</span><span class="p">.</span><span class="n">rtp_payload2</span><span class="p">)</span>
<span class="n">msgb_tv_put</span><span class="p">(</span><span class="n">msg</span><span class="p">,</span> <span class="n">RSL_IE_IPAC_RTP_PAYLOAD2</span><span class="p">,</span> <span class="n">lchan</span><span class="o">-></span><span class="n">abis_ip</span><span class="p">.</span><span class="n">rtp_payload2</span><span class="p">);</span>
</code></pre>
<p>While in the test cases we send everything in a single CRCX message.</p> OsmoBTS - Bug #5242: A-bis/RSL: CRCX ACK indicates '0.0.0.0' as the local/bind addresshttps://projects.osmocom.org/issues/5242?journal_id=226102021-09-30T10:16:07Zfixeria
<ul></ul><blockquote>
<p>Interestingly enough, osmo-bsc does not include RSL_IE_IPAC_REMOTE{IP,PORT}_ in its CRCX messages:</p>
</blockquote>
<p>And this causes osmo-bts to include bind address of the A-bis/RSL connection:</p>
<pre><code class="c syntaxhl"><span class="k">if</span> <span class="p">(</span><span class="n">connect_ip</span> <span class="o">&&</span> <span class="n">connect_port</span><span class="p">)</span> <span class="p">{</span>
<span class="cm">/* if CRCX specifies a remote IP, we can bind()
* here to 0.0.0.0 and wait for the connect()
* below, after which the kernel will have
* selected the local IP address. */</span>
<span class="n">ipstr</span> <span class="o">=</span> <span class="s">"0.0.0.0"</span><span class="p">;</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span> <span class="c1">// <-- (!) Taking this branch</span>
<span class="cm">/* if CRCX does not specify a remote IP, we will
* not do any connect() below, and thus the
* local socket will remain bound to 0.0.0.0 -
* which however we cannot legitimately report
* back to the BSC in the CRCX_ACK */</span>
<span class="n">ipstr</span> <span class="o">=</span> <span class="n">get_rsl_local_ip</span><span class="p">(</span><span class="n">lchan</span><span class="o">-></span><span class="n">ts</span><span class="o">-></span><span class="n">trx</span><span class="p">);</span>
<span class="p">}</span>
<span class="n">rc</span> <span class="o">=</span> <span class="n">bind_rtp</span><span class="p">(</span><span class="n">bts</span><span class="p">,</span> <span class="n">lchan</span><span class="o">-></span><span class="n">abis_ip</span><span class="p">.</span><span class="n">rtp_socket</span><span class="p">,</span> <span class="n">ipstr</span><span class="p">);</span>
</code></pre>
<p>So in the test cases we may simply omit both RSL_IE_IPAC_REMOTE{IP,PORT} and everything should work. However, I believe that including '0.0.0.0' is wrong and we need to do something about that. <a class="user active" href="https://projects.osmocom.org/users/7">laforge</a> any ideas/proposals?</p> OsmoBTS - Bug #5242: A-bis/RSL: CRCX ACK indicates '0.0.0.0' as the local/bind addresshttps://projects.osmocom.org/issues/5242?journal_id=226112021-09-30T10:16:23Zfixeria
<ul><li><strong>Status</strong> changed from <i>New</i> to <i>Feedback</i></li><li><strong>Assignee</strong> set to <i>fixeria</i></li></ul> OsmoBTS - Bug #5242: A-bis/RSL: CRCX ACK indicates '0.0.0.0' as the local/bind addresshttps://projects.osmocom.org/issues/5242?journal_id=226632021-10-11T11:21:32Zpespin
<ul></ul><p>Upon CRCX it is fine for the BSC to set "0.0.0.0" as the destination IP address (BSC-local address), which has the meaning "use same IP address as RSL connection".</p>
<p>Receiving "0.0.0.0" as Source Address (BTS-local address) should be understood by the BSC as not receiving any address imho.</p> OsmoBTS - Bug #5242: A-bis/RSL: CRCX ACK indicates '0.0.0.0' as the local/bind addresshttps://projects.osmocom.org/issues/5242?journal_id=240252022-05-01T13:15:43Zfixeria
<ul><li><strong>Status</strong> changed from <i>Feedback</i> to <i>Stalled</i></li></ul><p>I worked around the problem in <code>BTS_Tests.TC_speech_rtp_tch[fh]</code>:</p>
<p><a class="external" href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/27993">https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/27993</a> library/RSL_Types: alow omitting IEs in ts_RSL_IPA_CRCX [NEW]<br /><a class="external" href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/27994">https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/27994</a> BTS_Tests: workaround addr='0.0.0.0' in f_rtpem_activate() [NEW]</p>
<p>and created a separate test case reproducing what's described in this ticket:</p>
<p><a class="external" href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/27995">https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/27995</a> BTS_Tests: add TC_ipa_crcx_ack_addr reproducing OS#5242 [NEW]</p>