Subject: Re:

From: Steve Little <[email-masked]>
Date: Thu, 16 Mar 2000 19:44:25 -0800 (PST)

Hi all,
This Q is wrt construction of Route header by called
EP. (6.32.3, bis)
It mentions that while sending future requests, the
called EP copies the Record-Route entries into is
Route header preserving order.

So, If say from A(Calling)->B(Called), a request
from A took path A-P1-P2-P3-B, ie
Record-Route: P3, P2, P1
Then when B sends a BYE, it copies the Rec-Route as
Route: P3, P2, P1, A

Above makes sense. But what I dont understand is the
statement that URIs contaned in Rec-Route are not
useful in reverse path.
In the above example, am I not re-using the URLs in
the record-route for the reverse path ?
Also, Im not clear  what the statement
"However, all components except the maddr parameter
are replaced by the calling URI." means - calling URI
replaces what ? the Route list ? I guess not.

Thanks !

__________________________________________________
Do You Yahoo!?
Talk to your friends online with Yahoo! Messenger.
http://im.yahoo.com

---

From: Jonathan Rosenberg <[email-masked]>
Date: Sun, 19 Mar 2000 23:54:22 -0500

> statement that URIs contaned in Rec-Route are not

Thats because these URIs all refer to addresses for B, not for A.
Remember, the Record-Route header is built by copying the request URI of
the request as it goes from A to B. So, lets be specific about your
example:

B is actually [email-masked]. So, A sends an INVITE like this:

INVITE sip:[email-masked] SIP/2.0
Contact: sip:[email-masked]
....

to its local proxy P1. P1 looks up company.com (P2) and forwards it
there, and adds itself to the Record-Route. The forwarded request looks
like:

INVITE sip:[email-masked] SIP/2.0
Contact: sip:[email-masked]
Record-Route: sip:[email-masked];maddr=<P1 address>

Now, company.com (P2) checks for userB in its database, and finds that
this is [email-masked]. So, it adds itself to the Record-Route
and forwards the request to sales.company.com (P3):

INVITE sip:[email-masked] SIP/2.0
Contact: sip:[email-masked]
Record-Route: sip:[email-masked];maddr=<P2 address>
Record-Route: sip:[email-masked];maddr=<P1 address>

Now, P3 (sales.company.com) knows where Joe is right now because of
registrations. Its sip:[email-masked]. So, it adds itself
to the record-route and forwards it there:

INVITE sip:[email-masked] SIP/2.0
Contact: sip:[email-masked]
Record-Route: sip:[email-masked];maddr=<P3 address>
Record-Route: sip:[email-masked];maddr=<P2 address>
Record-Route: sip:[email-masked];maddr=<P1 address>

now, it arrives at B ([email-masked]), and the call is
up. Now, Joe wants to send that BYE to hang up. If, as you suggest, it
constructs the Route header with the same URI, the request it sends will
to P3 look like:

BYE sip:[email-masked] SIP/2.0
Route: sip:[email-masked];maddr=<P2 address>
Route: sip:[email-masked];maddr=<P1 address>
Route: sip:[email-masked]

Note that the request URI of this request is actually B, not A. This
request above will actually be routed correctly, so long as (1) every
proxy obeys the route headers, (2) every proxy uses the maddr parameter.
If any proxy messes either up, the request is probably going to loop
back to B. Thats bad. Thus, the mechanism is brittle. By having the
called party construct the BYE in the following way:

BYE sip:[email-masked] SIP/2.0
Route: sip:[email-masked];maddr=<P2 address>
Route: sip:[email-masked];maddr=<P1 address>
Route: sip:[email-masked]

We guarantee things work right, even if any proxy ignores the Routes or
ignores maddr. The request is still routed correctly. Thats why its done
this way. We wish to preserve the rule that the request URI indicates
where the request is going.

> replaces what ? the Route list ? I guess not.

I think the example clarifies this. Only the maddr parameter from the
Record-Route header is used when the UAS constructs the Route header.

-Jonathan R.

-- 
Jonathan D. Rosenberg                       72 Eagle Rock Ave.
Chief Scientist                             First Floor
dynamicsoft                                 East Hanover, NJ 07936
[email-masked]                     FAX:   (732) 741-4778
http://www.cs.columbia.edu/~jdrosen         PHONE: (732) 741-7244
http://www.dynamicsoft.com