Re: [radext] Issues with draft-ietf-radext-radius-extensions-09

Barry Leiba <barryleiba@computer.org> Sat, 02 February 2013 06:44 UTC

Return-Path: <barryleiba@gmail.com>
X-Original-To: radext@ietfa.amsl.com
Delivered-To: radext@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 884D021F8F69 for <radext@ietfa.amsl.com>; Fri, 1 Feb 2013 22:44:24 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -103.014
X-Spam-Level:
X-Spam-Status: No, score=-103.014 tagged_above=-999 required=5 tests=[AWL=-0.037, BAYES_00=-2.599, FM_FORGED_GMAIL=0.622, RCVD_IN_DNSWL_LOW=-1, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id GGp8mj-wh0Ts for <radext@ietfa.amsl.com>; Fri, 1 Feb 2013 22:44:23 -0800 (PST)
Received: from mail-lb0-f172.google.com (mail-lb0-f172.google.com [209.85.217.172]) by ietfa.amsl.com (Postfix) with ESMTP id EC80B21F8F64 for <radext@ietf.org>; Fri, 1 Feb 2013 22:44:22 -0800 (PST)
Received: by mail-lb0-f172.google.com with SMTP id n8so5281039lbj.17 for <radext@ietf.org>; Fri, 01 Feb 2013 22:44:14 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:x-received:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type; bh=fy+Y4RNMLSMmYz1+V5hmHg058gCwn4zBvHsAi5qqQEk=; b=J/227dALuVn6GV6eJeF7XrGKZrfGOtxyjcu2HXgAMdi7gQNuKpp3T/11rOgqzVCHQE lbBt1HZlXGByE4Cad1wyixf+sum8jqB6OeJI7LT4q+LGwD7N6EW+KNXkwY5OUlHZI+gK zwc+ADA6MCncYzcHE3PwvYqgCfq0JO6Ewje/oFBLWvn9BEDFpPvrxvPE4uXvNLoTuiKH XSeORCm7/bC6q0Y/+G3B1bApUolxIQ38JIKWvjpTWH8Ke77qzE44jXKJlEuxjtPwzH1H uAbF4gMMaye3sFFe30W4BlT82DakYvZOhxH/0CiBAdMlZsPUi+pkG4qQ54aFCJD33jJM z+0Q==
MIME-Version: 1.0
X-Received: by 10.152.147.36 with SMTP id th4mr13433543lab.19.1359787454538; Fri, 01 Feb 2013 22:44:14 -0800 (PST)
Sender: barryleiba@gmail.com
Received: by 10.112.47.168 with HTTP; Fri, 1 Feb 2013 22:44:14 -0800 (PST)
In-Reply-To: <510C6D0A.6020503@deployingradius.com>
References: <CALaySJLf91jdfOrqC4V-fcYK53uhc5UMxJDPzqf60b5cKqfGSA@mail.gmail.com> <510BE42B.1060102@deployingradius.com> <CALaySJ+1Vc4t6usTVeJM+pbBtxqEhb7GOCJmUz=M=zOr9JJNdw@mail.gmail.com> <510C6D0A.6020503@deployingradius.com>
Date: Sat, 02 Feb 2013 01:44:14 -0500
X-Google-Sender-Auth: 5q10H5ococ4E7DkyapUJPqYHB2Q
Message-ID: <CALaySJKPE47nrHXWxGtQcVjWedme=XQwrFeCOFshRwG9-HjvjQ@mail.gmail.com>
From: Barry Leiba <barryleiba@computer.org>
To: Alan DeKok <aland@deployingradius.com>
Content-Type: text/plain; charset="ISO-8859-1"
Cc: "radext@ietf.org" <radext@ietf.org>, radext-ads@tools.ietf.org
Subject: Re: [radext] Issues with draft-ietf-radext-radius-extensions-09
X-BeenThere: radext@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: RADIUS EXTensions working group discussion list <radext.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/radext>, <mailto:radext-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/radext>
List-Post: <mailto:radext@ietf.org>
List-Help: <mailto:radext-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/radext>, <mailto:radext-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sat, 02 Feb 2013 06:44:24 -0000

>> Right, I understand that.  And so...  what should an implementation
>> that receives an EA with a length of 1 do?
>
>   It won't.  The *packet* is malformed, and will be discarded.  So any
> *attribute* parsing will always see a Length of 2 or more.

Ack.  Between Sam's answer and yours, I now understand this.  I still
think it would be better to just say "less than 4", which would cover
all cases without confusing anyone (uh, like me)...  but this issue is
answered, and if you really want to say "2 or 3" rather than "less
than 4", I understand.

>   Superficially, yes.  It's the distinction between packets and
> attributes that makes them consistent.
>
>   Perhaps the text could better say:
>
> ---
> The term "invalid attribute" is new to this specification.  It is
> defined to mean that the Length field of an Attribute permits the
> packet to be accepted as not being "malformed".  However, the Value
> field of the attribute does not follow the format required by the data
> type defined for that Attribute, and therefore the attribute is
> "malformed".  In order to distinguish the two cases, we refer to
> "malformed" packets, and "invalid attributes".
...etc...

That'd be lovely, and thanks.  I accept that this might already be
clear to RADIUS folks ("RADII"?).  On the other hand, there are often
people implementing our specs who don't start off knowing what they're
doing, and clarity for outsiders can really help them.

>> I think we understand normative language differently (perhaps we
>> should loop Pete Resnick in on this point).  When a spec says "X is Y"
>> or "X contains integer values from 1 to 9", or similar things, it's
>> making a normative statement that that's the way it is, and there are
>> no other choices.  It really is equivalent to MUST, in a situation
>> where using the word MUST is not necessary.
>
>   Yes.  However, this document isn't setting out to correct two decades
> of RADIUS mis-steps.  I don't want to see this document held up to
> correct ambiguities raised in other specifications.

No, I agree with you.  I'm certainly not aiming to do that, and I'll
consider my comments in that light.

>> From this discussion, though, it seems that the change *is* what you
>> mean to do.  But it disturbs me that you don't see that you're
>> changing anything (and, by extension, that the WG perhaps does not
>> understand that either).
>
>   Of course we're changing RADIUS by adding the new formats.  That much
> is obvious.  What I object to is the idea that we can't add *new* data
> types to the ones listed in 2865.  Why?  This document updates 2865,
> which is part of the IETF process.

Ah, no, you still misunderstand.  You *absolutely* can do that, and
should.  That's not my question at all.  My question was just about
the SHOULD.  The original spec said that there were certain valid data
types, and everything else was invalid.  Other specs added new data
types, but everything else that wasn't specified somewhere was still
invalid.  By putting that SHOULD in, you're saying that other data
types, ones that aren't specified in any specs, ARE valid, but just
SHOULD NOT be used.  That's different to what the spec said before.

You have told me that this change is reflecting actual deployment, and
is intentional.  I accept that, so we're actually OK on this point
now.  I wish this had been specified differently, but we are where we
are.

So I think we can let this point rest, and thanks for working with me on it.

>   How about this:
>
> The depth of TLV nesting is limited only by the restrictions on the
> TLV-Length field.  The limit of 253 octets of data results in a limit
> of 126 levels of nesting.  However, nesting depths of more than 4 are
> NOT RECOMMENDED.  They have not been demonstrated to be necessary in
> practice, and they appear to make implementations more complex.
> Reception of packets with such deeply nest TLVs may indicate
> implementation errors or denial of service attacks.  Where
> implementations do not support deep nesting of TLVs, it is RECOMMENDED
> that the unsupported layers are treated as "invalid attributes".

Groovy.

>>>> Isn't this a contradiction?  If I have a loosely defined group of TLVs
>>>> that I expect to have change, but which will always be less than 253
>>>> octets, which space do I get it from?
>>>
>>>   The text says "short extended space".
>>
>> The text in 6.6 says that, yes.  But the text in 6.5 says that it
>> SHOULD come from "long extended space".  I think they contradict each
>> other.  Don't they?
>
>   The text in 6.5 says:
>
>    * Where a group of TLVs is strictly defined, and not expected to
>      change, and totals less than 247 octets of data, they SHOULD
>      request allocation from the "short extended space".
>
>    * Where a group of TLVs is loosely defined, or is expected to change,
>      they SHOULD request allocation from the "long extended space".
>
>   So I think it's OK.

This is the only one that remains, and I'm happy to downgrade it to
COMMENT level, given the discussion.  It is now officially
non-blocking.

It's that second bullet you quote that I wonder about.  Is it possible
for a group of TLVs to be loosely defined or expected to change (and
thus fit under the second bullet there), and yet always encode less
than 253 octets (and this fit into the "short extended space MUST be
used" bullet in 6.6?

Perhaps that's not possible, so there's no issue at all.  But if it is
possible, I think there's a conflict between the last bullet in 6.5
and the 6th bullet in 6.6, *in that specific situation*.

I'll go through the diffs between -09 and -11 now, while I wait for my
flight to HKG, and double-check that we're all set on the other
points.

b