bug report: ICE on localnet, "Controlled" host UPDATE bogus

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

 



Hello,

audio communications quality of ICE-configured link on a local network
is flawless but studying the pjsua logs it appears there is something
counter-intuitive:  if host A calls host B, then ICE session is
established as expected, until the point host B receives a final
"UPDATE" request from A with the nominated link configuration in SDP:

    a=candidate:Hc0a80064 1 UDP 1694498815 192.168.0.100 4007 typ host
    a=remote-candidates:1 192.168.0.200 4006

(192.168.0.100 is host A, 192.168.0.200 is host B).

Here host B apparently doesn't understand this request:

   Processing SDP: support ICE=1, common comp_cnt=1, ice_mismatch=1,
ice_restart=0, local_role=Controlled
   Stopping ICE, reason=Remote offer mismatch: :Default target doesn't
match any ICE candidates (PJNATH_EICEMISMATCH)


and replies with

    a=ice-mismatch

which leads to

    Stopping ICE, reason=Remote answer doesn't support ICE

on host A.


Nevertheless the media link (a direct link, not through a distant
sip-relay!) is up and functional between A and B until the call is
terminated by a BYE.

Finally, pjsua was started as

    pjsip-apps/bin/pjsua \
        --nameserver=192.168.0.1 \
        --stun-srv=stun.stunprotocol.org \
        --use-ice --ice-no-rtcp --no-tcp

on both sides (i.e. in aggressive mode, but --regular doesn't change
anything, in the final UPDATE stage B still complains about "remote
offer mismatch").

1. Is there anything wrong?  (Transmitted sound quality is perfect!)
2. If 'y', then how this can be fixed?

P.S.  A detailed log is attached.

    Eeri Kask

-------------- next part --------------

Network topology: local network 192.168.0.0 connected through
firewall outer IP 11.11.11.11 to sip provider 22.22.22.22:


            +------------------+
            |   22.22.22.22    |  sip.org
            +---------+--------+
                      |
                      :
                      |
            +---------+--------+
            |   11.11.11.11    |  firewall
            |   192.168.0.1    |
            +---------+--------+
                      |
          +-----------+----------+
          |                      |
  +-------+-------+      +-------+-------+
  | 192.168.0.100 |      | 192.168.0.200 |  host 100, host 200
  +---------------+      +---------------+



User logged in host 100 starts

    pjsip-apps/bin/pjsua \
        --nameserver=192.168.0.1 \
        --stun-srv=stun.stunprotocol.org \
        --use-ice --ice-no-rtcp --no-tcp


and calls user as <sip:user at sip.org> who is logged in 200 (and
also runs pjsua as above).



(1) User 100 sees pjsua (ice-related) log:
==========================================

17:24:38.270  pjsua_media.c  .Call 0: initializing media..
17:24:38.270        icetp00  ..Creating ICE stream transport with 1 component(s)
17:24:38.270        icetp00  ...Comp 1: srflx candidate starts Binding discovery
17:24:38.274        icetp00  ...Comp 1: host candidate 192.168.0.100:4007 added
17:24:38.274        icetp00  ...ICE stream transport 0x102922ca8 created
17:24:38.318 stuntp0x1026f5  .STUN mapped address found/changed: 11.11.11.11:4007
17:24:38.320        icetp00  .Comp 1: Binding discovery complete, srflx address is 11.11.11.11:4007
17:24:38.330        icetp00  ICE session created, comp_cnt=1, role is Controlling agent
17:24:38.330        icetp00  ICE nomination type set to aggressive
17:24:38.330        icetp00  Candidate 0 added: comp_id=1, type=srflx, foundation=Sc0a80064, addr=11.11.11.11:4007, base=192.168.0.100:4007, prio=0x6effffff (1862270975)
17:24:38.330        icetp00  Candidate 1 added: comp_id=1, type=host, foundation=Hc0a80064, addr=192.168.0.100:4007, base=192.168.0.100:4007, prio=0x64ffffff (1694498815)

17:24:38.354   pjsua_core.c  TX 1327 bytes Request msg INVITE/cseq=19400 (tdta0x10386a200) to UDP 22.22.22.22:5060:

    a=candidate:Sc0a80064 1 UDP 1862270975 11.11.11.11 4007 typ srflx raddr 192.168.0.100 rport 4007
    a=candidate:Hc0a80064 1 UDP 1694498815 192.168.0.100 4007 typ host



(2) Now user 200 observes (sip.org added itself as "relay"):
============================================================

17:24:38.501   pjsua_core.c  .RX 1828 bytes Request msg INVITE/cseq=19400 (rdata0x116804028) from UDP 22.22.22.22:5060:

    a=candidate:R16161616 1 UDP 16777215 22.22.22.22 51476 typ relay
    a=candidate:Sc0a80064 1 UDP 1862270975 11.11.11.11 4007 typ srflx raddr 192.168.0.100 rport 4007
    a=candidate:Hc0a80064 1 UDP 1694498815 192.168.0.100 4007 typ host


17:24:38.501        icetp00  ...Creating ICE stream transport with 1 component(s)
17:24:38.501        icetp00  ....Comp 1: srflx candidate starts Binding discovery
17:24:38.503        icetp00  ....Comp 1: host candidate 192.168.0.200:4006 added
17:24:38.503        icetp00  ....ICE stream transport 0x10284c6a8 created
17:24:38.549 stuntp0x102732  .STUN mapped address found/changed: 11.11.11.11:4006
17:24:38.550        icetp00  .Comp 1: Binding discovery complete, srflx address is 11.11.11.11:4006
17:24:38.563        icetp00  ICE session created, comp_cnt=1, role is Controlled agent
17:24:38.563        icetp00  ICE nomination type set to aggressive
17:24:38.563        icetp00  Candidate 0 added: comp_id=1, type=srflx, foundation=Sc0a800c8, addr=11.11.11.11:4006, base=192.168.0.200:4006, prio=0x6effffff (1862270975)
17:24:38.563        icetp00  Candidate 1 added: comp_id=1, type=host, foundation=Hc0a800c8, addr=192.168.0.200:4006, base=192.168.0.200:4006, prio=0x64ffffff (1694498815)
17:24:38.563        icetp00  Processing SDP: support ICE=1, common comp_cnt=1, ice_mismatch=0, ice_restart=0, local_role=Controlled
17:24:42.756  pjsua_media.c  ...Call 0: updating media..
17:24:42.756        icetp00  ....Check 1: [1] 192.168.0.200:4006-->11.11.11.11:4007 pruned (duplicate found)
17:24:42.756        icetp00  ....Check 2: [1] 192.168.0.200:4006-->192.168.0.100:4007 pruned (duplicate found)
17:24:42.756        icetp00  ....Check 3: [1] 192.168.0.200:4006-->22.22.22.22:51476 pruned (duplicate found)
17:24:42.756        icetp00  ....Checklist created:
17:24:42.756        icetp00  .... 0: [1] 192.168.0.200:4006-->11.11.11.11:4007 (not nominated, state=Frozen)
17:24:42.756        icetp00  .... 1: [1] 192.168.0.200:4006-->192.168.0.100:4007 (not nominated, state=Frozen)
17:24:42.756        icetp00  .... 2: [1] 192.168.0.200:4006-->22.22.22.22:51476 (not nominated, state=Frozen)
17:24:42.756        icetp00  ....Starting ICE check..
17:24:42.756        icetp00  .....Check 0: [1] 192.168.0.200:4006-->11.11.11.11:4007: state changed from Frozen to Waiting

17:24:42.756   pjsua_core.c  ....TX 1641 bytes Response msg 200/INVITE/cseq=19400 (tdta0x119803800) to UDP 22.22.22.22:5060:

    a=candidate:Sc0a800c8 1 UDP 1862270975 11.11.11.11 4006 typ srflx raddr 192.168.0.200 rport 4006
    a=candidate:Hc0a800c8 1 UDP 1694498815 192.168.0.200 4006 typ host



(3) User 100 continues (sip.org added itself as "relay"):
=========================================================

17:24:42.770        icetp00  .Received an early check for comp 1

17:24:42.845   pjsua_core.c  .RX 1489 bytes Response msg 200/INVITE/cseq=19400 (rdata0x103870a28) from UDP 22.22.22.22:5060:

    a=candidate:R16161616 1 UDP 16777215 22.22.22.22 51490 typ relay
    a=candidate:Sc0a800c8 1 UDP 1862270975 11.11.11.11 4006 typ srflx raddr 192.168.0.200 rport 4006
    a=candidate:Hc0a800c8 1 UDP 1694498815 192.168.0.200 4006 typ host

17:24:42.846  pjsua_media.c  .....Call 0: updating media..
17:24:42.846        icetp00  ......Processing SDP: support ICE=1, common comp_cnt=1, ice_mismatch=0, ice_restart=0, local_role=Controlling
17:24:42.846        icetp00  ......Check 2: [1] 192.168.0.100:4007-->11.11.11.11:4006 pruned (duplicate found)
17:24:42.846        icetp00  ......Check 2: [1] 192.168.0.100:4007-->192.168.0.200:4006 pruned (duplicate found)
17:24:42.846        icetp00  ......Check 3: [1] 192.168.0.100:4007-->22.22.22.22:51490 pruned (duplicate found)
17:24:42.846        icetp00  ......Checklist created:
17:24:42.846        icetp00  ...... 0: [1] 192.168.0.100:4007-->11.11.11.11:4006 (not nominated, state=Frozen)
17:24:42.846        icetp00  ...... 1: [1] 192.168.0.100:4007-->192.168.0.200:4006 (not nominated, state=Frozen)
17:24:42.846        icetp00  ...... 2: [1] 192.168.0.100:4007-->22.22.22.22:51490 (not nominated, state=Frozen)
17:24:42.846        icetp00  ......Starting ICE check..
17:24:42.846        icetp00  .......Check 0: [1] 192.168.0.100:4007-->11.11.11.11:4006: state changed from Frozen to Waiting
17:24:42.846        icetp00  .......Performing delayed triggerred check for component 1
17:24:42.846        icetp00  ........Performing triggered check for check 1
17:24:42.846        icetp00  .........Sending connectivity check for check 1: [1] 192.168.0.100:4007-->192.168.0.200:4006
17:24:42.846        icetp00  ..........Check 1: [1] 192.168.0.100:4007-->192.168.0.200:4006: state changed from Frozen to In Progress
17:24:42.847        icetp00 !Checklist: state changed from Idle to Running
17:24:42.847        icetp00  Starting checklist periodic check
17:24:42.847        icetp00  .Sending connectivity check for check 0: [1] 192.168.0.100:4007-->11.11.11.11:4006
17:24:42.847        icetp00 !..Check 0: [1] 192.168.0.100:4007-->11.11.11.11:4006: state changed from Waiting to In Progress
17:24:42.847        icetp00 !.Check 1: [1] 192.168.0.100:4007-->192.168.0.200:4006 (nominated): connectivity check SUCCESS
17:24:42.847        icetp00  .Check 1: [1] 192.168.0.100:4007-->192.168.0.200:4006: state changed from In Progress to Succeeded
17:24:42.847        icetp00  .Check 2: [1] 192.168.0.100:4007-->22.22.22.22:51490: state changed from Frozen to Waiting
17:24:42.847        icetp00 !.Check 1 is successful  and nominated
17:24:42.847        icetp00 !.Cancelling check 0: [1] 192.168.0.100:4007-->11.11.11.11:4006 (In Progress)
17:24:42.848        icetp00 !.Check 0: [1] 192.168.0.100:4007-->11.11.11.11:4006: state changed from In Progress to Failed
17:24:42.848        icetp00 !.Check 2: [1] 192.168.0.100:4007-->22.22.22.22:51490 to be failed because state is Waiting
17:24:42.848        icetp00 !.Check 2: [1] 192.168.0.100:4007-->22.22.22.22:51490: state changed from Waiting to Failed
17:24:42.848        icetp00 !.ICE process complete, status=Success
17:24:42.848        icetp00 !.Valid list
17:24:42.848 sic => icetp00 !. 0: [1] 192.168.0.100:4007-->192.168.0.200:4006 (nominated, state=Succeeded)
17:24:42.849        icetp00  ICE negotiation success after 0s:003
17:24:42.849        icetp00   Comp 1: sending from host candidate 192.168.0.100:4007 to host candidate 192.168.0.200:4006

17:24:42.850   pjsua_core.c  ....TX 1372 bytes Request msg UPDATE/cseq=19401 (tdta0x10293ec00) to UDP 22.22.22.20:5060:

    a=candidate:Hc0a80064 1 UDP 1694498815 192.168.0.100 4007 typ host
    a=remote-candidates:1 192.168.0.200 4006


(4) User 200 again (timely parallel to the above):
==================================================

17:24:42.776        icetp00 !Checklist: state changed from Idle to Running
17:24:42.776        icetp00  Starting checklist periodic check
17:24:42.776        icetp00  .Sending connectivity check for check 0: [1] 192.168.0.200:4006-->11.11.11.11:4007
17:24:42.776        icetp00  ..Check 0: [1] 192.168.0.200:4006-->11.11.11.11:4007: state changed from Waiting to In Progress
17:24:42.796        icetp00 !Starting checklist periodic check
17:24:42.796        icetp00  .Sending connectivity check for check 1: [1] 192.168.0.200:4006-->192.168.0.100:4007
17:24:42.796        icetp00  ..Check 1: [1] 192.168.0.200:4006-->192.168.0.100:4007: state changed from Frozen to In Progress
17:24:42.797        icetp00  .Check 1: [1] 192.168.0.200:4006-->192.168.0.100:4007 (not nominated): connectivity check SUCCESS
17:24:42.797        icetp00  .Check 1: [1] 192.168.0.200:4006-->192.168.0.100:4007: state changed from In Progress to Succeeded
17:24:42.797        icetp00  .Check 2: [1] 192.168.0.200:4006-->22.22.22.22:51476: state changed from Frozen to Waiting
17:24:42.797        icetp00  .Check 1 is successful
17:24:42.817        icetp00 !Starting checklist periodic check
17:24:42.817        icetp00  .Sending connectivity check for check 2: [1] 192.168.0.200:4006-->22.22.22.22:51476
17:24:42.817        icetp00  ..Check 2: [1] 192.168.0.200:4006-->22.22.22.22:51476: state changed from Waiting to In Progress
17:24:42.837        icetp00 !Starting checklist periodic check
17:24:42.874        icetp00  .Valid check 0: [1] 192.168.0.200:4006-->192.168.0.100:4007 is nominated
17:24:42.874        icetp00  .Triggered check for check 1 not performed because it's completed
17:24:42.874        icetp00  ..Check 1 is successful  and nominated
17:24:42.874        icetp00  ..Cancelling check 0: [1] 192.168.0.200:4006-->11.11.11.11:4007 (In Progress)
17:24:42.874        icetp00  ..Check 0: [1] 192.168.0.200:4006-->11.11.11.11:4007: state changed from In Progress to Failed
17:24:42.874        icetp00  ..Cancelling check 2: [1] 192.168.0.200:4006-->22.22.22.22:51476 (In Progress)
17:24:42.874        icetp00  ..Check 2: [1] 192.168.0.200:4006-->22.22.22.22:51476: state changed from In Progress to Failed
17:24:42.874        icetp00  ..ICE process complete, status=Success
17:24:42.874        icetp00  ..Valid list
17:24:42.874 sic => icetp00  .. 0: [1] 192.168.0.200:4006-->192.168.0.100:4007 (nominated, state=Succeeded)
17:24:42.874        icetp00  ICE negotiation success after 0s:118
17:24:42.874        icetp00   Comp 1: sending from host candidate 192.168.0.200:4006 to host candidate 192.168.0.100:4007

17:24:42.988   pjsua_core.c  .RX 1520 bytes Request msg UPDATE/cseq=19401 (rdata0x11a001828) from UDP 22.22.22.22:5060:

    a=candidate:Hc0a80064 1 UDP 1694498815 192.168.0.100 4007 typ host
    a=remote-candidates:1 192.168.0.200 4006

17:24:42.989        icetp00  ......Processing SDP: support ICE=1, common comp_cnt=1, ice_mismatch=1, ice_restart=0, local_role=Controlled
17:24:42.989        icetp00  .......Stopping ICE, reason=Remote offer mismatch: :Default target doesn't match any ICE candidates (PJNATH_EICEMISMATCH)
17:24:42.989        icetp00  .......Destroying ICE session 0x102871e28

17:24:42.989   pjsua_core.c  .......TX 1332 bytes Response msg 200/UPDATE/cseq=19401 (tdta0x116013200) to UDP 22.22.22.22:5060:

    a=ice-mismatch


(5) User 100 (timely parallel to the above):
============================================

17:24:42.868        icetp00  Starting checklist periodic check

17:24:43.058   pjsua_core.c  .RX 1174 bytes Response msg 200/UPDATE/cseq=19401 (rdata0x10293b628) from UDP 22.22.22.20:5060:

    a=ice-mismatch

17:24:43.058        icetp00  ......Stopping ICE, reason=Remote answer doesn't support ICE
17:24:43.058        icetp00  ......Destroying ICE session 0x103864228



 ***** Here audio stream between 192.168.0.100:4007 and 192.168.0.200:4006 is ok, nothing unusual *****



(6) After some time user 100 sends BYE, then:
=============================================

17:25:10.953        icetp00  ......Stopping ICE, reason=media stop requested
17:25:10.953        icetp00  .......ICE stream transport 0x102922ca8 destroyed
17:25:10.953  ice_session.c  .......ICE session 0x103864228 destroyed


(7) And finally user 200:
=========================

17:25:10.903        icetp00  .......Stopping ICE, reason=media stop requested
17:25:10.904        icetp00  ........ICE stream transport 0x10284c6a8 destroyed
17:25:10.904  ice_session.c  ........ICE session 0x102871e28 destroyed


[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