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

Jouni Korhonen <jouni.nospam@gmail.com> Tue, 10 December 2013 21:31 UTC

Return-Path: <jouni.nospam@gmail.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 08A611AD73F for <dime@ietfa.amsl.com>; Tue, 10 Dec 2013 13:31:27 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2
X-Spam-Level:
X-Spam-Status: No, score=-2 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, SPF_PASS=-0.001] autolearn=ham
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 adN14OsRfBpI for <dime@ietfa.amsl.com>; Tue, 10 Dec 2013 13:31:23 -0800 (PST)
Received: from mail-la0-x22f.google.com (mail-la0-x22f.google.com [IPv6:2a00:1450:4010:c03::22f]) by ietfa.amsl.com (Postfix) with ESMTP id C70111AE070 for <dime@ietf.org>; Tue, 10 Dec 2013 13:31:22 -0800 (PST)
Received: by mail-la0-f47.google.com with SMTP id ep20so3150804lab.20 for <dime@ietf.org>; Tue, 10 Dec 2013 13:31:16 -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=HxCayBRFz+9Spb0quAhldVJeiJ9qjDiHvStpbOF5mTE=; b=WkYsjj9joHG19xTOY7Ro6a/SfR4168S+mNFRPchaTTiMz6uuHNKHwA2K45m0XqZjbe kPVF0PwiIR+f2I7OHklV8ZktLpm8CiMpbh0M4N9QLXkyEXBUy++9WMJnq0PWR9x7Ag0F qpq9dJIZUHg0QNqCb5MjvRLgUzQzNYYiBJRKeuWZbDiWZiaTgqRumO+1jIZfelhc2jRi KaW8eHsQNO4pRlVwYBLOsUkzQNoE55yNqvHzStRMxKmILNEGRc7RtJx4RdJicTg8sbDq sW5H451xAX8ND0yvXT7F6wlnb1zBnOz1HvtC3PLdlRHIQ/4CPg4+IjcUA8tgAYV2ucep 2R+A==
X-Received: by 10.152.4.230 with SMTP id n6mr9359113lan.1.1386711076732; Tue, 10 Dec 2013 13:31:16 -0800 (PST)
Received: from [188.117.15.108] ([188.117.15.108]) by mx.google.com with ESMTPSA id ld10sm24290813lab.8.2013.12.10.13.31.12 for <multiple recipients> (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 10 Dec 2013 13:31:12 -0800 (PST)
Content-Type: text/plain; charset="us-ascii"
Mime-Version: 1.0 (Mac OS X Mail 6.6 \(1510\))
From: Jouni Korhonen <jouni.nospam@gmail.com>
In-Reply-To: <5BCBA1FC2B7F0B4C9D935572D90006681519E476@DEMUMBX014.nsn-intra.net>
Date: Tue, 10 Dec 2013 23:31:13 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <1CD20507-B0FE-4367-804A-B831734CF060@gmail.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> <5BCBA1FC2B7F0B4C9D935572D90006681519E476@DEMUMBX014.nsn-intra.net>
To: "Wiehe, Ulrich (NSN - DE/Munich)" <ulrich.wiehe@nsn.com>
X-Mailer: Apple Mail (2.1510)
Cc: Ben Campbell <ben@nostrum.com>, "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 21:31:27 -0000

Ulrich,

On Dec 10, 2013, at 4:31 PM, "Wiehe, Ulrich (NSN - DE/Munich)" <ulrich.wiehe@nsn.com> wrote:

> Jouni,
> 
> 1. I find the texts
> a) "The sequence number ... does not need to be monotonically increasing"
> and 

Means the delta from old-seqno to new-seqno can be any non-negative integer
(within the given limits) not something fixed step/delta (like +1). As long as
"new-seqno >= old-seqno" holds we are fine.

> b) "...the new sequence number MUST be greater or equal than the old sequence number..."
> contradicting.
> Can you please clarify.

See above. (mind the overflow case)

> 2. The expected behaviour when receiving an out-of-sequence sequence number within OC-OLR is described in 4.3:
>   "The receiver SHOULD discard an OC-OLR AVP with a sequence number that is less than previously received one."
> I don't find this very robust. Once a higher sequence number (received erroneously by mistake) is accepted you cannot (easily) recover.

I find it more robust in a sense that I should not care about stale old information.
However, since we are piggybacking (by popular demand) we have little room for seqno
re-sync negotiation.

What is the mistake you refer here? A misbehaving implementation? In that case, it 
deserves to get a manual intervention once figured out by admins checking alarms and
logs. If the mistake is due other things, like endpoints being out of sync, we currently
have no written down mechanism to survive that.

> 3. The expected behaviour when receiving an out-of-sequence sequence number within the OC-Supported-Features AVP is not described. What is the intention here?

No intention. Just a sloppy specification. You are right that something needs to be
done & clarified here. (again the semantics of Time would nice..)

I'll propose something. Others should too ;)

- Jouni

> 
> Ulrich
> 
> -----Original Message-----
> From: DiME [mailto:dime-bounces@ietf.org] On Behalf Of ext Jouni Korhonen
> Sent: Tuesday, December 10, 2013 8:28 AM
> To: Ben Campbell; dime@ietf.org list; Steve Donovan
> Subject: Re: [Dime] Conclusion for Sequence Numbers - was Re: OVLI: comments to 4.3
> 
> 
> 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.
> 
>   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:
> 
>     #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
> 
> _______________________________________________
> DiME mailing list
> DiME@ietf.org
> https://www.ietf.org/mailman/listinfo/dime