[asterisk-bugs] [JIRA] (ASTERISK-27989) Asterisk sources RTP from wrong IPv6 address

Isaac McDonald (JIRA) noreply at issues.asterisk.org
Wed Aug 15 11:50:54 CDT 2018


    [ https://issues.asterisk.org/jira/browse/ASTERISK-27989?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=244509#comment-244509 ] 

Isaac McDonald commented on ASTERISK-27989:
-------------------------------------------

Asterisk is putting an IPV6 address in SDP and then relying on the underlying OS to pick the IPv6 source address for RTP which may or may not be the address it put in SDP. Is this expected behavior for ICE?

The end result is that an IPV6 endpoint is expecting RTP to come from the IPv6 address Asterisk put in the SDP, not whatever IPv6 address the OS decided to use.

> Asterisk sources RTP from wrong IPv6 address
> --------------------------------------------
>
>                 Key: ASTERISK-27989
>                 URL: https://issues.asterisk.org/jira/browse/ASTERISK-27989
>             Project: Asterisk
>          Issue Type: Bug
>      Security Level: None
>          Components: Resources/res_pjsip_sdp_rtp, Resources/res_rtp_asterisk
>    Affects Versions: 13.22.0
>         Environment: CentOS 7 64bit
>            Reporter: Isaac McDonald
>            Assignee: Isaac McDonald
>            Severity: Minor
>              Labels: pjsip
>
> Asterisk sources RTP traffic from the most recently assigned IPv6 address rather than the address configured in the transport.
> Steps to reproduce:
> 1. Configure a server with an IPv6 address. The following example config will provide a single global IPv6 address on CentOS 7:
> Config snippet from /etc/sysconfig/network-scripts/ifcfg-eth0
> IPV6INIT="yes"
> IPV6_AUTOCONF="no"
> IPV6_DEFROUTE="yes"
> IPV6_FAILURE_FATAL="no"
> IPV6_PEERROUTES="yes"
> IPV6_PRIVACY="no"
> IPV6ADDR=2001:DB8::55/64
> IPV6_PEERDNS=no  
> IPV6_DEFAULTGW=2001:DB8::1/64
> 2. Configure a pjsip transport for the statically assigned IPv6 address
> [IPv6-udp]
> type=transport
> protocol=udp
> bind=[2001:DB8::55]:5060
> allow_reload=yes
> tos=cs3
> cos=3
> 3. Add a pjsip endpoint. Make sure you don't specify a transport with the "transport=" option.
> 4. Register a SIP client via IPv6 to the endpoint configured in step 3.
> 5. Place a test call from the IPv6 endpoint and note how everything works as expected.
> 6. Add an additional IPv6 address to eth0:
> ip -6 address add 2001:DB8::75/64 dev eth0
> 7. Start a tcpdump: tcpdump -i eth1  port not 22 -nn
> 8. Place a test call from the IPv6 endpoint and note how the SOURCE address of RTP packets, as seen in the tcpdump, is set to the IPv6 address you assigned in step 6 and NOT the IPv6 address assigned to the transport you created in step 2.
> If you specify the IPv6 transport configured in step 2 as the transport for the endpoint, the source address of RTP packets is the configured transport address. This isn't a viable option though considering that it would break the dual-stack nature of having a endpoint with no specific transport set.



--
This message was sent by Atlassian JIRA
(v6.2#6252)



More information about the asterisk-bugs mailing list