[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: IPv6
> -----Original Message-----
> From: Alan DeKok [mailto:aland@deployingradius.com]
> Sent: 07 October 2009 11:11
> To: Wojciech Dec (wdec)
> Cc: Bernard Aboba; David B. Nelson; radiusext@ops.ietf.org
> Subject: Re: IPv6
>
> Wojciech Dec (wdec) wrote:
> > Guess someone forgot to add a character encoding set
> limitation to the
> > definition of "string" above. Without it, any sequence of
> 1-253 octets
> > falls neatly under the "a string".
>
> Is this a joke?
>
> Here's a short explanation, as it's clear you are
> completely unfamiliar with RADIUS.
>
> RADIUS attributes are typed. The list of types is small.
> Each type is statically defined in an RFC. RADIUS
> implementations use these definitions to determine how to
> manipulate the attributes (parse, print, wire-encode,
> wire-decode). The types cannot be changed, because they have
> existing definitions. Defining new encoding/decode means
> defining new types... because you can't encode the OLD type
> in a NEW way, and you can't encode the NEW type in the OLD way.
So a number of points: Draft-lourdelet clearly defins NEW Attributes NOT
changing existing attributes and the draft does not propose anything for
which there isn't a precedent (see rfc2868, rfc3162).
Overall, thanks for educating me, but perhaps you should take a step
back: In draft-lourdelet we're defining the on-the-wire format of these
new attributes. The data-type used for internal bindings of these
attributes is an implementation detail, which you (and perhaps others)
appear to make a business of the Radext WG (it seems that while new to
Radext, I haven't been missing out on much fun after all).
Now, even if that were justfiied, with a definition of "string" like the
one above you have no right to claim that a "string" data-type cannot be
used for sending an arbitrary sequence of 1-255 octets of/in whatever
encoding. You're clearly basing your point on non-atomic data-types,
which I comment on further below...
>
> Otherwise... please suggest how implementations can do the
> impossible, and encode these new attributes using a novel
> format, without adding a new encoding method.
Uhm, for the IPv6-Prefix attribute one could have one of the following
abstract definitions (all of them with no new exotic data-types other
than those likely already used)
struct IPv6-Prefix { uint8_t tag; uint8_t prefix-length; uint128_t
prefix; };
OR
struct IPv6-Prefix { uint8_t tag; uint8_t prefix-length; string_t
prefix; };
Etc.
>
> > That said, rfc 3162 clearly already
> > has a "call it whatever you want" data-type for
> "Framed-IPv6-Prefix",
> > which happens to be the same type of data as in the IPv6-Prefix in
> > draft-lourdelet.
>
> Absolute nonsense. Framed-IPv6-Prefix has a different
> on-the-wire format than IPv6-prefix. Therefore, they are
> different data types.
May I suggest that once more you're confusing on-the-wire format with
internal data-type representation. It would seem that according to you
each attribute in Radius with some internal structure not seen
previoulsy is effectively a new data-type and that this needs to be
enforced by the Radius specs. I'll call these non-atomic-data-types to
differentiate from what I consider common atomic data-types that rely on
common types/units of data (unit 32, etc). It's from the perspective of
non-atomic-data-types that draft-lourdelet *may* indeed be seen to call
for something new. It "may* but *it doesn't have* because that's again
all up to *implementation detail*. I'll use the following example to
illustrate.
RFC3162 defines the framed-ipv6-attribute, and so presumably an
implementation also has a pseudo-data-type to support it:
Framed-IPv6-Prefix
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length | Reserved | Prefix-Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Prefix
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Prefix
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Prefix
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Prefix |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Implementation wise, the difference between the above and the
IPv6-Prefix attribute in draft-lauderlet is the semantic of the Reserved
field vs the Tag field. If, when coding the psudeo-data-type one chose
to have the Reserved field modelled as a unit8 then it would be the same
pseudo-data-type that would apply to draft-lourdelet. If a different
choice was made, then a new psudo-data-type need to be cast.
Coincidentally, the Radius spec doesn't say which data-type should the
Reserved field be cast as.
All this shows how pointless is defining the protocol *and* such
non-atomic-data-type implementation specifics at the same time. The
protocol spec should not go into implementation specifics and your
argument around why it should be otherwise is rather unsubstatiated.
Draft-ietf-radext-design-08.txt doesn't do better, if actually being
misguided in some of these aspects.
It would help all if you could be a bit more constructive...
-Woj.
>
> > The odd one out is probably the IPv6-Route-Option-Preference in
> > draft-lourdelet, which has an rfc4191 derived 2 bit signed
> integer. No
> > problem in changing that to a simple signed integer, while
> restricting
> > the values.
>
> RADIUS has no support for signed integers. See:
>
> http://tools.ietf.org/html/draft-ietf-radext-design-08
>
> I suggest reading the document before posting any more
> confusion about data types in RADIUS. It describes the
> RADIUS data model, along with supported and not-supported data types.
>
> > I'm still finding the issue rather nonsensical. Do you
> really mean to
> > say that the addition of an attribute, the tag, requires the
> > re-definition of each and every data type that radius has, eg "the
> > tagged 64-bit unsigned integer", etc? That's bizzarre at
> best... Why?
>
> Because that's how RADIUS works. DHCP works the same way.
> As does DNS. As does SNMP. As does NTP. The list goes on...
>
> In fact, *any* protocol that has bit-packing of data (as
> opposed to text encoding like FTP or SMTP) has pretty much
> fixed data types. You can't change the interpretation of a
> "32-bit integer", because its meaning is already defined.
>
> Try updating your C compiler to interpret "uint32_t" as
> "struct foo".
> See how many third-party programs compile without error.
> Those programs make assumptions base on the definitions of
> the data types. Changing the data types means that the
> assumptions are no longer valid, and the programs no longer
> work as intended.
>
> I'm surprised that this behavior is novel to you. Binary
> packed protocols have worked this way for a *long* time.
>
> Alan DeKok.
>
--
to unsubscribe send a message to radiusext-request@ops.ietf.org with
the word 'unsubscribe' in a single line as the message text body.
archive: <http://psg.com/lists/radiusext/>
- Follow-Ups:
- Re: IPv6
- From: Alan DeKok <aland@deployingradius.com>
- References:
- Re: IPv6
- From: Bernard Aboba <bernard_aboba@hotmail.com>
- RE: IPv6
- From: Bernard Aboba <bernard_aboba@hotmail.com>
- RE: IPv6
- From: Bernard Aboba <bernard_aboba@hotmail.com>
- RE: IPv6
- From: Bernard Aboba <bernard_aboba@hotmail.com>
- Re: IPv6
- From: "David B. Nelson" <dnelson@elbrysnetworks.com>
- Re: IPv6
- From: Alan DeKok <aland@deployingradius.com>
- RE: IPv6
- From: Bernard Aboba <bernard_aboba@hotmail.com>
- RE: IPv6
- From: "Wojciech Dec (wdec)" <wdec@cisco.com>
- Re: IPv6
- From: Alan DeKok <aland@deployingradius.com>
- RE: IPv6
- From: "Wojciech Dec (wdec)" <wdec@cisco.com>
- Re: IPv6
- From: Alan DeKok <aland@deployingradius.com>
- RE: IPv6
- From: "Wojciech Dec (wdec)" <wdec@cisco.com>
- Re: IPv6
- From: Alan DeKok <aland@deployingradius.com>