天天看點

《路由設計的優化》一1.3 可靠性和彈性

本節書摘來自異步社群《路由設計的優化》一書中的第1章,第1.3節,作者【美】russ white , don slice , alvaro retana,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視

路由設計的優化

如果網絡不轉發網絡裝置之間的資料,那麼應用程式就無法正常運作;如果網絡當機,那麼應用程式就無法工作。是以,如果網絡應用依賴于網絡裝置之間的連通性,那麼網絡就必須足夠可靠(reliable),雖然這是顯而易見的道理,但如果深入分析這個概念,大家會在表象之下發現很多非常複雜的東西。

既然可靠性很重要,那麼如何構造可靠的網絡呢?最明顯的答案就是盡可能減少網絡變更的次數,網絡的變更次數越少,網絡就越穩定,越可靠。

但是變更又是網絡所不能避免的,網絡規模越大,網絡(至少某些網絡元件)發生變更或出現故障的可能性就越大。例如,假定網絡中的裝置每5年變更一次(如果每次變更或故障時間為1小時,那麼正常運作時間将達到99.99997%),如果網絡隻有5台裝置,那麼平均每年隻有1台裝置出現變更或故障,但是如果網絡擁有500台裝置,那麼平均每年将有100台裝置出現變更或故障,也就是平均每3天就會出現一次裝置變更或故障。圖1-3解釋了多台裝置出現多次變更所帶來的複合影響。

很明顯,即使網絡裝置的可靠性非常高,但是隻要網絡大到一定的規模,那麼網絡将不可避免地處于經常性的變動狀态,變更的原因可能是裝置故障,也可能是網絡優化調整。

《路由設計的優化》一1.3 可靠性和彈性

是以,盡管可以通過減少網絡變更和故障發生率來提高網絡的可靠性,但是網絡變更始終存在,通過部署可靠性更高的網絡裝置以及各種高可靠性機制,可以減少特定時間視窗内網絡出現變動的次數,因而需要圍繞各種可能發生的變更因素進行網絡設計,這就是所謂的網絡彈性(resiliency)。

網絡彈性是網絡保證不間斷運作狀态下适配網絡變更(因配置出現變化或者網絡出現故障而引起的網絡變更)的能力。一旦确定了網絡在特定時間視窗内所能處理的變更次數,就可以在網絡設計過程中引入适當的彈性機制,以應對已确定的網絡所能處理的變更等級,進而設計出可靠的網絡。

圖1-3給出的結果令人感到驚訝,随着網絡規模的增大,無論網絡裝置的可靠性有多高,因網絡裝置變更或網絡裝置故障引起的網絡變更次數都将不斷增大。不過,網絡元件的變更或故障是不是就等同于網絡故障呢?

回顧前面談到的構造可靠網絡的設計目标,隻要網絡能夠将網絡邊緣接收到的絕大多數資料包及時傳送到目的端,就可以認為該網絡處于工作狀态。如果網絡中的某條鍊路出現故障,那麼該網絡能否繼續及時地傳送資料包呢?

從應用的角度來看,隻要做到了以下幾點,即使網絡中的某條鍊路出現故障,仍然可以認為網絡處于運作狀态。

網絡擁有其他可選路徑(如與故障路徑并行的第二路徑),而且可以通過該可選路徑繼續及時地傳送資料包。

受網絡變更或故障影響的應用程式或使用者群對該網絡的首要設計目标影響不大(例如,對一個主要提供金融業務的網絡來說,無法通路某台遊戲伺服器是無關痛癢的),而且網絡可以及時傳送從網絡邊緣接收到的絕大多數資料包。

是以,網絡故障的定義與部署在網絡中的應用及其功能相關,從更寬泛的角度來看,網絡故障的定義與網絡設計息息相關。對網絡中運作的每種應用程式來說,網絡設計人員要考慮以下問題。

該業務不可用的代價是什麼?

對該應用程式來說,是不是某些特定網段比網絡的其他部分更重要?

為保證該應用程式的正常運作,是否需要特定鍊路都必須可用?

例如,電子郵件通常是企業員工之間最主要的通信方式,如果電子郵件系統中斷5分鐘,一般會是給大家帶來一定的工作不便。但是,如果電子郵件系統中斷5小時,那麼就很可能會給企業造成大量的經濟損失。是以,定義網絡中運作的每種應用程式的服務級别(基于最大當機時間的容限)是網絡設計工作中非常重要的環節。

每種應用程式都可能會包含需要可靠連接配接的伺服器或主機。仍然以電子郵件為例,當電子郵件伺服器與網絡之間的連接配接不可用時,在同一時刻與網絡失去連接配接的每個使用者都會遭受相同的後果:電子郵件服務不可用!

對某些時延敏感型應用來說,雖然網絡并沒有出現傳統意義上的故障,但這些應用實際上已經失效—即使沒有丢包或者隻有少量丢包。例如,當網絡中某條鍊路出現故障時,如果網絡沒能快速适應拓撲結構發生的變化,使得少量資料包被丢棄或出現較大的時延,那麼将會導緻大範圍的語音呼叫複位現象。

還有某些應用屬于時延敏感型應用,如依賴匯率或價格快速變動的金融交易型應用,特别是那些大批量、高速金融交易模型,如大型股票和金融證券交易操作。

除了傳統意義上的網絡故障,還應考慮網絡故障對某些特殊應用的資料包傳送的及時性會産生哪些影響,此時應逐一分析網絡中的每種應用和主機(或主機類型)的特性,并分别為其制定相應的故障定義。如果沒有這些故障定義,那麼就無法定義哪些故障是“網絡故障”,也就無法精确地度量網絡的正常運作時間(uptime)和當機時間(downtime),也就是無法度量網絡中運作的各種應用的可用性,如此一來,所謂的5個9可靠性(将在随後的“平均故障間隔時間”一節詳細讨論)也就毫無意義了。

雖然有關各種網絡應用的不同網絡可用性需求的讨論已經超出了本書寫作範圍,但是網絡元件發生變更或故障後的網絡恢複時間卻是本書後續讨論的重點内容。如果某個網絡每年才出現一次故障,但每次故障恢複時間都長達三個星期,那麼該網絡的正常運作時間也很差。

網絡恢複包含多個等級,每個等級都有相應的時間。

網絡從故障狀态恢複到正常運作狀态所花費的時間。例如,當某條鍊路出現故障時,路由協定中涉及該鍊路的路由都會失效,那麼路由協定為調整網絡中去往該故障鍊路的路徑所花費的時間就屬于這類時間,本書将在後續内容中深入探讨這方面的問題。

網絡故障排查所花費的時間以及修複因網絡元件發生變更或故障而引起的網絡故障(網絡無法自動修複這些故障)所花費的時間。當網絡裝置或鍊路出現故障後,需要花費多長時間才能完成故障排查和故障修複呢?該時間是網絡可管理性以及其他許多問題的基本構成因素。