Hi Victor,
That is strict routing - in SIP you have 2 types of routing - Strict
Routing (old one) and Loose Routing (new one).
Previous described is Loose Route. What you have here is Strict Routing
and it is a different algorithm.
In Strict Routing, RURI points to the next hop and all the hops
(including the end point) are added as Route. Each hop (when finding
itself in RURI) takes the next Route and moves it in RURI (that is
standard Strict to Strict Routing- previous and next hop are both strict
routers)
But in your case, the previous hop is strict route (this is why you have
opensips IP in RURI) and next hop (next Route) is a Loose Route (see the
lr param). So OpenSIPS is doing a Strict to Loose Routing conversion..
Lost you? :D
Regards,
Bogdan
Victor Gamov wrote:
Thanks Bogdan!
Now I have one more rr-question.
ACK request received by opensips listen on X.X.X.X at port 5060
ACK sip:[email protected]:5060 SIP/2.0.
Max-Forwards: 10.
Record-Route: <sip:Y.Y.Y.Y;lr=on;ftag=2204003977>
Via: SIP/2.0/UDP Y.Y.Y.Y;branch=z9hG4bK9a79.79e07dd4.2
Via: SIP/2.0/UDP
Z.Z.Z.Z:50072;rport=50072;branch=z9hG4bKc740505a77ff27fd47aeaded4f9c9287e3e68c732824a333ac632064bb1cc6d7
Call-id: 3749305...@192_168_100_114
Cseq: 1 ACK
From: <sip:[email protected]>;tag=2204003977
To: <sip:[email protected]>;tag=bd829e82ae5c473bdc4d5e71154c80a7
Route: <sip:X.X.X.X;lr=on;ftag=2204003977>
Route: <sip:X.X.X.X:50080;lr=on>
Content-length: 0
loose_route() called and return true.
I expect then topmost Route-header
Route: <sip:194.149.90.8;lr=on;ftag=2204003977>
will be removed, then next (last) Route header will be inspected and
packet will be forwarded to X.X.X.X port 50080.
But R-URI rewrited to
sip:X.X.X.X:50080;lr=on
and request forwarded to X.X.X.X port 5060
log says:
DBG:core:parse_headers: flags=200
DBG:rr:is_preloaded: is_preloaded: No
DBG:core:grep_sock_info: checking if host==us: 12==12 && [X.X.X.X] ==
[X.X.X.X]
DBG:core:grep_sock_info: checking if port 5060 matches port 50080
DBG:core:grep_sock_info: checking if host==us: 12==12 && [X.X.X.X] ==
[X.X.X.X]
DBG:core:grep_sock_info: checking if port 5060 matches port 50080
DBG:core:grep_sock_info: no match for: [X.X.X.X:50080]
DBG:core:grep_aliases: no match for: [0:X.X.X.X:50080]
DBG:core:check_self: host != me
DBG:core:grep_sock_info: checking if host==us: 12==12 && [X.X.X.X] ==
[X.X.X.X]
DBG:core:grep_sock_info: checking if port 5060 matches port 5060
DBG:core:grep_sock_info: match found for: [X.X.X.X:5060]
DBG:core:check_self: host == me
DBG:rr:after_loose: Topmost route URI:
'sip:X.X.X.X;lr=on;ftag=2350422187' is me
DBG:rr:after_loose: URI to be processed: 'sip:X.X.X.X:50080;lr=on'
DBG:rr:after_loose: Next URI is a loose router
before t_relay():
METHOD=ACK;
R-URI=sip:X.X.X.X:50080;lr=on;
du=sip:X.X.X.X;lr=on;ftag=2204003977;
dp=5060;
Where I'm wrong?
On 23.10.2010 16:07, Bogdan-Andrei Iancu wrote:
Victor Gamov wrote:
Sorry for my mistake. Original packet is:
-------
ACK sip:[email protected] SIP/2.0.
Route:<sip:X.X.X.X;lr=on>
To:<sip:[email protected]>;tag=4ded008d6ca9692485d1918f60c7da12
-------
In this case the Route hdr is removed (as consumed) and the
loose_route() function true (Route driven). $du will not be set as the
only routing info in the request is the RURI, which is the default SIP
routing.
_______________________________________________
Users mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users
--
Bogdan-Andrei Iancu
OpenSIPS Bootcamp
15 - 19 November 2010, Edison, New Jersey, USA
www.voice-system.ro
_______________________________________________
Users mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users