Subject: Re: Proxy Server Inconsistencies

From: Sean Olson <[email-masked]>
Date: Sat, 23 Jan 1999 15:31:52 -0600 (CST)

> There is another issue with a mid-stream proxy querying a UAx as to
> liveness: we can't assume connectivity transitivity, due to firewalls.
> Thus, if a call goes UAC-F-P1-P2-P3-UAS, there is no guarantee (or,
> rather, it's very unlikely) that P2 can directly ping UAC, since F may
> only allow the TPC connection to P1. This would argue for UAC-initiated
> (and UAS/P1/P2-requested) liveness indications or you'd have to use
> partial Record-Routes. I'd imagine that anything that only requires
> pretty much the same set of connections as was used for setup has the
> largest chance for firewall success.
> 
> -- 
> Henning Schulzrinne   http://www.cs.columbia.edu/~hgs
>

In this situation, the firewall will have to insert a Record-Route or Contact
header. Without a Record-Route or a Contact header there is no assurance 
that any BYE/CANCEL/INVITE/ACK will ever get back to the UAC through the 
firewall. In either case, the issue with P2 sending a PING to the UAC 
is solved. UAC or UAS liveness tests are usually not required because
they can usually depend on media stream breaks to indicate call termination
in the abnormal cases. For a mid-stream proxy, this is not an option unless
it is doubling as a media gateway.

-----------------------------------------------------------------
Sean Olson                             Ericsson Inc.  
E-mail: [email-masked]
Voice: (972) 583-5472  FAX: (972) 669-0154 
Mail: 851 International, Richardson, TX 75081  Mail-stop L-04

---

From: Lars Berggren <[email-masked]>
Date: Fri, 29 Jan 1999 09:55:31 +0100

Jonathan Rosenberg wrote:
> Sean Olson wrote:
...
> > 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 ).
> 
> 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:
> 

If the question is where to put the complexity, I'd vote for putting it
in the client/user agent. The reason for this is that a proxy probably
will handle more calls per second than the client, and thus has pretty
much to do anyway. Also, a proxy that keeps state for the duration of a
session rather than a SIP transaction is probably the most resource
demanding implementation of SIP, hence we should try to remove instead
of add burdon into it.

I think, for example, an ISP that has a SIP billing proxy server can
have _many_  customers in calls simultaneously. This will require a call
record for each on-going call, which then requires liveness test, say
once a minute. With the PING approach and 6000 on-going calls, the proxy
has to initiate a PING transaction 100 times per second, besides the
normal proxy tasks.

The less complex the proxy is, the larger number of sessions can be
handled.

/Lars

-- 
Lars Berggren       <[email-masked]>
Intertex Data AB    tel: +46-8-6282828
Sundbyberg, Sweden  fax: +46-8-6286414
-- 
Lars Berggren       <[email-masked]>
Intertex Data AB    tel: +46-8-6282828
Sundbyberg, Sweden  fax: +46-8-6286414