[sip-overload] draft-ietf-soc-overload-control-02 and algorithm agility

Hadriel Kaplan <HKaplan@acmepacket.com> Tue, 29 March 2011 16:07 UTC

Return-Path: <HKaplan@acmepacket.com>
X-Original-To: sip-overload@core3.amsl.com
Delivered-To: sip-overload@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id B9A5B3A6862 for <sip-overload@core3.amsl.com>; Tue, 29 Mar 2011 09:07:32 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.269
X-Spam-Level:
X-Spam-Status: No, score=-2.269 tagged_above=-999 required=5 tests=[AWL=0.330, BAYES_00=-2.599]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id mTAMIL1QB73L for <sip-overload@core3.amsl.com>; Tue, 29 Mar 2011 09:07:31 -0700 (PDT)
Received: from etmail.acmepacket.com (etmail.acmepacket.com [216.41.24.6]) by core3.amsl.com (Postfix) with ESMTP id 780BB3A6812 for <sip-overload@ietf.org>; Tue, 29 Mar 2011 09:07:31 -0700 (PDT)
Received: from mail.acmepacket.com (216.41.24.7) by etmail.acmepacket.com (216.41.24.6) with Microsoft SMTP Server (TLS) id 8.2.254.0; Tue, 29 Mar 2011 12:09:08 -0400
Received: from mailbox1.acmepacket.com ([216.41.24.12]) by mail ([127.0.0.1]) with mapi; Tue, 29 Mar 2011 12:09:08 -0400
From: Hadriel Kaplan <HKaplan@acmepacket.com>
To: "sip-overload@ietf.org" <sip-overload@ietf.org>
Date: Tue, 29 Mar 2011 12:09:06 -0400
Thread-Topic: draft-ietf-soc-overload-control-02 and algorithm agility
Thread-Index: AcvuK6JBj110eJkuRGSbeMIgPeP2JQ==
Message-ID: <9AD888D2-CCED-4C4C-8F21-C3FA209538C3@acmepacket.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
acceptlanguage: en-US
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Brightmail-Tracker: AAAAAQAAAUA=
Subject: [sip-overload] draft-ietf-soc-overload-control-02 and algorithm agility
X-BeenThere: sip-overload@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: SIP Overload <sip-overload.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/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: Tue, 29 Mar 2011 16:07:32 -0000

Howdy,
in today's WG session the new oc-algo mechanism was described, and it was stated the WG had agreed to support multiple algorithms, with a pointer to this thread:
http://www.ietf.org/mail-archive/web/sip-overload/current/msg00436.html

I have read that thread, and there were actually few discussions about the need for multiple algorithms (most of it was about 100 response handling or how often algorithms would change, not the need for multiple algorithms).

2 people seemed to want to support multiple algorithms, but did not define what the "other" one would be.

So I'm going to try to argue for NOT doing this (at least not right now).  Here's why:

1) Every time we add something optional, interop issues happen.  The protocol gets more complicated, there's more to test, more to fail, etc.  ISTM that a overload control mechanism should be as simple as possible, with the greatest probability of success and interop.  For me, the bar would have to pretty darn high to add optionality - there would have to be a really good reason.

2) Currently, there is only one algorithm: loss.  Other algorithms were tested (rate and window), but since the results were effectively the same, it would seem rather foolish to add support for those other two.  So this would have to be a 4th, as yet unknown, algorithm.  That's fine, but we don't need to create a param or logic to handle unknown future algorithms *now*. Think about it - nothing prevents a future algorithm from adding this oc-algo param in a backwards-compatible manner.  Ergo, we don't need to do it now.  In fact, since we don't know the future algorithm(s), we have no idea if they could even use the other params we have.

3) Doing this is not as trivial as the draft currently has it.  You cannot just "negotiate" it by having *only* the client-side send the param again in the next request when it wants to re-negotiate it, because the client has no idea when its next-hop server has rebooted, or the next-hop server's had *its* config changed.  If that happens, the server would get a request form the client without the param, and thus think the client is using loss, even if they previously negotiated some new algo.  

4) When you're the server-side, you'll now have to keep a negotiated algorithm setting pre previous hop client.  For some server systems that's easy, but for some servers that's untenable - they don't keep state per previous hop client.  And I believe our charter requires us to support a model of unknown previous-hop clients.

-hadriel