Resilient Packet Ring Chun-Hung Chen 2004.02.13 NTUT Outline RPR Introduction Key Features Structure MAC Bandwidth Allocation Fairness Queuing Protection Topology Discovery Transparent Bridging Conclusions RPR Introduction Packet based ring network for Metropolitan Area Networks (MANs) Towards to IEEE Standard, IEEE P802.17 Based on Cisco Spatial Reuse Protocol Support up to 255 station attachments Optimized for rings with maximum circumference of 2000 kilometers SONET in MAN SONET is designed for point-to-point, circuit-switched applications Fixed Circuits Wasted Bandwidth for Meshing Multicast Traffic Wasted Protected Bandwidth Ethernet in MAN Ethernet over a ring Make efficient use of available bandwidth Far simpler and inexpensive solution for data Optimized for point-to-point or meshed topologies Disadvantage Not take advantage of ring topology to implement fast protection mechanism Spanning tree protocol runs comparatively slow No global fairness policy Key Features Addressing Unicast, Multicast, Broadcast Services Committed Ensured Opportunistic Efficient Concurrence Reallocated Reclaimed Reused Fairness Weighted Simple Detailed Plug-and-Play Robust Responsive Lossless Tolerant OAM RPR Layer Model Ring Structure Dual ringlets with unidirectional, counter-rotating Connection between adjacent stations is a link Composed of unidirectional links transmitting in opposite directions is a span A set of contiguous stations affected by a common fairness choke point is a congestion domain Station Structure Station is composed of one client entity, one MAC entity and two PHY entities PHY is associated with a span shared with neighboring station MAC entity contains one MAC control entity and two MAC datapath entities, each of which is associated with a ringlet PHY transmitting on ringlet0 and receiving on ringlet1 is East PHY, reversely as West PHY Addressing Unicast Multicast Broadcast Service Committed Guarantees bandwidth with a low circumferenceindependent jitter. Class A traffic has committed server qualities Ensured Guarantees bandwidth with a bounded circumference-dependent jitter. Class B committed information rate (CIR) traffic has ensured qualities Opportunistic Provides best-effort services. Class B excess information rate (EIR) and Class C traffic have opportunistic qualities Service Class classA Allocated, guaranteed data rate, low end-to-end delay, and jitter bound subclassA0 for reserved bandwidth subclassA1 for reclaimable bandwidth The allocation, advertisement, and shaping of allocated bandwidth is done on a per-link, per-ringlet basis classB Allocated, guaranteed data rate, bounded end-to-end delay, jitter for the traffic within the allocated rate, access to additional best effort data transmission that is not allocated, guaranteed, or bounded classC Best-effort traffic service with no allocated or guaranteed data rate and no bounds on end-to-end delay or jitter Ring capacity has to be assured to support classA and in-profile classB service guarantees. The communication of allocation information must be phased so as to not to create a case where transitioning allocation levels temporarily cause cumulative allocations to exceed the link capacity. This service provisioning mechanism is not discussed in the standard subclassA0 & A1 Efficient Concurrent Transmit on the same segment with different ringlet Reallocated Allocated bandwidth can be independently committed on non-overlapping segments Reclaimed Unused guaranteed bandwidth can be reclaimed by opportunistic services Reused Opportunistic bandwidths are reused on nonoverlapping segments, by utilizing RPR’s concurrent transmission and destination stripping capabilities MAC Datapath check is to determine when frames are to be stripped transit queues hold frames received waiting to be transmitted on the same ringlet Primary Transit Queue (PTQ) typically only a few MTUs in size Secondary Transit Queue (STQ) is optional implementation and when it exists, it is typically much larger than PTQ Self-generated frames are transmitted from MAC-resident stage buffer to decouple MAC-to-client timings from the timings of the physical-layer interface Flow control and prioritization protocols are applied when the frames are accepted into the stage buffer All traffic is shaped before transmission. Traffic Shaper Control frames are shaped to a low transmission rate to limit the jitter impact on client-supplied classA transmissions. Client-supplied data frames are similarly shaped to ensure conformance with pre-negotiated bandwidth allocations. Shaping involves monitoring transmitted frame bandwidths and sending {sendA, sendB, sendC} flow-control indication to the client sendC indication provides a hop-count distance rather than start/stop indication to prevent HOL problem due to far-out congestion conditions *Shaper a Queuing Store-and-Forward Cut-through NOTES: • Cut-through implementations also have to support store-and-forward, when transmission of the cut-through queue is temporarily by a conflicting transmission or blocking flow-control indication • If the output rate of the cut-through transit queue is faster than the input rate of this transit queue, then buffering of the header also provides buffering to avoid overrun conditions Single Queue *Frame Priority in Single Queue 1. 2. 3. 4. 5. Idle Frame Transit Frame(PTQ) while PTQ is full Control Frame Transit Frame Transmit Frame Double Queue *Frame Priority in Dual Queue 1. Idle Frame 2. Transit Frame(PTQ) while PTQ is full 3. Transit Frame(PTQ) while STQ is full 1. 4. 5. 6. 7. 8. Transit Frame(STQ) Control Frame Transit Frame(PTQ) Transit Frame(STQ) while STQ near full Transmit Frame Transit Frame(STQ) Fairness Weighted Weighted fair access to available ring capacity Equaled-weighted Unequaled-weighted Simple Point-of-congestion flow-control facilitates simplify per-destination queuing in client Detailed The (optional) multi-choke fairness allows the client to selectively throttle its transmission based on multiple congestion-point indications (un)Equal Weighted Each fairness procedures are performed independently on each ringlet. A fairness instance is specified by the combination of the localMacAddress and the localRi localMacAddress: Station identity localRi: Ringlet identity Provided information Allowed rate Policing indicator Allowed Rate Information A local station detecting congestion on the ringlet identifies a single downstream congestionPoint The arc of the ringlet between the congestionPoint and the local station is fairness domain Multiple pairs of congestionPoint and fairness domain can exist on the ringlet but any individual fairness instance has knowledge of at most a single congestionPoint. allowedRate Local client-sourced fairness-eligible traffic can be added to the ringlet at allowedRate Local client-sourced fairness-eligible traffic bound for destinations beyond the congestionPoint can be added to the ringlet at allowedRateCongested Hops from local station to the congestedPoint is hopsToCongestion If hopsToCongestion is MAX_STATIONS, it indicates the absence of downstream congestion Policing Indicator addRateOK indicates whether the additional client-sourced fairness-eligible traffic can be accepted by the MAC addRateCongestionOK indicates whether the additional client-sourced fairnesseligible traffic bound for destination beyond the congestionPoint can be accepted by the MAC Fairness Messaging Single-Choke Fairness Message (SC-FCM) Carry a rate advertisement transferred by a station to its upstream neighbor Aware no more than one congestionPoint Multi-Choke Fairness Message (MC-FCM) Carry a rate report broadcast by a station to all station on the ringlet. Aware multiple congestionPoint SC-FCM and Congestion Domain SC-FCM carrying advertised rate information is transferred periodically from a station to its upstream neighbor Received advertisedFairRate < FULL_RATE => downstream congestion The set of contiguous links associated with a ringlet on which downstream congestion is detected, is known as a congestion domain Head Receive absence of downstream congestion Send presence of downstream congestion Tail Receive presence of downstream congestion Send absence of downstream congestion A local station within the congestion domain and lying upstream of the tail of the domain, identifies as its congestionPoint (?) Fairness Features Independent operation of each ringlet Control messages carried on the ringlet opposing that of the associated data flow Control applied only to client-sourced fairness-eligible traffic (classB EIR, classC) Fair rates associated with the source station Ringlet capacity not explicitly allocated, treated as available capacity Ringlet capacity explicitly allocated to subclassA1 or classB CIR, but not in use, treated as available capacity Single transit queue and dual transit queue implementations supported Fairness Procedure Fairness Procedure may be event-driven or performed periodically Traffic statistic and policing per-agingInterval (period is interval at which rates are locally computed) per-advertismentInterval (period is interval at which rates are advertised upstream) per-reportingInterval (period is interval at which rates are broadcast to all stations on the ringlet) received fairness frame processing agingInterval is not related to advertisement-Interval reportingInterval is an integer multiple of the advertisementInterval SC-FCM is saved for agingInterval and advertisementInterval Traffic Statistic addRate Incremented when a fairness-eligible byte is transmitted to the ringlet from an add queue of the local station addRateCongested Incremented when a fairness-eligible byte bound for a station beyond congestionPoint, is transmitted to the ringlet from an add queue of the local station fwRate Similar to addRate but from a transit queue of the local station fwRateCongested Similar to addRateCongested but from a transit queue of the local station nrXmitRate Incremented when a byte of a frame not associated with subclassA0(i.e not-reserved) is transmitted to the ringlet from an add queue or transit queue of the local station Policing Indicator addRateOK addRate < allowedRate nrXmitRate < unreservedRate stqDepth = 0 (fwRate > addRate) && (stqDepth < stqHighThreshold) addRateCongestedOK addRateOK addRateCongested < allowedCongested Per-agingInterval Interval Time Rates of 622Mbps and higher agingInterval = 100us Rates of less than 622Mbps agingInterval = 400us Activities Aging Low-pass filter Compute localFairRate Compute allowed rate info Aging addRate = (addRate * (ageCoef – 1)) / ageCoef Low-pass filter lpAddRate = ((lpCoef – 1) * lpAddRate + AddRate ) / lpCoef Compute the localFairRate depending on Configured method (CONSERVATIVE or AGGRESSIVE) Local congestion state (CONGESTED or UNCONGESTED) Current Local conditions associated with congestion unreservedRate = LINK_RATE – reservedRate localFairRate Compuation Aggressive Currently congested localFairRate = lpAddRate Currently uncongested UNCONGESTED localFairRate = localFairRate CONGESTED localFairRate = unreservedRate localFairRate Compuation Conservative UNCONGESTED Currently congested unallocatedRate = LINK_RATE – (classProvisioned + classbCirProvisioned) localFairRate = unallocatedRate * (localWeight/activeWeights) Currently uncongested localFairRate = localFairRate + (MAX_ALLOWED_RATE – localFairRate)/ramCoef localFairRate Compuation Conservative CONGESTED roundTripTime is not elapsed localFairRate = localFairRate roundTripTime is elapsed nrXmitRate < rateLowThreshold (link not congested) localFairRate = localFairRate + (unreservedRate – localFairRate) / rampCoef nrXmitRate > rateHighThreshold (link congested) localFairRate = localFairRate – ( localFairRate / rampCoef ) Others localFairRate = localFairRate Congestion Condition Any condition below are met lpNrXmitRate > unreservedRate = ( LINK_RATE – reservedRate ) lpNrXmitRate > rateLowThreshold Optional for dual queue The access delay timer for classB or classB addframes expires Optional for dual queue stqDepth > stqLowThreshold Not for single queue If not met CONGESTION -> UNCONGESTION Exception CONGESTION state in CONSERVATIVE method Transition occurs only when localFairRate >= unreservedRate Compute Allowed Rate Info AGGRESSIVE allowedRate = maxAllowedRate CONSERVATIVE locally CONGESTED allowedRate = localFairRate locally UNCONGESTED allowedRate = allowedRate + (maxAllowedRate – localFairRate) / rampCoef Compute allowedRateCongested allowedRateCongested is the rate for the destination beyond the congestionPoint downstreamCongested is TRUE allowedRateCongested is assigned the weight-adjusted localFairRate of the congestionPoint. downstreamCongested is FALSE allowedRateCongested = allowedRateCongested + (maxAllowedRate – allowedRateCongested)/rampCoef hopsToCongestion When the station receives advertisement from downstream If the frame originated from the same ringlet hopsToCongestion = MAX_TTL – rcvdTtl If the frame originated from the wrapped ringlet hopsToCongestion = the number of hops between the local station and the downstream wrapPoint Per-advertisementInterval Activities Computation of advertisedFairRate Transmission of a rate advertisement to the upstream neighbor May need to normalize the localFairRate before transmitting advertisedFairRate rcvdFairRate == FULL_RATE && normLocalFairRate == FULL_RATE advertisedFairRate = FULL_RATE rcvdFairRate < normLocalFairRate advertisedFairRate = rcvdFairRate rcvdFairRate >= normLocalFairRate advertisedFairRate = normLocalFairRate Local station becomes the head of a congestion domain Receiving a fairness frame End