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

Adam Roach <adam@nostrum.com> Wed, 07 March 2012 19:14 UTC

Return-Path: <adam@nostrum.com>
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 9F43611E8072 for <sip-overload@ietfa.amsl.com>; Wed, 7 Mar 2012 11:14:30 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -102.053
X-Spam-Level:
X-Spam-Status: No, score=-102.053 tagged_above=-999 required=5 tests=[AWL=-0.338, BAYES_00=-2.599, HTML_FONT_FACE_BAD=0.884, HTML_MESSAGE=0.001, SPF_PASS=-0.001, USER_IN_WHITELIST=-100]
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 pR2rmXmCZLa1 for <sip-overload@ietfa.amsl.com>; Wed, 7 Mar 2012 11:14:29 -0800 (PST)
Received: from nostrum.com (nostrum-pt.tunnel.tserv2.fmt.ipv6.he.net [IPv6:2001:470:1f03:267::2]) by ietfa.amsl.com (Postfix) with ESMTP id AB2AD21F85AA for <sip-overload@ietf.org>; Wed, 7 Mar 2012 11:14:29 -0800 (PST)
Received: from dn3-228.estacado.net (vicuna-alt.estacado.net [75.53.54.121]) (authenticated bits=0) by nostrum.com (8.14.3/8.14.3) with ESMTP id q27JERnm082739 (version=TLSv1/SSLv3 cipher=DHE-RSA-CAMELLIA256-SHA bits=256 verify=NO); Wed, 7 Mar 2012 13:14:28 -0600 (CST) (envelope-from adam@nostrum.com)
Message-ID: <4F57B393.3020702@nostrum.com>
Date: Wed, 07 Mar 2012 13:14:27 -0600
From: Adam Roach <adam@nostrum.com>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:10.0) Gecko/20120129 Thunderbird/10.0
MIME-Version: 1.0
To: Eric McMurry <emcmurry@estacado.net>
References: <D05CF57C-B7B8-4187-BF55-70426DB3762D@estacado.net>
In-Reply-To: <D05CF57C-B7B8-4187-BF55-70426DB3762D@estacado.net>
Content-Type: multipart/alternative; boundary="------------030901000807080508050504"
Received-SPF: pass (nostrum.com: 75.53.54.121 is authenticated by a trusted mechanism)
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: Wed, 07 Mar 2012 19:14:30 -0000

Sigh. Eric and I have been discussing this just now, and we got our 
messages crossed. He fixed one of about four problems with his changes 
below. See my message of about 2 minutes ago for a proposal that fixes 
several other issues.

/a

On 3/7/12 1:10 PM, Eric McMurry wrote:
> I'm a bit confused on the default loss-based algorithm in section 6.3 of draft-ietf-soc-overload-control-07.  Based on the text, I believe that this algorithm is intended to apply to outbound messages from a client and to use previously stored information about the overload condition of the downstream server the message is targeted to.
>
> When I read through the algorithm part though, I'm not sure of the intent.  I've made some changes in the algorithm to try to communicate what I think it was saying.  Does this match the intent?
>        cat1 := 40.0          // Category 1 --- subject to reduction
>     cat2 := 100.0 - cat1  // Category 2 --- Not subject to
>                           // reduction.  40/60 mix.
>     in_oc := false        // Not operating under overload
>
>     while (true)  {
>       sip_msg := get_outgoing_sip_msg()
>       if (is_response(sip_msg))  {
>           process_msg(sip_msg)
>       }
>       else if (is_request(sip_msg))  {
>
>         // Determine iftarget  server wants to enter overload or is
>         // in overload
>          target_server := extract_target(sip_msg)
>         in_oc :=lookup_in_oc(target_server)
>
>         // Get validity value
>         oc_validity :=lookup_oc_validity(target_server)
>
>         // Get oc parameter value
>         oc_value :=lookup_oc_value(target_server)
>
>         pct_to_reduce := oc_value / cat1 * 100
>         // Example: if oc=10,
>         // server uses 10 / 40 * 100 = 25 or 25% of messages in
>         // Category 1 can be reduced.
>
>         if (in_oc == false)  {
>           process_msg(sip_msg)
>         }
>         else  {
>
>           // Either Category 1 or Category 2
>           assign_msg_to_category(sip_msg)
>
>           if (oc_validity is in effect)  {
>             process_msg(get_msg_from_cat2())
>             sip_msg := get_msg_from_cat1()
>
>             // Draw a random number between 1 and 100
>             r := random()
>
>             if (r<= pct_to_reduce)  {
>                 // Do not send to server, handle locally by
>                 // generating a final response
>             }
>             else  {
>               process_msg(sip_msg)
>             }
>           }
>         }
>       }
>     }
>
>
>
> _______________________________________________
> sip-overload mailing list
> sip-overload@ietf.org
> https://www.ietf.org/mailman/listinfo/sip-overload