Re: [sip-overload] draft-ietf-soc-overload-control-07 section 6.3 algorithm

Eric McMurry <emcmurry@estacado.net> Thu, 08 March 2012 20:32 UTC

Return-Path: <emcmurry@estacado.net>
X-Original-To: sip-overload@ietfa.amsl.com
Delivered-To: sip-overload@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id AA98621F84D1 for <sip-overload@ietfa.amsl.com>; Thu, 8 Mar 2012 12:32:10 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.378
X-Spam-Level:
X-Spam-Status: No, score=-2.378 tagged_above=-999 required=5 tests=[AWL=0.221, BAYES_00=-2.599]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ok4rs9cSmTMT for <sip-overload@ietfa.amsl.com>; Thu, 8 Mar 2012 12:31:47 -0800 (PST)
Received: from estacado.net (estacado-pt.tunnel.tserv2.fmt.ipv6.he.net [IPv6:2001:470:1f03:266::2]) by ietfa.amsl.com (Postfix) with ESMTP id 6C7CB21F84D3 for <sip-overload@ietf.org>; Thu, 8 Mar 2012 12:31:46 -0800 (PST)
Received: from embp.mcmurry.home (cpe-76-184-255-34.tx.res.rr.com [76.184.255.34]) (authenticated bits=0) by estacado.net (8.14.3/8.14.3) with ESMTP id q28KVaqm067528 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO); Thu, 8 Mar 2012 14:31:41 -0600 (CST) (envelope-from emcmurry@estacado.net)
Mime-Version: 1.0 (Apple Message framework v1257)
Content-Type: text/plain; charset="us-ascii"
From: Eric McMurry <emcmurry@estacado.net>
In-Reply-To: <4F5910BE.2010505@nostrum.com>
Date: Thu, 08 Mar 2012 14:31:31 -0600
Content-Transfer-Encoding: quoted-printable
Message-Id: <B08E6182-30D0-4590-9AE2-2A9D62F466BB@estacado.net>
References: <D05CF57C-B7B8-4187-BF55-70426DB3762D@estacado.net> <4F57B393.3020702@nostrum.com> <4F58F595.9070107@bell-labs.com> <4F58FACB.2020602@nostrum.com> <4F5902D9.1080006@bell-labs.com> <4F5904A0.5090709@nostrum.com> <4F5908C1.8060709@bell-labs.com> <4F5910BE.2010505@nostrum.com>
To: Adam Roach <adam@nostrum.com>
X-Mailer: Apple Mail (2.1257)
Cc: sip-overload@ietf.org
Subject: Re: [sip-overload] draft-ietf-soc-overload-control-07 section 6.3 algorithm
X-BeenThere: sip-overload@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: SIP Overload <sip-overload.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/sip-overload>, <mailto:sip-overload-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/sip-overload>
List-Post: <mailto:sip-overload@ietf.org>
List-Help: <mailto:sip-overload-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/sip-overload>, <mailto:sip-overload-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 08 Mar 2012 20:32:10 -0000

I agree with this sentiment.  I think I (and probably Adam) were coming from the assumption that the algorithm described in 6.3 was for clients, based on the start of the section:

   This section describes a default algorithm that a SIP client can to
   throttle SIP traffic going downstream by the percentage loss value
   specified in the "oc" parameter.

(btw, there is a grammar issue in the first sentence)

taken as a client algorithm, it only made sense to me if it described the clients *sending* behavior, which is what I was trying to call out in my first message.  As you and Adam have pointed out, there are different behaviors for different elements in the network.  The UAC and UAS can not necessarily be described with the same algorithm (at least not clearly).  Proxies are another mater also as their behavior is potentially more complex.

So let's consider what the interesting cases are that warrant putting ink to the algorithm.  There are several cases to look at:

* sending from an client endpoint
* receiving at an client endpoint

* receiving at a server endpoint
* sending from a server endpoint

* receiving from a client endpoint at an intermediary
* sending to a client endpoint at an intermediary
* receiving from a server endpoint at an intermediary
* sending to a server endpoint at an intermediary

Since this is only for hop-by-hop, I have not listed all possibilities.  I am also limiting the scope of this discussion to the loss-based default algorithm, and not including others or anything else such as algorithm negotiation.  Working our way down the list:

* sending from an client endpoint
The behavior here is more complex than can be described in a couple of sentences and would be made more clear with an algorithmic description.  The modifications to the algorithm in 6.3 from Adam fit the bill here.

* receiving at an client endpoint
I think this can be described clearly in natural language.

* receiving at a server endpoint
I think this can be described clearly in natural language.

* sending from a server endpoint
I think this can be described clearly in natural language.

* receiving from a client endpoint at an intermediary
I think this can be described clearly in natural language.

* sending to a client endpoint at an intermediary
When the intermediary is a proxy, the behavior here is potentially complex.  I think this would be made more clear with an algorithmic description.

* receiving from a server endpoint at an intermediary
When the intermediary is a proxy, the behavior here is potentially complex.  I think this would be made more clear with an algorithmic description.  It may make sense to cover this in conjunction with the algorithm for sending to a client endpoint from a proxy.

* sending to a server endpoint at an intermediary
I think this can be described clearly in natural language.


So, I think a couple of algorithms are in order.  The first provided by the doc along with Adam's modifications, and a second describing proxy behavior.

On Mar 8, 2012, at 14:04 , Adam Roach wrote:

> On 3/8/12 1:30 PM, Vijay K. Gurbani wrote:
>> 
>> So assume that you are a proxy (the most general of the entities doing
>> overload control).  And also assume that when you execute
>> 
>> while (true)  {
>>   sip_msg := get_sip_msg() ... }
>> 
>> that if this is a request, it has been picked up from the network and
>> put on your processing queue.  If it is a response, then it has been
>> picked up from the network and put on your processing queue.  From your
>> viewpoint, requests are now destined downstream subject to overload
>> control.  Similarly, responses are to be processed to extract overload
>> control information and proxied upstream.
>> 
>> With this context, see if things make more sense.
> 
> No, because there's a lot of processing that needs to take place between receipt of a message and sending that same message. This is complicated by the fact that proxies can, for example, fork requests.
> 
> I think what we really want here is to show one loop that demonstrates how the entity (proxy or user agent) handles messages that are going to the network. Then, separately, we should show a different loop that handles messages coming from the network.
> 
> I suspect we're not going to get untangled from the axle otherwise.
> 
> /a
> _______________________________________________
> sip-overload mailing list
> sip-overload@ietf.org
> https://www.ietf.org/mailman/listinfo/sip-overload