Half sided calls

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/OpenBSC@lists.osmocom.org/.

Max msuraev at sysmocom.de
Wed Apr 27 17:18:14 UTC 2016


Thanks for looking into this. Some comments are inline.

On 04/22/2016 01:40 PM, Pavel Balashov wrote:
> Hello!
> I can confirm a compatiblity issue with LibORTP >= 0.24.0.
>
> Here are some of my findings:
>
> In /osmo-bts/src/common/rsl.c in /rsl_rx_ipac_XXcx/ there is a call to
> libosmo-abis function:/osmo_rtp_socket_bind(lchan->abis_ip.rtp_socket,
> ipstr, -1)./ I assume, that last argument "-1" means that the random
> udp port should be selected for socket.
>
> in /libosmo-abis/src/trau/osmo-rtp.c in a function /int
> osmo_rtp_socket_bind(struct osmo_rtp_socket *rs, const char *ip, int
> port)/ there is a call to LibORTP
> /rtp_session_set_local_addr(rs->sess, ip, port, port+1)/. So as result
> this function calls rtp_session_set_local_addr with last arguments
> being equal to "-1" and "0".
> /
> /The LibORTP function///int rtp_session_set_local_addr (RtpSession *
> session, const char * addr, int rtp_port, int rtcp_port)/ has a
> folollowing description:/
> /**
>  *rtp_session_set_local_addr:
>  *@session:        a rtp session freshly created.
>  *@addr:        a local IP address in the xxx.xxx.xxx.xxx form.
>  *@rtp_port:        a local port or -1 to let oRTP choose the port
> randomly
>  *@rtcp_port:        a local port or -1 to let oRTP choose the port
> randomly
>  *
>   ...
> **/
>
> /So this results in calling////osmo_rtp_socket_bind/(...,-1) //->
> ///rtp_session_set_local_addr(...,-1,0) //what tries to bind rtp to
> random udp port and rtcp to 0th udp port, but not to random port./
> /I guess that rtcp socket is never created regardless of LibORTP
> version. (there are periodic osmo-ortp(): network_error osmo-bts log
> messages due to ICMP port unreachable messages received, besides those
> mentioned in https://osmocom.org/issues/1662). So I suppose the
> correct code should check port value and either calling
> /rtp_session_set_local_addr(rs->sess, ip, port, port+1) /if port >0 or
> else
> calling /rtp_session_set_local_addr(rs->sess, ip, port, port) /?
> /
> /

Your're right. I've fixed that in max/ortp branch. Not yet in master
because there seems to be more issues in play - I'm still unable to hear
audio with ortp 0.25. The RTCP is not that important for our use-case -
even if it fails (as indicated by ICMP messages) it should not affect
actual voice in RTP streams. Anyway, I'll keep digging :)

> //Also, after inspecting  sources of LibORTP it seems that the
> implementation//of /rtp_session_set_local_addr/ has changed for
> LibORTP >= 0.24.0/./ As I understand the functionality of selecting a
> random UDP port is broken.

What makes you think that? I can see random UDP ports selected by oRTP
just fine in my test setup. Do you see it in pcap trace?

> What results is one way audio.

Could you please share some more details on your test setup? Are you
calling between 2 phones connected to the same BTS? Or using echo test?
That 1-way audio you hear - which way does it come from?

-- 
Max Suraev <msuraev at sysmocom.de> http://www.sysmocom.de/
======================================================================= 
* sysmocom - systems for mobile communications GmbH
* Alt-Moabit 93 
* 10559 Berlin, Germany
* Sitz / Registered office: Berlin, HRB 134158 B 
* Geschaeftsfuehrer / Managing Directors: Holger Freyther, Harald Welte 




More information about the OpenBSC mailing list