[Serusers] loose_route question

Jiri Kuthan jiri at iptel.org
Wed Aug 6 02:35:21 CEST 2003


At 12:51 AM 8/6/2003, Ricardo Villa wrote:
>Thanks Jan,
>
>So the loose_route function only check to see if the "lr" parameter is in
>the Route Header?  

No.


loose_route performs loose routing as specified in 3261. 
If there is a route header field, it calculates next hop, 
modifies request-uri if needed, consumes Route header fields
as needed, and returns true. OTherwise it returns false.

If t_relay is called later, it uses transport destination
calculated with loose_route.


>It does not insert or modify any Route Headers?

It does modify the route set according to 3261 rules.

Again: both scripts alternatives are possible, use the one with
the condition. It better deals with some UAs which break the
specification. 

Do you really want me to tell you the details? ok, be mu guest,
this is the case:
1) Cisco IOS gateways corrupt record-routing in that they strip
   parameters. If rr inserted by SER includes ;lr, it will be
   gone.
2) In some circumstances (e.g., so-called spirals) SER may
   record-route itself twice.
3) If a BYE with corrupted two Route header fields comes from IOS, 
   SER's loose_route places its own URI from Route to request-uri
   (that's because ;lr is gone due to the IOS bug); uri==myself
   matches and user lookup is executed, resulting typically in
   a mistake; (correct behaviour would be to identify the
   request as uri!=myself and simply processing it)
4) To make sure that requests with broken rr-ing never enter
   the script, use the condition mentioned previously. To determine
   that a requst should be forwarded, without any other script
   processing logic it uses the "was there some rr-ing?" test as
   opposed to the "uri==myself" test.

-Jiri


>Regards,
>Ricardo
>
>----- Original Message -----
>From: "Jan Janak" <jan at iptel.org>
>To: "Ricardo Villa" <ricvil at epm.net.co>
>Cc: <serusers at lists.iptel.org>
>Sent: Tuesday, August 05, 2003 7:49 AM
>Subject: Re: [Serusers] loose_route question
>
>
>> Hello,
>>
>> the reason why we use the condition below is that there were (and
>> probably still are) some user agents that strip parameters (including
>> lr) from Route header fields.
>>
>> loose_route function returns 1 if the message being processed will be
>> sent to a different destination than Request-URI. In this case if one of
>> user agents would strip ;lr parameters and the request spirals through
>> the proxy, strange things could happend without the condition.
>>
>> So the condition is there to deal with broken user agents.
>>
>>   Jan.
>>
>> On 04-08 20:37, Ricardo Villa wrote:
>> > Hi,
>> >
>> > I would like to understand a little bit better the "loose route"
>concept.  I have seen 2 different configs for ser:
>> >
>> > Sometimes the config has just:
>> > loose_route();
>> >
>> > ...and sometimes it has:
>> >
>> >        if (loose_route()) {
>> >                 t_relay();
>> >                 break;
>> >         };
>> >
>> > How exactly do these 2 differ?  The README says: "The function performs
>loose routing as defined in RFC3261", but why would I put a t_relay() after
>checking for loose_route()?
>> >
>> > What I can tell so far is that loose routing leaves the next hop in the
>Route header, but I don't understand which one of the above two examples
>actually tell SER to do that.
>> >
>> >
>> > Thanks,
>> > Ricardo Villa
>> >
>> >
>> >
>>
>> > _______________________________________________
>> > Serusers mailing list
>> > serusers at lists.iptel.org
>> > http://lists.iptel.org/mailman/listinfo/serusers
>>
>> _______________________________________________
>> Serusers mailing list
>> serusers at lists.iptel.org
>> http://lists.iptel.org/mailman/listinfo/serusers
>>
>
>
>_______________________________________________
>Serusers mailing list
>serusers at lists.iptel.org
>http://lists.iptel.org/mailman/listinfo/serusers

--
Jiri Kuthan            http://iptel.org/~jiri/ 




More information about the sr-users mailing list