Re: [Dime] Dime: Diameter Overload IETF requirements, review

Ben Campbell <ben@nostrum.com> Fri, 07 December 2012 15:47 UTC

Return-Path: <ben@nostrum.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 594AC21F878C for <dime@ietfa.amsl.com>; Fri, 7 Dec 2012 07:47:46 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -102.321
X-Spam-Level:
X-Spam-Status: No, score=-102.321 tagged_above=-999 required=5 tests=[AWL=0.279, BAYES_00=-2.599, SPF_PASS=-0.001, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Y+vpm3YSZlXP for <dime@ietfa.amsl.com>; Fri, 7 Dec 2012 07:47:45 -0800 (PST)
Received: from shaman.nostrum.com (nostrum-pt.tunnel.tserv2.fmt.ipv6.he.net [IPv6:2001:470:1f03:267::2]) by ietfa.amsl.com (Postfix) with ESMTP id 5B39921F8784 for <dime@ietf.org>; Fri, 7 Dec 2012 07:47:45 -0800 (PST)
Received: from [10.0.1.14] (cpe-76-187-92-156.tx.res.rr.com [76.187.92.156]) (authenticated bits=0) by shaman.nostrum.com (8.14.3/8.14.3) with ESMTP id qB7FlQYd061169 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO); Fri, 7 Dec 2012 09:47:27 -0600 (CST) (envelope-from ben@nostrum.com)
Content-Type: text/plain; charset="iso-8859-1"
Mime-Version: 1.0 (Mac OS X Mail 6.2 \(1499\))
From: Ben Campbell <ben@nostrum.com>
In-Reply-To: <16364_1354893872_50C20A30_16364_5192_1_6B7134B31289DC4FAF731D844122B36E0C0699@PEXCVZYM13.corporate.adroot.infra.ftgroup>
Date: Fri, 07 Dec 2012 09:47:28 -0600
Content-Transfer-Encoding: quoted-printable
Message-Id: <18AC9DCE-8C27-43AB-AE3E-CBB913A471A7@nostrum.com>
References: <C472E6A4C17FA14E90533C0369A4798B20EB463C6F@FRMRSSXCHMBSA1.dc-m.alcatel-lucent.com> <23E0ABAF-E856-44A9-8F6D-C88B8CAB2A57@computer.org> <170E8FCC2134BD42B539B47798ABF8F026C0C43982@FRMRSSXCHMBSA1.dc-m.alcatel-lucent.com> <7AE8BAB4-ACB6-40EA-BA50-E6DA909D01E7@nostrum.com> <28892_1354816236_50C0DAEC_28892_2267_1_6B7134B31289DC4FAF731D844122B36E0BF7AD@PEXCVZYM13.corporate.adroot.infra.ftgroup> <26F4B824-A91B-4D98-9E1F-41A5440C6C45@computer.org> <28892_1354818749_50C0E4BD_28892_4479_1_6B7134B31289DC4FAF731D844122B36E0BF868@PEXCVZYM13.corporate.adroot.infra.ftgroup> <81E2AD4F-9FED-498D-ACA2-538C6ED53B7E@computer.org> <13633_1354873372_50C1BA1C_13633_2361_1_6B7134B31289DC4FAF731D844122B36E0C0056@PEXCVZYM13.corporate.adroot.infra.ftgroup> <724F2D49-4B1F-416D-BF94-F46C3DDC02EF@nostrum.com> <16364_1354893872_50C20A30_16364_5192_1_6B7134B31289DC4FAF731D844122B36E0C0699@PEXCVZYM13.corporate.adroot.infra.ftgroup>
To: lionel.morand@orange.com
X-Mailer: Apple Mail (2.1499)
Received-SPF: pass (nostrum.com: 76.187.92.156 is authenticated by a trusted mechanism)
Cc: "dime@ietf.org" <dime@ietf.org>
Subject: Re: [Dime] Dime: Diameter Overload IETF requirements, review
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 07 Dec 2012 15:47:46 -0000

On Dec 7, 2012, at 9:24 AM, lionel.morand@orange.com wrote:

>> [em] One solution uses existing messages as a carrier, piggybacking on them.  This can be done by an implementation without any change in the specification of the messages that are being used.  
>> 
>> [LM] It is exactly the issue for me! :) I think that you want to say that existing commands can be extended with changing the CCF specification and it is true. The application (and its related specification/documentation) using this command will change! And it is what I highlight in my comment and in the proposed change.
> 
> I'm not sure what you mean by the application changing in the piggyback case. Assuming the application specification uses the * [ AVP ] construct, an _implementation_ can add the OC AVPs without a change in the specification of specification. Yes, the implementation changes, but the spec doesn't have to. Given, there might be benefit to updating the spec, particularly if you want to describe application-specific behaviors rather than accepting the base behavior. But that's not a _requirement_, right?
> 
> What are we missing?
> 
> [LM] it is not the application specification that "uses the *[AVP]" but the CCF specification of a given command. And an application is not only defined by the command code format specifications. Set of AVP, error codes and so on are also part of the application. So adding new AVP to existing application IS a change of the application and related application specification, even if this addition is compliant with the CCF specification of the given command. You will have to describe at least that these new AVPs have to be carried in a specific set of commands when considering existing applications. I think that it the use of "specification" that causes problems here. And it is why I've proposed the change in REQ2.

I see your point, but the goal of that language was that you don't necessarily have to do that. For example, lets assume you have a spec for application "Foo" that defines a set commands, AVPs (including *[AVP] ), and their semantics. You also have a spec for piggybacked overload control, that defines additional AVPs that can be added to any message, their semantics, and at least one basic overload control algorithm. (I'm using piggybacked for the sake of argument here, since I think we agree that the issues are different if we have a separate OC application)

If all an implementer wants to use is the the basic OC algorithm, they merely implement both specs, adding the OC AVPs (as completely specified in the OC mechanism spec) to the Foo commands. You don't have to have a revised Foo spec to use the OC spec. It's analogous to a "mix in" pattern, if you will.

That being said, there may be real benefits to updating the Foo spec. For example, Foo might need an algorithm other than the base one. Or maybe it needs to define how to prioritize requests in overload conditions. Maybe Foo is a 3GPP spec, and they want to _require_ OC.

The idea is, you don't have to go back and do a mass update of every application to make OC useful. You can do it over time, as needed.

Thanks!

Ben.