[OpenSIPS-Users] Troubleshooting unabsorbed 200 OK retransmissions

Bogdan-Andrei Iancu bogdan at opensips.org
Wed Jan 30 17:06:51 CET 2013


Hi Michael,

The retransmissions for 200 OK are end-2-end, which means their are 
transparent for the proxies - that's what the RFC says. The 200 OK  + 
ACK exchange is end-2-end confirmation and proxies are not absorbing any 
retransmissions here.

Regards,

Bogdan-Andrei Iancu
OpenSIPS Founder and Developer
http://www.opensips-solutions.com


On 01/27/2013 06:28 PM, Michael Schloh wrote:
> Hello list,
>
> An upstream PSTN gateway is retransmitting 200 OK just some hundreds
> milliseconds after the first 200 OK (following my outgoing INVITE.)
> My OpenSIPS 1.7.2 on Solaris 11 AMD64 is sending both 200 OK
> messages to the UAC which initiates the INVITE. The retransmitted
> 200 OK messages are identical.
>
> The only send_reply commands that I'm using are for 403 and 404 and
> otherwise I'm only using t_* commands like t_relay so I don't
> understand why the tm module is not absorbing the duplicate 200 OKs.
>
> My INVITEs are processed with t_on_reply("1") so I expect that the
> 200 OKs are appearing in the script first in onreply_route[1] (not
> in the main route block.) If that's true then could it be a problem
> that the onreply_route[1] just manipulates NAT headers and doesn't
> explicitly drop() exit or t_relay the 200 OKs?
>
> Is that why the 200 OKs are being retransmitted to my UAC?
>
> I tried using t_checktrans() but it's not allowed in onreply_route
> where the 200 OK messages are processed.
>
> Here's how the 200 OK messages from the upstream provider look:
>
> 2013-01-26 11:31:52 | tls:111.111.111.111:5061 | tls:222.222.222.222:5061
> SIP/2.0 200 OK
> Via: SIP/2.0/TLS 222.222.222.222:5061;branch=z9hG4bKf2bf.8094.0;i=3
> Via: SIP/2.0/TLS 192.168.1.5:2732;received=58.180.46.114;branch=z9hG4bK-tsd12ipnh39x;rport=52859
> Record-Route:<sip:111.111.111.111;r2=on;lr=on;ftag=lrei0taqz5>
> Record-Route:<sip:111.111.111.111:5061;transport=tls;r2=on;lr=on;ftag=lrei0taqz5>
> Record-Route:<sip:222.222.222.222:5061;transport=tls;lr;ftag=lrei0taqz5;did=bfa.6bc6>
> From: "Michael"<sip:116087943 at sip.callwithus.com>;tag=0taqz5laei
> To:<sip:+123456789 at sip.mypstnprovider.com;user=phone>;tag=56Zy822Br9y5H
> Call-ID: 2253ba7f90c2-42346662aa2f
> CSeq: 2 INVITE
> Contact:<sip:+123456789 at 46.58.200.4:5060;transport=udp>
> User-Agent: MY SIP GW
> Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, UPDATE, INFO, NOTIFY
> Supported: timer, precondition, path, replaces
> Allow-Events: talk, hold, refer
> Session-Expires: 3600;refresher=uas
> Min-SE: 120
> Content-Type: application/sdp
> Content-Disposition: session
> Content-Length: 165
>
> v=0
> o=- 1986643739 1986643741 IN IP4 46.58.200.231
> s=-
> c=IN IP4 57.227.101.2
> t=0 0
> m=audio 18104 RTP/AVP 0 101
> a=rtpmap:101 telephone-event/8000
> a=ptime:20
>
> ...and here's the parts of my route script dealing with replies:
>
> # There is no (default) onreply_route {}
> onreply_route[1] {
>      if ((nat_uac_test("1") || search('^Contact:.*169\.254\.'))&&  status =~ "(18)[0-3]|2[0-9][0-9]")
>          fix_nated_contact();
>      if (has_body("application/sdp")&&  (nat_uac_test("8") || search_body("[co]=.*169\.254\.") || search_body("a=rtcp.*169\.254\."))) {  # test SDP body
>          if (search_body("a=rtcp:.*IP[46].*(192\.168\.|10\.|172\.(1[6-9]|2[0-9]|3[0-1])\.|169\.254\.)"))
>              fix_nated_sdp("26");  # rewrite o=, c=, and a=rtcp lines
>          else                      # otherwise...
>              fix_nated_sdp("10");  # rewrite only o= and c= lines
>      }
> }
>
> I'd like to avoid using t_newtrans() because I modify
> the messages quite a lot for things like NAT.
>
> How can I force OpenSIPS to absorb the 200 OK retransmissions?
>
> Regards,
> Michael
>
> _______________________________________________
> Users mailing list
> Users at lists.opensips.org
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>



More information about the Users mailing list