預設情況下,彙總後的路由是包含對應明細路由,是以對應路由器學習到彙總路由,和某明細路由通信是完全沒有問題;但是,彙總路由中某一條明細路由挂掉後,彙總路由還是存在的,它不會自動删除,隻有當對應彙總路由包含的明細路由都宕掉以後,對應彙總路由才會被删除;這樣一來對于學習到彙總路由的一方來說,它要去通路對方的某明細路由,在正常情況下如果對應明細路由挂掉,對應通信會丢包,即環路不會産生;但是如果彙總路由的路由器有一條預設路由指向學習彙總路由的路由器,此時就會産生環路;
前文我們了解了IS-IS路由滲透和開銷相關話題,回顧請參考https://www.cnblogs.com/qiuhom-1874/p/15302382.html;今天我們來聊一聊IS-IS路由聚合和認證相關話題;
IS-IS路由聚合(彙總)
路由聚合又稱路由彙總,從字面了解就是把多個明細路由聚合(彙總)為一條路由;我們知道在ospf裡路由彙總是優化LSDB、路由表的一種手段;在ospf中路由的彙聚隻能在abr或asbr上進行彙總;而對于IS-IS來講,彙總路由是隻可以在本地生成LSP的路由器上做,主要作用是優化路由表;
實驗:如下拓撲,配置IS-IS
R1的配置
sys
sys R1
int g0/0/0
ip add 12.0.0.1 24
isis 1
net 1212.0000.0000.0001.00
is-le level-1
int g0/0/0
isis en 1
View Code
R2的配置
sys
sys R2
int g0/0/0
ip add 12.0.0.2 24
int lo 1
ip add 172.16.0.2 24
int lo 2
ip add 172.16.1.2 24
int lo 3
ip add 172.16.2.2 24
int lo 4
ip add 172.16.3.2 24
isis 1
net 1212.0000.0000.0002.00
is-le level-1
int g0/0/0
isis en 1
int lo 1
isis en 1
int lo 2
isis en 1
int lo 3
isis en 1
int lo 4
isis en 1
驗證:在R1上檢視對應路由表,看看R1是否能夠學習到達R2lo接口的路由
提示:可以看到R1能夠通過isis正常學習到R2lo接口路由;
在R2上将L1的路由彙總
驗證:在R1上檢視isis路由,看看是否能夠學習到一條彙總的路由?
提示:可以看到在R1上對應原來的明細路由沒有了,學習到對應彙總路由;
IS-IS彙總路由環路的産生
預設情況下,彙總後的路由是包含對應明細路由,是以對應路由器學習到彙總路由,和某明細路由通信是完全沒有問題;但是,彙總路由中某一條明細路由挂掉後,彙總路由還是存在的,它不會自動删除,隻有當對應彙總路由包含的明細路由都宕掉以後,對應彙總路由才會被删除;這樣一來對于學習到彙總路由的一方來說,它要去通路對方的某明細路由,在正常情況下如果對應明細路由挂掉,對應通信會丢包,即環路不會産生;但是如果彙總路由的路由器有一條預設路由指向學習彙總路由的路由器,此時就會産生環路;
驗證:删除R2的lo1接口,在R1上檢視對應路由表,看看彙總路由是否會被删除?
在R1上檢視isis 路由表看看對應彙總路由是否被删除?
提示:可以看到但R2的lo1接口挂掉以後,對應R1上的彙總路由不會受到影響;
驗證:現在在R1上pingR2的lo1接口位址,看看是否能夠ping通?是否有環路?
提示:可以看到現在R1是ping不通R2的lo1接口,對應也沒有環路;
驗證:在R2上建立一條預設路由,下一跳指向R1,再次在R1上ping或tracert R2的lo接口位址,看看有什麼變化?
再次在R1上ping R2 的lo1接口位址,看看有什麼變化?
提示:可以看到現在R1pingR2的lo1接口位址是ping不通的,但是R1pingR2的lo1接口位址是産生了環路;
NULL0口路由
null0口是路由器上的一個特殊邏輯接口,該接口不轉發任何資料,類似liunx裡的/dev/null裝置,俗稱黑洞接口;任何資料發送給null0接口都會被丢棄;為了防止IS-IS路由彙聚以後産生環路,在IS-IS彙聚路由時我們可以指定是否生成一條NULL0接口路由;其實不光是IS-IS路由彙聚存在這種問題,ospf、RIP、bgp都存在這種情況;是以我們在彙聚路由時應該考慮可能産生環路的情況;
IS-IS路由彙聚生成NULL0口路由
提示:IS-IS生成null0接口路由,隻需在彙聚路由配置後面加上generate_null0_route這個參數,對應IS-IS彙聚路由時,會自動在路由表産生一條彙聚後的路由其出接口指向null0接口的路由;
驗證:在R2上檢視路由表,看看對應null0路由是否生成?
提示:可以看到此時R2的路由表中自動生成了一條彙聚後的路由,其出接口指向了NULL0接口;
驗證:現在在R1上tracert R2的lo1接口位址,看看是否還會有環路呢?
提示:現在可以看到R1tracert R2 的lo1接口位址,對應環路就沒有了;其主要原因R2有一條去往172.16.0.0/22的路由,其出接口指向了NULL0接口,破環路原R2在lo1接口挂掉以後,對應明細路由消失以後走預設路由的規則;
IS-IS路由彙聚後開銷取值
IS-IS路由聚合,對應開銷取所有被聚合路由中最小值;
驗證:修改R2的lo2、3、4接口開銷為5、10、15,看看對應彙總路由的開銷是多少?
在R1上檢視對應彙總路由的開銷
提示:可以看到對應彙總路由的開銷是15,我們知道IS-IS接口預設開銷是10,而R1學習到的彙總開銷為15,根據上述拓撲我們可以知道,在R2上發送的彙總路由開銷為5(15-10,10是R1接收口的接口開銷);從上述實驗可以看到對應彙總路由的開銷是取被彙總的明細路由中開銷最小的路由開銷;
IS-IS認證
IS-IS認證有三種認證方式,分别是接口認證、區域認證和路由域認證;認證的模式也有三種,分别是明文認證、md5認證和密鑰鍊認證;
接口認證配置
提示:配置認證會導緻鄰居關系down掉;配置接口認證我們隻需要在對應接口下選擇對應的認證模式即可;這個和ospf一樣,兩邊認證密碼和模式必須一樣,對應鄰居關系才能正常建立;這種認證方式生效範圍是單個接口,L1和L2的封包都生效;
區域認證配置
提示:配置區域認證,我們需要在對應isis程序下使用如上指令進行配置;區域認證隻對L1的封包生效,對L2無效;
路由域認證配置
提示:路由域認證也是在對應isis程序下進行配置,但路由域認證隻對L2封包有效,對L1無效;
驗證:在R1上删除接口認證和區域認證,看看是否能夠和R2正常建立鄰居?
提示:可以看到在R1上隻配置路由域認證,R2不配置認證,對應鄰居關系也能建立(前提是R1和R2都是L1,或者兩者建立的是L1的鄰居);這說明路由域認證對L1的封包不生效;
驗證:更改R1和R2的路由器類型為L2,修改R1的認證方式為區域認證,看看R1是否能夠和R2建立鄰居?
更改R2類型為L2
更改R1為L2,并在R1上删除路由域認證,配置區域認證
檢視R1和R2是否建立鄰居?
提示:可以看到R1配置了區域認證,R2并沒有配置任何認證,對應鄰居是可以正常建立(前提是R1和R2的路由器類型為L2,或者他們建立的是L2的鄰居);其原因是區域認證隻對L1封包生效,對L2封包無效;
Keychain認證模式
Keychain認證模式和md5和明文認證模式都不一樣,keychain翻譯過來是密鑰鍊;它允許一個密鑰鍊上配置多個密鑰,在不同的時間段發送和接收不同的密鑰進行認證;
Keychain密鑰鍊建立
提示:keychain支援定義發送和接收時間,是以在建立密鑰鍊時,我們需要指定對應時間模式是絕對模式還是相對模式,所謂絕對模式是明确的年月日時分,相對模式是描述經過多長時間;定義好密鑰鍊模式以後,在對應模式裡我們可以配置不同的key id和密碼;上述指令表示建立一個名為test、模式為絕對模式的密鑰鍊,其中key id為1的密鑰是admin.com,key id為2 的密鑰為admin23.com;
絕對模式下配置密鑰鍊發送時間和接收時間
建立相對模式密鑰鍊,并配置密鑰和時間
提示:上述指令表示建立一個名為test1,模式為相對模式的密鑰鍊;其中id為1的密鑰為admin123.com,id為2的密鑰為123.com;對于密鑰2來說,它的發送時間是每周的周一、周五、周日;接收時間為每周一至周四;
IS-IS調用keychain密鑰鍊
提示:調用密鑰鍊可以在接口、區域和路由域,和配置MD5和明文認證模式一樣;
作者:Linux-1874
出處:https://www.cnblogs.com/qiuhom-1874/
本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利.