Re: [Dime] Ongoing Throttling Information in request messages

Jouni Korhonen <jouni.nospam@gmail.com> Wed, 06 November 2013 17:03 UTC

Return-Path: <jouni.nospam@gmail.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 7363311E8140; Wed, 6 Nov 2013 09:03:24 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.99
X-Spam-Level:
X-Spam-Status: No, score=-1.99 tagged_above=-999 required=5 tests=[AWL=0.010, BAYES_00=-2.599, J_CHICKENPOX_43=0.6, NO_RELAYS=-0.001]
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 0IYA9lzAkD0g; Wed, 6 Nov 2013 09:03:23 -0800 (PST)
Received: from mail-pa0-x230.google.com (mail-pa0-x230.google.com [IPv6:2607:f8b0:400e:c03::230]) by ietfa.amsl.com (Postfix) with ESMTP id 9402D21E8142; Wed, 6 Nov 2013 09:03:23 -0800 (PST)
Received: by mail-pa0-f48.google.com with SMTP id kq14so10761521pab.21 for <multiple recipients>; Wed, 06 Nov 2013 09:03:23 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=content-type:mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=LyVjvCspexLSrpYivHBzu6U9Bll+4brX5VaylA7VMeI=; b=cQVjFKto49pHmdRNQgSjo+e4dBSdBYHxzQLdqGVzoGvOb/FZuu8sOZBulVT0ht9xdA PVBoEUDGp+8iEFHdN4tOPY2y7y01VaHitZ7GjIsBDtrbF/jR1/weJozIQu5x3hlEgBRX KPWNA8M+Y4LRIb5915j2QjIW/pz2yG+hLQQmq+H/BH/4Gojl95Sp7HSYbGJbDh7knRet s1j3ax1LPH6xWfMpk+EbK+USYa98tGW137P7skyZ4Bhw4nTCmhidpC4zwSluXRZP2SI/ bJOrzQlfwEsxJkyrLuNrwUEqlara6TR97rLcnWdfkg8/0cvf2w/yPZYp0a4ng8XSgt74 uuqA==
X-Received: by 10.69.8.162 with SMTP id dl2mr4321931pbd.1.1383757402971; Wed, 06 Nov 2013 09:03:22 -0800 (PST)
Received: from hotel-wireless-v6.meeting.ietf.org ([2001:67c:370:144:2d14:c95f:b8d:4ce9]) by mx.google.com with ESMTPSA id ry4sm49491275pab.4.2013.11.06.09.03.20 for <multiple recipients> (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Wed, 06 Nov 2013 09:03:21 -0800 (PST)
Content-Type: text/plain; charset="windows-1252"
Mime-Version: 1.0 (Mac OS X Mail 6.6 \(1510\))
From: Jouni Korhonen <jouni.nospam@gmail.com>
In-Reply-To: <5BCBA1FC2B7F0B4C9D935572D9000668151918EC@DEMUMBX014.nsn-intra.net>
Date: Wed, 06 Nov 2013 19:03:17 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <65A57E48-7220-4D7C-B3F5-2D10AC7B5855@gmail.com>
References: <5BCBA1FC2B7F0B4C9D935572D9000668151918EC@DEMUMBX014.nsn-intra.net>
To: "dime@ietf.org" <dime@ietf.org>
X-Mailer: Apple Mail (2.1510)
Cc: doc-dt@ietf.org
Subject: Re: [Dime] Ongoing Throttling Information in request messages
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: Wed, 06 Nov 2013 17:03:24 -0000

Just a reminder. Please avoid using HTML emails ;-) This innocent 13KB blob of text expanded into ~80KB of HTML goodness after few iterations, which our email list reflector holds until the moderator accepts it manually. I'll check if I can raise the maximum message size in a meanwhile.

- JOuni


On Nov 5, 2013, at 6:06 PM, "Wiehe, Ulrich (NSN - DE/Munich)" <ulrich.wiehe@nsn.com> wrote:

> Hi,
> draft-docdt-dime-ovli-01
> in Appendix B, Table 1, REQ 13 says:
>         …. Another way
>         is to let the request sender (reacting node) insert
>         information in the request to say whether a
>         throttling is actually performed.  The reporting node
>         then can base its decision on information received in
>         the request; no need for keeping state to record who
>   has received overload reports. 
>  
> And in Appendix B, Table 1, REQ 18:
>         There has been a proposal to mark
>         messages that survived overload throttling as one
>         method for an overloaded node to address fairness but
>         this proposal is not yet part of the solution. 
>  
> I would like to come back to this proposal.
> A new AVP OC-Ongoing-Throttling-Information inserted in request messages would indicate that the request message survived a throttling. Furthermore, information within the AVP indicates the TimeStamp as received in the previous OC-OLR AVP, according to which the ongoing throttling (which was survived) is performed.
>  
> OC-Ongoing-Throttling-Information ::= < AVP Header: TBD9 >
>               < TimeStamp >
>             * [ AVP ]
>  
> Supporting Clients would insert the OC-Ongoing-Throttling-Information AVP  into request messages that survived a throttling performed at that client.
> Supporting Agents when receiving a request message that contains an OC-Ongoing-Throttling-Information AVP would not perform an additional throttling (since the client or a downstream agent already performed the throttling) , while, when receiving a request that does not contain OC-Ongoing-Throttling-Information AVP would perform throttling (on behalf of the client) according to a previously received and stored OC-OLR, and if that throttling is survived the agent would insert the OC-Ongoing-Throttling-Information AVP in the request before sending it further upstream.
> Servers (or in general reporting nodes) would check presence and content of the OC-Ongoing-Throttling-Information AVP in received request messages and could detect (together with a check of presence of OC-Feature-Vector AVP) whether inserting an OC-OLR AVP in the corresponding answer message is needed in order to update the reacting node with a new OC-OLR).
>  
> This proposal especially addresses use cases like the following:
>  
> Architecture:
>  
>                        +----------------+
>                        | supporting     |
>                       /| agent A1       |\   
>   +----------------+ / +----------------+ \
>   | non supporting |/                      \
>   | client C       |\                       \
>   +----------------+ \ +----------------+    \ +------------+    +---------+
>                       \| non supporting |     \| supporting |    | Server  |
>                        |  agent A2      |------| agent A3   |----|  S      |
>                       +----------------+      +------------+    +---------+
>  
> 	• A request is sent from C via A2 and A3 to S. A3 recognizes that there is no reacting node downstream (no OC-Feature-Vector received) and therefore takes the role of the reacting node and inserts an OC-Feature-Vector AVP. A3 has no valid OLR from S stored and therefore does not perform throttling and does not insert an OC-Throttling-Information AVP.
> 	• S recognizes that there is a reacting node downstream which is actually not performing a throttling. S returns a 10% throttling request (TimeStamp=t1, duration=d) within OC-OLR in the answer which goes back via A3 and A2 to C.
> 	• A3 stores the 10% throttling request.
> 	• A new request is sent from C via A2 and A3 to S. A3 recognizes that there is no reacting node downstream (no OC-Feature-Vector received) and therefore takes the role of the reacting node and inserts an OC-Feature-Vector AVP. A3 has  valid OLR from S stored and performs a 10% throttling. The request survives and A3 inserts an OC-Throttling-Information AVP with timeStamp=t1.
> 	• S recognizes that correct throttling (correct time stamp) is in place and therefore does not return OC-OLR in the answer.
> 	• A new request is sent from C via A1 and A3 to S. A1 recognizes that there is no reacting node downstream (no OC-Feature-Vector received) and therefore takes the role of the reacting node and inserts an OC-Feature-AVP. A1 has no valid OLR from S stored and therefore does not perform throttling and does not insert an OC-Throttling-Information AVP. A3 recognizes that there is a reacting node downstream (OC-Feature-Vector received) and therefore does not take the role of the reacting node.
> 	• S recognizes that there is a reacting node downstream which is actually not performing a throttling. S returns a 10% throttling request (TimeStamp=t1, duration=d) within OC-OLR in the answer which goes back via A3 and A1 to C.
> 	• A1 stores the 10% throttling request.
> 	• A new request is sent from C via A1 and A3 to S. A1 recognizes that there is no reacting node downstream (no OC-Feature-Vector received) and therefore takes the role of the reacting node and inserts an OC-Feature-AVP. A1 has  valid OLR from S stored and therefore performs a 10% throttling. The request survives and A1 inserts an OC-Throttling-Information AVP with timeStamp=t1. A3 recognizes that there is a reacting node downstream (OC-Feature-Vector received) and therefore does not take the role of the reacting node.
> 	• S recognizes that correct throttling (correct time stamp) is in place and therefore does not return OC-OLR in the answer.
> 	• Requests sent from C via A1 and A3 to S undergo a 10% throttling at A1, requests sent from C via A2 and A3 to S undergo a 10% throttling at A3.
> 	• Overload situation in S for some reason gets worse, S decides to request 20 % reduction.
> 	• A new request is sent from C via A1 and A3 to S. A1 recognizes that there is no reacting node downstream (no OC-Feature-Vector received) and therefore takes the role of the reacting node and inserts an OC-Feature-AVP. A1 has  valid OLR from S stored and therefore performs a 10% throttling. The request survives and A1 inserts an OC-Throttling-Information AVP with timeStamp=t1. A3 recognizes that there is a reacting node downstream (OC-Feature-Vector received) and therefore does not take the role of the reacting node.
> 	• S recognizes that incorrect throttling (wrong time stamp) is in place and therefore S returns a 20% throttling request (TimeStamp=t2, duration=x) within OC-OLR in the answer which goes back via A3 and A1 to C.
> 	• A3 (not taking the role of the reactingt node)may, A1 must store the 20% throttling request (replacing the 10% request).
> 	• A new request is sent from C via A2 and A3 to S. A3 recognizes that there is no reacting node downstream (no OC-Feature-Vector received) and therefore takes the role of the reacting node and inserts an OC-Feature-Vector AVP. A3 has  valid OLR from S stored and performs a 10% throttling. The request survives and A3 inserts an OC-Throttling-Information AVP with timeStamp=t1. (assuming A3 did not store the 20% request at step 14)
> 	• S recognizes that incorrect throttling (wrong time stamp) is in place and therefore S returns a 20% throttling request (TimeStamp=t2, duration=x) within OC-OLR in the answer which goes back via A3 and A2 to C.
> 	• A3 stores the 20% throttling request (replacing the 10% request).
> 	• Requests sent from C via A1 and A3 to S undergo a 20% throttling at A1, requests sent from C via A2 and A3 to S undergo a 20% throttling at A3.
>  
>  
> Comments are welcome.
>  
> Best regards
> Ulrich
>  
>  
> _______________________________________________
> DiME mailing list
> DiME@ietf.org
> https://www.ietf.org/mailman/listinfo/dime