[pjsip] Wrong NAT detection with pjstun_client

Alain Totouom alain.totouom at gmx.de
Tue Apr 22 13:44:55 EDT 2008


Hi Benny,

Benny Prijono wrote:
> On Tue, Apr 22, 2008 at 3:23 PM, Alain Totouom <alain.totouom at gmx.de> wrote:
>> Hi,
>>
>>
>>  Helmut Wolf wrote:
>>  > Hi Benny,
>>  >
>>  > In RFC 3489 the situation is not described if we got no response from the alternate server. I think this is a special network
>>  > configuration I have tested :-)
>>  >
>>
>>  IMHO this assertion is not correct.
>>  In such a case you might have 3 possible NAT types
>>  - a port restricted (Test #1 & #3)
>>  - a restricted (Test #1 & #3)
>>  - or a symmetric NAT (Test #1)
>>
>>  depending on one (Test#1) or two (Test #1 & #3) additional tests you'll have to
>>  perform after Test#2 has failed. Please check rfc.3489 page 21 for clarity.
>>
> 
> This may not be possible since test 1B failed with no response.
> Perhaps at best what we can do is something like this:
> 
>  if (test 1B failed with no response) {
>    if (test 3 is successful)
>       Type=Restricted;
>    else
>       Type=unknown (can't distinguish between Port Rest. and Symmetric).
>  }
> 
didn't dig too deep in PJNATH's code by now ;o)
But this is really bizarre since 1A has been successfully passed and 1B is just 
the same test using the CHANGED-ADDRESS from the 1A response !?!
Either we have a mis-configured STUN-Server or we should better retry 1A to be 
pretty sure the CHANGED-ADDRESS is still the same and the topology hasn't 
changed between both requests what is unlikely to be the case!



> What do you think?
> 
Your proposal is perfect, another but time consuming approach could be
if (test 1B failed with no response) {
   if (test 3 is successful)
     Type=Restricted;
   else {
     if (test 1A is successful) {
       if (CHANGED-ADDRESS from 1. Test 1A == CHANGED-ADDRESS from 2. Test 1A *OR*
           test 1B with CHANGED-ADDRESS from 2. Test 1A failed with no response)
	Type=unknown (can't distinguish between Port Rest. and Symmetric)
       else {
	if (ip is the same ) {
	  type = symmetric;
	} else {
	  type = port restricted;
	}
       }
     } else {
	Type=unknown (voodoo network)
       }
     }
}

But i would rather go for your proposal
Cheers
Alain

-- 
                             ""
                           (o)(o)
                 _____o00o__(__)__o00o_____
1024D/A9F85A52  2000-01-18   Alain Totouom  <totouom at gmx.de>
PGP FingerPrint DA180DF2 FBD25F67 0656452D E3A27531 A9F85A52




More information about the pjsip mailing list