[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Extended attrs doc



Peter Deacon wrote:
> Interesting...RFC 2865 5:
> 
> "A RADIUS server or client MUST NOT have any dependencies on the order
> of attributes of different types."

  Yes.  However, the WG can change that if consensus is reached.

> "A RADIUS server or client MUST NOT require attributes of the same type
> to be contiguous."
> 
> RFC 3579 3.1 (EAP)
> 
> "If multiple EAP-Message attributes are contained within an
> Access-Request or Access-Challenge packet, they MUST be in order and
> they MUST be consecutive attributes in the Access-Request or
> Access-Challenge packet."
> 
> Note the direct contradiction of 'MUST NOT' vs 'MUST'.

  Yes.  I haven't seen any interoperability issues as a result of EAP
violating RFC 2865 Section 5.

> I tend to prefer a system which minimizes the possibility of data
> corruption caused by ordering or truncation of attributes by systems
> (Not necessarily only proxies) some of which may not even know what an
> extended attribute is.

  I agree.

> If the system detects an error or the data is missing no data is ALWAYS
> preferable to wrong data.

  That's why the document introduces the concept of an "invalid
attribute".  These are attributes which are not treated as their alleged
number would indicate.

> Extended attribute is like WiMax however a little worse in that the
> inner attribute type is not preserved in the next fragment so any error
> could cause weird situations where the data field of a mis-ordered
> extended type leaks into a separate attributes 'type' field. (Esp last
> attribute with more bit not set)

  Yes.  The hope is that proxies will not re-order attributes of the
same type.  So having the fragments buried inside of multiple attributes
of type 245 *should* be OK.

> The use of a separate fragment-data attribute raises more ordering
> dependency questions.  From a design POV I prefer the attributes to be
> self-contained within the same type.  What happens when there are
> multiple ext frag attributes in the same request with different
> attribute id's (245,246) ?

  My message describes how they're treated.  Ordering *is* important.

>  There is no RFC anywhere preventing reorder
> and as you mention how do you know which fragment is which or when one
> stops and the other starts?

  My message describes how to detect when a fragment starts and stops.

> My suggestion is to keep the draft as is but add an explicit fragment
> counter next to the more flag using some or all of the remaining 7-bits.
> Since max RADIUS packet size is 4096 there are more than enough bits.

  One issue is having a "fragment id" field means there's another
opportunity for implementations to get the encoding wrong.  And there's
been talk of extending the maximum RADIUS packet size.

> For example Attr1 requires 4 fragments to assemble..
> 
> Attr1 - (More=Yes, Counter=1) ... data ... Attr1 - (More=Yes, Counter=2)
> ... data ... Attr1 - (More=Yes, Counter=3) ... data ... Attr1 -
> (More=No, Counter=4) ... data ...
> 
> Attr2 does not require fragmentation:
> 
> Attr2 - (More=No, Counter=0)
> 
> Note attributes not requiring fragmentation could use 0 to explicitly
> indicate so they could never be confused with an end of fragment.

  OK.

> I also prefer fragmentation occur on the same level of the attribute
> like WiMax VSAs where the attributes inner type is fully defined before
> the fragmentation payload so there can never be any ambiguity regarding
> at least the attribute type the fragment belongs.

  The difficulty with that is that the fragmentation method *cannot*
modify how the VSA space is encoded.  That space is completely under
control of the vendors.

>  With the above
> Counter fields in the picture this preference does not matter as much
> and perhaps saving the extra byte(s) is the better tradeoff.

  The counter makes it easier to detect re-ordered attributes, that's true.

  Changing the "more" flag to an 8-bit fragment counter would solve a
number of issues.  You would have an explicit ordering of fragments, and
it would mean that attributes could be 251*255, or 64005 octets long.
That *should* be enough for most RADIUS purposes...

  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/>