Subject: RE: Proxy Server Inconsistencies

From: Sean Olson <[email-masked]>
Date: Thu, 28 Jan 1999 18:37:16 -0600 (CST)

> 
> Well, at least we are down from three to two options.
> 
> One point on the re-Invite method is that clients would be required to also
> refresh the session timer, even if there was no stateful proxy involved in
> the session signaling.  The PING method would only be used when a stateful
> proxy was involved.
> 
If there is no stateful proxy involved, then there is no one to insert
a "Keep-alive:" header and the client need not keep a session timer but may
instead rely on the media stream for liveness tests. 

> One method to avoid the malicious proxy is to allow the Pinging proxy to
> PING in both directions.  It is unlikely that a malicious proxy would exist
> in both directions.
> 
A pinging proxy MUST ping in both directions to determine that a both halves
of the call are up.

> Any suggestions on how we should pursue selecting one option over the other?
> 
> Steve
>

Both options require approximately the same complexity. The PING method
has the advantage of potentially making things easier for the client
since the client would only need to respond to PING requests and would not
need to maintain an internal session timer ( though there are good reasons
for doing so anyway ).

Sean

---

From: Jonathan Rosenberg <[email-masked]>
Date: Thu, 28 Jan 1999 20:32:24 -0500

> instead rely on the media stream for liveness tests.

Although its possible that the UAS could insert this header. 

> > Any suggestions on how we should pursue selecting one option over the other?

Discussion on the lists and Internet drafts, same as anything else.

> need to maintain an internal session timer ( though there are good reasons

I'm not sure about the complexity issue. I think using PING with caching
(other proxies cache the keepalive state and respond with it instead of
forwarding the PING) will probably in the end be more complex. We'll
have to deal with cache consistency and invalidation issues. I think
these will be quite hard in the end - consider the following:

UAC-P1-P2-P3-UAS

Now, lets say each of P1,P2,P3 is stateful, and would like to do a PING
every minute. Lets consider PINGing of the UAC only. P1 PINGS the UAC,
and finds its alive. 59 seconds later, P2 PINGS. P1 receives this, and
responds that the UAC is alive. Then, 59 seconds later, P3 PINGS. P2
responds that the UAC is alive (since it was according to its own PING
less than one minute ago). Now, P3 has state information that is more
than three times more stale than it should. To fix this, we'll need to
have some kind of expiration in the PING responses which indicate the
validity of the response. I think this too will introduce all kinds of
interesting synchronization and invalidation issues.

So, I'm not convinced the PING is really simpler. The re-INVITE
keepalive seems the most straightforward, and the most consistent with
the rest of SIP.

-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