| 
 Bob 
  
One question about the TTL: if the CRC Header does 
not cover TTL field, how do we know if the TTL is valid? Should it not be 
included in a CRC-header maybe because the probability of the TTL be 
corrupted and still have a in-range (i.e., valid) value is very 
low? 
  
Thanks! 
  
Angela 
  ----- Original Message -----  
  
  
  
  Sent: Tuesday, June 26, 2001 12:17 
  PM 
  Subject: RE: [RPRWG] CRC check in each 
  node? 
  
  
  David, 
    
  See comments 
  to your email below.   
  A basic question is 
  whether RPR frames 
  with bad headers should 
  continue on the ring 
  until their TTL expires, 
  or should the packet 
  be stripped as soon as a 
  bad header is detected? 
  Even in a cut-through 
  implementation, the packet 
  header cannot be 
  regenerated on the next ring segment 
  until the TTL is 
  checked.  If the 
  RPR frame supports 
  a header CRC this 
  CRC would likely follow 
  right after the TTL.  It would 
  be 
  worth performing the 
  header CRC check and stripping 
  the packet if the header 
  is bad. 
    
    
      thanks, 
    
      bob
 
  
  
  -----Original Message----- From: 
  owner-stds-802-17@xxxxxxxxxxxxxxxxxx [mailto:owner-stds-802-17@xxxxxxxxxxxxxxxxxx]On 
  Behalf Of David V. James Sent: Tuesday, June 26, 2001 12:08 AM To: ieee 
  802.17 list; OLSSON,FREDRIK (A-SantaClara,ex1) Cc: David V. James; 
  dbg@xxxxxxxxxx Subject: RE: [RPRWG] CRC check in each 
  node?
 
 
  Fredrik (et al),
  I don't agree that updating the 
  TTL counter implies a loss of coverage in intermediate nodes. Let me 
  address this and some other points simultaneously. Under some topics, I 
  have listed Pro and Con arguments and personal preference.
  1) Should 
  the packet header and data have separate CRCs?    PRO: The error 
  is generally much longer than the 
  header,         so this would more 
  frequently allow route-specific         
  logging of errors (when the header is OK, but 
  the         data is 
  corrupt).    PRO: Its easier to modify the header, or insert 
  extended         headers, in various 
  stages of bridge-like routing.    CON: The packet is longer by 
  approximately 4 bytes.    ME:  The header(s) and data 
  payload have separate CRCs. 
  rc - I agree header and 
  data payload should have separate 
  CRCs for the two 
  pro-reasons given.  It also removes 
  the header dependency on 
  the tail end of the data packet which 
  is required for 
  cut-through implementations.  The modified 
  CRC algorithm you mention 
  below could allow the packet 
  to begin regeneration on 
  the next ring segment, but do 
  we really want an errored 
  packet to circulate on the 
  ring until its TTL 
  expires? (see 2 below)
  
   2) Can packets be modified (TTL changes) without losing 
  their    error coverage during the change?    YES: 
  Rather than strip the CRC and recompute the CRC, 
  a         differential CRC is computed 
  on the differential TTL         value, 
  (TTL-1)^TTL. This differential CRC is 
  then         EXOR'd with the value 
  received at the input, thereby         
  generating a revised transmit CRC without loss 
  of         converage. Nothing new, this 
  was discussed when         working on 
  IEEE Std 1596 Scalable Coherent 
  Interface         (I believe it source 
  was an IBM RAS (reliability,         
  availability, and support) guy, but I'm not sure. 
    
  rc - I guess it 
  depends on the strategy for dealing with 
  corrupted headers.  
  Should a packet with a corrupted 
  header be allowed to 
  continue on the ring or 
  should the header be 
  validated prior to regenerating 
  over the next ring 
  segment.  If the header awaits completion 
  of the CRC check, then 
  the station can simultaneously 
  perform check on the 
  incoming header while generating 
  a new CRC based on the 
  outgoing header with modified 
  TTL.
  3) Can packets with bad CRCs be discarded?    PRO: 
  Because their contents cannot be trusted, its fine 
  to         discard them. A bad header 
  can be discarded, since a         0 
  valued TTL would cause the same effect. 
  Discarding         of a bad data block 
  is OK, but only if the header 
  could         not be interpreted as a 
  valid packet in the absence of         
  its payload.    PRO: The only penalty for discarding them is the 
  loss of         error-logging diagnostic 
  information. However, is 
  separate         header and payload CRCs 
  are provided, the header will         
  usually (in a statistical sense) be preserved and 
  the         larger data payload will be 
  corrupted. Hence, error         logging 
  is still possible.    PRO: Error logging information, based on 
  corrupted data,         will itself 
  become untrustworthy.    PRO: Its easier for store-and-forward 
  implementations to         simply 
  discard corrupted packets, rather than 
  being         forced to "stomp" them, as 
  described in #4.    CON: There is some loss of error checking on 
  packet header         
  corruption.    ME:  These corrupted packets should be 
  treated as effectively         
  discarded, where a packet stomping (see point #4) 
  has         the same architectural 
  effect as discarding the packet,         
  i.e. the packet error is not logged again. 
    
  rc - I agree with pro 
  1/pro 2.  The error logging capability 
  in PRO3 is dependent on 
  where the error checking is 
  done, and the nature of 
  the payload at the place where 
  the checking is 
  done.  For example, if the RPR header 
  provides enough 
  addressing information to deliver a packet 
  to a client 
  interface.  The SLA checking could be done 
  at the client 
  interface.  If the SLA checking is performed 
  downstream of the client 
  interface, where the client 
  requires certain portions 
  of the data frame to reliably 
  forward the packet, then 
  these subsequent headers 
  need to be protected by 
  their own CRCs. 
  
  4) Do packets have to be checked, to uncover their bad 
  CRCs,    before being forwarded?    NO:  The 
  strategy at the receiver's CRC checking 
  hardware         is to compute the valid 
  CRC while the initial portion         of 
  the packet is passing through. When the CRC is 
  reached,         the following algorithm 
  is performed:
          #define 
  CRC_STOMP 0X55555555  // A possible CRC_STOP 
  value         if (checkCRC!=packetCRC) 
  {             
  errorCount+= (packetCRC!= 
  checkCRC^STOMP);             
  packetCRC^= STOMP;         
  }
     For those unfamiliar with "C", the CRC_STOMP value is 
  a    constant to be defined by this committee; the value 
  shown    is not necessarily the best value. If the 
  packet's    CRC is bad, but has not yet been "stomped", then an 
  error    count for that link is incremented. In any case, a 
  packet    with a bad CRC is always "stomped", by replacing the 
  "bad"    CRC with a particular bad CRC, namely the good CRC 
  exclusive-OR'd    with the STOMP value.
     Now 
  while its possible for the "stomped" value to be generated    by 
  a coincidental transmission error, the chance of this is    quite 
  small, so that only a small number of errors (1 in 2**32)    
  would be incorrectly logged.
     Note that operations (2) and 
  (4) are logically independent    actions, so neither interferes 
  with the operation of the other. 
  I am an advocate of 
  stomping which allows RPR stations 
  to gather their own link 
  statistics while attempting to 
  deliver packets to aid 
  downstream performance monitoring 
  functions.  The 
  stomping function is what I described in 
  the mail message that I 
  sent yesterday. 
    
  
    An alternative to 
    addressing the store-forward limitation could be 
    to set the payload CRC to 
    a specific error value, upon detection of a bad 
    CRC. This can be used to indicate to 
    subsequent 
    stations that the payload 
    error has already been detected and 
    accounted for. By using 
    the CRC field, moves the error indication to the 
    end of the packet and 
    addresses the head of the packet dependency 
    on receiving the entire 
    packet and validating CRC. This provides 
    a mechanism for providing 
    a user error indication, without 
    restricting a 
    "cut-through" implementation. 
       
  
  DVJ (David Vernon James)
 
 
  -----Original 
  Message----- From: owner-stds-802-17@xxxxxxxxxxxxxxxxxx [mailto:owner-stds-802-17@xxxxxxxxxxxxxxxxxx]On 
  Behalf Of OLSSON,FREDRIK (A-SantaClara,ex1) Sent: Friday, June 22, 2001 
  1:36 PM To: ieee 802.17 list Subject: RE: [RPRWG] CRC check in each 
  node?
 
 
 
  My two cents worth:
  As mentioned in a previous 
  email, I agree that it is preferable not to regenerate the payload CRC at 
  intermediate nodes to allow a real end-to-end protection of the 
  payload. Then a separate CRC is required for the destination address and 
  TTL counter, so non-routable frames can be discarded.
  One Ethernet 
  encasulation protocol already defined with a separate header CRC is GFP 
  (Generic Framing Procedure). It is pushed both in T1X1 and ITU-T. I think 
  it deserves a second look at, and could maybe serve as a base with a new 
  RPR header we define. The frame mapped version with a modified ring 
  mode header may be close to what we need.
  The latest GFP copy can be 
  downloaded at:
   <ftp://ftp.t1.org/T1X1/X1.5/1x150243.doc> 
  File name: 1x150243.doc http://www.t1.org/filemgr/FileList.taf?Directory=t1x1%5Cx1.5 <http://www.t1.org/filemgr/FileList.taf?Directory=t1x1%5Cx1.5&ShowTitle=New% 20T1X1.5%20Files> 
  &ShowTitle=New%20T1X1.5%20Files
  GFP as is would work fine for SONET 
  and OTN PHY's. To work with Ethernet PHY's it may be possible to make the 
  frame "Ethernet-like" by just adding a PA and 
  SFD?
  Regards, Fredrik Olsson Agilent 
  Technologies
 
  -----Original Message----- From: Nader Vijeh [mailto:nader@xxxxxxxxxxxxxx] Sent: 
  Friday, June 22, 2001 12:25 PM To: ieee 802.17 list Subject: RE: [RPRWG] 
  CRC check in each node?
 
  I agree with Harry on not discarding 
  packets with bad CRC. Not only carriers will not like this, but it also 
  goes against the fact that MAC is not actually "receiving" packets in 
  transit. Packet discard due to CRC error is defined as part of the "receive 
  function" in the 802 MACs.
  To answer Mike's question on Ethernet MACs, 
  they all have a "promiscuous" mode that allows them to receive all packets 
  on the media, this mode is normally used in bridges, allowing the bridge to 
  make the decision on forwarding.
  -----Original Message----- From: 
  Harry Peng [mailto:hpeng@xxxxxxxxxxxxxxxxxx] Sent: 
  Friday, June 22, 2001 10:03 AM To: ieee 802.17 list Subject: RE: [RPRWG] 
  CRC check in each node?
 
 
  Ray, Mike, Raj, 
  Angela:
 
  There are two issues here: 1) If there is only one CRC 
  that covers the ring header (DA) and the payload, then you 
  don't    known if the error occurred in the header (un-routable 
  packet) or in the payload.    If the TTL is also covered by 
  the CRC then the only way TTL can remove packet    is because 
  the DA is unknown to all the stations on the ring. This TTL is rather 
  useless.
     all error packets must be 
  discarded.
     This violate the Transparent Lan Service model. 
  Error packet is delivered to the    customer for SLA reasons. 
  Any packet discarded will have to be able to be validate    at 
  the receive end. Keeping statistics on the ring becomes a big 
  scaling problem.
     This also prevents any of you out 
  there who want to do transparent mapping.
  2) in the cut through 
  mode, error packet are delivered to its destination which 
  may    decide to discard or not and keep stats 
  accordingly.
     In cut-through the header will have to 
  processed for source removal, destination strip,    and TTL 
  processing.
     In either case, Adding a ring header error 
  checking can be used to validate the correctly    of the 
  header. If the packet is routable, forward it.
     For store 
  and forward mode, you can check if the packet CRC is correct and discard 
  the packet depending on the    configuration of the MAC and the 
  service the box is offering.
  Recommendation:    Header 
  error checking is valuable, there is an error floor rate for 
  any transmission medium.
     For all possible services that 
  the ring can offer, and for RPR to be    payload agnostic then it 
  shall not drop any error packet. Unless a header error is 
  detected.    Un-routable packet is a given, there is not much one 
  can do but to discard it!    Remove un-routable packet so it 
  does not circulate on the ring 
  forever.
 
  Regards,
  Harry
 
 
 
 
  -----Original 
  Message----- From: Ray Zeisz [ mailto:Zeisz@xxxxxxxx <mailto:Zeisz@xxxxxxxx> ] Sent: Friday, 
  June 22, 2001 7:23 AM To: 'Mike Takefman'; Raj Sharma Cc: 'Angela T. 
  Faber'; ieee 802.17 list Subject: RE: [RPRWG] CRC check in each 
  node?
 
 
  There are plenty of Ethernet switches that operate in 
  (gasp!) cut-through mode.  These switches propagate CRC errored frames 
  because they switch from one port to another after only receiving the MAC 
  header.  The original Ethernet switch (Kalpana) operated this 
  way...and received a lot of criticism.  From my perspective, it 
  appears that most of the Ethernet switch
  industry is moving away from 
  this and not propagating CRC errors.  This is largely due to the fact 
  that the industry is moving away from shared 
  bus architectures.
  Today, most Ethernet MACs and Network Processors 
  have control bits that allow you to selectively receive or discard packets 
  that are CRC errored, too long or runt (too short).
  I believe that 
  Raj mentioned some services that require errored packets to be delivered at 
  the Orlando meeting.  Maybe he could tell us more about these and what 
  the errored packets provide to the end station.
 
  FYI: IBM has a 
  patent for adaptively running in cut-through or store-and-forward based on 
  the bit error ratio over a period of time, on a per link basis.
  Ray 
  Zeisz
  LVL7 Systems http://www.LVL7.com <http://www.LVL7.com> (919) 
  865-2735
 
 
 
  -----Original Message----- From: Mike Takefman 
  [ mailto:tak@xxxxxxxxx <mailto:tak@xxxxxxxxx> ] Sent: Thursday, 
  June 21, 2001 9:05 PM To: Raj Sharma Cc: 'Angela T. Faber'; ieee 802.17 
  list Subject: Re: [RPRWG] CRC check in each 
  node?
 
 
  Raj,
  It is not clear to me that the ttl has to be 
  within the packet, and protected by the crc. There are successful 
  implementations that have the ttl protected outside of the packet. There 
  are advantages to doing this in terms of the complexity of the 
  implementation.
  I do come down on the camp of removing the packet from 
  the ring once there is corruption. There is no reason to waste BW with a 
  packet that will be dropped once it is received.
  I would be interested 
  to know if there are any Ethernet MAC/ Switch chips sets that do not drop 
  CRC errored packets when received or any that do it selectively.  I 
  would be interested in understanding the mechanism for differentiating drop 
  behaviour to understand if it belongs in the transit 
  path.
  cheers,
  mike
 
  Raj Sharma wrote: > 
  Angela, > > This is an intesting question and is sort of the tip 
  of an iceberg > (pardon the cliché - I feel the answer to this question 
  is loaded) > > There are fundamentally 2 issues here. Misrouting 
  of packets due > to errors and corruption of the 
  payload. > > IMHO, packets whose headers are corrupted must be 
  discarded > in order to prevent misrouting. The question is whether the 
  misrouting > prevention is limited between RPR MACs or to the ultimate 
  destination > entity connected to a RPR MAC. I am assuming that a RPR 
  MAC has > multiple clients. > > Certain services require 
  persistent delivery of frames. Such services > will make their won 
  decision on what to do with corrupted frames. > For these services it 
  may require that corrupted frames be still delivered
  > to the 
  specific MAC client. > > Now, it maybe of significant value in 
  debugging networks and from > an operational perspective to know over 
  which span on the ring the > frame got corrupted. Hence CRC 
  recomputation at every node may > have some value from an operational 
  perspective. Also, since the TTL > field is part of the frame CRC 
  recomputation cannot be avoided at least for > the 
  header. > > 
  raj > > > >      
  -----Original Message----- >      From: Angela 
  T. Faber [ mailto:afaber@xxxxxxxxxxxxx <mailto:afaber@xxxxxxxxxxxxx> 
  ] >      Sent: Thursday, June 21, 2001 12:44 
  PM >      To: ieee 802.17 
  list >      Subject: [RPRWG] CRC check in each 
  node? > >      
  Folks > >      One question regarding CRC 
  check: are we assuming CRC will be checked
  at every node (as the frame 
  is >      forwarded) or it will be checked only 
  at the destination/source node?
  >      My 
  initial thought on this is that, if we don't do it at every node, than how 
  do we remove the frame from ring if the >      
  source and destination addresses are corrupted? On the other hand I assume 
  that if every node checks it, more >      time 
  is spent with forwarding it.... > >      
  Any insights are welcomed. >      
  Thanks! > >      
  Angela >
 
 
  
 |