[rbridge] Critical bits for options
Drake, John E
John.E.Drake2 at boeing.com
Mon Dec 10 15:01:56 PST 2007
Eric,
I think this is a great e-mail. Piggybacking control plane functions,
especially critical ones, on data frames seems ill-advised for the
health and well being of both the control plane and the data plane.
Thanks,
John
>-----Original Message-----
>From: Eric Gray [mailto:eric.gray at ericsson.com]
>Sent: Monday, December 10, 2007 7:45 AM
>To: Radia Perlman; Eastlake III Donald-LDE008; rbridge at postel.org
>Subject: Re: [rbridge] Critical bits for options
>
>Radia, Donald, et al,
>
> The one thing I don't seem to be getting out of this
>discussion is even the most general idea what the application
>is (or applications are) for these 'options' we are talking
>about - or even a vague idea when and where they may apply.
>
> I assume - because we're talking about HbH and E2E -
>that we're talking about data frames. Frankly the idea of
>putting data frames in jeopardy because some implementation
>downstream from the ingress doesn't understand (or chooses to
>pretend not to understand) an option is an EXTREMELY powerful
>argument for NEVER using options - and certainly not any of
>the 'critical options' that might provide an excuse to drop an
>entire class of frames. This is - in a very real way -
>roughly the same as providing yet another discard eligibility
>mechanism since any implementation could decide to discard a
>frame containing a 'critical option' - and be justified in doing so.
>
> Also note that - particularly for data frames - the
>most reasonable interpretation for 'discard' is 'silent discard'
>since returning an error for every dropped frame (or even on a
>periodic basis while dropping frames) is going to be a problem
>- especially if some subset of all implementations 'cleverly'
>decides to increase their 'sensitivity' to 'critical options'
>under congestion conditions (very likely, given that - under
>congestion - it is very likely that implementations will not
>be able to keep up with at least some processing of 'critical
>options').
>
> If that is - in fact - a correct understanding of the
>intent, then we're wasting time even talking about it (given
>the unlikelihood of there ever being a use for such a thing).
>So that makes me ask: who dreamed this nightmare up and why?
>
> On the other hand, at least one person seems to
>interpret this 'critical option' indicator as 'must be
>processed' - which includes 'process on the slow path' if you
>don't support doing so on the fast path. The distinction -
>again particularly for data frames - is minor, given that it
>will not take long to over-whelm the slow path with data
>frames if we start seeing a lot of 'critical options' and it
>will then be the case that the implementations not capable of
>fast path processing of 'critical options' will have no choice
>but to discard them.
>
> However, this latter case makes some sense if there is
>an application for 'critical options' that either never, or
>very rarely - results in using 'critical options' - but only
>'some sense', given the possibility that we're relying on a
>behavior that probably cannot be reliably/deterministically predicted.
>
> So, my apologies if I am the only one that doesn't know
>the answer to this question - but - what is the point of this
>discussion (i.e. why do we need options and why 'critical' vs.
>'non-critical' or HbH vs. E2E)?
>
> Based on the discussion so far (and as I have
>understood it), I cannot make an informed decision. All sorts
>of issues come to mind in the absence of knowing why we need this...
>
>--
>Eric Gray
>Principal Engineer
>Ericsson
>
>> -----Original Message-----
>> From: rbridge-bounces at postel.org
>> [mailto:rbridge-bounces at postel.org] On Behalf Of Radia Perlman
>> Sent: Tuesday, December 04, 2007 10:03 PM
>> To: rbridge at postel.org
>> Subject: [rbridge] Critical bits for options
>>
>> I'd like to make sure the decision about whether to define critical
>> bits for options is made with "informed consent" of the WG. I will
>> write this with no opinion -- just the tradeoffs.
>>
>> Currently the TRILL spec says to ignore all options -- the
>only thing
>> the spec says is how to skip the options, if any.
>>
>> A "critical" option (some people call it "mandatory") is an option
>> that if it appears and you don't understand it, you MUST drop the
>> packet. A noncritical option is one that you are allowed to
>ignore and
>> skip over.
>>
>> The way the spec is now precludes critical options, because RBridges
>> following the current spec will skip all options.
>>
>> An alternative is for TRILL to define two bits at the
>beginning of the
>> options (these bits only appear if the options length is
>greater than
>> 0).
>>
>> The two bits are:
>> a) a critical hop-by-hop option exists
>> b) a critical end-to-end option exists.
>>
>> If we define these bits, then an egress RBridge MUST look to see if
>> either of those bits are set, and if so, parse the options.
>> A transit RBridge MUST look to see if the hop-by-hop bit is set, and
>> if so, MUST parse the hop-by-hop options.
>> Though I suppose an RBridge that doesn't support ANY
>critical options
>> would know based on the presence of a critical option that it should
>> drop the packet, without having to parse to find the critical option.
>>
>> So, our choices as a WG:
>>
>> Choice A: Define NOW that the first 2 bits in the option portion, if
>> the option length is nonzero are those two critical bits.
>And that if
>> you are forwarding an encapsulated data packet (i.e., you are acting
>> as a transit RBridge for this packet), and thost of choice first
>> (hop-by-hop
>> critical) bit is
>> set, you MUST drop the packet. And if you are egress RBridge, and
>> either of the first two bits are set, you MUST drop the packet.
>>
>> Choice B: Leave the spec as it is
>>
>> The cost of choice A is a bit more complexity, and a bit
>more overhead
>> of forwarding because of having the set the bit.
>> The cost of choice B is that we cannot ever define critical options.
>>
>> The other arguments might be
>> . how likely is it that we'd ever need critical options? Can we
>> imagine some examples that we'd ever really want/need?
>> . we could support such things by using a new version TRILL header
>> when including critical options, so we are not really precluding
>> critical options.
>> . we could advertise (in LSPs for end-to-end critical options, in
>> Hellos for hop-by-hop critical options), support for
>critical options,
>> and the previous hop RBridge can throw the packet away if there's no
>> way to forward it without the critical option, so we don't
>really need
>> for the receiving RBridge to discard the packet.
>> . how bad would it be for an RBridge to ignore a critical option?
>>
>> So...what do people think?
>>
>> Radia
>>
>>
>>
>> _______________________________________________
>> rbridge mailing list
>> rbridge at postel.org
>> http://mailman.postel.org/mailman/listinfo/rbridge
>>
>
>_______________________________________________
>rbridge mailing list
>rbridge at postel.org
>http://mailman.postel.org/mailman/listinfo/rbridge
>
More information about the rbridge
mailing list