前文我們瞭解了IS-IS路由聚合和認證相關話題,回顧請參考https://www.cnblogs.com/qiuhom-1874/p/15306645.html;今天我們來聊一聊路由控制技術中的路由策略相關話題;

  為什麼要路由控制?

  在企業網路的裝置通訊中,經常面臨一些非法流量訪問的安全性及流量路徑不優等問題,為了保證資料訪問的安全性、提高鏈路頻寬利用率,我們就需要對網路中的流量行為進行控制;比如控制網路流量可達性、調整網路流量路徑等;

  路由控制應用場景

  控制網路流量可達性

  提示:如上圖所示,我們可以對路由進行過濾,讓對端只能學習到我們想要它學習的路由,從而實現控制網路流量的可達性;

  更改路由屬性

  提示:如上圖所示,我們可以通過修改路由屬性,來影響路由的選路;比如更改某條路由開銷、給某條路由打標籤等;

  路由策略

  路由策略(routeing policy)的作用是當路由器在釋出、接收和引入路由資訊時,可根據實際組網需求實施一些策略,以便對路由資訊進行過濾或改變路由資訊屬性;如控制路由的釋出,我們可以只發佈滿足條件的路由資訊;控制路由接收也是同樣的邏輯,只接收必要、合法的路由資訊,以控制路由表的容量,提高網路的安全性;過濾和控制引入的路由,我們只需要在一種路由協議在引入其他路由協議時,只引入一部分滿足條件的路由資訊,並對引入的路由資訊的某些屬性進行修改,以使其滿足本協議的要求;

  提示:如上如所示,我們想要控制交換機A到相同網路的路徑都走左邊,我們可以在交換機A上設定不接收右邊的路由;如果我們需要讓交換機到達相同網路的流量有主備鏈路,可以修改對應路由的開銷,從而實現對流量路徑的影響;

  總結:路由策略是指通過一系列工具或方法對路由進行各種控制的“策略”,來影響路由的產生、釋出、選擇,進而影響報文轉發路徑;比如對路由進行過濾,即對應路由要不要做一些策略;修改路由屬性,即將對應路由的某些屬性進行修改至特定的值;不管是對路由的過濾還是修改路由資訊屬性,最終的目的是控制路由的接收、釋出和引入,提高網路安全性和網路效能;

  路由策略的實現機制

  路由策略的核心內容是過濾器,通過使用過濾器,定義一組匹配規則,即通過過濾器定義的規則來對應路由資訊分類;對滿足過濾器規則的路由資訊通過策略工具做特定的處理,比如做允許、拒絕或修改屬性等操作;最後通過呼叫工具將對應的路由策略應用到某些具體的路由協議裡面,使其生效;即只定義了過濾器和策略工具,如果不呼叫對應路由策略是不生效的,只有被呼叫到具體的路由協議裡面,對應路由策略才會生效;

  路由策略各工具之間的呼叫關係

  提示:首先我們需要通過條件工具(過濾器)來定義一組規則;然後通過策略工具呼叫條件工具來實現路由策略的定義;最後通過呼叫工具呼叫路由策略來應用對應的路由策略;當然有些呼叫工具也可以直接呼叫條件工具,來實現對應規則生效;比如呼叫工具filter-policy和peer這兩個工具可以直接呼叫條件工具,使對應條件工具中定義的規則生效;策略工具route-policy它呼叫條件工具後,必須要呼叫工具的呼叫才能是對應規則生效,如果只是策略工具呼叫條件工具,對應條件工具中定義的規則不會生效;

  條件工具IP-Prefix List

  IP-Prefix List(IP字首列表):它能同時精準匹配網路號和字首長度;效能和可控性比ACL更高;對於ACL來說,它無法匹配掩碼和字首長度;但是ip字首列表不能用於資料包過濾,只能用於路由資訊過濾;

  提示:對於ACL來講,我們無法實現將路由引入到OSPF中,只引入192.168.0.0/16的路由,而字首列表可以;

  實驗:如下拓撲,配置ospf,分別使用acl和IP-Prefix 過濾路由資訊

  R1的配置

sys
sys R1
int g0/0/0
ip add 12.0.0.1 24 ospf 1 router-id 1.1.1.1
area 11
net 12.0.0.1 0.0.0.0

  R2的配置

sys
sys R2
int g0/0/0
ip add 12.0.0.2 24 ospf 1 router-id 2.2.2.2
area 11
net 12.0.0.2 0.0.0.0

  在R1上配置靜態路由,出介面指向NULL 0口

  提示:靜態路由存在於路由表的必要條件是對應路由能有對應的出介面,沒有出介面只有下一跳,對應靜態路由不會存在於路由表,且對應靜態路由的狀態也是非活動狀態(Inactive);

  定義acl匹配192.168.0.0/16路由資訊,然後將acl匹配到的路由資訊匯入ospf,看看對應ospfR2能夠學習到那些路由?

  使用route-policy工具呼叫acl過濾路由資訊

  提示:上述命令表示建立一個名為test的路由策略,其中呼叫過濾器acl 2000中的條件,即滿足過濾器acl2000中定義的規則,則路由策略允許放行;

  使用呼叫工具import-route 呼叫路由策略test

  驗證:檢視R2的路由表,看看對應R1匯入的靜態路由,R2學習到了那些?

  提示:可以看到對應在R2上還是能夠學習到192.168.0.0/24的路由;這意味著我們使用acl 不能精確匹配後面的掩碼長度;

  在R1上使用ip prefix過濾路由

  使用策略工具route-policy呼叫條件工具ip-prefix

  驗證:再次在R2上檢視路由表,看看現在R2通過ospf學習到那些路由?

  提示:可以看到現在R2只能學習到192.168.0.0/16網路的路由,對應掩碼為24的網路路由學習不到,其原因是字首列表中只允許了掩碼為16的路由通過;

  通過上述實驗我們可以看出,ACL不能夠精確匹配掩碼長度,而字首列表可以正常匹配對應掩碼長度;

  IP-Prefix匹配流程

  提示:字首列表和acl匹配流程差不多,都是從上至下依次匹配,匹配到的路由資訊後,不再匹配下一條;如果沒有匹配上,繼續下一條規則的匹配,直到所有規則都不匹配,此時就會走,預設規則;不同之處在於acl預設規則是允許通過,即所有規則都沒有匹配上,預設是允許操作;而字首列表中預設規則是拒絕,即所有規則沒有被匹配上,最後都會被預設規則匹配,做拒絕操作;

  IP-Prefix語法規則

  提示:ip地址後面的數字表示匹配字首的長度;如果不配置greater-equal 24和 less-equal 28 ,則表示精確匹配字首長度和掩碼長度為16;如果只配置了greater-equal 24,則表示匹配掩碼長度為24-32,字首長度為16;如果只配置了less-equal 28,則表示匹配掩碼長度為16-28,字首長度為16;如果同時配置了greater-equal 和less-equal,則表示匹配掩碼的長度為後面兩者指定的範圍,字首長度為16;如上圖表示匹配掩碼長度為24-28,字首長度為16;即前面的16為必須相同;後面的掩碼必須在指定的範圍之內的網路才能被匹配上;

  IP-Prefix特殊通配地址

  提示:0.0.0.0 0表示任意地址,字首長度為0,即任意地址,不需要任何一位相同;如果後面不跟大於等於或小於等於掩碼的範圍,則表示之匹配預設路由;如果後面跟上小於等於,則表示匹配任意長度字首和任意地址,對應掩碼必須是指定的範圍內的掩碼路由;如0.0.0.0 less-equal 32就表示匹配所有路由;任意路由都滿足上述條件;如果跟大於等於,則表示匹配任意長度字首和任意地址,對應掩碼必須是大於等於指定的長度的掩碼網路路由;即0.0.0.0 0 greater-equal 表示匹配所有主機路由(掩碼長度為32);