Upload
kumiko
View
21
Download
0
Embed Size (px)
DESCRIPTION
802.17c Protected Inter-Ring Connection. Rafi Ram - Corrigent Systems March 2008. PIRC Suggestion Highlights. Stations A & B are members of a protection group (PG) for interconnect between two rings Station A and station B are protection group members (PGM) - PowerPoint PPT Presentation
Citation preview
802.17cProtected Inter-Ring Connection
Rafi Ram - Corrigent SystemsMarch 2008
2
PIRC Suggestion Highlights• Stations A & B are members of a protection
group (PG) for interconnect between two rings• Station A and station B are protection group
members (PGM)• One of the interconnected rings shall be
provisioned as the “primary” ring and the other as “secondary” ring
• The station on the secondary ring with the lower MAC address is designated as the “0” member, and the other as the “1” member
3
Network Diagram
• Stations A & C are “peer” stations• Stations B & D are “peer” stations• Stations A & B are “mate” stations• Stations C & D are “mate” stations
Station ARPR MAC
Station BRPR MAC
Client
Station CRPR MAC
Station DRPR MAC
Client
Primary Ring
Secondary RingFilter
optional localtributaries
4
PIRC Protection Command
• Each PIRC station shall support the following protection commands per PG:– Idle– Manual Switch– Forced Switch
5
PIRC Protection Status• Each PIRC station shall maintain a PIRC protection
status per PG as follows (in order of priority): – Forced Switch – operator initiated forced switch
protection command– Failure – peer/RPR interface failure or Miss-
configuration– Peer Down – peer station not forwarding– WTR – delay following failure clear to prevent
toggling in/out of failure state
6
PIRC Protection Status (cont)– Protecting – Mate station not forwarding– Manual Switch – operator initiated manual switch
protection command – Back-Off – delay to prevent loop before starting to
forward traffic– No Request – protection group idle (no failure or
protection command)
7
Forwarding States
• Forward None– Protection Status = WTR or Failure or
ForcedSwitch or ManualSwitch or BackOff or PeerDown
• Forward Mine– Protection Status = NoRequest
• Forward All– Protection Status = Protecting
8
PIRC Stations Communication
Station ARPR MAC
Client
Station CRPR MAC
Peer Sync
Station BRPR MAC
Station DRPR MAC
Client Peer Sync
Mate Sync
Mate Sync
9
Station-OK State Variable
station-OK = KA-peer-OK && (OperStatus==Up) && !missConfigDetected
missConfigDetected = indication that miss-configuration was detected
10
Peer Stations Communication• Peer stations exchange PIRC sync messages
which are also used as “keep-alive”• The messages consist the following information
(per protection group):– Station-OK– Protection Status
• The peer messages are sent :– periodically – Immediately after change of value of station-
OK or Protection Status
11
peer_ProtStatus & peer_station-OK
• peer_ProtStatus and peer_station-OK are the ProtStatus and station-OK variables of the peer station– They are advertised using the Peer sync
messages
12
Self-OK State Variable
self-OK = station-OK && peer_station-OK &&(ProtStatus!=ForcedSwitch) && (peer_ProtStatus!=ForcedSwitch) &&(ProtStatus!=Failure) &&(peer_ProtStatus!=Failure) &&(ProtStatus!=WTR) &&(peer_ProtStatus!=WTR)
13
Self-MS State Variable
self-MS = (ProtStatus==ManualSwitch) || (peer_ProtStatus==ManualSwitch)
14
Mate Stations Communication• Mate stations exchange messages which are also
used as “keep-alive” • The messages consist the following information (per
protection group):– Self-OK– Self-MS
• The mate messages are sent :– periodically – Immediately after change of value of self-OK or
self-MS– The messages could be new control type or new
OAM type
15
mate_self-OK & mate_self-MS
• mate_self-OK and mate_self-MS are the self-OK and self-MS variables of the peer station– They are advertised using the Peer sync
messages
16
Mate-OK State Variable
Mate-OK = mateVisable && KA-mate-OK &&mate_self-OK
mateVisable – indication if mate station is visible in RPR topology
17
Protection Status State Machine
• The Protection Status State Machine is updated upon :– Activation of protection command– Change of value of one of the following
variables : station-OK, peer_station-OK, peer_protStatus, mate-OK, mate-self-MS
18
Protection Status State Machine – State ForcedSwitch
if ((protCmd==Idle) || ((protCmd==ManualSwitch) && mate_self-MS))if (!station-OK) protStatus = Failureelse
if (!peer_station-OK || ((peer_protStatus==ManualSwitch) && !mate-self-MS)) protStatus = PeerDown
elseprotStatus = BackOff /* trigger backoff timer */
elseif (protCmd==ManualSwitch) protStatus = ManualSwitchelse protStatus = ForcedSwitch
19
Protection Status State Machine – State Failure
if (protCmd==ForcedSwitch)protStatus = ForcedSwitch
elseif (!station-OK)
protStatus = Failureelse
protStatus = WTR /* trigger WTR timer */
20
Protection Status State Machine – State WTR
if (protCmd==ForcedSwitch) protStatus = ForcedSwitchelse
if (!station-OK) protStatus = Failureelse
if (!WTR_timer_expired) protStatus = WTRelse
if (!peer_station-OK || ((peer_protStatus==ManualSwitch) && !mate-self-MS))
protStatus = PeerDownelse
if ((protCmd==ManualSwitch) && !mate_self-MS) protStatus = ManualSwitch
elseprotStatus = BackOff /* trigger backoff timer */
21
Protection Status State Machine – State PeerDown
if (protCmd==ForcedSwitch)protStatus = ForcedSwitch
elseif (!station-OK)
protStatus = Failureelse
if (!peer_station-OK || ((peer_protStatus==ManualSwitch) && !mate-self-MS))
protStatus = PeerDownelse
if ((protCmd==ManualSwitch) && !mate_self-MS) protStatus = ManualSwitch
elseprotStatus = BackOff /* trigger backoff timer */
22
Protection Status State Machine – State BackOff
if (protCmd==ForcedSwitch) protStatus = ForcedSwitchelse
if (!station-OK) protStatus = Failureelse
if (!peer_station-OK || ((peer_protStatus==ManualSwitch) && !mate-self-MS))
protStatus = PeerDownelse
if ((protCmd==ManualSwitch) && !mate_self-MS) protStatus = ManualSwitch
elseif (!backoff_timer_expired) protStatus = BackOffelse
if (!mate-OK || (peer_protStatus==Protecting) || (mate-self-MS && (peer_protStatus!=ManualSwitch))protStatus = Protecting
else protStatus = NoRequest
23
Protection Status State Machine – State Protecting
if (protCmd==ForcedSwitch) protStatus = ForcedSwitchelse
if (!station-OK) protStatus = Failureelse
if (!peer_station-OK || ((peer_protStatus==ManualSwitch) && !mate-self-MS))
protStatus = PeerDownelse
if ((protCmd==ManualSwitch) && !mate_self-MS) protStatus = ManualSwitch
elseif (!mate-OK || (peer_protStatus==Protecting) || (mate-self-MS && (peer_protStatus!=ManualSwitch))
protStatus = Protecting else
protStatus = NoRequest
24
Protection Status State Machine – State ManualSwitch
if (protCmd==ForcedSwitch)protStatus = ForcedSwitch
elseif (!station-OK)
protStatus = Failureelse
if (!peer_station-OK || ((peer_protStatus==ManualSwitch) && !mate-self-MS))
protStatus = PeerDownelse
if ((protCmd==ManualSwitch) && !mate_self-MS) protStatus = ManualSwitch
elseprotStatus = BackOff /* trigger backoff timer */
25
Protection Status State Machine – State NoRequest
if (protCmd==ForcedSwitch)protStatus = ForcedSwitch
elseif (!station-OK)
protStatus = Failureelse
if (!peer_station-OK || ((peer_protStatus==ManualSwitch) && !mate-self-MS))
protStatus = PeerDownelse
if ((protCmd==ManualSwitch) && !mate_self-MS) protStatus = ManualSwitch
else protStatus = NoRequest
26
MAC Table Flush
• 802.17b – When an interconnecting station no longer appears in the topology, the MAC entries associated with that stations are deleted
• When a PIRC station it sends SAS_Group_Notify message when :– Forwarding state changes to FwdNone– Forwarding state changes from FwdAll to
FwdMine
27
myFlow(frame) Function
• The function could be used for implementation of the load-balancing functionality
• On of the possible implementations of the myFlow function could be :
myFlow(frame) =(hashing(frame.vlan) modulo 2) == member-type
28
PIRC Sublayer Logic on the Path Client MAC as State Table
Row Condition Action
1 Unicast(frame) Forward
2 MAC is on primary ring Forward
3 FwdState==FwdNone Discard
4 FwdState==FwdAll Forward
5 myFlow(frame) Forward
6 - Discard
29
PIRC Sublayer Logic on the Path Client MAC as Pseudo-Code
if (frame is unicast) // not flooded, broadcast or multicast frameforward frame
elseif (MAC is on primary ring)
forward frameelse
if (((FwdState==FwdMine) && myFlow(frame)) || (FwdState==FwdAll)) then
forward frameelse
discard frame
30
PIRC Sublayer Logic on the Path MAC Client as State Table
Row Condition Action
1 Unicast(frame) Forward
2 (MAC is on primary ring) && (RPR SA is the mate MAC address) && (FwdState==FwdAll)
Discard
3 MAC is on primary ring Forward
4 RPR SA is the mate MAC address Discard
5 FwdState==FwdNone Discard
6 FwdState==FwdAll Forward
7 myFlow(frame) Forward
8 - Discard
31
PIRC Sublayer Logic on the Path MAC Client as Pseudo-Code
if (frame is unicast) // not flooded, broadcast or multicast frameforward frame
elseif (MAC is on primary ring)
if ((FwdState==FwdAll) && (RPR SA is the mate MAC address))discard frame
elseforward frame
elseif (RPR SA is the mate MAC address)
discard frameelse
if (((FwdState==FwdMine) && myFlow(frame)) || (FwdState==FwdAll)) then
forward frameelse
discard frame