[Dime] Diameter Load value and SRV

Steve Donovan <srdonovan@usdonovans.com> Fri, 11 March 2016 00:13 UTC

Return-Path: <srdonovan@usdonovans.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 5B48212DF0F for <dime@ietfa.amsl.com>; Thu, 10 Mar 2016 16:13:03 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.28
X-Spam-Level:
X-Spam-Status: No, score=0.28 tagged_above=-999 required=5 tests=[BAYES_05=-0.5, HTML_MESSAGE=0.001, SPF_NEUTRAL=0.779] autolearn=no autolearn_force=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id fpDd2xB6YRWL for <dime@ietfa.amsl.com>; Thu, 10 Mar 2016 16:13:01 -0800 (PST)
Received: from biz131.inmotionhosting.com (biz131.inmotionhosting.com [173.247.247.250]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id EAAD112DF0E for <dime@ietf.org>; Thu, 10 Mar 2016 16:13:01 -0800 (PST)
Received: from cpe-97-99-50-102.tx.res.rr.com ([97.99.50.102]:59262 helo=Steves-MacBook-Air.local) by biz131.inmotionhosting.com with esmtpsa (TLSv1.2:DHE-RSA-AES256-SHA:256) (Exim 4.86_1) (envelope-from <srdonovan@usdonovans.com>) id 1aeAhQ-003kTm-8y for dime@ietf.org; Thu, 10 Mar 2016 16:13:01 -0800
To: "dime@ietf.org" <dime@ietf.org>
From: Steve Donovan <srdonovan@usdonovans.com>
Message-ID: <56E20D8B.6010408@usdonovans.com>
Date: Thu, 10 Mar 2016 18:12:59 -0600
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:38.0) Gecko/20100101 Thunderbird/38.6.0
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="------------050409020005020202050108"
X-OutGoing-Spam-Status: No, score=-2.9
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - biz131.inmotionhosting.com
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - usdonovans.com
X-Get-Message-Sender-Via: biz131.inmotionhosting.com: authenticated_id: srdonovan@usdonovans.com
X-Authenticated-Sender: biz131.inmotionhosting.com: srdonovan@usdonovans.com
Archived-At: <http://mailarchive.ietf.org/arch/msg/dime/SBYT237mYUGAcefqeegB5whXd20>
Subject: [Dime] Diameter Load value and SRV
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.17
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: <https://mailarchive.ietf.org/arch/browse/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, 11 Mar 2016 00:13:03 -0000

All,

The current version of the Diameter Load draft says that the load value 
should be consistent with the use of DNS SRV.  It then has an editor's 
note indicating that we need more detail.

The following is my proposal for that additional detail.

The relevant section from RFC 2782 (DNS SRV) is the description of the 
Priority and Weight parameters in the SRV RR copied below.  It is mostly 
based on the Weight section but I included Priority because it is 
referenced in the Weight section.

My proposal is that the Load value communicated in a Diameter Load 
report be used to dynamically update the Weight value for an entries in 
the Routing table and in the Peer table.  Note that the load mechanism 
does not give a way to change the priority value.  That would still 
either come as a result of a DNS SRV query or through statically 
configuring a Diameter node.

If this is the case, then the load value would be in the range of 0-65535.

The distribution algorithm below results in more messages being sent to 
a node with a higher weight value.  As a result, a higher Diameter load 
value would indicate a LOWER load on the sending node.  A node that is 
heavily loaded would send a lower load value. Stated another way, a node 
that has zero load would have a load value of 65535.  A node that is 
100% loaded would have a load value of 0.

The algorithm below would be a suggestion for how Diameter nodes would 
use the load information but the actual method for using the load 
information would be an implementation decision.

The algorithm would be used in two places.  First,  Diameter nodes doing 
the server selection would use the load information to select from a set 
of candidate servers for a request.  It would also be used for selecting 
the next hop from a set of candidate peer nodes.

If there is consensus on this general approach then I will add the 
appropriate overview and normative requirements in the next version of 
the Load draft.  I am planning to submit that draft prior to the IETF 95 
deadline.

Regards,

Steve

-----

    Priority
         The priority of this target host.  A client MUST attempt to
         contact the target host with the lowest-numbered priority it can
         reach; target hosts with the same priority SHOULD be tried in an
         order defined by the weight field.  The range is 0-65535.  This
         is a 16 bit unsigned integer in network byte order.

    Weight
         A server selection mechanism.  The weight field specifies a
         relative weight for entries with the same priority. Larger
         weights SHOULD be given a proportionately higher probability of
         being selected. The range of this number is 0-65535.  This is a
         16 bit unsigned integer in network byte order.  Domain
         administrators SHOULD use Weight 0 when there isn't any server
         selection to do, to make the RR easier to read for humans (less
         noisy).  In the presence of records containing weights greater
         than 0, records with weight 0 should have a very small chance of
         being selected.

         In the absence of a protocol whose specification calls for the
         use of other weighting information, a client arranges the SRV
         RRs of the same Priority in the order in which target hosts,
         specified by the SRV RRs, will be contacted. The following
         algorithm SHOULD be used to order the SRV RRs of the same
         priority:

         To select a target to be contacted next, arrange all SRV RRs
         (that have not been ordered yet) in any order, except that all
         those with weight 0 are placed at the beginning of the list.

         Compute the sum of the weights of those RRs, and with each RR
         associate the running sum in the selected order. Then choose a
         uniform random number between 0 and the sum computed
         (inclusive), and select the RR whose running sum value is the
         first in the selected order which is greater than or equal to
         the random number selected. The target host specified in the
         selected SRV RR is the next one to be contacted by the client.
         Remove this SRV RR from the set of the unordered SRV RRs and
         apply the described algorithm to the unordered SRV RRs to select
         the next target host.  Continue the ordering process until there
         are no unordered SRV RRs.  This process is repeated for each
         Priority.