ice_mismatch, but direct connection can be establish

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I have a situation, where transport_ice.c works incorrectly or I do
something wrong?

In my network exists a route to direct connection between sip clients.
- ICE is enabled.
- STUN is disabled


PC1(2 IPs: 192.168.11.6, 10.119.191.2)       PC2(1 IP: 192.168.1.3)
192.168.11.0/24 ---------[router]-------------------- 192.168.1.0/24
-------------[NAT]-------------Internet1-------------------SIP
Registrar
10.119.191.0/24----------[NAT]-------------Internet2--------------------------------------------------------------------------------------SIP
Registrar

Possible ICE route is:192.168.11.6 <-----> 192.168.1.3

But transport_ice.c  make sdp_state->ice_mismatch = PJ_TRUE; so there
are no attempts to check candidates.

With modified transport_ice.c code (forsed ice_mismatch into false)
and voice traffic goes directly without mediagateway! So it is realy
possible.
Please look into it.

I have read https://trac.pjsip.org/repos/wiki/IceNegotiationFailure
but there is no information about ice_mismatch.

Benny said that transport_ice.c is ok, but what in now ok ???



=======original code===========================================

 /* Check matched component count and ice_mismatch */
    if (comp1_found && (tp_ice->comp_cnt==1 || !has_rtcp)) {
    sdp_state->match_comp_cnt = 1;
    sdp_state->ice_mismatch = PJ_FALSE;
    } else if (comp1_found && comp2_found) {
    sdp_state->match_comp_cnt = 2;
    sdp_state->ice_mismatch = PJ_FALSE;
    } else {
    sdp_state->match_comp_cnt = (tp_ice->comp_cnt > 1 && has_rtcp)? 2 : 1;
    sdp_state->ice_mismatch = PJ_TRUE;
    }

==========my code==========================================

 /* Check matched component count and ice_mismatch */
    if (comp1_found && (tp_ice->comp_cnt==1 || !has_rtcp)) {
    sdp_state->match_comp_cnt = 1;
    sdp_state->ice_mismatch = PJ_FALSE;
    } else if (comp1_found && comp2_found) {
    sdp_state->match_comp_cnt = 2;
    sdp_state->ice_mismatch = PJ_FALSE;
    } else {
    sdp_state->match_comp_cnt = (tp_ice->comp_cnt > 1 && has_rtcp)? 2 : 1;
    if (!comp2_found)
    {
        sdp_state->ice_mismatch = PJ_TRUE;
    } else
    {
        sdp_state->ice_mismatch = PJ_FALSE;
    }
    }
======================================================


 02:43:43.828   pjsua_core.c  RX 1924 bytes Request msg
INVITE/cseq=19859 (rdata00C69CCC) from UDP 212.53.40.40:5060:
INVITE sip:mmmmmmmmmmmm at 192.168.1.3:5060;ob SIP/2.0
Via: SIP/2.0/UDP
212.53.40.40:5060;branch=z9hG4bK199210-kmbdctp;cgp=etc.tario.ru;rport
P-Asserted-Identity: <sip:ccccccccccccccc at sipnet.ru>
P-CGP-Redirector: mmmmmmmmmmmm at sipnet.ru
Record-Route: <sip:212.53.40.40:5060;lr>
Record-Route: <sip:192.168.40.77:5060;lr>
Record-Route: <sip:rev.5662709-192.168.40.77.dialog.cgatepro;lr>
Via: SIP/2.0/TCP
10.119.191.2:2256;rport=2256;branch=z9hG4bKPj1d9f93bc29f04fbdb5c5908fccefba91;received=193.151.105.53
Record-Route: <sip:tcp-193.151.105.53-2256C192.168.40.77.nat.cgatepro;lr>
Max-Forwards: 69
From: <sip:ccccccccccccccc@xxxxxxxxx>;tag=408f214a3958484f9b1b8a8f91837bd3
To: <sip:mmmmmmmmmmmm at sipnet.ru>
Call-ID: e47485b7c61949f8a144d1405a8c32db
Contact: <sip:ccccccccccccccc at 10.119.191.2:5060;ob>;+sip.ice
CSeq: 19859 INVITE
Supported: replaces,100rel,timer,norefersub
Allow: PRACK,INVITE,ACK,BYE,CANCEL,UPDATE,SUBSCRIBE,NOTIFY,REFER,MESSAGE,OPTIONS
User-Agent: PJSIP/2.0.0-alpha-svn (win32) MicroSIP/1.7.2
Session-Expires: 1800
Min-SE: 90
Content-Type: application/sdp
Content-Length: 833


v=0
o=- 3525561821 3525561821 IN IP4 10.119.191.2
s=pjmedia
c=IN IP4 212.53.40.77
t=0 0
a=mediagateway:etc.tario.ru:5662709:192.168.40.77
a=X-nat:0
m=audio 25684 RTP/AVP 98 97 99 104 3 0 8 9 96
c=IN IP4 212.53.40.77
a=rtpmap:98 speex/16000
a=rtpmap:97 speex/8000
a=rtpmap:99 speex/32000
a=rtpmap:104 iLBC/8000
a=fmtp:104 mode=30
a=rtpmap:3 GSM/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:9 G722/8000
a=rtpmap:96 telephone-event/8000
a=fmtp:96 0-15
a=sendrecv
a=candidate:Ha77bf02 1 UDP 2130706431 10.119.191.2 3234 typ host
a=candidate:Hc0a80b06 1 UDP 2130706431 192.168.11.6 3234 typ host
a=candidate:Ha77bf02 2 UDP 2130706430 10.119.191.2 3238 typ host
a=candidate:Hc0a80b06 2 UDP 2130706430 192.168.11.6 3238 typ host
a=ice-pwd:18074614
a=ice-ufrag:651945de
a=rtcp:3238 IN IP4 10.119.191.2

======================================================

comp1_found 0
comp2_found 1
has_rtcp 1
=> sdp_state->ice_mismatch = PJ_TRUE;



[Index of Archives]     [Asterisk Users]     [Asterisk App Development]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [Linux API]
  Powered by Linux