前文我們了解了IS-IS鄰居建立過程、LSDB同步、拓撲計算和路由的形成;回顧請參考https://www.cnblogs.com/qiuhom-1874/p/15265698.html;今天我們來聊一聊IS-IS路由滲透和接口開銷相關話題;
IS-IS路由滲透
所謂路由滲透,其實就是路由注入的一種操作;默認情況下在IS-IS多區域環境中,L1區域的所有路由會被L1-2路由器掛載至L2區域,即骨干區域的路由器有整個網絡的明細路由;但對於L1區域來說,骨干區域的路由不會被L1區域路由器學習到;那么問題來了,L1區域想要出去它是怎么出去的呢?對於L1的路由器來說,它們想要和骨干區域網絡通信,依靠的是L1-2發送的一條ATT置為1的LSP,對應L1區域中的路由器收到該LSP以后,會自動產生一條缺省路由,其下一跳指向L1-2路由器(對於和L1-2直連的路由器是這樣的,類似ospf里的5類LSA;但對於不是和L1-2路由器直連的路由器,它們收到L1 -2發送的ATT置為1的LSP會根據拓撲情況自動計算下一跳);即L1的路由器和骨干區域網絡通信依靠缺省路由進行;換句話說,L1想要和骨干網絡通信,它的數據包會發送至L1區域最近的L1-2路由器上,然后由L1-2路由器根據目標地址進行轉發;IS-IS路由滲透是指將骨干區域路由注入至非骨干區域的操作;
為什么要路由滲透呢?
IS-IS次優路由產生
提示:如上圖所示,RTA想要訪問10.0.0.1/24,根據IS-IS路由的規則,在L1區域路由器想要和骨干區域網絡通信,它會將數據包發送給最近的L1-2路由器;對於上圖來說,RTA找到最近,路由最優到達L1-2的路由器是RTB;但對於RTB到達骨干RTD來講,開銷也是最大的;整體來說RTA訪問10.0.0.1/24網絡整體開銷要大於RTA走RTA-->RTC-->RTD;這樣一來次優路由就產生了;怎么解決次優路由呢?很顯然我們要把RTA訪問10.0.0.1/24網絡的鏈路開銷告訴給RTA,這樣RTA根據明細路由來選路就可以避免次優路由;即把10.0.0.1/24網絡的路由從骨干區域注入至L1區域,讓L1區域路由器學習到達10.0.0.1/24網絡的路由;如下所示
提示:當RTA學習到達10.0.0.1/24網絡的路由以后,對應整個鏈路的開銷就很明了,所以RTA和10.0.0.1/24網絡通信就會根據鏈路開銷進行選路,而不會再走默認路由,從而避免了次優路徑;
實驗:如下拓撲,配置IS-IS
R1的配置

sys sys R1 int g0/0/0 ip add 12.0.0.1 24 isis 1 net 2000.0000.0000.0001.00 is-le level-1 int g0/0/0 isis en 1
R2的配置

sys sys R2 int g0/0/0 ip add 12.0.0.2 24 int g0/0/1 ip add 23.0.0.2 24 isis 1 net 2000.0000.0000.0002.00 is-le level-1 int g0/0/0 isis en 1 int g0/0/1 isis en 1
R3的配置

sys sys R3 int g0/0/0 ip add 23.0.0.3 24 int g0/0/1 ip add 34.0.0.3 24 isis 1 net 2000.0000.0000.0003.00 is-le level-1-2 int g0/0/0 isis en 1 int g0/0/1 isis en 1
R4的配置

sys sys R4 int g0/0/0 ip add 34.0.0.4 24 int lo 1 ip add 4.4.4.4 32 isis 1 net 1000.0000.0000.0004.00 is-le level-2 int g0/0/0 isis en 1 int lo 1 isis en 1
驗證:查看R4的路由表,看看是否學習到12和23網絡的路由呢?
提示:可以看到R4能夠學習到12和23網段路由;
驗證:在R1和R2上查看路由表信息,看看R1和R2是否能夠學習到R4的lo接口路由呢?
提示:可以看到在R1和R2上並沒有學習到達R4 lo接口的路由,但通過isis它們的路由表里產生了一條缺省路由;
驗證:查看R3的LSDB,看看是否有自己產生的ATT置為1的LSP數據?
提示:可以看到R3在L1區域LSDB中產生了一條ATT置為1的LSP;
在L1-2路由器(R3上)將L2路由滲透至L1
提示:上述命令表示把L2路由導入至L1區域;這里需要主要在isis中,只有L1-2路由器擁有L1和L2的lsdb,所以路由滲透也只能在L1-2路由器上做;
驗證:在R1或R2上查看路由表,看看對應R1或R2是否學習到L2的明細路由呢?
提示:可以看到對應R1能夠學習到L2骨干區域里所有路由,並且都自動計算出對應路由的開銷;通常情況下,我們不會將骨干區域路由全部注入至非骨干區域,如果我們需要注入部分路由到非骨干區域,則還需要做路由策略;
IS-IS開銷
IS-IS開銷類型有三種,分別是接口開銷、全局開銷和自動計算開銷;其優先級順序為接口開銷>全局開銷>自動計算開銷;所謂接口開銷是指為單個接口設置開銷,生效范圍是單個接口;全局開銷是為所有接口設置開銷,生效范圍是所有接口;自動計算開銷是是指根據接口帶寬自動計算開銷;對於IS-IS來講開銷取值類型主要分兩種,分別是narrow和wide;narrow取值范圍是1-63;wide取值為1-16777215;
IS-IS開銷類型
提示:上述圖片是描述開銷類型和接收、發送開銷類型;如開銷類型為narrow,即接收和發送的開銷取值范圍也都是narrow;如果開銷類型為wide,即接收和發送的開銷取值類型也是wide;如果開銷類型為compatible(兼容narrow和wide),則接收和發送的開銷取值類型即可以是narrow也可以是wide;如果開銷類型為narrow-compatible(兼容narrow),則接收可以兼容wide和narrow,發送的接口開銷類型只能是narrow;如果開銷類型為wide-compatible(兼容wide),則接收可以兼容wide和narrow,但發送開銷類型只能是wide;
IS-IS接口帶寬區間開銷取值
提示:只有當開銷類型為wide或wide-compatible時,使用命令bangdwith-reference配置的帶寬參考值才有效,此時各接口的開銷值=(bandwith-reference/接口帶寬值)×10;如果開銷類型為narrow/narrow-compatible或compatible時,各個接口的開銷至根據上面對表格確定;
配置ISIS接口開銷
提示:默認isis開銷為10,類型為narrow,所以取值范圍是1-63;
驗證:查看R1的g0/0/0接口開銷
提示:可以看到對應R1的g0/0/0接口開銷變為了20;
配置ISIS全局開銷
提示:全局開銷需要在isis進程下配置,配置全局開銷以后,對應所有接口都是全局開銷配置的值,除非接口下配置了接口開銷;
更改開銷類型
提示:更改開銷類型,可能引起鄰居關系震盪;這里需要說明一下,雖然開銷類型為wide和開銷類型為narrow能夠建立鄰居,但是對應路由是學習不到的;
驗證:在R1上查看isis鄰居關系和路由表
提示:可以看到現在R1和R2的鄰居關系還是up的,但對於R1來說它並不能學習到R2上的路由;其原因是對應開銷類型互不兼容(R1為wide,R2為narrow);
驗證:修改R2的開銷類型為非narrow類型,看看對應R1是否能夠正常學習到R2的路由?
提示:可以看到在R1上對應R2過來的路由學習到了;從上述實驗可以看到,不同開銷類型,對應路由的學習還是有影響的;
配置ISIS自動計算開銷
提示:自動計算開銷通常配置帶寬參考值來計算,默認帶寬參考值為100M,自動開銷計算公式為接口開銷=(帶寬參考值/接口帶寬)×10;因為默認開銷類型為narrow,取值范圍是1-63,這個開銷取值范圍太小,不適合上述公式,所以上述公式只用於開銷類型為wide或wide-compatible類型上述公式才會生效;
驗證:查看接口帶寬
提示:可以看到現在接口開銷就變為了100;因為我們把帶寬參考值修改為1000M,除以接口帶寬1000M再乘以10,得到的開銷就是100;上述修改開銷都是修改的接口發送的開銷;其接收開銷計算和ospf一樣,接收方向接口開銷累加;