Subject: Stateless Proxies

From: "Guido Schuster" <[email-masked]>
Date: Wed, 6 Jan 1999 14:23:00 -0600

Hello All,

I am a bit confused about this.

Why can a forking SIP proxy not be stateless?  For that matter, what kind
of proxy needs state and why?

Thanks

Guido

---

From: Jonathan Rosenberg <[email-masked]>
Date: Wed, 06 Jan 1999 17:13:39 -0500

A forking SIP proxy cannot be stateless because it needs to perform a
filtering operation, returning (in general) one response out of the many
it receives. For example, a forking proxy with three branches, that
receives a 300 class, 400 class, and 500 class response on each branch
respectively, should return only the 300 class response upstream. If the
proxy were stateless, it would end up returning all three of the
responses upstream (since it won't remember that it had received prior
responses when it gets another one). The result of this is (1) response
implosion at the client, and (2) inconsistent responses at the client.
Thus, a forking proxy must be stateful.

Also note that a proxy that uses TCP must be stateful as well, whether
it forks or not. This has to do with reliability issues.

Why do you want state in a proxy? Certain services (like forking) simply
require it. A sequential search proxy requires state; sequential search
is the heart of services like follow-me and personal mobility. Its at
the discretion of the implementor whether to use a stateful or stateless
proxy. You can even be "super stateful", and use the Record-Route header
to allow a proxy to be on the signaling path of all subsequent
exchanges. This allows a stateful proxy to maintain call state in
addition to transaction state.

-Jonathan R.

-- 
Jonathan D. Rosenberg                       Lucent Technologies
Member of Technical Staff                   101 Crawfords Corner Rd.
High Speed Networks Research                Holmdel, NJ 07733
FAX:   (732) 834-5379                       Rm. 4C-526
EMAIL: [email-masked]
URL: http://www.cs.columbia.edu/~jdrosen

---

From: Anup Rao <[email-masked]>
Date: Wed, 06 Jan 1999 14:49:22 -0800

> of proxy needs state and why?

In the forking case, a proxy server is actually attempting to
locate/contact the callee at one of several locations based on an INVITE
from the caller. It may get responses from zero or more locations. If it
does get a response from one location, it needs to tell the other
locations that it is done.... or connect n or more locations in a
conference. Bottom line, if it forks a request, it needs to remember
where it forked it to. On getting a response, it needs to deal with the
other call legs. This implies state.

Regards
Anup.