RRPP(Rapid Ring Protection Protocol,快速环网保护协议)是一个专门应用于以太网环的链路层协议。它在以太网环完整时能够防止数据环路引起的广播风暴,而当以太网环上一条链路断开时能迅速恢复环网上各个节点之间的通信通路,具备较高的收敛速度。
城域网和企业网大多采用环网来构建以提供高可靠性,但环上任意一个节点发生故障都会影响业务。环网采用的技术一般是RPR或以太网环。RPR需要专用硬件,因此成本较高。而以太网环技术日趋成熟且成本低廉,城域网和企业网采用以太网环的趋势越来越明显。
目前,解决二层网络环路问题的技术有STP和RRPP。STP应用比较成熟,但收敛时间在秒级。RRPP是专门应用于以太网环的链路层协议,具有比STP更快的收敛速度。并且RRPP的收敛时间与环网上节点数无关,可应用于网络直径较大的网络。
图 1 RRPP组网示意图
具有相同的域ID和控制VLAN,并且相互连通的设备构成一个RRPP域。一个RRPP域具有RRPP主环、子环、控制VLAN、主节点、传输节点、主端口和副端口、公共端口和边缘端口等要素。
如图 1所示,Domain 1就是一个RRPP域,它包含了两个RRPP环Ring 1和Ring 2,RRPP环上的所有节点属于这个RRPP域。
一个环形连接的以太网网络拓扑称为一个RRPP环。RRPP环分为主环和子环,环的角色可以通过指定RRPP环的级别来设定,主环的级别为0,子环的级别为1。一个RRPP域可以包含一个或多个RRPP环,但只能有一个主环,其它均为子环。
RRPP环的状态有以下两种:
l 健康状态:整个环网物理链路是连通的;
l 断裂状态:环网中某处物理链路断开。
如图 1所示,RRPP域Domain 1中包含了两个RRPP环Ring 1和Ring 2。Ring 1和Ring 2的级别分别配置为0和1,则Ring 1为主环,Ring 2为子环。
控制VLAN和数据VLAN是相对而言的:
(1) 控制VLAN
控制VLAN用来传递RRPP协议报文。设备上接入RRPP环的端口都属于控制VLAN,且只有接入RRPP环的端口可加入此VLAN。
每个RRPP域都有两个控制VLAN:主控制VLAN和子控制VLAN。主环的控制VLAN称为主控制VLAN,子环的控制VLAN称为子控制VLAN。配置时只需指定主控制VLAN,系统会自动把比主控制VLAN的VLAN ID值大1的VLAN作为子控制VLAN。
同一个RRPP域中所有子环的控制VLAN都相同,且主控制VLAN和子控制VLAN的接口上都不允许配置IP地址。
(2) 数据VLAN
与控制VLAN相对,数据VLAN用来传输数据报文。数据VLAN中既可包含RRPP端口,也可包含非RRPP端口。
RRPP环上的每台设备都称为一个节点。节点角色由用户的配置来决定,分为下列几种:
l 主节点:每个环上有且仅有一个主节点。主节点是环网状态主动检测机制的发起者,也是网络拓扑发生改变后执行操作的决策者。
l 传输节点:主环上除主节点以外的其它所有节点,以及子环上除主节点、子环与主环相交节点以外的其它所有节点都为传输节点。传输节点负责监测自己的直连RRPP链路的状态,并把链路变化通知主节点,然后由主节点来决策如何处理。
l 边缘节点:同时位于主环和子环上的节点。是一种特殊的传输节点,它在主环上是传输节点,而在子环上则是边缘节点。
l 辅助边缘节点:同时位于主环和子环上的节点。也是一种特殊的传输节点,它在主环上是传输节点,而在子环上则是辅助边缘节点。辅助边缘节点与边缘节点成对使用,用于检测主环完整性和进行环路预防。
如图 1所示,Ring 1为主环,Ring 2为子环。Device A为Ring 1的主节点,Device B、Device C和Device D为Ring 1的传输节点;Device E为Ring 2的主节点,Device B为Ring 2的边缘节点,Device C为Ring 2的辅助边缘节点。
主节点和传输节点各自有两个端口接入RRPP环,其中一个为主端口,另一个为副端口。端口的角色由用户的配置来决定。
(1) 主节点的主端口和副端口在功能上有所区别:
l 主节点的主端口用来发送探测环路的报文,副端口用来接收该报文。
l 当RRPP环处于健康状态时,主节点的副端口在逻辑上阻塞数据VLAN,只允许控制VLAN的报文通过;当RRPP环处于断裂状态时,主节点的副端口将解除数据VLAN的阻塞状态,转发数据VLAN的报文。
(2) 传输节点的主端口和副端口在功能上没有区别,都用于RRPP环上协议报文和数据报文的传输。
如图 1所示,Device A为Ring 1的主节点,Port 1和Port 2分别为其在Ring 1上的主端口与副端口;Device B、Device C和Device D为Ring 1的传输节点,它们各自的Port 1和Port 2分别为本节点在Ring 1上的主端口和副端口。
公共端口是边缘节点和辅助边缘节点上接入主环的端口,即边缘节点和辅助边缘节点分别在主环上配置的两个端口。边缘端口是边缘节点和辅助边缘节点上只接入子环的端口。
端口的角色由用户的配置决定。如图 1所示,Device B、Device C同时位于Ring 1和Ring 2上,Device B和Device C各自的端口Port 1和Port 2是接入主环的端口,因此是公共端口。Device B和Device C各自的Port 3只接入子环,因此是边缘端口。
RRPP环组是为减少Edge-Hello报文(关于此报文的介绍请参见“RRPP协议报文”)的收发数量,在边缘节点或辅助边缘节点上配置的一组子环的集合。这些子环的边缘节点都配置在同一台设备上,同样辅助边缘节点也都配置在同一台设备上。而且边缘节点或辅助边缘节点所在子环对应的主环链路相同,也就是说这些子环边缘节点的Edge-Hello报文都走相同的路径到达辅助边缘节点。
在边缘节点上配置的环组称为边缘节点环组,在辅助边缘节点上配置的环组称为辅助边缘节点环组。边缘节点环组内最多允许有一个子环发送Edge-Hello报文。
RRPP协议报文的类型及其作用如表 1所示。
表 1 RRPP报文类型及其作用
报文类型 | 说明 |
Hello | 由主节点发起,对网络进行环路完整性检测 |
Fast-Hello | 由主节点发起,对网络进行环路完整性快速检测 |
Link-Down | 由传输节点、边缘节点或者辅助边缘节点发起,在这些节点的自身链路down时通知主节点环路消失 |
Common-Flush-FDB | 由主节点发起,FDB是Forwarding Database的缩写,在RRPP环迁移到断裂状态时通知传输节点更新各自MAC表项和ARP/ND表项 |
Complete-Flush-FDB | 由主节点发起,在RRPP环迁移到健康状态时通知传输节点更新各自MAC表项和ARP/ND表项,同时通知传输节点解除临时阻塞端口的阻塞状态 |
Edge-Hello | 由边缘节点发起,对边缘节点与辅助边缘节点之间的主环链路进行检测 |
Fast-Edge-Hello | 由边缘节点发起,对边缘节点与辅助边缘节点之间的主环链路进行快速检测 |
Major-Fault | 由辅助边缘节点发起,在边缘节点和辅助边缘节点之间主环链路不连通时通知边缘节点主环链路故障 |
子环的协议报文在主环中被当作数据报文传送,而主环的协议报文则只能在主环中传送。
RRPP在检测以太网环的链路状况时,主节点根据Hello定时器从主端口发送Hello报文,根据Fail定时器判断副端口是否收到Hello报文。
l Hello定时器:规定了主节点从主端口发送Hello报文的周期。
l Fail定时器:规定了主节点从主端口发出Hello报文到副端口收到该报文的最大时延。在该定时器超时前,若主节点在副端口上收到了自己从主端口发出的Hello报文,主节点认为环网处于健康状态;否则,主节点认为环网处于断裂状态。
l Fast-Hello定时器:规定了主节点从主端口发送Fast-Hello报文的周期。
l Fast-Fail定时器:规定了主节点从主端口发出Fast-Hello报文到副端口收到该报文的最大时延。在该定时器超时前,若主节点在副端口上收到了自己从主端口发出的Fast-Hello报文,主节点认为环网处于健康状态;否则,主节点认为环网处于断裂状态。
l 在同一RRPP域中,传输节点会通过收到的Hello报文来学习主节点上Hello定时器和Fail定时器的值,以保证环网上各节点定时器的值是一致的。
l 在同一RRPP域中,传输节点不会通过收到的Fast-Hello报文来学习主节点上Fast-Hello定时器和Fast-Fail定时器的值。
轮询机制是RRPP环的主节点主动检测环网健康状态的机制。
主节点周期性地从其主端口发送Hello报文,依次经过各传输节点在环上传播。如果环路是健康的,主节点的副端口将在定时器超时前收到Hello报文,主节点将保持副端口的阻塞状态。如果环路是断裂的,主节点的副端口在定时器超时前无法收到Hello报文,主节点将解除数据VLAN在副端口的阻塞状态,同时发送Common-Flush-FDB报文通知所有传输节点,使其更新各自的MAC表项和ARP/ND表项。
当传输节点、边缘节点或者辅助边缘节点发现自己任何一个属于RRPP域的端口down时,都会立刻发送Link-Down报文给主节点。主节点收到Link-Down报文后立刻解除数据VLAN在其副端口的阻塞状态,并发送Common-Flush-FDB报文通知所有传输节点、边缘节点和辅助边缘节点,使其更新各自的MAC表项和ARP/ND表项。各节点更新表项后,数据流则切换到正常的链路上。
传输节点、边缘节点或者辅助边缘节点上属于RRPP域的端口重新up后,主节点可能会隔一段时间才能发现环路恢复。这段时间对于数据VLAN来说,网络有可能形成一个临时的环路,从而产生广播风暴。
为了防止产生临时环路,非主节点在发现自己接入环网的端口重新up后,立即将其临时阻塞(只允许控制VLAN的报文通过),在确信不会引起环路后,才解除该端口的阻塞状态。
如图 5所示,假设Ring 1为主环,Ring 2和Ring 3为子环。当边缘节点和辅助边缘节点之间的两条主环链路均处于down状态时,子环Ring 2和Ring 3的主节点会放开各自的副端口,导致Device B、Device C、Device E和Device F之间形成环路,从而产生广播风暴。
为了防止该环路的产生,在此种情况下边缘节点会临时阻塞边缘端口,在确信不会引起环路后,才解除该边缘端口的阻塞状态。
在同一个环网中,可能同时存在多个VLAN的数据流量,RRPP可以实现流量的负载分担,即不同VLAN的流量沿不同的路径进行转发。
通过在同一个环网上配置多个RRPP域,不同RRPP域发送不同VLAN(称为保护VLAN)的流量,实现不同VLAN的数据流量在该环网中的拓扑不同,从而达到负载分担的目的。
如图 6所示,Domain 1和Domain 2都配置Ring 1为主环,两个RRPP域所保护的VLAN不同。Device A为Domain 1中Ring 1的主节点;Device B为Domain 2中Ring 1的主节点。通过配置,可以实现不同VLAN分别阻塞不同的链路,从而实现单环的负载分担。
在边缘节点配置的RRPP环组内,只有域ID和环ID最小的激活子环才发送Edge-Hello报文。在辅助边缘节点环组内,任意激活子环收到Edge-Hello报文会通知给其它激活子环。这样在边缘节点/辅助边缘节点上分别对应配置RRPP环组后,只有一个子环发送/接收Edge-Hello报文,减少了对设备CPU的冲击。
如图 5所示,Device B和Device C分别为Ring 2和Ring 3的边缘节点和辅助边缘节点。Device B和Device C都需要频繁收发Edge-Hello报文(若配置更多子环或多个域负载分担的情况,将会收发大量的Edge-Hello报文)。为减少Edge-Hello报文的收发数量,将边缘节点Device B上的Ring 2和Ring 3配置到一个环组,而将辅助边缘节点Device C上的Ring 2和Ring 3也配置到一个环组。这样在各环都激活的情况下,就只有Device B上的Ring 2发送Edge-Hello报文了。
RRPP的快速收敛依赖于传输节点能够快速检测到链路故障,并立即发出通知。而在RRPP的实际运用中,环网中的某些设备并不支持RRPP协议,由于无法感知到这些设备之间的链路故障,RRPP只能通过超时机制进行链路切换,但这将导致流量中断时间过长,不能达到用户毫秒级切换的需要。
RRPP快速检测机制可以解决上述问题。在配置了快速检测功能之后,当RRPP在检测以太网环的链路状况时:
l 主节点会以Fast-Hello定时器周期性地从主端口发送Fast-Hello报文:在Fast-Fail定时器超时前,若其副端口收到了该报文,就认为环路处于健康状态;否则,认为环路处于断裂状态。
l 边缘节点会以最高精度定时器周期性地从公共端口发送Fast-Edge-Hello报文:在三倍于最高精度定时器值的时间间隔内,若辅助边缘节点没有收到该报文,就认为子环在主环上的传输通道处于断裂状态。
如图 2所示,当在Ring 1的主节点Device A上使能了RRPP域1的快速检测功能后,Device A将周期性地发送Fast-Hello报文,并根据在Fast-Fail时间内是否收到Fast-Hello报文来判断环路状态,从而实现链路状态的快速检测。
l 最高精度定时器就是设备所能提供的周期最短的定时器。
l 要实现快速检测功能,要求RRPP环的主节点、边缘节点和辅助边缘节点都支持快速检测机制。
RRPP的正常运行依赖于用户正确的配置。下面介绍几种典型的组网。
如图 2所示,网络拓扑中只有一个环,此时只需定义一个RRPP域。
如图 3所示,网络拓扑中有两个或两个以上的环,各环之间只有一个公共节点,此时需针对每个环单独定义一个RRPP域。
图 3 相切环示意图
如图 4所示,网络拓扑中有两个或两个以上的环,各环之间有两个公共节点,此时只需定义一个RRPP域,选择其中一个环为主环,其它环为子环。
如图 5所示,网络拓扑中有两个或两个以上的环,各环之间有两个公共节点,且这两个公共节点都相同,此时可以只定义一个RRPP域,选择其中一个环为主环,其它环为子环。
图 5 双归属环示意图
如图 6所示,Domain 1和Domain 2都配置Ring 1为主环,两个域所保护的VLAN不同。Device A为Domain 1中Ring 1的主节点;Device B为Domain 2中Ring 1的主节点。通过配置,可以实现不同VLAN分别阻塞不同的链路,从而实现单环的负载分担。
图 6 单环负载分担组网示意图
如图 7所示,Domain 1和Domain 2都配置Ring 1和Ring 2分别为其主环和子环,两个域所保护的VLAN不同。Device A为Domain 1中Ring 1的主节点;Device D为Domain 2中Ring 1的主节点;Device E分别为Domain 1和Domain 2中子环Ring 2的主节点,但阻塞的端口不同。通过配置,可以实现不同VLAN的流量分别在子环和主环通过不同的链路,从而实现相交环的负载分担。