眾所周知,要獲得很高的網絡永續性,需要使用具有熱故障恢復功能和連接 不同網絡路徑的主路由器和備用路由器。但是僅僅這樣並不夠。路由器本身——尤其是那些位於不安全的 WAN 邊緣的路由器——應當配有內部冗余硬件組件,例如交換矩陣、線路卡、電源和路由處理器( RP )。高可用性路由器還必須支持快速軟件恢復技術。
利用可以隔離控制和轉發面板,並使用平穩的重啟機制——也被稱為思科不間斷轉發( NSF )——的路由器,可以大幅度地延長網絡和應用的正常運行時間。這種軟件恢復技術可以在 RP 流程發生中斷時,保持分組的正常傳輸,從而控制中斷對網絡的影響。
雙 RP 和連續分組轉發
RP 包含了路由器的“大腦”。它負責存儲最佳路徑路由信息的數據庫,保存與對等路由器的鄰接關系,以及處理特定的管理職能。冗余硬件可以提高網絡組件在發生故障時的可用性。思科的雙 RP 設備包括 12000 、 10000 和 7600 系列高端路由器,以及 Cisco 7500 和 7300 系列路由器。
兩個 RP 的狀態信息的同步程度在一定程度上將取決於路由器能夠以多快的速度從進程重啟或者從故障中恢復。這需要在兩個極端的備份形式之間進行平衡。一種極端形式是 RP 的“冷”備份,即不包含任何關於第二層連接、鄰接關系和最佳路徑路由表的狀態信息。在這種情況下,所有這些信息都需要重新構建,因而可能會導致極長的恢復時間。另外一種極端形式是在兩個 RP 之間不間斷地同步所有的信息,這可能會占用過多的處理資源,影響到網絡的可擴展性和性能。
通常采用的方式是在這兩種極端的 RP 同步方式之間保持適當的平衡,即將大部分(但並非全部)恢復信息加載到備用 RP 中。這種同步可以在切換 RP 和集中路由表的過程中,繼續進行第三層分組轉發。
安裝在上述路由器平台上的 Cisco IOS?軟件 12.0(22)S 版本或者更高版本可以支持思科 NSF 。它能在主 RP 進行預定維護或者 RP 發生意外故障時縮短路由器的停機時間。在大多數情況下,要實現思科 NSF ,重啟路由器和它的對等路由器必須保存針對所有可以通過重啟路由器到達的網絡的轉發信息。在重啟路由器上,在從主 RP 向備用 RP 切換的過程中,控制面板和轉發面板必須互相隔離,以便讓轉發面板能繼續轉發數據流量。
路由協議擴展
為了實現 NSF ,部分思科路由器可以采用常用路由協議——包括邊界網關協議( BGP )、 IS-IS 和開放最短路徑優先( OSPF )的新型平穩重啟擴展。這些擴展可以在判斷主 RP 能否迅速恢復的同時,暫時繼續轉發分組和保持網絡連接的穩定性。
要讓大部分思科 NSF/ 平穩重啟部署可以發揮作用,重啟路由器的對等路由器也必須支持這些擴展。這主要是由於下面兩點原因。首先, RP 切換並不代表拓撲變化,僅僅表示 RP 恢復。對等路由器可以利用平穩重啟擴展區別這兩種情況,從而避免對外廣播停用和啟用重啟路由器的信息。這可以防止不必要的廣播信息和路由變化。其次,它讓對等路由器能在恢復期間繼續向重啟路由器轉發分組,從而提供 NSF 。它還必須知道應當交換哪些消息和信息,以幫助主路由器迅速恢復。
但是,因為每種路由協議都使用不同的機制來建立路由器的鄰接關系或者對等關系,以及交換路由信息,所以每種協議的平穩重啟步驟和消息都有所不同(如圖 2 所示)。
例如, BGP 利用底層 TCP 協議來建立對等關系,而 OSPF 和 IS-IS 使用 Hello 消息來建立鄰接關系。這兩種路由協議的另外一個區別是:在發現重啟路由器無法恢復和決定重新利用完全網絡融合進行傳統恢復之前,持續轉發分組的時間。
BGP 平穩重啟
因為 BGP 重啟的影響可能會非常深遠,所以 BGP 是進行高可用性改進的重要對象。 BGP 可以承載大量的路由,所以在某個 BGP 軟件發生故障後進行網絡融合的時間通常長於其他支持較少路由的路由協議。此外,因為 BGP 是一種域間路由協議,所以一個發生故障的 BGP 流程可能會傳播到多個網絡,而不是局限於某一個域。
在 BGP 網絡進行重啟時,協議改進會在初始 BGP 連接建立之後開始。重啟路由器及其對等路由器會通過在建立進程的初始 BGP OPEN 消息中交換 BGP 功能代碼 64 ,表明對思科 NSF 的支持。
在通常情況下,當路由器重啟它的 BGP 進程時,與對等路由器的 TCP 連接將被清除,從而導致對等路由器清除所有與重啟路由器有關的路由。但是,在進行 BGP 平穩重啟時將不會進行這樣的操作。相反,對等路由器會將這些路由標為“過期”,並根據對重啟路由器將會迅速重新建立 BGP 進程的預期,繼續用這些路由轉發分組。同樣,重啟路由器還將在 BGP 協議進行重新融合時繼續轉發分組。
當重啟路由器建立新的 BGP 進程時,它將會再次向它的對等路由器發送 BGP 功能代碼 64 。但是在這一次,平穩重啟功能交換中的標記位設置將讓對等路由器知道 BGP 流程已經重啟。
在繼續轉發分組的同時,對等路由器將向重啟路由器發送一個初始路由升級。對等路由器將通過一個 end-of-RIB ( EOR )標記表明它已經將升級發送完畢。這個標記實際上是一個空的 BGP UPDATE 消息。在重啟路由器從所有對等路由器收到 EOR 以後,它就知道它可以利用新的路由信息再次開始選擇最佳路徑。
同樣,重啟路由器也會向它的對等路由器發送所有升級,再利用 EOR 標記表示發送完成。這將讓對等路由器可以用從重啟路由器接收到的升級取代過期的路由。
IS-IS 的特性
互聯網工程任務小組 ( IETF )正在以互聯網草案的形式,為 IS-IS 連接狀態、單域路由協議設計一個類似的平穩重啟流程。 IS-IS 擴展的設計者、來自思科的 Mike Shand 指出, 在本期 Packet? 出版時, IETF 將會公布這個草案的最後一個版本。如前所述, IS-IS 利用 Hello 協議發現相鄰的路由器,以及建立和保持鄰接關系。當路由器重啟時,它會通過 Hello 協議數據單元中的一個重啟請求( RR )位向其對等路由器發送信號。在一個 IS-IS 網絡中,對等路由器可以直接向重啟路由器發送數據庫信息,而無需等待確認消息。
在路由器重啟之後,它會發送一個帶有特殊的 RR 位設置的 Hello 分組,從而讓對等路由器知道它已經重啟。對等路由器會通過在它自己的 Hello 消息中設置一個特殊的重啟確認( RA )位,確認這個重啟信號。在對等路由器知道另外一個路由器已經重啟(因而沒有任何路由信息)之後,它會發送一個所有連接狀態分組( LSP )的匯總列表,隨後再發送該列表中指明的 LSP 。另外,一旦匯總列表符合,重啟路由器就會升級它的數據庫。從這個角度上來說,這種功能與 BGP 平穩重啟流程中的 EOR 相當類似。
思科為可以利用命令行界面( CLI )進行設置配置的 IS-IS 提供了另一種方法,即將所有的鄰接和 LSP 信息保存或者暫存到備用 RP 中。在切換完畢之後,新的主 RP 將利用暫存的數據保持它的鄰接關系,並可以迅速地重建它的路由表。
RP 的切換過程只需要幾秒鐘時間。 IS-IS 可以在接下來的幾秒鐘內重建它的路由表,並與網絡重新同步。在這個時候, IS-IS 會等待一段指定的間隔,隨後嘗試第二個思科 NSF 重啟。在此期間,新的備用 RP 將會啟動,並將它的配置與主 RP 保持同步。
在同步完成之後, IS-IS 鄰接關系和 LSP 數據會暫存到備用 RP ;但是,只有在間隔時間結束之後, IS-IS 才會嘗試新的思科 NSF 重啟。另外,重啟路由器將會用第一個匯總列表驗證它所緩存的 LSP 的有效性,從而保持 IS-IS 協議的狀態。
OSPF 的工作方式
當某個支持 OSPF NSF 的路由器進行 RP 切換時,它會執行兩項任務,以便與它的 OSPF 鄰居重新同步它的連接狀態數據庫( LSDB )。首先,它必須在不重新設置鄰接關系的情況下,重新絡上的可用 OSPF 鄰居。其次,它必須重新獲得網絡的 LSDB 的內容。
在 RP 切換之後,重啟路由器會以很短的間隔時間,向支持思科 NSF 的相鄰設備發送一個 Hello 分組,並在其中的擴展選項類型長度值( TLV )中設置重啟信號位。對等路由器將意識到,與重啟路由器的鄰接關系不需要重新設置。在重啟路由器收到一個 Hello 響應(作為對它的 Hello 消息的回復)之後,它就會開始與它的對方路由器進行數據庫同步。
在數據庫同步結束之後,重啟路由器將會升級它的路由信息庫( RIB )和轉發信息庫( FIB )。如果網絡或者連接狀態信息與重啟路由器在數據庫同步期間收到的信息不同,重啟路由器將會把這些信息發送到對等路由器。
高可用性網絡必須在很多方面進行加固,包括采用冗余的網絡拓撲設計。此外,還需要部署配有冗余組件和軟件智能的路由器。這些軟件智能可以進行故障恢復和減輕暫時中斷對網絡的影響。
很多思科路由器都以路由協議擴展的形式支持內部設計和軟件智能,因而可以幫助服務供應商和企業加固它們的網絡。
JAYKUMAR THONTAKUDI 是思科集中營銷部門的一位技術營銷工程師,精通面向企業和服務供應商網絡的 IP 路由和網絡永續性。
計算路由器的正常運行時間
系統的可用性是通過路由器的平均故障間隔時間( MTBF )——即設備正常工作的總時間——和平均故障恢復時間( MTTR )衡量的。 MTTR 表示系統不能處理和轉發分組的時間。用 MTBF 除以 MTBF 和 MTTR 之和,再乘以 100 ,就得出某個特定系統的可用性百分比。