[Serusers] Re: sequential forking / t_on_failure

Nils Ohlmeier nils at iptel.org
Wed Jun 2 22:44:25 CEST 2004


Hi Alex,

On Wednesday 02 June 2004 22:26, Alex Bligh wrote:
> Nils / Klaus,
>
> --On 02 June 2004 20:08 +0200 Nils Ohlmeier <nils at iptel.org> wrote:
> > On Wednesday 02 June 2004 20:03, Alex Bligh wrote:
> >> --On 02 June 2004 18:38 +0100 Alex Bligh <alex at alex.org.uk> wrote:
> >> > Consider the situation whereby after an INVITE occurs which ser
> >> > initially routes to A (which is, say, busy) and subsequently routes to
> >> > B. Perhaps it has gone through t_on_failure or some other mechanism of
> >> > sequential forking. Assume the INVITE has been OK'd and ACK'd.
> >> >
> >> > What mechanism does ser use to ensure subsequent transactions on the
> >> > call-leg (such as BYE, re-INVITE etc.) are sent to B and not A? IE
> >> > where is
> >> > the state being stored and how?
> >>
> >> I am obviously assuming (transaction) stateful forwarding and that
> >> record_route is on (else the proxy wouldn't even get to see BYE etc.)
>
> Nils said:
> > In this case the Route header resulting out of the Record-Route header
> > includes all informations required to route any subsequent in-dialog
> > request  to it's destination. So any re-INVITE or BYE can be routed
> > stateless to its  destination.
>
> Klaus said:
> > This is done in outside the proxy - for in-dialog requests, the request
> > URI contains the "contact" of the other party (or the Route header for
> > strict routers (old SIP RFC))
>
> This implies ser is looking either at the parameters in the Record-Route:
> header added by ser on the INVITE (which is what Nils seems to suggest) OR
> relies on the initiating UA using as a Request-URI for subsequent in-dialog
> messages the Contact: header added by the UA providing the OK response to
> INVITE.
>
> I think it's probably the latter that's happening. But can I rely on this?
> IE Is it mandatory for the subsequent in-dialog transactions to use the
> Contact: address supplied by the UAS, and is it mandatory for the UAS to
> add a Contact: header at all? I'm reading the call flow example on p167 of
> "SIP: Understanding the Session Initiation Protocol" and it doesn't seem to
> be there. What's concerning me is that I can see it works, but I can't tell
> why or if it will always work. I am probably being very dumb.

As I allready explained on SIP-Implemetors: the Contact header is mandatory 
for requests and replies which can establish a dialog. If your book does not 
mention this or even do not explain the simple scenario how further in-dialog 
requests (re-INVITE, BYE's etc.) are delivered to the target, i would suggest 
to throw it away and read the RFC instead ;-)

The Contact from the remote side will be used in future requests as final 
target. In case of loose-routing as request URI, in case of strict routing as 
last hop in the Route header. That is the reason why the Contact header is 
mandatory in INVITE and 200 OK (for the INVITE). (That is the reason why i 
said in the Route header is everything included.)
So the proxy will never rely on parameters in the Record-Route/Route header.

If you are looking at some real world traces, search for the remote side 
Contact URI in the BYE message. You will for sure find it somewhere.

Greetings
  Nils




More information about the sr-users mailing list