ensprip引入靜態路由 靜態路由理論知識詳解

2021-10-12 16:47:58 字數 4250 閱讀 1279

一、簡介

靜態路由是一種需要管理員手工配置的特殊路由。

靜態路由在不同網路環境中有不同的目的:

當網路結構比較簡單時,只需配置靜態路由就可以使網路正常工作。

在複雜網路環境中,配置靜態路由可以改進網路的效能,並可為重要的應用保證頻寬。

靜態路由可在vpn例項中使用,主要用於vpn路由的管理。

二、原理

一、靜態路由基礎

路由器根據路由**資料報,路由可通過手動配置和使用動態路由演算法計算產生,其中手動配置產生的路由就是靜態路由。

靜態路由比動態路由使用更少的頻寬,並且不占用cpu資源來計算和分析路由更新。但是當網路發生故障或者拓撲發生變化後,靜態路由不會自動更新,必須手動重新配置。

1、目的位址和掩碼

ipv4的目的位址為點分十進位制格式,掩碼可以用點分十進位制表示,也可用掩碼長度(即掩碼中連續『1』的位數)表示。當目的位址和掩碼都為零時,表示靜態預設路由。

1、對於點到點型別的介面,只需指定出介面。

因為指定傳送介面即隱含指定了下一跳位址,這時認為與該介面相連的對端介面位址就是路由的下一跳位址。如10ge封裝ppp(point-to-point protocol)協議,通過ppp協商獲取對端的ip位址,這時可以不指定下一跳位址。

2、對於nbma(non broadcast multiple access)型別的介面(如atm介面),只需配置下一跳。

因為除了配置ip路由外,還需在鏈路層建立ip位址到鏈路層位址的對映。

因為乙太網介面是廣播型別的介面,而vt介面下可以關聯多個虛擬訪問介面(virtual access inte***ce),這都會導致出現多個下一跳,無法唯一確定下一跳。

3、靜態路由優先順序

對於不同的靜態路由,可以為它們配置不同的優先順序,優先順序數字越小優先順序越高。配置到達相同目的地的多條靜態路由,如果指定相同優先順序,則可實現負載分擔;如果指定不同優先順序,則可實現路由備份。

4、靜態路由的特點

1、手動配置

2、路由路徑固定(除非手動修改)

3、不可通告

不會主動通告給其他路由器。但管理員可以在本地裝置的動態路由中引入靜態路由,然後以對應動態協議路由進行通告。

4、單向性

僅為資料提供沿著下一跳的方向進行路由,不提供反向路由。如果要使源節點域目標網路進行雙向通訊,必須同時配置回程靜態路由

5、接力性

如果某條靜態路由中間經過的跳數大於1(路由要經過3個或以上路由節點),則必須在除最後乙個路由器外的其他路由器上依次配置到達相同目的節點或目的網路的靜態路由。

(路由器各埠上直連的各個網路都是直連互通的,因此之間預設是直連路由,因而無需另外配置路由。)

6、迭代性

理論上來說,靜態路由的下一跳可以是路徑中其他路由器中的任意乙個介面,只要能保證路由到達下一跳就行了。(靜態路由沒有建立鄰居關係hello包,也不會被通告鄰居路由,所以他的下一跳純粹是配置的「下一跳ip位址」直接指定的,或者通過出介面間接指定。不是我們平常理解的必須與路由器直連的下乙個裝置介面。)

路由迭代

通過路由的下一跳資訊來找到直連出介面的過程。

迭代深度

路由迭代中查詢路由的次數,次數越少迭代深度越小。

二、靜態路由與bfd聯動

與動態路由協議不同,靜態路由自身沒有檢測機制,當網路發生故障的時候,需要管理員介入。靜態路由與bfd聯動可為靜態路由繫結bfd會話,利用bfd會話來檢測靜態路由所在鏈路的狀態,具體過程如下:

當某條靜態路由上的bfd會話檢測到鏈路故障時,bfd會將故障上報系統,促使該路由失效,使該路由在ip路由表中不可見。

當某條靜態路由上的bfd會話檢測到故障的鏈路重新建立成功時,bfd會上報系統,啟用該路由,使該路由重新出現在ip路由表中。

三、靜態路由與nqa聯動

靜態路由本身並沒有檢測機制,如果非本機直連鏈路發生了故障,靜態路由不會自動改變(不會從ip路由表中自動刪除),需要管理員介入,這就無法保證及時進行鏈路切換,可能造成較長時間的業務中斷。

基於以上原因,需要有一種有效的方案來檢測靜態路由所在的鏈路。對於靜態路由而言,現有的靜態路由與bfd聯動特性,由於受到互通裝置兩端都必須支援bfd的限制,在某些應用場景無法實施。而靜態路由與nqa(network quality analysis)聯動則只要求互通裝置的其中一端支援nqa即可。

靜態路由與nqa聯動特性即為靜態路由繫結nqa測試例,利用nqa測試例來檢測靜態路由所在鏈路的狀態,根據nqa的檢測結果,決定靜態路由是否活躍,達到避免通訊的中斷或服務質量降低的目的。靜態路由與nqa聯動特性的功能如下:

如果nqa測試例檢測到鏈路故障,路由器將這條靜態路由設定為「非啟用」狀態(此條路由不可用,從ip路由表中刪除)

如果nqa測試例檢測到鏈路恢復正常,路由器將這條靜態路由設定為「啟用」狀態(此條路由可用,新增到ip路由表)

靜態路由與nqa聯動時僅採用icmp測試例來檢測源端到目的端的路由是否可達。

每條靜態路由只可以繫結乙個nqa測試例。

圖1 靜態路由與nqa聯動應用組網圖

上圖1所示,每台接入交換機下連線10個使用者,共100個使用者。由於在routerb和使用者之間無法使用動態路由協議,所以在routerb上配置到使用者的靜態路由。出於網路穩定性的考慮,在routerc上進行同樣的配置,作為冗餘備份。

routera、routerb和routerc上執行動態路由協議,相互間可以學習路由。其中,routerb和routerc配置動態路由協議引入靜態路由,並且設定不同的度量值,這樣routera也能通過動態路由協議從routerb和routerc分別學習到使用者的路由,routera根據兩條鏈路的度量值不同選擇一條主用鏈路,另一條鏈路做為備份鏈路。

在routerb上配置靜態路由與nqa聯動特性,利用nqa測試例檢測主用鏈路routerb→switcha→switchc(switchd)的狀態,當主用鏈路發生故障時,撤銷靜態路由發布,使下行流量經無故障的鏈路routerc→switchb→switchc(switchd)**。在兩條鏈路都正常時,控制下行流量優先選擇主用鏈路。

四、靜態路由永久發布

靜態路由永久發布可以為客戶提供一種低成本、部署簡單的鏈路檢測機制,並提高與其他廠商裝置的相容性。在客戶希望確定業務流量的**路徑,不希望流量從其它路徑穿越時,靜態路由永久發布可以通過ping靜態路由目的位址的方式來檢測鏈路的有效性而達到業務監控的目的。

鏈路有效性直接影響網路的穩定性和可用性,因此鏈路狀態的檢測對網路維護具有重要意義。bfd作為一種常用方案,並不適合所有的場景。例如,在不同的isp之間,客戶更希望採用更簡單、更自然的方式來達到這一目的。

配置永久發布屬性後,之前無法發布的靜態路由仍然被優選並新增到路由表中。具體可以分為以下兩種情況:

1、靜態路由配置出介面且出介面的ip位址存在時,無論介面狀態是up或down,只要配置了永久發布屬性,靜態路由都會被優選並新增到路由表。

2、靜態路由沒有配置出介面時,無論靜態路由是否能迭代到出介面,只要配置了永久發布屬性,路由都會被優選並新增到路由表中。

這樣,通過控制靜態路由的優先順序和字首長度,使ping資料報始終通過靜態路由**,就可以檢測出鏈路的有效性。

該特性不判斷路由是否可達,而是一直會將靜態路由保留在ip路由表中,如果實際路徑不可達,靜態路由可能形成黑洞路由。

圖1 靜態路由永久發布應用組網圖

如上圖1所示,br1、br2和br3分別屬於isp1、isp2和isp3。從br1到br2有兩條鏈路(linka和linkb)可達,但isp1希望業務流量都通過linka直接**到isp2,而不從isp3穿越。

在br1和br2之間建立直連單跳ebgp鄰居,同時為了進行業務狀態監控,在br1上配置到對端(br2)bgp鄰居位址(10.1.1.2/24)的靜態路由(出介面為與br2直連的本地介面),並使能路由永久發布。網路監控系統週期性的ping 10.1.1.2,可通過ping結果來判斷linka的狀態。

當linka正常時,ping資料報都是通過linka進行**。如果linka發生故障,即使能通過linkb到達br2,但由於靜態路由使能了靜態路由永久發布,所以ping資料報還是通過linka進行**,但此時**不通。對於bgp資料報也是相同的情況,故障會導致bgp鄰居斷開,監控系統可以通過ping結果間接的檢測到業務問題,並通知維護人員及時響應。

vue匯入靜態js vue引入靜態js檔案的方法

由於一些演示,需要對編碼名稱等可快速進行修改,需要頁面方便配置。由於build後的vue專案基本已經看不出原樣,因此需要建立乙個檔案,並在打包的時候不會進行編譯。vue cli 2.0的作法是在static檔案下建立js。vue cli 3.0 的寫法則是直接在public資料夾下建立js 具體操作...

vue 引入原生js vue引入靜態js檔案的方法

由於一些演示,需要對編碼名稱等可快速進行修改,需要頁面方便配置。由於build後的vue專案基本已經看不出原樣,因此需要建立乙個檔案,並在打包的時候不會進行編譯。vue cli 2.0的作法是在static檔案下建立js。vue cli 3.0 的寫法則是直接在public資料夾下建立js 具體操作...

xcode中引入靜態庫檔案方法

第一種方式 直接將對應平台的.a檔案拖拽至xcode工程左側的groups files中,缺點是每次在真機和模擬器編譯時都需要重新新增.a檔案 第二種方式 使用lipo命令將裝置和模擬器的.a合併成乙個通用的.a檔案,將合併後的通用.a檔案拖拽至工程中即可,具體命令如下 第三種方式 2.在xcode...