Re: Fw: [RPRWG] CRC check in each node?
Hi Robin:
Propagation of errored packets all the way to the destination may have its roots
in SONET/SDH networks (I admit I don't know the reasons for token ring
properties). In SONET networks one establishes a dedicated path (through a
series of nodes) between a source and a destination node. The bandwidth pipe is
dedicated between the end station, and other nodes don't (aren't allowed to)
mess with the packets within the pipe.
Since SONET/SDH primarily carried PDH traffic that didn't have an addressing
within the packet for a particular intermediate node (a bunch of DS0 channels),
and the fact that circuit was untouched by intermediate nodes, the data was
delivered to the end nodes.
With POS, the situation didn't change, because you still have a point-to-point
dedicated link (through one or more nodes in between). Intermediate nodes still
must carry data all the way to the destination. Since it is a PPP, the end node
is the one that takes it off the ring.
The significance of doing so is almost negligible in packet-oriented transports.
Unlike SONET/SDH carrying PDH, with IP transport it is very easy to address any
node and run SNMP and monitor RMON MIBs, Ethernet MIB, other L2/L3 MIBs, etc. at
any node. So if Node C has been dropping packets, you can see it easily using
standard SNMP tools from any other place in the network.
No additional SLA advantages are gained in this case by delivering packets to
the end node. In any case, if CRC check fails, how do we even know who the end
node is? The MAC address may be corrupted, and we cannot rely on the MAC value.
Source stripping also may not happen because source MAC address may have got
corrupted. If there was a chain of Ethernet switches sending packets from Node A
to Node F, Node B doesn't forward the packet to the destination node, because it
doesn't even know for sure who the destination node is. The packet may go
anywhere in the network, depending on what got corrupted in the L3 header (I
guess on ring networks you can make a case that even if things get corrupted,
even a bad TTL value will eventually expire, so it doesn't hurt, but then I
don't think we're getting any benefits in doing so).
Also, inverting CRC, or setting a bit, or any other method doesn't help the
destination node determine which of the intermediate nodes found the CRC error,
because the intermediate node hasn't inserted its node ID in the packet.
Please advise if you see any flaw in the logic here.
Regards,
Pankaj
"Angela T. Faber" wrote:
> Folks
>
> Please see the discussion below I was having with Robin. It was my fault
> that the group was not copied (I forgot!!)
>
> Angela
>
> ----- Original Message -----
> From: "Robin Olsson" <robino@xxxxxxxxxxx>
> To: "Angela T. Faber" <afaber@xxxxxxxxxxxxx>
> Sent: Friday, June 29, 2001 5:08 PM
> Subject: Re: [RPRWG] CRC check in each node?
>
> > Hi Angela and all
> >
> > Yes you are right, CT/SF really comes down to jitter since the delay
> depends on packet size.
> >
> > No, if you do CT you can not make your forwarding decision based on the
> payload CRC. But you can of course make the decission based on any header
> validation check (CRC or something else) which I beleive you should do.
> >
> > But let me get back to my question (again) - why do you want to discard an
> packet with error in the payload in intermediate nodes? Anyone have an
> answer?
> >
> > Robin
> >
> > "Angela T. Faber" wrote:
> >
> > > Hi Robin
> > >
> > > Thanks a lot for the explanation!
> > >
> > > One question: in one of your previous emails, you said that "...
> Everyone
> > > need to store some parts of the packet (at least the header) to process
> the
> > > packet. The question really comes to whether the delay depends on the
> packet
> > > size or not and whether it does so regardless of contention or not. Even
> cut
> > > through may store a complete packet due to contention..."
> > > Does it mean that CT also can process CRC before making a decision
> whether
> > > to discard or forward the frame? I know this CT vs. SF is very debatable
> > > issue, but I'm just trying to understand if CRC checking is feasible
> also in
> > > CT...
> > >
> > > Thanks again!
> > >
> > > Angela
> > >
> > > ----- Original Message -----
> > > From: "Robin Olsson" <robino@xxxxxxxxxxx>
> > > To: "Angela T. Faber" <afaber@xxxxxxxxxxxxx>
> > > Cc: "ieee 802.17 list" <stds-802-17@xxxxxxxx>
> > > Sent: Friday, June 29, 2001 3:36 PM
> > > Subject: Re: [RPRWG] CRC check in each node?
> > >
> > > > Hi Angela.
> > > >
> > > > Consider the links A -> B -> C -> D -> E
> > > >
> > > > A sources a packet with correct CRC. If you detect an error in node B,
> you
> > > will count the error in node B (for fault location purposes), and insert
> the
> > > correct CRC inverted. Node C will then either see that 1) the CRC is
> > > inverted, that means there is no errors on the incoming link to C or 2)
> the
> > > CRC is not inverted neither correct, that means that the error occured
> on
> > > Node Cs inbound link (C insertes the correct CRC inverted and node D and
> E
> > > may also be able to detect errors on the inbound link). Regardless, the
> > > end-point E is still able to see that the packet is errored, hence keep
> > > statistics per flow/customer if required.
> > > >
> > > > Using a bit instead of the CRC inverted is more complicated to
> implement
> > > (since where will you put it) and does not yield the same level of
> coverage,
> > > since the packet can only be a part of erreror detection on one link
> (i.e.,
> > > the first link with an error).
> > > >
> > > > If the error occur in the header the packet is discarded and the error
> > > information is lost and can not be realted to any specific flow.
> However, si
> > > nce the header will be a percentage of the average packet size, the
> number
> > > of errored packets can be approximated with being proportinal to the
> number
> > > of detected error packets. If more precise bit-error rates are required,
> > > some other mechanism is probably required since the packet size is
> variable.
> > > >
> > > > Robin
> > > >
> > > > "Angela T. Faber" wrote:
> > > >
> > > > > Robin
> > > > >
> > > > > Maybe I am missing something from your email below. If we change the
> > > value
> > > > > of the CRC (or add a bit to indicate it) to say that the error was
> > > already
> > > > > accounted for in the node that first detected it, how about other
> errors
> > > > > that may occur in this packet downstream from the node that changed
> the
> > > CRC?
> > > > > Only packets with "correct" CRC would then be able to detect those
> > > errors?
> > > > >
> > > > > Angela
> > > > >
> > > > > ----- Original Message -----
> > > > > From: "Robin Olsson" <robino@xxxxxxxxxxx>
> > > > > To: "igorz" <igorz@xxxxxxxxxx>
> > > > > Cc: "ieee 802.17 list" <stds-802-17@xxxxxxxx>
> > > > > Sent: Wednesday, June 27, 2001 3:13 PM
> > > > > Subject: Re: [RPRWG] CRC check in each node?
> > > > >
> > > > > >
> > > > > > Hi Igor and all
> > > > > >
> > > > > > Yes, if there is no additional indication wether the error is
> already
> > > > > detected or not. Either by a seperate bit or by replacing the CRC
> with
> > > the
> > > > > correct value inverted. Note, that only errored CRCs will have their
> CRC
> > > > > value altered! A sane packet will keep it's original CRC calculation
> > > from
> > > > > the source. In my oppinion this will satisfy the requirement from a
> lot
> > > of
> > > > > people about not having end-to-end CRC coverage if the CRC is
> > > re-calculated
> > > > > in intermediate nodes.
> > > > > >
> > > > > > Robin
> > > > > >
> > > > > > igorz wrote:
> > > > > >
> > > > > > > Robin,
> > > > > > >
> > > > > > > wouldn't the intentionally bad CRC mask off all of the
> subsequent
> > > > > errors?
> > > > > > >
> > > > > > > Igor
> > > > > > >
> > > > > > > -----Original Message-----
> > > > > > > From: owner-stds-802-17@xxxxxxxxxxxxxxxxxx
> > > > > > > [mailto:owner-stds-802-17@xxxxxxxxxxxxxxxxxx]On Behalf Of Robin
> > > Olsson
> > > > > > > Sent: Tuesday, June 26, 2001 12:37 PM
> > > > > > > To: Mike Takefman
> > > > > > > Cc: ieee 802.17 list
> > > > > > > Subject: Re: [RPRWG] CRC check in each node?
> > > > > > >
> > > > > > > Hi Mike and all
> > > > > > >
> > > > > > > If we try and look away from how LAN and Ethernet is done today
> and
> > > just
> > > > > > > concentrate on what to be solved. The far easiest way to provide
> > > error
> > > > > > > statistics for a given flow is to not remove the packets. This
> will
> > > work
> > > > > > > even with different system vendors on the same ring. And I can
> not
> > > > > imagine
> > > > > > > that any carrier will not want the possibility to have error
> > > statistics
> > > > > per
> > > > > > > customer/SLA. This IS different from etehernet and LANs - there
> is
> > > no
> > > > > > > concept of carrier capabilities and isn't that one of the
> reasons
> > > for
> > > > > > > wanting RPR in the metro?
> > > > > > >
> > > > > > > I do not understand why anyone wants to remove the packets - for
> > > > > bandwidth
> > > > > > > optimization? I do not beleive that it is important to optimize
> > > > > bandwidth
> > > > > > > for the case of errored packets. I would rather optimize in
> order to
> > > > > avoid
> > > > > > > errored packets. Fault location? Can be solved differently (see
> > > below).
> > > > > > >
> > > > > > > Header error check:
> > > > > > > Needed for validation the control information used within RPR
> > > itself.
> > > > > > > Packets with errored headers are discarded, since we do not know
> > > what to
> > > > > do
> > > > > > > with them or what customer/SLA it belongs to.
> > > > > > >
> > > > > > > Payload error check:
> > > > > > > Only monitoring. Can be used for determing where errors are
> injected
> > > > > (fault
> > > > > > > location). Also needed to keep track of performance statistics
> on
> > > the
> > > > > > > interfaces. Can be accompanied with an error indication telling
> that
> > > > > this
> > > > > > > packet is already discovered to be in error further upstream.
> This
> > > would
> > > > > > > increase the fault location efficiency. Draw back is that it
> must be
> > > > > placed
> > > > > > > in 1) the header, meaning a need for store and forward or 2) in
> the
> > > end
> > > > > of
> > > > > > > the packets, do we share it with the CRC? or 3) a special faulty
> CRC
> > > > > value
> > > > > > > (e.g., the correct CRC inverted) to be inserted instead of the
> > > received
> > > > > > > value.
> > > > > > >
> > > > > > > I do not want to post an oppinion on store-and-forward as a
> concept,
> > > I
> > > > > just
> > > > > > > do not think that the argument for using it should be error
> location
> > > or
> > > > > > > packet discarding since error location that can be solved
> > > differently
> > > > > and
> > > > > > > discarding errored packets is not (in my view) a desired
> behaviour.
> > > > > > >
> > > > > > > Robin
> > > > > > >
> > > > > > > Mike Takefman wrote:
> > > > > > >
> > > > > > > > All,
> > > > > > > >
> > > > > > > > An interesting point from 802.1D 1998 is the following.
> > > > > > > >
> > > > > > > > "Note that the frame is completely received
> > > > > > > > before it is relayed as the Frame Check Sequence (FCS)
> > > > > > > > is to be calculated and the frame discarded if in
> > > > > > > > error."
> > > > > > > >
> > > > > > > > It strikes me that if an 802.1D bridge must not relay a packet
> > > > > > > > with a bad FCS, there is nothing wrong with removing it in
> > > > > > > > the transit path of the 802.17 MAC (assuming that it can be
> > > > > > > > done). We are not changing the operation that will
> > > > > > > > occur, just making it happen sooner.
> > > > > > > >
> > > > > > > > I did not see an example of guaranteeing deliverly of
> > > > > > > > a packet with "good" address and "bad" contents in current 802
> > > > > > > > networks. The FCS will alias bad address and bad contents and
> > > > > > > > since .1D specifies that packets with FCS errors will be
> removed
> > > > > > > > I do not understand how anything with an FCS error continues
> to
> > > > > > > > flow to an end station unless the LAN is a single segment.
> > > > > > > >
> > > > > > > > I would appreciate a pointer to the relevant part of the
> standard
> > > > > > > > that describes how to do this type of operation across
> multiple
> > > > > > > > segments.
> > > > > > > >
> > > > > > > > thanks,
> > > > > > > >
> > > > > > > > mike
> > > > > >
> > > > > > --
> > > > > > ---------------------------------------
> > > > > > Robin Olsson
> > > > > > Vitesse Semiconductors, Denmark
> > > > > > Phone: +45 4596 9659
> > > > > > fax: +45 4596 9699
> > > > > > ---------------------------------------
> > > > > >
> > > > > >
> > > >
> > > > --
> > > > ---------------------------------------
> > > > Robin Olsson
> > > > Vitesse Semiconductors, Denmark
> > > > Phone: +45 4596 9659
> > > > fax: +45 4596 9699
> > > > ---------------------------------------
> > > >
> > > >
> >
> > --
> > ---------------------------------------
> > Robin Olsson
> > Vitesse Semiconductors, Denmark
> > Phone: +45 4596 9659
> > fax: +45 4596 9699
> > ---------------------------------------
> >
> >