:收斂加速、多拓撲與SR配置指南)
1. 為什么IS-IS需要拓展功能補充1.1 基礎IS-IS的能力邊界做網絡的人基本都繞不開IS-IS。核心網、城域網、大型數據中心到處都有它的身影。但很多人對IS-IS的印象停留在“鄰居、LSP、SPF、收斂”這幾個基礎動作。用在小型網絡里默認配置確實夠用可一旦規(guī)模上來、業(yè)務復雜了基礎能力就明顯不夠用。先說它到底缺什么。默認IS-IS的收斂過程是一個路由器收到新的LSP后要重新跑一遍全量SPF計算才能更新路由表。網絡規(guī)模越大、路由條目越多全量SPF的CPU開銷就越大這一輪收斂可能要幾百毫秒甚至秒級。對于一些要求“故障后50毫秒內完成切換”的業(yè)務這完全無法接受。所以需要增量SPF、PRC、FRR這類拓展機制把收斂時間壓下來。再有傳統(tǒng)IS-IS描述網絡拓撲時IPv4和IPv6共用一套拓撲模型。如果組網里某些鏈路只有IPv4能力另一些鏈路雙棧全網算出來的IPv6轉發(fā)路徑就會出現“走到一條不支持IPv6的鏈路上”的成環(huán)或黑洞風險。這個問題的解藥是多拓撲IS-ISMT-ISIS。還有安全加固。IS-IS本身是開放式協(xié)議默認不認證任何能接入二層網絡的設備都能偽造Hello包擠進IS-IS域甚至發(fā)送偽造的LSP污染全網路由表。電信級網絡、政企專網一定要把協(xié)議認證補上。再往上層看手工設置IS-IS的接口開銷來做流量調優(yōu)在現代網絡里明顯太笨重。現在更常見的做法是管理標簽和Segment Routing在IS-IS這份IGP協(xié)議之上構建完整的流量調度能力。這些內容規(guī)范文檔里叫“協(xié)議擴展”在實際運維中就是你給IS-IS這臺“老機器”做的拓展功能補充。本文以華為設備為例把這些功能逐個拆開講清楚包括原理、配置命令、以及我實際踩過的坑。1.2 華為設備支持哪些拓展方向先給個總覽方便建立全局印象。華為設備的IS-IS實現除了基礎鄰居、LSP、SPF之外常見拓展功能大致可以分成五類拓展方向解決的核心問題典型功能收斂加速故障切換慢、CPU開銷大增量SPF、PRC、IPFRR、BFD聯動、定時器調優(yōu)多業(yè)務承載IPv4/IPv6拓撲不一致多拓撲MT-ISIS安全性增強協(xié)議偽造、路由污染接口/區(qū)域/域三級認證、HMAC-SHA256、Keychain策略與調度選路不靈活、多出口引流管理標簽admin-tag、路由策略聯動可擴展性路由條目多、流量工程難做LSP分片、Segment Routing結合后文我會重點挑其中幾個真正改變運維方式的功能展開收斂優(yōu)化、多拓撲、認證與管理標簽、SR結合。這四個方向是生產網絡里出問題最多、也最能體現“拓展功能價值”的部分。2. 收斂優(yōu)化從“秒級”向“毫秒級”靠攏2.1 增量SPF和PRC到底是在干什么先講一個容易被忽略的事實SPF計算是IS-IS最耗費CPU的操作。一個節(jié)點收到新LSP如果變化的是葉子路由卻要把整棵最短路徑樹重算一遍這顯然浪費。華為設備上默認的SPF計算會把全網節(jié)點和路由都算一遍。網絡規(guī)模大時一個次要鏈路抖動可能引發(fā)全網路由器CPU飆升這叫“收斂風暴”。解決辦法是增量SPFiSPF和PRC部分路由計算。iSPF只對受影響節(jié)點的子樹重新計算不再全盤重算。PRC更徹底——它只在路由葉子節(jié)點發(fā)生變化時直接更新相應路由前綴完全不碰SPF樹。日常工作里90%的路由抖動都是葉子級別iSPFPRC能省下很大一部分計算量。在華為設備上這兩類能力通常不需要手動開啟屬于默認啟用。但你要注意一個點確認設備上LSP變化觸發(fā)計算的方式是“全量SPF”還是“增量SPF”。如果路由表特別大、CPU比例高可以在IS-IS視圖下使用一些與計算策略相關的命令部分版本會提供類似timer spf等參數來調整計算間隔。真正需要主動配置的是下面這些定時器和快速檢測機制。2.2 定時器調優(yōu)與BFD聯動IS-IS默認的收斂節(jié)奏偏保守。鄰居Down需要等Hello超時LSP泛洪有間隔SPF計算也有延遲。華為設備上建議在IS-IS進程視圖做這樣一套調優(yōu)思路isis 1 is-name CORE-A timer lsp-generation 5 10 50 timer spf 5 10 40 timer lsp-refresh 900 bfd all-interfaces enable這里每個參數的含義我展開說一下timer lsp-generation 5 10 50表示首次收到觸發(fā)變化后5毫秒生成LSP后續(xù)如果持續(xù)變化按10毫秒間隔最長等待50毫秒。這樣既保證快速通告又避免頻繁抖動導致LSP風暴。timer spf 5 10 40SPF首次計算延遲5毫秒后續(xù)最短間隔10毫秒最大等待40毫秒。實際項目中我會根據鏈路抖動頻率調整“最大等待時間”抖動頻繁的鏈路可以適度調大抑制CPU抖動。timer lsp-refresh 900LSP定期刷新周期默認是1200秒可以調到600~900秒。刷新頻率越高全網LSP序號老化越早但也增加一些網絡泛洪負擔。bfd all-interfaces enable這個非常關鍵。單純靠Hello超時檢測故障需要秒級。BFD可以在毫秒級檢測出鏈路故障再聯動IS-IS快速收斂。生產環(huán)境中BFD是IS-IS收斂加速的基礎設施強烈建議全使能。提示修改SPF定時器屬于全局收斂行為參數不要設得太激進。比如SPF首次計算延遲設成0毫秒鏈路密集抖動時CPU反而被打滿。我一般推薦“首跳快、后續(xù)穩(wěn)”的參數組合。2.3 IPFRR和自動FRR給轉發(fā)面“兜底”收斂再快也是秒到百毫秒級別。對某些承載語音、金融交易等場景的鏈路要求故障切換在50毫秒內完成這時就必須靠IPFRR。華為設備上IS-IS支持FRR快速重路由核心原理是預先計算好備份下一跳。主路徑故障時轉發(fā)面直接切換到備份路徑不用等IGP重新收斂。這個思路跟“事先系好安全帶”一樣——等事故發(fā)生了再反應永遠不夠快。配置方法分兩步。第一步全局使能IS-IS FRR指定備份路徑的計算方式第二步在接口上按需排除不希望作為備份的鏈路。isis 1 frr loop-free-alternate華為設備上常見的是loop-free-alternateLFA或更高級的remote-lfaR-LFA。區(qū)別在于LFA要求備份下一跳必須是無環(huán)的鄰居拓撲簡單時可用R-LFA允許通過隧道的方式找到更遠端的無環(huán)備份復雜拓撲下覆蓋更全。我建議除非網絡特別簡單否則優(yōu)先用remote-lfa。FRR配置完成后要用display isis frr查看備份路徑是否正常生成。如果某些路由沒有備份通常是因為拓撲中不存在嚴格無環(huán)的備份下一跳這個要靠調整鏈路開銷或者多加一條冗余鏈路解決。2.4 防微環(huán)鏈路恢復瞬間的“隱形坑”說完快速切換很多人會忽略鏈路恢復時的微環(huán)問題。故障瞬間FRR能兜住但鏈路恢復時各路由器收斂時序不一致有的先行切換有的還在走舊路徑就會形成臨時環(huán)路導致少量丟包甚至路由震蕩。華為設備在IS-IS里有的版本會提供與防微環(huán)相關的策略或切換控制另外在Segment Routing場景下也可以通過顯式路徑規(guī)劃規(guī)避。若你的設備不支持專門的防微環(huán)功能最有效的經驗做法是在鏈路恢復前先把相關接口的IS-IS開銷臨時調大讓SPF先計算穩(wěn)定再把開銷恢復原值。雖然要人工干預但在沒有防微環(huán)機制的舊版本上這招很管用。實操心得我維護過一張三千臺設備的路由器網絡Core鏈路的閃斷天天有。BFD聯動IS-IS、配合FRR故障切換基本無感真正出問題的反而是鏈路恢復那幾秒的微環(huán)。后來我在核心互聯接口上啟用了防微環(huán)功能并且把SPF首次延遲調到了5毫秒左右微環(huán)導致的丟包幾乎消失。3. 多拓撲MT雙棧網絡不再“打架”3.1 為什么標準IS-IS做雙棧會出問題標準IS-IS使用NLPID網絡層協(xié)議標識來標識IPv4和IPv6但拓撲描述用的是同一套LSP信息。這意味著IPv4的鄰接和IPv6的鄰接在協(xié)議層面共享一個拓撲視圖。實際組網中經常會遇到這種局面骨干鏈路全部雙棧但接入側某段鏈路只通了IPv4沒通IPv6。標準IS-IS無法表達“這條鏈路只有IPv4路由可用”這個事實。IPv6路由計算完成后可能把下一跳指向那條沒有IPv6能力的鏈路上導致轉發(fā)黑洞。更麻煩的是如果兩條鏈路分別只有一種協(xié)議通互相學習路由還會形成依賴關系上的環(huán)路。多拓撲IS-ISMT-ISIS就是為了解決這類問題。它給每個地址族分配獨立的MT-IDIPv4和IPv6各自建立拓撲、各自計算SPF。IPv4的鏈路狀態(tài)不會影響IPv6的路徑計算。鏈路層面“我只能通IPv4”就只在IPv4拓撲里出現IPv6流量根本不往那兒走。3.2 華為設備上的MT配置步驟華為設備開啟MT-ISIS關鍵點在于進程下開啟多拓撲接口下使能IPv6并關聯拓撲。以一個簡單的雙棧核心網為例isis 1 is-name MT-CORE ipv6 enable topology ipv6 network-entity 49.0001.0000.0000.0001.00 interface GigabitEthernet0/0/1 isis enable 1 isis circuit-type level-2-only ipv6 enable isis ipv6 enable topology ipv6命令的邏輯很清楚ipv6 enable topology ipv6是在IS-IS進程下為IPv6創(chuàng)建一個獨立拓撲實例。接口下ipv6 enable是打開接口的IPv6能力isis ipv6 enable topology ipv6是把該接口加入IPv6多拓撲。全網所有路由器只要參與IPv6承載都需要保持一致配置。特別是在MT模式下只跑IPv4的接口不要加IPv6拓撲否則它會出現在IPv6拓撲里導致其他路由器誤以為這條鏈路支持IPv6。還有個關鍵點IS-IS的Level-1和Level-2都要使能MT。只在Level-2使能、Level-1未使能跨區(qū)域的路由學習會出現MT-ID不一致輕則路由不完整重則鄰居振蕩。3.3 MT配置最容易踩的三個坑第一MT-ID不一致導致鄰居Down。IS-IS建立鄰接時會協(xié)商MT能力。一邊啟用了IPv6拓撲另一邊沒啟用兩邊能力集不同鄰居直接起不來。排查時用display isis error或抓包看Hello報文里的MT TLV能快速定位。第二MT模式下的默認拓撲不要刪。多拓撲不代表你只保留IPv6拓撲IPv4的默認拓撲MT-ID 0仍然是必須的。有些朋友為了讓IPv4和IPv6完全隔離想只用IPv6拓撲跑業(yè)務結果默認拓撲被刪了IPv4路由直接全丟。第三多拓撲會成倍增加SPF計算開銷。每個拓撲各自建立一棵SPF樹對CPU的消耗基本是翻倍的。我很早之前在一臺中端設備上啟用了MT結果鏈路頻繁抖動時CPU持續(xù)高位后來把一些邊緣鏈路的SPF定時器放寬才穩(wěn)定下來。啟用MT前請確認設備規(guī)格和路由規(guī)模是否匹配。4. 認證與管理標簽安全加固和流量調度的基本功4.1 IS-IS三級認證與HMAC-SHA256IS-IS默認不加密任何報文。只要一臺設備能接入你的二層網絡理論上它就可以偽裝成鄰居、發(fā)送Hello報文、偽造LSP。尤其是LSP一旦被注入惡意路由全網路由表都會被污染這是非常嚴重的故障。所以協(xié)議認證不是可選項是必選項。IS-IS的認證分為三個層面認證級別保護對象作用范圍接口認證HelloHello報文阻止非法設備建立鄰居區(qū)域認證LSP、SNP保護Level-1區(qū)域內的路由信息域認證LSP、SNP保護Level-2域內路由信息實際配置中區(qū)域和域認證要分開配置因為它們各自的TLV不同。華為設備上推薦使用HMAC-SHA256而不是簡單的明文密碼或MD5MD5在強度上已經不足以應對當前的安全審計。配置示例isis 1 authentication-mode hmac-sha256 keychain isis-ks area-authentication-mode hmac-sha256 keychain isis-ks domain-authentication-mode hmac-sha256 keychain isis-ks keychain isis-ks mode periodic daily key-id 1 algorithm hmac-sha256 key-string cipher %^%#abc...%^%# send-time daily 00:00 23:59authentication-mode管的是接口Hello認證area-authentication-mode管Level-1路由信息domain-authentication-mode管Level-2路由信息。三者必須全網統(tǒng)一。否則最常見的現象是鄰居能起來但LSDB同步異?;蛘週SP被靜默丟棄。4.2 Keychain的價值密鑰定期滾動Keychain的價值在于定期更換密鑰。你不可能每過一兩個月手工把所有設備的認證密碼都改一遍。用Keychain可以設定密鑰生效時間段舊密鑰到期前自動切換到新密鑰設備之間通過時間槽位協(xié)同做到“無縫換鑰”。這在實際運維中太重要了。我見過不少網絡認證配完之后密碼一直不換安全性其實打了折扣。有了Keychain安全審計要求“定期更換認證密鑰”時你只需要提前新加一個Key ID到了生效時間自動切換。配置Keychain時有個容易忽視的細節(jié)Send time和Receive time要提前重疊一小段時間。比如新密鑰給一個提前量確保新舊密鑰交替時有重疊窗口避免因為設備時間偏差導致認證失敗。4.3 管理標簽admin-tag流量調度的輕量方案業(yè)務側經常會有“這個網段走這條路徑、那個網段走那條路徑”的需求。以前只能用接口開銷硬調路徑一多就很痛苦?,F在華為設備IS-IS支持管理標簽 admin-tag給路由打標簽再配合路由策略非常靈活。配置思路很簡單isis 1 admin-tag 100 tag 100 route-policy TAG-ROUTE或者更直接地在IS-IS進程下給特定前綴設置標簽然后在路由策略里引用這個標簽做優(yōu)先級調整或引入到其它協(xié)議。比如把視頻業(yè)務網段打上tag100再通過路由策略強制它優(yōu)先走某條出口鏈路。使用時有兩點經驗管理標簽只在IS-IS域內傳遞不會帶出到其他協(xié)議跨協(xié)議比如OSPF引入IS-IS時需要用路由策略重新打標。標簽不能代替鏈路開銷計算。它更適合做“策略前綴”分流而不是替代SPF本身。如果網絡中所有路由都要打不同的標簽做嚴格路徑規(guī)劃那其實是SR的使用場景別硬用admin-tag。5. 可擴展性增強LSP分片和Segment Routing5.1 LSP分片別讓“大包”壓垮網絡IS-IS的LSP有長度限制默認通常不超過1400字節(jié)左右。當路由信息非常多、或者LSP承載了大量擴展TLV比如各種SR信息、TE信息單個LSP就可能不夠用。華為設備支持LSP分片配置把同一路由器產生的LSP分成多個片Fragment發(fā)送。它可以控制Origin LSP和Additional LSP的生成節(jié)奏。isis 1 lsp-length originate 512 receive 1024 fragment-level 1lsp-length originate控制本端生成的LSP最大長度receive控制從遠端接收時能接受的最大長度。這里有一個關鍵考量分片并非越小越好。分片太多LSDB里條目多、LSDB同步開銷大分片太大又可能導致MPLS或組播環(huán)境下MTU不匹配。我一般在核心設備上把Origin LSP長度控制在512字節(jié)左右既能容納SRGB和TE擴展又不至于讓LSP過分臃腫。fragment-level 1是讓Level-1和Level-2分別執(zhí)行分片避免兩個Level共用分片號時產生LSDB混亂。5.2 與Segment Routing結合流量工程的更優(yōu)解如果說MT是雙棧的進階那么Segment RoutingSR就是IS-IS拓展功能里最重量級的一項。SR把路徑編碼成指令序列Segment List源節(jié)點決定整條路徑令網絡中不再完全依賴逐跳SPF選路。華為設備在IS-IS下使用SR大致需要三個層面的配置mpls lsr-id 10.0.0.1 segment-routing mpls srgb 16000 23999 isis 1 segment-routing mpls prefix-sid index 1 interface GigabitEthernet0/0/1 segment-routing mpls adjacency-sid 15001這里每個配置的作用mpls lsr-id是MPLS節(jié)點標識SR也需要基礎MPLS能力。segment-routing mplssrgb 16000 23999聲明本節(jié)點的SRGB范圍為全局前綴段預留標簽區(qū)間。IS-IS進程下的prefix-sid index 1為Loopback路由分配節(jié)點SID。接口下的adjacency-sid為鄰接分配Adjacency SID用于逐跳段。啟用SR后默認SPF計算出的轉發(fā)路徑不會變但你可以在邊界路由器上用策略下發(fā)“Segment List”實現顯式路徑。比如讓流量繞開某段擁塞鏈路segment-routing mpls transit forwarding-policy PATH segment-list FORWARD index 5 sid 16102 index 10 sid 16205一個SR策略配置好后轉發(fā)面按Segment List壓棧轉發(fā)路徑完全可控而且不依賴逐跳IGP視圖。IS-IS在這里的角色是充當SR的控制面負責擴散SRGB、Prefix-SID、Adjacency-SID信息。5.3 啟用SR前后的檢查清單SR雖然強大但配置前有些細節(jié)必須先把關全網SRGB規(guī)劃一致。尤其是跨廠商設備SRGB必須有全局共識否則換算出的標簽錯位流量直接斷。Loopback地址作為穩(wěn)定全局標識必須通過IS-IS Level-2通告且所有設備能學習到。如果存在雙?;赝嘶騾^(qū)域邊界優(yōu)先用IPv4 Loopback分配SID。轉發(fā)層面要確認支持SR MPLS。華為很多企業(yè)級產品支持但老舊的板卡或特殊VXLAN場景需要額外確認。啟用SR不會自動改變默認最短路徑這一點對于平滑升級非常友好。我從傳統(tǒng)LDP網絡遷移SR時先啟SR、再逐步把業(yè)務切到SR策略整個過程無需割接窗口。注意SR和LDP可以共存但同一條IGP路由同時攜帶LDP標簽和SR標簽時轉發(fā)表優(yōu)先用SR標簽。遷移時一定要先確認業(yè)務側綁定的是哪套標簽避免流量中斷。6. 常見問題與排查技巧實錄6.1 鄰居反復Up/Down這個現象在IS-IS排障里最常見拓展功能沒配好往往first point就在這里。用display isis peer看鄰居狀態(tài)。如果鄰居在Up和Down之間反復橫跳排查順序先看MT能力是否一致。一邊開了ipv6 enable topology ipv6另一邊沒開Hello報文里的MT TLV不同鄰居起不來或反復重建。再看認證是否匹配。尤其區(qū)分authentication-mode、area-authentication-mode、domain-authentication-mode三層。有時接口Hello認證配錯了鄰居根本起不來區(qū)域認證配錯了可能Level-1鄰居能起來但LSDB同步異常。還要檢查System ID是否重復。全網System ID重復鄰居會造成LSDB沖突表現就是一會兒Up一會兒Down。6.2 路由黑洞或路由不一致雙棧網絡中IPv6路由時有時無多半是多拓撲沒有全覆蓋。排查方法是分別查看IPv4和IPv6的LSDBdisplay isis lsdb display isis lsdb ipv6對比兩個LSDB的拓撲視圖。如果IPv6視圖里缺少某個區(qū)域的節(jié)點說明那臺設備沒有正確使能IPv6拓撲或者Level-2區(qū)域的MT能力沒打通。還有一種情況啟用FRR后備份路由顯示正常但實際切換丟包。大概率是備份路徑只是一條“ICMP可達”鏈路實際轉發(fā)面沒有打通需要檢查備份下一跳的MPLS或VRF配置。6.3 認證配置了還是被抓包看到明文報文不少人在接口下只配了authentication-mode simple這種是明文密碼抓包直接能看到。既然做安全加固就上HMAC-SHA256。如果設備版本較老至少要保證MD5且定期更換Keychain密鑰。另外要注意SPTSNP也參與認證。很多網絡接口認證做了但IS-IS的CSNP/PSNP沒做攻擊者照樣可以通過偽造SNP干擾LSDB同步。華為設備上domain-authentication-mode和area-authentication-mode會把LSP和SNP一起保護這層別漏。6.4 排查命令速查表用途命令鄰居狀態(tài)display isis peerIS-IS摘要display isis briefLSDBIPv4/IPv6display isis lsdb/display isis lsdb ipv6網管與故障統(tǒng)計display isis errorFRR備份路徑display isis frr認證信息核查display isis authenticationSR配置核查display segment-routing mplsLSP分片信息display isis spf-tree/display isis lsdb verbose提醒一點不同版本的華為設備命令細節(jié)略有差異。上線前務必在實驗環(huán)境先跑一遍display isis各命令的輸出確認兼容性再落到生產設備上。6.5 一些實戰(zhàn)經驗的補充分享最后再聊幾句我自己的習慣。剛開始做IS-IS拓展功能時我總是急著調參數結果經常把簡單網絡搞復雜。后來我給自己定了三條規(guī)矩先看基礎拓撲。領域劃分、System ID規(guī)劃、接口類型這些沒做對拓展功能配得再好也是白搭。每個功能小步上線。比如先只做BFD聯動等一天看穩(wěn)定再做FRR再看一天最后才啟SR。這樣出問題能很快定位。每次變更都要記錄基線。IS-IS這種承載全網路由的協(xié)議變更前備份配置只是基本操作更重要的是記錄當時的LSDB和路由表快照出問題才能對比。網絡不是做加法而是做平衡。IS-IS拓展功能都是為了解決具體問題而生的快速收斂解決故障恢復多拓撲解決雙棧黑洞認證解決安全風險SR解決流量調度。用不用、用多狠取決于你的網絡規(guī)模和業(yè)務要求。小網絡默認配置夠用不必硬堆拓展大型網絡每一步都要有依據避免“為了功能而功能”。我個人在實際維護中的體會是把基礎協(xié)議理解透再上拓展功能出問題時才能快速定位到底哪一環(huán)出了問題——多數“詭異故障”最后都落在基礎配置不一致上。系統(tǒng)性地把拓展功能逐個驗證、逐步鋪開遠比一次性全量上線穩(wěn)妥得多。