On Oct 01, 2004 at 15:31, michael@fingerprint.de michael@fingerprint.de wrote:
I have a routing problem which I cant explain.
A UA communicates with a Sip-Server over ser as a proxy. As the Sip-Server only supports TCP connection the t_relay_to_tcp function is used. And as the Sip-Server doesn't register to the Ser proxy a routeing for that destination (sip server) is done by hand. See ser.cfg and Sip messages below.
Everything seems to work just find except the BYE Message form the Sip Server via the proxy to the UA. Ser sends the received BYE to himself (Message 8) and then back to the Sip Server (Message 9).
listening points: UA: 192.168.0.5:5555 ser: 192.168.0.5:5060 sipserver: 192.168.0.5:5080
Any suggestions?
Do you have an "alias=192.168.0.5" in your ser.cfg? If so remove it and try again [ - you don't need to alias your own ip - in 0.8.14 an alias will match all the ports => it will match 192.168.0.5:5555 and ser will get confused thinking the message is for itself and a strict router was in the path. When it will try to recover from the strict router it will mess things up. ]
BTW: the ACK from UA to ser (message 5) is missing a route.
Andrei
ser.cfg
route{ # initial sanity checks -- messages with # max_forwards==0, or excessively long requests if (!mf_process_maxfwd_header("10")) { sl_send_reply("483","Too Many Hops"); break; }; if ( msg:len > max_len ) { sl_send_reply("513", "Message too big"); break; };
# we record-route all messages -- to make sure that # subsequent messages will go through our proxy; that's # particularly good if upstream and downstream entities # use different transport protocol if (method=="INVITE") record_route(); # loose-route processing if (loose_route()) { t_relay(); break; }; # dest SipAS? then relay via tcp without lookup if(uri=~"sip:sipas@192.168.0.5" || uri=~"sip:192.168.0.5:5080") { if (!t_relay_to_tcp("192.168.0.5","5080")) { sl_reply_error(); break; }; break; }; # if the request is for other domain use UsrLoc # (in case, it does not work, use the following command # with proper names and addresses in it) if (uri==myself) { if (method=="REGISTER") { log("saving location \n"); save("location"); break; }; # native SIP destinations are handled using our USRLOC DB if (!lookup("location")) { sl_send_reply("404", "Not Found"); log("not in locDB\n"); break; }; }; if (!t_relay()) { sl_reply_error(); break; };
}
########################################################################### Call flow:
- ==== UA sends to ser
INVITE sip:sipas@192.168.0.5 SIP/2.0 Call-ID: f978201facd1ba9e7345af63683f96a1@192.168.0.5 CSeq: 1 INVITE From: "user" sip:user@192.168.0.5:5555;transport=udp;tag=25591289 To: sip:sipas@192.168.0.5 Via: SIP/2.0/UDP 192.168.0.5:5555;branch=z9hG4bK98fa6f82a8447d74fe9a04da3d9dd0a1 Max-Forwards: 70 Contact: "user" sip:192.168.0.5:5555;transport=udp Content-Type: application/sdp Content-Length: 154
(sdp not shown)
- ==== ser to Sip Server
INVITE sip:sipas@192.168.0.5 SIP/2.0 Record-Route: sip:sipas@192.168.0.5;transport=tcp;r2=on;ftag=25591289;lr=on Record-Route: sip:sipas@192.168.0.5;r2=on;ftag=25591289;lr=on Call-ID: f978201facd1ba9e7345af63683f96a1@192.168.0.5 CSeq: 1 INVITE From: "user" sip:user@192.168.0.5:5555;transport=udp;tag=25591289 To: sip:sipas@192.168.0.5 Via: SIP/2.0/TCP 192.168.0.5;branch=z9hG4bK6446.87704592.0 Via: SIP/2.0/UDP 192.168.0.5:5555;branch=z9hG4bK98fa6f82a8447d74fe9a04da3d9dd0a1 Max-Forwards: 69 Contact: "user" sip:192.168.0.5:5555;transport=udp Content-Type: application/sdp Content-Length: 154
sdp not shown
- ==== Sip Server to ser
SIP/2.0 200 OK Via: SIP/2.0/TCP 192.168.0.5;branch=z9hG4bK6446.87704592.0 Via: SIP/2.0/UDP 192.168.0.5:5555;branch=z9hG4bK98fa6f82a8447d74fe9a04da3d9dd0a1 Record-Route: sip:sipas@192.168.0.5;ftag=25591289;r2=on;lr=on;transport=tcp Record-Route: sip:sipas@192.168.0.5;ftag=25591289;r2=on;lr=on From: user sip:user@192.168.0.5:5555;transport=udp;tag=25591289 To: sip:sipas@192.168.0.5;tag=swwmb9 Call-ID: f978201facd1ba9e7345af63683f96a1@192.168.0.5 CSeq: 1 INVITE Contact: sip:192.168.0.5:5080;transport=tcp Content-Length: 163 Content-Type: application/sdp
sdp not shown
- ==== ser to UA
SIP/2.0 200 OK Via: SIP/2.0/UDP 192.168.0.5:5555;branch=z9hG4bK98fa6f82a8447d74fe9a04da3d9dd0a1 Record-Route: sip:sipas@192.168.0.5;ftag=25591289;r2=on;lr=on;transport=tcp Record-Route: sip:sipas@192.168.0.5;ftag=25591289;r2=on;lr=on From: user sip:user@192.168.0.5:5555;transport=udp;tag=25591289 To: sip:sipas@192.168.0.5;tag=swwmb9 Call-ID: f978201facd1ba9e7345af63683f96a1@192.168.0.5 CSeq: 1 INVITE Contact: sip:192.168.0.5:5080;transport=tcp Content-Length: 163 Content-Type: application/sdp
sdpnot shown
- ==== UA to ser
ACK sip:192.168.0.5:5080;transport=udp SIP/2.0 Call-ID: f978201facd1ba9e7345af63683f96a1@192.168.0.5 CSeq: 1 ACK From: "user" sip:user@192.168.0.5:5555;transport=udp;tag=25591289 To: sip:sipas@192.168.0.5;tag=swwmb9 Via: SIP/2.0/UDP 192.168.0.5:5555;branch=3139322e3136382e302e353a3535353 Max-Forwards: 70 Route: sip:sipas@192.168.0.5;ftag=25591289;r2=on;lr=on Content-Length: 0
- ==== ser to Sip Server
ACK sip:192.168.0.5:5080;transport=udp SIP/2.0 Call-ID: f978201facd1ba9e7345af63683f96a1@192.168.0.5 CSeq: 1 ACK From: "user" sip:user@192.168.0.5:5555;transport=udp;tag=25591289 To: sip:sipas@192.168.0.5;tag=swwmb9 Via: SIP/2.0/TCP 192.168.0.5;branch=0 Via: SIP/2.0/UDP 192.168.0.5:5555;branch=3139322e3136382e302e353a3535353 Max-Forwards: 69 Content-Length: 0
- ==== Sip Server to ser
BYE sip:user@192.168.0.5:5555;transport=udp SIP/2.0 Via: SIP/2.0/TCP 192.168.0.5:5080;branch=z9hG4bKf7kfy5 Route: sip:sipas@192.168.0.5;ftag=25591289;r2=on;lr=on;transport=tcp Route: sip:sipas@192.168.0.5;ftag=25591289;r2=on;lr=on Max-Forwards: 70 From: sip:sipas@192.168.0.5;tag=swwmb9 To: user sip:user@192.168.0.5:5555;transport=udp;tag=25591289 Call-ID: f978201facd1ba9e7345af63683f96a1@192.168.0.5 CSeq: 1 BYE Content-Length: 0
- ==== ser to ser!
BYE sip:sipas@192.168.0.5;ftag=25591289;r2=on;lr=on SIP/2.0 Via: SIP/2.0/UDP 192.168.0.5;branch=z9hG4bK6446.97704592.0;i=2 Via: SIP/2.0/TCP 192.168.0.5:5080;branch=z9hG4bKf7kfy5 Max-Forwards: 69 From: sip:sipas@192.168.0.5;tag=swwmb9 To: user sip:user@192.168.0.5:5555;transport=udp;tag=25591289 Call-ID: f978201facd1ba9e7345af63683f96a1@192.168.0.5 CSeq: 1 BYE Content-Length: 0
- ==== ser to Sip Server! (and not to UA)
BYE sip:sipas@192.168.0.5;ftag=25591289;r2=on;lr=on SIP/2.0 Via: SIP/2.0/TCP 192.168.0.5;branch=z9hG4bK6446.a7704592.0 Via: SIP/2.0/UDP 192.168.0.5;branch=z9hG4bK6446.97704592.0;i=2 Via: SIP/2.0/TCP 192.168.0.5:5080;branch=z9hG4bKf7kfy5 Max-Forwards: 68 From: sip:sipas@192.168.0.5;tag=swwmb9 To: user sip:user@192.168.0.5:5555;transport=udp;tag=25591289 Call-ID: f978201facd1ba9e7345af63683f96a1@192.168.0.5 CSeq: 1 BYE Content-Length: 0
- ==== ser to Sip Server!
BYE sip:sipas@192.168.0.5;ftag=25591289;r2=on;lr=on SIP/2.0 Via: SIP/2.0/UDP 192.168.0.5;branch=z9hG4bK6446.97704592.0;i=2 Via: SIP/2.0/TCP 192.168.0.5:5080;branch=z9hG4bKf7kfy5 Max-Forwards: 69 From: sip:sipas@192.168.0.5;tag=swwmb9 To: user sip:user@192.168.0.5:5555;transport=udp;tag=25591289 Call-ID: f978201facd1ba9e7345af63683f96a1@192.168.0.5 CSeq: 1 BYE Content-Length: 0
and so on.....
Serusers mailing list serusers@lists.iptel.org http://lists.iptel.org/mailman/listinfo/serusers