Summary:ASTERISK-13992: SIP INVITE contains external IP causing 404 Not Found on the Cisco 9740
Reporter:Sverre G (sverre)Labels:
Date Opened:2009-04-20 18:52:06Date Closed:2009-08-21 17:28:06
Versions:Frequency of
Environment:Attachments:( 0) phone_-_not_working.pcap
( 1) phone_-_working.pcap
( 2) server_-_not_working.pcap
( 3) server_-_working.pcap
Description:Some routers implement http://www.voip-info.org/wiki/view/Routers+SIP+ALG, however as noted in the article only some of them modify the VIA header - while all modify the CONTACT header.

Furthermore, some routers that do not modify the CONTACT header, also do not modify the incoming INVITE header on an incoming call, even through they do route the INVITE to the correct IP.

In such a scenario, the outbound REGISTER leaves the phone with VIA and CONTACT, then arrives at the server with VIA and CONTACT external-ip. The INVITE is therefore sent to the external ip (correct), but with a Request-Line that ALSO contains the external-ip.

In some SIP ALG implementations, this request-line is rewritten and all is well, but in some it is NOT re-written, and therefore the phone replies with a 404 Not Found. This is a particular problem when using the Cisco 7940 in combination with the Billion Bipac 7402XL, though likely affects similar models of both phone and router.

This behavior could be avoided if Asterisk could be instructed to use the contents of the VIA registration header in the construction of the INVITE, rather than CONTACT registration header.

I will attach 4 pcap files containing the phone and server side of the conversation in both a working (D-Link DSL-502T) and non-working (Billion BiPac 7402XL) scenarios.
Comments:By: Jason Parker (jparker) 2009-08-21 17:28:06

Please contact your router vendor.  There are well documented issues with their ALG implementation.