Hi Alan, all,
we have been thinking on this topic and we realized that a different
approach could be more convenient to handle inter-packet fragmentation
than our first proposal.
Taking draft-ietf-radext-radius-extensions as a base, we can assume that
intra-packet fragmentation is already handled via the M flag. We can
also assume that order between fragments is preserved when following
draft-ietf-radext-radius-extensions. This may not be true now with the
current spec (as Peter pointed out), but we can assume this will be
solved somehow in the future (e.g. including offset field).
We propose the following:
1) Extended flag attributes are used to fragment big RADIUS attributes,
as specified in draft-ietf-radext-radius-extensions.
2) If a fragmented attribute cannot be completely included into the
remaining space of a 4KB RADIUS packet, it is truncated, that is, only
the fragments that fit into the free space of the packet to be sent are
included. It is also included a new RADIUS attribute, called
"More-Data-Pending". The presence of this attribute indicates to the
receiver that the RADIUS packet is not complete, and more data MUST be
received from the sender before processing any of the received attributes.
Note that it is possible (and very likely), that the last fragment of a
truncated attribute in a RADIUS packet has the M flag set. This case
would be against what it is stated in
draft-ietf-radext-radius-extensions. Nevertheless, we think this
restriction can be easily relaxed when using the more-data-pending
attribute. If it is present, it is allowed that the last fragment have
the bit M set, which means the attribute is truncated. A good side
effect of this is that if a server does not understand
more-data-pending and its semantics, a truncated attribute will be shown
as an invalid attribute, and not taking the truncated portion as the whole.
The rest of the attribute fragments will be sent in successive packets,
following the same procedure, using as many RADIUS packets as needed to
transmit the required information.
Let me illustrate this with an example, where a RADIUS client sends a
packet with a size > 4 KB (to make it simpler, we assume each RADIUS
packet can include 8 RADIUS attributes/fragments, instead of using
bytes). Flag M is indicated as [M]. Data1, Data2, Data3... indicate
successive fragments of the attribute Data.
The RADIUS client wants to send the following RADIUS packet:
Access-Request = User-Name, Calling-Station-Id, Data1[M], Data2[M],
Data3[M], Data4[M], Data5[M], Data6[M], Data7[M], Data8[M], Data9[M],
Data10, Other1[M], Other2[M], Other3
As only 8 attributes can be included in the packet, the RADIUS client
truncates "Data" to fit into the packet, and includes the
More-Data-Pending attribute:
Acess-Request1 = User-Name, Calling-Station-Id, Data1[M], Data2[M],
Data3[M], Data4[M], Data5[M], More-Data-Pending
When the server receives the RADIUS packet containing the
More-Data-Pending attribute, the processing of the packet is left until
all the pending data is received. The pending data is requested by means
of an Access-Challenge packet, using the State attribute to tie together
this response with the subsequent request from the client.
Access-Challenge1 = State1
The client continues sending the data until another RADIUS packet is
completed, including again the attribute More-Data-Pending
Acess-Request2 = State1, Data6[M], Data7[M], Data8[M], Data9[M], Data10,
Other1[M], More-Data-Pending
The server stores the attributes into the state associated to State1 and
replies:
Access-Challenge1 = State2
Finally, the client sends the last fragments of the original packet:
Access-Request3 = State2, Other2[M], Other3
The server now can process the totality of the received attributes as if
they all had been received into a single RADIUS packet of more than 4 KB
The case where the server sends a fragmented packet to the client is
very similar and makes no sense to expli
Best regards,
Alejandro
El 09/01/12 12:20, Alejandro Perez Mendez escribió:
Hi Alan,
thanks for the clarifications and hints. We will think about them and
their implications, and try to modify the proposal to make it address
all the requirements.
Regards,
Alejandro
El 09/01/12 10:58, Alan DeKok escribió:
DIEGO LOPEZ GARCIA wrote:
Ordering constraints here are applied to related attributes.
RADIUS doesn't work that way.
There are hundreds of thousands of deployments which assume that
ordering constraints do NOT apply to related attributes. Changing such
a fundamental part of the protocol is impossible.
I don't see why this would go beyond the requirements imposed by the
current document on extended attributes, as the recent discussion on
it shows.
I pointed you to RFC 2865, and explained why that restriction is
impossible. Please go read those messages again.
It relies in the usage of an specific attribute that defines the
interpretation of the values of another attribute. Ordering rules
probably could be relaxed, but at the price of more complicated
processing rules.
It relies on behavior which is mandated as NOT being part of RADIUS.
I gave comments on your approach. Do you have any comments on my
proposed alternative? It would seem to (a) solve the same problem,
and
(b) have none of the limitations.
One of the main goals of the proposal was to be compatible with
current mechanisms for attribute encoding inside the packet
(EAP-style, extended attributes…) and deal only with values spanning
more than one packet. Using your alternative would break this
compatibility.
Nonsense.
It is incompatible with existing methods like EAP-Message. Those
*already* have semantics defined. Changing them by adding a "Chunked
Attribute" is impossible. The extended format hasn't been deployed, so
compatibility with it is impossible.
My proposal was to allow *new* attributes to span multiple packets.
Changing the rules on attribute ordering is impossible. Don't
even try.
Changing the meaning of existing attributes to allow more than 253
octets of data is impossible. Don't even try.
Alan DeKok.
_______________________________________________
abfab mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/abfab
_______________________________________________
abfab mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/abfab