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的流量分別在子環和主環通過不同的鏈路,從而實現相交環的負載分擔。