At 11:06 AM 6/27/2003, Reinhard Hainz wrote:
Hi,
the situation is more complicated.
The environemet:
A ... a "traditional" phone in the PSTN world
B ... an other "traditional" phone in PSTN
C ... a cisco gw connecting PSTN to IP (SIP)
D ... a SIP-Server (ser)
E ... a phone number configured in ser, that is forwared to the number
of B (using URI rewriting from ser)
The request flow is as follows:
1. A is connected (over PSTN) to C
2. C sends an INVITE to D (URI: E - this is the To-Header, too)
3. D rewrites the INVITE for E to an INVITE to B
4. D sends an INVITE to C for B (E is the record-route)
5. C sends both E a PRACK
6. D sends itself a PRACK for B (but i am not forwarding it)
The question is - why does cisco send this PRACK at all.
Cisco uses PRACK if the other party supports PRACK. With hairpinning,
when Cisco speaks to itself, it uses PRACK. The support is advertised
in Supported: 100rel. (We for example strip it away for snom phones
which screw up record routing if PRACK is turned on: replace("100rel,
", "");)
Wenn I use the
same configuration which IP-Phones only, then no PRACK are send.
That's because the phone does not advertise PRACK support.
At 5. the phone B rings (but no ring tone at A), and
after accepting the
call at B the call is established and works.
Hard to guess why without seeing the call flows, in my opinion the common
suspect is Cisco gatway here. Perhaps it gets confused by combination of
hairpinning and PRACK. If I was you, I would at least try stripping 100rel
away just out of curiosity to see if PRACK removal happens to avoid the bug.
Send us network dumps if you don't move ahead -- we may try finding
oddities too.
-Jiri