Re: [Dime] Conclusion for Sequence Numbers - was Re: OVLI: comments to 4.3

Ben Campbell <ben@nostrum.com> Tue, 10 December 2013 15:03 UTC

Return-Path: <ben@nostrum.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 1B30C1AE02F for <dime@ietfa.amsl.com>; Tue, 10 Dec 2013 07:03:22 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.036
X-Spam-Level:
X-Spam-Status: No, score=-1.036 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HELO_MISMATCH_COM=0.553, HOST_MISMATCH_NET=0.311] autolearn=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 ESycieSzE6nn for <dime@ietfa.amsl.com>; Tue, 10 Dec 2013 07:03:20 -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 4A5261ADF90 for <dime@ietf.org>; Tue, 10 Dec 2013 07:03:20 -0800 (PST)
Received: from [10.0.1.29] (cpe-173-172-146-58.tx.res.rr.com [173.172.146.58]) (authenticated bits=0) by shaman.nostrum.com (8.14.3/8.14.3) with ESMTP id rBAF37jn083655 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO); Tue, 10 Dec 2013 09:03:08 -0600 (CST) (envelope-from ben@nostrum.com)
Content-Type: text/plain; charset="us-ascii"
Mime-Version: 1.0 (Mac OS X Mail 7.0 \(1822\))
From: Ben Campbell <ben@nostrum.com>
In-Reply-To: <B81C3281-95F9-4F28-8662-2E20A6AE96A1@gmail.com>
Date: Tue, 10 Dec 2013 09:03:07 -0600
Content-Transfer-Encoding: quoted-printable
Message-Id: <46347965-5D5B-4EE9-A4DE-AB4C6D200973@nostrum.com>
References: <5BCBA1FC2B7F0B4C9D935572D90006681519DB1B@DEMUMBX014.nsn-intra.net> <C66C8914-AA7A-47F5-8EA4-7B0ECEDA5368@gmail.com> <52A5E902.20605@usdonovans.com> <7475B713-1104-4791-96B1-CE97632A0D69@nostrum.com> <B81C3281-95F9-4F28-8662-2E20A6AE96A1@gmail.com>
To: Jouni Korhonen <jouni.nospam@gmail.com>
X-Mailer: Apple Mail (2.1822)
Received-SPF: pass (shaman.nostrum.com: 173.172.146.58 is authenticated by a trusted mechanism)
Cc: "dime@ietf.org list" <dime@ietf.org>
Subject: Re: [Dime] Conclusion for Sequence Numbers - was Re: OVLI: comments to 4.3
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
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: Tue, 10 Dec 2013 15:03:22 -0000

I think that's close to correct. A couple of comments:

On Dec 10, 2013, at 1:28 AM, Jouni Korhonen <jouni.nospam@gmail.com> wrote:

> 
> Fine.. lets define then the sequence number semantics. Basic
> unsigned integer math. The text proposal is the following:
> 
> 4.4.  OC-Sequence-Number AVP
> 
>   The OC-Sequence-Number AVP (AVP code TBD3) is type of Unsigned64.
>   Its usage in the context of the overload control is described in
>   Sections 4.1 and 4.3.
> 
>   From the functionality point of view, the OC-Sequence-Number AVP
>   MUST be used as a non-volatile increasing counter between two
>   overload control endpoints.  The sequence number is only required
>   to be unique between two overload control endpoints and does not
>   need to be monotonically increasing.

I think "increasing" and "monotonically increasing" mean the same thing. I believe the term we are looking for is "strictly increasing".

> 
>   When comparing two sequence numbers, the new sequence number MUST
>   be greater or equal than the old sequence number within a window
>   that is half of the size of the maximum sequence number. This
>   allows a simple handling of the sequence number overflow using
>   unsigned integer arithmeticf:

The MUST probably belongs in the generation side, not the comparison side. For comparison, we can say something like "a new sequence number is greater than a previous one if the new sequence number..."

> 
>     #define WINDOW 0x8000000000000000ULL
> 
>     bool verify_seqnum( uint64_t newsn, uint64_t oldsn ) {
>         if (newsn - oldsn <= WINDOW)
>             // newsn >= oldsn
>             return true;   
>         } else
>             // outside window or newsn < oldsn
>             return false;  
>         }
>     }
> 
> 
> 
> The above should even work is someone shovels NTP times into
> sequence numbers with a blind typecasting.
> 
> - Jouni
> 
> On Dec 10, 2013, at 12:34 AM, Ben Campbell <ben@nostrum.com> wrote:
> 
>> 
>> On Dec 9, 2013, at 10:00 AM, Steve Donovan <srdonovan@usdonovans.com> wrote:
>> 
>>> Jouni,
>>> 
>>> I propose that we keep the name OC-Sequence-Number but that we use the Time type for OC-Sequence-Number.  It is misleading and potentially confusing to call it OC-Time-Stamp.  
>>> 
>> 
>> I could live with that, although I would rather just define the expected properties of the sequence number, and leave the implementation up to the implementor. I assume your reasoning for not calling it a timestamp is that you do not want people to try to use it as a time base reference. If so, then we don't require any connection to a clock. We just need it to be monotonically increasing.
>> 
>>> We might consider expanding on the format of the AVP to make it something like Session-ID, where it is a concatenation of the Diameter-ID of the generating node and a timestamp.  This might help the reacting node keep track of which sequence number it has received.
>>> 
>> 
>> Do we need a uniqueness across multiple nodes property? If so, why?
>> 
>>> Steve
>>> 
>>> On 12/9/13 5:37 AM, Jouni Korhonen wrote:
>>>> Folks
>>>> 
>>>> Could we conclude on the sequence number vs. time stamp vs. something else?
>>>> We got more important places to spend our energy than this ;)
>>>> 
>>>> My proposal is the following (based on the original pre-00 design):
>>>> 
>>>> o We change the OC-Sequence-Number to OC-Time-Stamp in all occurrences
>>>> in the -01.
>>>> o We use RFC6733 Time type for the OC-Time-Stamp. RFC6733 gives us
>>>> already exact definition how to handle the AVP.
>>>> o Define that the OC-Time-Stamp is the time of the creation of the 
>>>> "original" AVP within whose context the time stamp is present.
>>>> o The OC-Time-Stamp AVP uniqueness is still considered to be in scope
>>>> of the communicating endpoints.
>>>> o The time stamp can be used to quickly determine if the content of
>>>> the encapsulating AVP context has changed (among other properties).
>>>> This would be useful specifically in the future when the encapsulating
>>>> grouped AVPs  grow in size and functionality.
>>>> 
>>>> 
>>>> - Jouni
>>>> 
>>>> _______________________________________________
>>>> DiME mailing list
>>>> 
>>>> DiME@ietf.org
>>>> https://www.ietf.org/mailman/listinfo/dime
>>>> 
>>>> 
>>>> 
>>> 
>>> _______________________________________________
>>> DiME mailing list
>>> DiME@ietf.org
>>> https://www.ietf.org/mailman/listinfo/dime
>> 
>> _______________________________________________
>> DiME mailing list
>> DiME@ietf.org
>> https://www.ietf.org/mailman/listinfo/dime
>