[SR-Users] A weird message looping scenario

Ajay Sabat Ajay.Sabat at panasonic.aero
Thu Mar 14 09:07:46 CET 2013


Hi,

We have an ugly message looping scenario where a SIP request message received at Kamailio is forwarded to  the switch/router and back to Kamailio in a loop until the Max-forwards header value becomes 0 or the  transaction  times out.
After receiving an incoming INVITE request from a local user, Kamailio forwards the INVITE request to another proxy located in a different network. The call is established successfully.
During the call setup  the external proxy sends an OPTIONS request to Kamailio (actually to the external public IP address from where it received  INVITE request from Kamailio). The OPTIONS request arrives at Kamailio. But the request uri contains  the mapped public address instead of the local ip address where Kamailio is listening. So Kamailio forwards the request to the public IP address (i.e.  the switch) which again sends it back to Kamailio again and it keeps looping.

Here is the message flow. 192.168.1.3 is the local user registered to Kamailio which is running at 192.168.1.5. IP address of the external proxy server is 10.139.90.161 and 10.139.90.137 is the public IP address of the switch/router. NAT isn't enabled at Kamailio.

Internet Protocol Version 4, Src: 192.168.1.3 (192.168.1.3), Dst: 192.168.1.5 (192.168.1.5)
User Datagram Protocol, Src Port: sip (5060), Dst Port: sip (5060)
Session Initiation Protocol
    Request-Line: INVITE sip:1002 at video-conf SIP/2.0
    Message Header
        Via: SIP/2.0/UDP 192.168.1.3:5060;rport;branch=z9hG4bK1941685709
        From: "xxxx" <sip:1001 at 192.168.1.5>;tag=256977615
        To: <sip:1002 at video-conf>
        Call-ID: 1110783207
        CSeq: 20 INVITE
        Contact: <sip:1001 at 192.168.1.3>
        Content-Type: application/sdp
        Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO
        Max-Forwards: 70
        User-Agent: Linphone/3.5.2 (eXosip2/3.6.0)
        Subject: Phone call
        Content-Length:   510
    Message Body

Internet Protocol Version 4, Src: 192.168.1.5 (192.168.1.5), Dst: 192.168.1.3 (192.168.1.3)
User Datagram Protocol, Src Port: sip (5060), Dst Port: sip (5060)
Session Initiation Protocol
    Status-Line: SIP/2.0 100 trying -- your call is important to us
    Message Header
        Via: SIP/2.0/UDP 192.168.1.3:5060;rport=5060;branch=z9hG4bK1941685709
        From: "xxxx" <sip:1001 at 192.168.1.5>;tag=256977615
        To: <sip:1002 at video-conf>
        Call-ID: 1110783207
        CSeq: 20 INVITE
        Server: kamailio (3.3.3 (i386/linux))
        Content-Length: 0

Internet Protocol Version 4, Src: 192.168.1.5 (192.168.1.5), Dst: 10.139.90.161 (10.139.90.161)
User Datagram Protocol, Src Port: sip (5060), Dst Port: sip (5060)
Session Initiation Protocol
    Request-Line: INVITE sip:1002 at vc-vcs-control.air2gnd.net SIP/2.0
    Message Header
        Record-Route: <sip:192.168.1.5;lr=on>
        Via: SIP/2.0/UDP 192.168.1.5;branch=z9hG4bKd6e1.f7985e64.0
        Via: SIP/2.0/UDP 192.168.1.3:5060;rport=5060;branch=z9hG4bK1941685709
        From: "xxxx" <sip:1001 at 192.168.1.5>;tag=256977615
        To: <sip:1002 at video-conf>
        Call-ID: 1110783207
        CSeq: 20 INVITE
        Contact: <sip:1001 at 192.168.1.3>
        Content-Type: application/sdp
        Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO
        Max-Forwards: 69
        User-Agent: Linphone/3.5.2 (eXosip2/3.6.0)
        Subject: Phone call
        Content-Length:   510
    Message Body

Internet Protocol Version 4, Src: 10.139.90.161 (10.139.90.161), Dst: 192.168.1.5 (192.168.1.5)
User Datagram Protocol, Src Port: sip (5060), Dst Port: sip (5060)
Session Initiation Protocol
    Status-Line: SIP/2.0 100 Trying
    Message Header
        Via: SIP/2.0/UDP 192.168.1.5;branch=z9hG4bKd6e1.f7985e64.0;received=10.139.90.137
        Via: SIP/2.0/UDP 192.168.1.3:5060;rport=5060;branch=z9hG4bK1941685709
        From: "xxxx" <sip:1001 at 192.168.1.5>;tag=256977615
        To: <sip:1002 at video-conf>
        Call-ID: 1110783207
        CSeq: 20 INVITE
        Content-Length: 0

Internet Protocol Version 4, Src: 10.139.90.161 (10.139.90.161), Dst: 192.168.1.5 (192.168.1.5)
User Datagram Protocol, Src Port: sip (5060), Dst Port: sip (5060)
Session Initiation Protocol
    Status-Line: SIP/2.0 101 Dialog Establishement
    Message Header
        Via: SIP/2.0/UDP 192.168.1.5;branch=z9hG4bKd6e1.f7985e64.0;received=10.139.90.137
        Via: SIP/2.0/UDP 192.168.1.3:5060;rport=5060;branch=z9hG4bK1941685709
        Record-Route: <sip:192.168.1.5;lr=on>
        From: "xxxx" <sip:1001 at 192.168.1.5>;tag=256977615
        To: <sip:1002@  video-conf>;tag=689763673
        Call-ID: 1110783207
        CSeq: 20 INVITE
        Contact: <sip:1002 at 10.139.90.161:5060>
        Content-Length: 0

Internet Protocol Version 4, Src: 192.168.1.5 (192.168.1.5), Dst: 192.168.1.3 (192.168.1.3)
User Datagram Protocol, Src Port: sip (5060), Dst Port: sip (5060)
Session Initiation Protocol
    Status-Line: SIP/2.0 101 Dialog Establishement
    Message Header
        Via: SIP/2.0/UDP 192.168.1.3:5060;rport=5060;branch=z9hG4bK1941685709
        Record-Route: <sip:192.168.1.5;lr=on>
        From: "xxxx" <sip:1001 at 192.168.1.5>;tag=256977615
        To: <sip:1002 at video-conf>;tag=689763673
        Call-ID: 1110783207
        CSeq: 20 INVITE
        Contact: sip:1002 at 10.139.90.161:5060
        Content-Length: 0
        P-Received: 10.139.90.137

Internet Protocol Version 4, Src: 10.139.90.161 (10.139.90.161), Dst: 192.168.1.5 (192.168.1.5)
User Datagram Protocol, Src Port: sip (5060), Dst Port: sip (5060)
Session Initiation Protocol
    Request-Line: OPTIONS sip:10.139.90.137:5060 SIP/2.0
    Message Header
        Via: SIP/2.0/UDP 10.139.90.161:5060;rport;branch=z9hG4bK231479102
        From: "yyyy" <sip:1002 at 10.139.90.161>;tag=537974226
        To: <sip:1001 at 192.168.1.5>
        Call-ID: 1856507851
        CSeq: 20 OPTIONS
        Accept: application/sdp
        Max-Forwards: 70
        Content-Length: 0

Internet Protocol Version 4, Src: 192.168.1.5 (192.168.1.5), Dst: 10.139.90.137 (10.139.90.137)
User Datagram Protocol, Src Port: sip (5060), Dst Port: sip (5060)
Session Initiation Protocol
    Request-Line: OPTIONS sip:10.139.90.137:5060 SIP/2.0
    Message Header
        Via: SIP/2.0/UDP 192.168.1.5;branch=z9hG4bK8ba7.fa94bab7.0
        Via: SIP/2.0/UDP 10.139.90.161:5060;rport=5060;branch=z9hG4bK231479102
        From: "yyyy" <sip:1002 at 10.139.90.100>;tag=537974226
        To: <sip:1001 at 192.168.1.5>
        Call-ID: 1856507851
        CSeq: 20 OPTIONS
        Accept: application/sdp
        Max-Forwards: 69
        Content-Length: 0

Internet Protocol Version 4, Src: 10.139.90.137 (10.139.90.137), Dst: 192.168.1.5 (192.168.1.5)
User Datagram Protocol, Src Port: sip (5060), Dst Port: sip (5060)
Session Initiation Protocol
    Request-Line: OPTIONS sip:10.139.90.137:5060 SIP/2.0
    Message Header
        Via: SIP/2.0/UDP 192.168.1.5;branch=z9hG4bK8ba7.fa94bab7.0
        Via: SIP/2.0/UDP 10.139.90.161:5060;rport=5060;branch=z9hG4bK231479102
       From: "uuuu" <sip:1002 at 10.139.90.100>;tag=537974226
        To: <sip:1001 at 192.168.1.5>
        Call-ID: 1856507851
        CSeq: 20 OPTIONS
        Accept: application/sdp
        Max-Forwards: 69
        Content-Length: 0

Internet Protocol Version 4, Src: 192.168.1.5 (192.168.1.5), Dst: 10.139.90.137 (10.139.90.137)
User Datagram Protocol, Src Port: sip (5060), Dst Port: sip (5060)
Session Initiation Protocol
    Request-Line: OPTIONS sip:10.139.90.137:5060 SIP/2.0
    Message Header
        Via: SIP/2.0/UDP 192.168.1.5;branch=z9hG4bK8ba7.0b94bab7.0
        Via: SIP/2.0/UDP 192.168.1.5;received=10.139.90.137;branch=z9hG4bK8ba7.fa94bab7.0
        Via: SIP/2.0/UDP 10.139.90.161:5060;rport=5060;branch=z9hG4bK231479102
        From: "yyyy" <sip:1002 at 10.139.90.100>;tag=537974226
        To: <sip:1001 at 192.168.1.5>
        Call-ID: 1856507851
        CSeq: 20 OPTIONS
        Accept: application/sdp
        Max-Forwards: 68
        Content-Length: 0

Internet Protocol Version 4, Src: 10.139.90.137 (10.139.90.137), Dst: 192.168.1.5 (192.168.1.5)
User Datagram Protocol, Src Port: sip (5060), Dst Port: sip (5060)
Session Initiation Protocol
    Request-Line: OPTIONS sip:10.139.90.137:5060 SIP/2.0
    Message Header
        Via: SIP/2.0/UDP 192.168.1.5;branch=z9hG4bK8ba7.0b94bab7.0
        Via: SIP/2.0/UDP 192.168.1.5;received=10.139.90.137;branch=z9hG4bK8ba7.fa94bab7.0
        Via: SIP/2.0/UDP 10.139.90.161:5060;rport=5060;branch=z9hG4bK231479102
        From: "yyyy" <sip:1002 at 10.139.90.100>;tag=537974226
        To: <sip:1001 at 192.168.1.5>
        Call-ID: 1856507851
        CSeq: 20 OPTIONS
        Accept: application/sdp
        Max-Forwards: 68
        Content-Length: 0

This message forwarding goes on for a long time in a loop, each time with an extra Via header and Max-Forwards value decremented by one. After sometime it eventually times out and Kamailio starts sending 408 response for the OPTIONS request which again keeps looping.
Probably adding an alias for the public IP address i.e., 10.139.90.137 in the Kamailio config file would solve the problem. But this IP address is not fixed and may change and I guess there is no way Kamailio can learn the public IP address on its own.
Any help or reference to previous posts if it is already discussed and solved will be much helpful.

Regards,
Ajay
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20130314/c46f65a4/attachment-0001.htm>


More information about the sr-users mailing list