議詳解與實(shí)驗(yàn)配置指南:從距離向量算法到思科華為模擬器實(shí)操)
有人看到“RIP作業(yè)”這幾個(gè)字第一反應(yīng)多半是“作業(yè)沒了”——畢竟RIP在網(wǎng)絡(luò)文化里經(jīng)常是Rest In Peace的意思表示某樣?xùn)|西已經(jīng)涼透了。但如果你是在計(jì)算機(jī)網(wǎng)絡(luò)課的作業(yè)列表里看到它那這里說的RIP是另一個(gè)東西路由信息協(xié)議Routing Information Protocol一個(gè)在網(wǎng)絡(luò)技術(shù)史上留下過濃墨重彩、至今仍是教學(xué)必修內(nèi)容的老牌路由協(xié)議。這篇博文要解決的就是“RIP作業(yè)到底怎么做”這件事。我會(huì)從協(xié)議的核心原理講起把距離向量算法、跳數(shù)限制、環(huán)路問題這些躲不開的知識(shí)點(diǎn)用大白話掰開揉碎然后給出一套可以直接照抄的實(shí)驗(yàn)配置方案覆蓋思科和華為兩種主流模擬器環(huán)境最后把我這些年做實(shí)驗(yàn)、帶學(xué)生、排故障時(shí)踩過的坑和總結(jié)的技巧一并整理出來。無論你是剛上完網(wǎng)絡(luò)課、面對(duì)作業(yè)無從下手的學(xué)生還是想快速把RIP實(shí)驗(yàn)復(fù)現(xiàn)一遍的入門工程師這篇內(nèi)容都能讓你少走很多彎路。1. RIP到底是什么一個(gè)“跳數(shù)”說了算的協(xié)議1.1 距離向量算法靠鄰居的口口相傳認(rèn)識(shí)全網(wǎng)RIP是一個(gè)典型的距離向量Distance Vector路由協(xié)議。要說清楚它得先聊聊它背后的貝爾曼-福特算法以及這套算法究竟是怎么讓每臺(tái)路由器“知道”整個(gè)網(wǎng)絡(luò)長什么樣的。我習(xí)慣用一個(gè)生活里的例子來解釋距離向量協(xié)議想象你在一座陌生城市里想知道去火車站的路線。你不會(huì)一下子就知道全程怎么走而是會(huì)去問身邊的人。如果路邊小店老板告訴你往前走兩個(gè)路口就是地鐵站從地鐵站可以直達(dá)火車站那你就知道了去火車站先走兩個(gè)路口到地鐵站然后轉(zhuǎn)地鐵。這里的“兩個(gè)路口”是到地鐵站的距離“轉(zhuǎn)地鐵”是地鐵站到火車站的距離你把它們加起來就得到了自己到火車站的完整路徑信息。RIP的工作方式幾乎一模一樣。每臺(tái)路由器只信任自己的直連接口然后通過周期性的路由更新把“我已知的路由信息”告訴鄰居。當(dāng)路由器A從鄰居B那里收到一條“到某個(gè)網(wǎng)絡(luò)需要3跳”的路由時(shí)A會(huì)在這條路由上加上自己的1跳變成4跳然后放進(jìn)自己的路由表。這個(gè)過程不斷迭代最終每臺(tái)路由器都能知道去往全網(wǎng)所有網(wǎng)絡(luò)的路由。這就是“距離向量”這個(gè)名字的由來距離跳數(shù) 方向下一跳地址合在一起就是一條路由信息的全部要素。RIP本身不維護(hù)整個(gè)網(wǎng)絡(luò)的拓?fù)鋱D它只知道“我這個(gè)包出去下一跳給誰大概要走多少跳”至于中間經(jīng)過了哪些路由器、鏈路長什么樣它一概不關(guān)心。這種“只問鄰居、不上帝視角”的設(shè)計(jì)決定了它簡(jiǎn)單也決定了它后續(xù)的一系列問題。1.2 四個(gè)必須背下來的數(shù)字30、180、240、15如果讓你只記一組關(guān)于RIP的數(shù)字那一定是這四個(gè)30秒更新周期、180秒路由失效時(shí)間、240秒路由刷新時(shí)間以及15跳最大跳數(shù)限制。RIP默認(rèn)每30秒向鄰居發(fā)送一次完整的路由表更新。這聽起來很勤快但問題在于30秒太長了。想象一下如果網(wǎng)絡(luò)中某條鏈路突然斷掉最壞情況下需要等30秒甚至更久鄰居才會(huì)通過下一次更新得知這個(gè)變化。如果這期間又有其他路由器發(fā)出了舊路由信息網(wǎng)絡(luò)就可能出現(xiàn)臨時(shí)環(huán)路。網(wǎng)絡(luò)上經(jīng)常用“收斂時(shí)間”這個(gè)詞來評(píng)價(jià)一個(gè)路由協(xié)議的快慢RIP的收斂時(shí)間動(dòng)輒幾十秒甚至幾分鐘在今天看來確實(shí)是“龜速”。更關(guān)鍵的是15跳限制。RIP把路由的度量值定義為跳數(shù)跳數(shù)越大表示路徑越長。任何路由的跳數(shù)一旦達(dá)到16就表示這個(gè)網(wǎng)絡(luò)不可達(dá)。換句話說RIP設(shè)計(jì)的網(wǎng)絡(luò)規(guī)模最大也就是15臺(tái)路由器串成一串再長就徹底玩不轉(zhuǎn)了。這個(gè)限制在今天看來非常原始但在RIP誕生的上世紀(jì)80年代小型企業(yè)內(nèi)部網(wǎng)絡(luò)基本也就這個(gè)規(guī)模所以它一度是局域網(wǎng)路由的事實(shí)標(biāo)準(zhǔn)。剩下的180秒和240秒是配合使用的。當(dāng)路由器連續(xù)180秒沒有收到某條路由的更新就會(huì)把這條路由標(biāo)記為不可達(dá)跳數(shù)設(shè)為16再等240秒后徹底刪除這條路由記錄。這兩個(gè)計(jì)時(shí)器保證了RIP即使收不到更新也不會(huì)永遠(yuǎn)保留一條已經(jīng)失效的路由。作業(yè)里如果要求你解釋“為什么RIP收斂慢”這四個(gè)數(shù)字就是你回答的核心論據(jù)。1.3 RIPv1和RIPv2別看名字像能力差不少RIP有兩個(gè)主流版本作業(yè)和考試?yán)锾貏e喜歡對(duì)比它們。RIPv1是有類路由協(xié)議它發(fā)送的路由更新報(bào)文里不攜帶子網(wǎng)掩碼信息。路由器只能根據(jù)IP地址的類別默認(rèn)推斷出相應(yīng)的掩碼。這樣一來如果網(wǎng)絡(luò)里使用了可變長子網(wǎng)掩碼VLSM比如一個(gè)網(wǎng)段被拆成了多個(gè)不同掩碼的子網(wǎng)RIPv1就完全無法正確傳遞這些信息會(huì)出現(xiàn)路由匯總錯(cuò)誤甚至路由丟失。RIPv2則是無類路由協(xié)議它在更新報(bào)文里明確攜帶子網(wǎng)掩碼支持CIDR和VLSM同時(shí)每隔30秒通過組播地址224.0.0.9發(fā)送更新而不是像v1那樣用廣播。RIPv2還支持簡(jiǎn)單的明文認(rèn)證和MD5認(rèn)證能防止一些惡意的路由欺騙。這在作業(yè)里可能只是加分項(xiàng)但在實(shí)際網(wǎng)絡(luò)環(huán)境里認(rèn)證是很重要的安全防線。做作業(yè)的時(shí)候我建議你直接用RIPv2除非題目明確要求“使用RIPv1實(shí)現(xiàn)有類路由”。理由很簡(jiǎn)單現(xiàn)代網(wǎng)絡(luò)幾乎都用了VLSMRIPv1的局限性會(huì)在實(shí)驗(yàn)里制造出一堆你根本不想排查的問題。2. 作業(yè)場(chǎng)景拆解先看懂拓?fù)湓賱?dòng)手2.1 典型RIP實(shí)驗(yàn)拓?fù)渑c需求分析絕大多數(shù)RIP作業(yè)都不會(huì)用太復(fù)雜的拓?fù)湮乙娺^最多的是“三臺(tái)路由器連成一串或者連成一個(gè)三角形下面掛幾臺(tái)PC或幾個(gè)模擬局域網(wǎng)網(wǎng)段”。原因也很現(xiàn)實(shí)三臺(tái)路由器剛好能體現(xiàn)RIP的路徑選擇、跳數(shù)累加、鄰居關(guān)系建立而且排查起來難度適中。拿一個(gè)最經(jīng)典的拓?fù)鋪砼e例R1的G0/0口連接192.168.10.0/24網(wǎng)段G0/1口連接10.0.12.0/30網(wǎng)段對(duì)端是R2的G0/0口R2的G0/1口連接10.0.23.0/30網(wǎng)段對(duì)端是R3的G0/0口R3的G0/1口連接192.168.30.0/24網(wǎng)段。三臺(tái)路由器再各配一個(gè)環(huán)回口模擬額外的局域網(wǎng)。作業(yè)需求通常是在三臺(tái)路由器上都啟用RIP保證192.168.10.0、192.168.30.0以及所有環(huán)回口網(wǎng)段都能互相通信。做這種作業(yè)第一步不是敲命令而是先把拓?fù)浜偷刂芬?guī)劃圖畫出來。我見過太多人上來就配配置配到一半發(fā)現(xiàn)地址沖突、網(wǎng)段重疊最后全部推翻重來。地址規(guī)劃的要點(diǎn)很簡(jiǎn)單互聯(lián)鏈路用30位掩碼一條鏈路一個(gè)子網(wǎng)避免浪費(fèi)末端網(wǎng)絡(luò)用24位掩碼方便識(shí)別環(huán)回口用32位掩碼或24位掩碼都可以但要清楚它在RIP里會(huì)怎么被通告。2.2 為什么作業(yè)老愛用RIP而不是OSPF很多人會(huì)有疑問現(xiàn)在實(shí)際網(wǎng)絡(luò)里幾乎沒人用RIP了為什么作業(yè)還是它答案是教學(xué)價(jià)值。RIP是所有動(dòng)態(tài)路由協(xié)議里最簡(jiǎn)單、最直觀的一個(gè)它能把“路由協(xié)議到底是干什么的”“路由表是怎么構(gòu)建出來的”“路由環(huán)路是什么”這些核心概念用最少的配置量展現(xiàn)出來。學(xué)生在還沒理解鏈路狀態(tài)、最短路徑樹這些進(jìn)階概念之前需要先有一個(gè)簡(jiǎn)單的模型來建立直覺。RIP就是那個(gè)墊腳石。所以做RIP作業(yè)不要只是為了交差你要在每一步操作里主動(dòng)問自己幾個(gè)問題我敲的這條network命令到底在宣告哪個(gè)網(wǎng)段路由表里為什么會(huì)出現(xiàn)這條路由如果我把某條鏈路shutdown路由表多久能反應(yīng)過來這些問題想明白了后面學(xué)OSPF、BGP會(huì)輕松非常多。2.3 RIP作業(yè)里的隱藏考點(diǎn)路由環(huán)路與水平分割RIP作業(yè)還有一個(gè)很容易被忽略的知識(shí)點(diǎn)路由環(huán)路。距離向量協(xié)議的天然缺陷就是可能產(chǎn)生環(huán)路因?yàn)樗新酚善鞫贾灰蕾囙従觽鱽淼亩中畔⒁坏┚W(wǎng)絡(luò)出現(xiàn)故障舊的路由信息可能在新信息到達(dá)前被繼續(xù)傳播形成“你告訴我走你我告訴你走我”的死循環(huán)。RIP應(yīng)對(duì)環(huán)路有幾招水平分割、毒性逆轉(zhuǎn)、觸發(fā)更新、抑制計(jì)時(shí)器。水平分割的規(guī)則很好記從一個(gè)接口學(xué)到的路由不能再從這個(gè)接口發(fā)回去。毒性逆轉(zhuǎn)則是把要發(fā)回去的壞路由直接標(biāo)成16跳不可達(dá)讓對(duì)方趕緊放棄。觸發(fā)更新就是一旦路由發(fā)生變化不等30秒周期立刻通告鄰居。抑制計(jì)時(shí)器則是在路由變得不可達(dá)后在180秒內(nèi)忽略來自其他路由器關(guān)于這條路由的更新給網(wǎng)絡(luò)留出穩(wěn)定收斂的時(shí)間。作業(yè)里如果要你“設(shè)計(jì)一個(gè)方案避免環(huán)路”或者“解釋為什么需要水平分割”你要能把這幾招完整說出來并且知道它們對(duì)應(yīng)了RFC里的哪些機(jī)制。3. 實(shí)操從零配通一份RIP作業(yè)3.1 在思科模擬器里配RIP五步走完思科的Packet Tracer或者GNS3里的IOS鏡像是我做RIP作業(yè)最常用的環(huán)境。配置過程本身非常簡(jiǎn)單一共就五步進(jìn)入全局配置模式、創(chuàng)建RIP進(jìn)程、指定版本、宣告直連網(wǎng)段、關(guān)閉自動(dòng)匯總。下面是一臺(tái)路由器的完整配置示例我加了一些注釋方便你對(duì)照理解Routerenable Router#configure terminal Router(config)#router rip Router(config-router)#version 2 Router(config-router)#network 192.168.10.0 Router(config-router)#network 10.0.0.0 Router(config-router)#no auto-summary Router(config-router)#end Router#write這里最值得注意的就是network命令。RIP的network命令后面跟的是直連接口所在的網(wǎng)段而且必須是你希望被這個(gè)RIP進(jìn)程收編的接口。它有兩個(gè)隱藏含義第一這個(gè)網(wǎng)段會(huì)被通告給鄰居第二這個(gè)網(wǎng)段所在的接口上會(huì)開始發(fā)送和接收RIP更新報(bào)文。如果你忘了宣告某個(gè)接口所在的網(wǎng)段那這個(gè)接口連接的網(wǎng)段就不會(huì)出現(xiàn)在路由表里鄰居自然也學(xué)不到。RIPv2下network后面可以寫精確的子網(wǎng)號(hào)但很多教材和老的配置習(xí)慣還是寫主類網(wǎng)絡(luò)號(hào)比如10.0.0.0而不是10.0.12.0。原因是RIP早期的版本只認(rèn)識(shí)主類網(wǎng)絡(luò)寫子網(wǎng)號(hào)它不認(rèn)。RIPv2已經(jīng)支持無類通告配合no auto-summary你寫精確網(wǎng)段也不會(huì)出問題。但為了兼容性和考試習(xí)慣我建議按主類網(wǎng)絡(luò)號(hào)宣告再用no auto-summary關(guān)閉自動(dòng)匯總。3.2 華為eNSP/VRP里怎么配命令風(fēng)格對(duì)比國內(nèi)很多學(xué)校的實(shí)驗(yàn)課用的是華為的eNSP模擬器命令風(fēng)格和在思科里有差異但邏輯是一樣的。華為VRP上啟用RIP的姿勢(shì)如下Huaweisystem-view [Huawei]rip 1 [Huawei-rip-1]version 2 [Huawei-rip-1]network 192.168.10.0 [Huawei-rip-1]network 10.0.0.0 [Huawei-rip-1]undo summary [Huawei-rip-1]quit [Huawei]save注意華為里要先創(chuàng)建一個(gè)RIP進(jìn)程進(jìn)程號(hào)可以隨意比如rip 1思科則是直接進(jìn)router rip默認(rèn)就一個(gè)進(jìn)程。華為的network命令同樣宣告直連網(wǎng)段宣告后對(duì)應(yīng)接口會(huì)自動(dòng)啟用RIP。默認(rèn)情況下華為RIPv2會(huì)自動(dòng)匯總實(shí)驗(yàn)里最好執(zhí)行undo summary關(guān)掉否則你可能會(huì)看到環(huán)回口的32位路由被匯總成奇怪的主類網(wǎng)段。驗(yàn)證命令方面思科用show ip route rip看RIP路由華為用display rip 1 route或者display ip routing-table protocol rip。思科用show ip protocols看RIP進(jìn)程參數(shù)華為用display rip 1。思科用debug ip rip看更新報(bào)文華為用debugging rip 1 packet。兩者對(duì)應(yīng)的關(guān)系非常工整做實(shí)驗(yàn)時(shí)完全可以對(duì)照著記。3.3 驗(yàn)證階段的標(biāo)配動(dòng)作看路由表、ping、抓包配置完成后最快驗(yàn)證RIP是否工作的方法是看路由表。在思科上執(zhí)行show ip route rip你會(huì)看到類似這樣的輸出R 192.168.30.0/24 [120/1] via 10.0.23.3, 00:00:12, GigabitEthernet0/1這條輸出信息量很大R代表這條路由由RIP學(xué)來[120/1]里120是RIP的管理距離1是跳數(shù)via后面是下一跳地址00:00:12是這條路由距離上次更新經(jīng)過的時(shí)間RIP每30秒更新一次所以這個(gè)數(shù)字一定在0到30之間最后的接口表示從這個(gè)接口收到的路由。然后就是ping測(cè)試。從R1 ping R3環(huán)回口從PC1 ping PC3把每臺(tái)設(shè)備都ping一遍確保全網(wǎng)互通。如果ping不通不要急著說是RIP的問題很可能只是沒寫網(wǎng)關(guān)或者防火墻開著。我見過太多學(xué)生折騰半天協(xié)議最后發(fā)現(xiàn)是PC的網(wǎng)關(guān)沒配。如果你用的是GNS3還可以直接在路由器接口上抓包看RIPv2的組播更新報(bào)文確認(rèn)源地址、目的地址224.0.0.9、跳數(shù)等信息。這一步不是作業(yè)必需但做一次能極大加深你對(duì)RIP報(bào)文格式的理解我強(qiáng)烈推薦試試。3.4 一個(gè)小技巧把計(jì)時(shí)器調(diào)短實(shí)驗(yàn)效率翻倍做RIP實(shí)驗(yàn)最痛苦的事情就是等收斂。默認(rèn)的30秒更新周期、180秒無效計(jì)時(shí)器讓每次故障模擬都要干等好幾分鐘。實(shí)際上RIP允許你修改計(jì)時(shí)器我做演示和自測(cè)的時(shí)候會(huì)把它們大幅調(diào)短。Router(config)#router rip Router(config-router)#timers basic 5 20 20 60這行命令把更新周期改成5秒路由失效時(shí)間改成20秒刷新時(shí)間改成60秒。這樣一來把接口down掉之后20秒內(nèi)就能看到路由表發(fā)生變化實(shí)驗(yàn)節(jié)奏舒服得多。需要說明的是這只是實(shí)驗(yàn)演示手段生產(chǎn)環(huán)境中隨便亂調(diào)計(jì)時(shí)器會(huì)引發(fā)網(wǎng)絡(luò)震蕩而且不同路由器上的計(jì)時(shí)器不一致很容易出現(xiàn)路由黑洞。華為VRP上對(duì)應(yīng)的是timers rip 5 20 20命令格式略有差異設(shè)置前記得先查一下當(dāng)前設(shè)備的配置說明。4. 常見問題與排查技巧實(shí)錄4.1 路由表里一條RIP路由都沒有先查這四個(gè)地方這是RIP作業(yè)里最經(jīng)典的問題明明每臺(tái)路由器都敲了router rip和network命令但show ip route rip就是空空如也。根據(jù)我長期排查的經(jīng)驗(yàn)90%的情況出在下面四個(gè)原因之一。第一個(gè)原因是network宣告漏了網(wǎng)段。很多拓?fù)淅镉协h(huán)回口你給R1配置了network 192.168.10.0但忘了宣告環(huán)回口所在的10.0.0.0網(wǎng)段鄰居自然學(xué)不到這條路由。解決方法是把每臺(tái)路由器上的每個(gè)接口地址都列出來挨個(gè)確認(rèn)是不是都落進(jìn)了已宣告的主類網(wǎng)絡(luò)范圍。第二個(gè)原因是接口地址和宣告網(wǎng)段不匹配。比如你接口配的是10.0.12.1/30network卻寫了10.0.0.0這在RIPv1時(shí)代可能沒問題因?yàn)镽IPv1會(huì)按主類網(wǎng)絡(luò)匹配但在RIPv2并且配了精確網(wǎng)段的寫法時(shí)如果地址和宣告網(wǎng)段對(duì)不上更新就發(fā)不出去。所以最穩(wěn)妥的做法是保持“接口地址屬于某個(gè)主類網(wǎng)段network宣告這個(gè)主類網(wǎng)段”。第三個(gè)原因是RIP版本不一致。一臺(tái)路由器開了version 2另一臺(tái)還是默認(rèn)的v1兩者之間雖然v2能處理v1的報(bào)文但v1收到v2組播報(bào)文時(shí)根本不理會(huì)。作業(yè)里最容易出現(xiàn)的情況是三臺(tái)路由器里有一臺(tái)忘了敲version 2。這個(gè)坑用show ip protocols一眼就能看出來各臺(tái)路由器的版本必須對(duì)齊。第四個(gè)原因是被動(dòng)接口設(shè)錯(cuò)了。passive-interface可以用來阻止RIP更新從某個(gè)接口發(fā)出去如果誤把連接路由器的接口設(shè)成了被動(dòng)接口那鄰居永遠(yuǎn)收不到更新。排查時(shí)先看配置里有沒有passive-interface再看它是不是加在了錯(cuò)誤的接口上。4.2 能學(xué)到路由但ping不通多半不是協(xié)議的問題如果你已經(jīng)能在路由表里看到RIP路由但實(shí)際ping不通目標(biāo)地址問題往往不在RIP本身而在數(shù)據(jù)包的轉(zhuǎn)發(fā)鏈路上。第一個(gè)要查的是回包路徑。R1能學(xué)到去往192.168.30.0/24的路由走R2-R3過去但R3未必學(xué)到去往192.168.10.0/24的路由這樣ICMP回包到半路就丟了表現(xiàn)為ping請(qǐng)求發(fā)出去但沒有回應(yīng)。RIP是雙向?qū)W習(xí)的按理說不該出現(xiàn)單向路由但如果你只在一臺(tái)路由器上配了RIP或者把某個(gè)接口加進(jìn)了被動(dòng)接口就會(huì)出現(xiàn)單向路由。第二個(gè)要查的是掩碼和匯總問題。RIPv2雖然支持可變長子網(wǎng)掩碼但如果你在更新里看到某些路由被自動(dòng)匯總成了主類網(wǎng)絡(luò)而實(shí)際網(wǎng)絡(luò)里子網(wǎng)劃分得很碎就可能出現(xiàn)路由指向錯(cuò)誤。解決辦法是確保所有路由器都配置了no auto-summary。第三個(gè)要查的是ACL和防火墻。很多模擬器默認(rèn)配置里沒有ACL但如果你在接口上誤開了訪問控制列表即使路由表完全正確數(shù)據(jù)包也會(huì)被丟掉。排查這種問題最直接的方法是在入接口和出接口分別debug ip packet看包被丟到了哪個(gè)階段。4.3 環(huán)路的觀察實(shí)驗(yàn)怎么做水平分割關(guān)閉后的災(zāi)難現(xiàn)場(chǎng)有些進(jìn)階作業(yè)會(huì)要求你驗(yàn)證水平分割的作用方法是把接口的水平分割關(guān)掉人為制造環(huán)路。我很推薦做一次這個(gè)實(shí)驗(yàn)因?yàn)橛H眼看到數(shù)據(jù)包在環(huán)路里反復(fù)彈跳比背十遍概念都管用。在思科上關(guān)掉某個(gè)接口的水平分割有兩種方法一種是在接口配置模式下執(zhí)行no ip split-horizon另一種是啟用ip split-horizon poison-reverse把普通水平分割換成毒性逆轉(zhuǎn)。關(guān)閉后再把某條鏈路Shutdown然后觀察路由表你會(huì)發(fā)現(xiàn)路由并沒有按時(shí)消失反而可能因?yàn)榄h(huán)路導(dǎo)致TTL耗盡的ICMP報(bào)文滿天飛。做這個(gè)實(shí)驗(yàn)時(shí)切記兩點(diǎn)第一一定要用模擬器做別在真實(shí)設(shè)備上折騰第二實(shí)驗(yàn)做完馬上把配置恢復(fù)回來。我以前帶實(shí)驗(yàn)課時(shí)有學(xué)生做完環(huán)路實(shí)驗(yàn)忘了恢復(fù)配置后面連著好多臺(tái)設(shè)備都學(xué)到了錯(cuò)誤路由排查了整整一下午。4.4 debug和抓包看清RIP更新報(bào)文的真面目當(dāng)路由表里出現(xiàn)了莫名其妙的路由或者更新總是收不到最直觀的排查手段就是抓包和debug。思科上執(zhí)行debug ip rip你會(huì)看到類似下面的日志RIP: sending v2 update to 224.0.0.9 via GigabitEthernet0/1 (10.0.12.1) RIP: build update entries network 192.168.10.0/24 metric 1 network 10.0.0.0/8 metric 1 RIP: received v2 update from 10.0.23.3 on GigabitEthernet0/1 network 192.168.30.0/24 metric 1sending和received兩行日志分別展示了RIP更新報(bào)文的發(fā)送和接收metric值可以幫你判斷是不是多跳了從哪個(gè)接口來的也能直接看到。如果debug日志里一直只有sending沒有received說明對(duì)方的路由更新根本沒送到你這里原因可能是接口down、被動(dòng)接口、版本不匹配或者中間鏈路有問題。注意debug命令在生產(chǎn)環(huán)境里要慎用因?yàn)樗鼤?huì)占用大量CPU資源尤其是在大型網(wǎng)絡(luò)中。實(shí)驗(yàn)做完記得執(zhí)行undebug all把debug關(guān)掉。華為設(shè)備對(duì)應(yīng)的是debugging rip 1 packet看完之后用undo debugging all關(guān)掉。如果你用的是GNS3可以在兩臺(tái)路由器之間的鏈路上直接插一個(gè)抓包點(diǎn)用Wireshark看完整的RIPv2報(bào)文結(jié)構(gòu)包括命令字段、版本字段、地址族標(biāo)識(shí)符、路由標(biāo)記、IP地址、掩碼、下一跳和跳數(shù)。報(bào)文結(jié)構(gòu)清晰之后RIP的工作機(jī)制就會(huì)變得特別具體以后無論如何都不會(huì)搞混。結(jié)語一個(gè)被淘汰的協(xié)議為什么還是值得認(rèn)真做一遍RIP在真實(shí)網(wǎng)絡(luò)里基本已經(jīng)被OSPF和IS-IS取代了但作為學(xué)習(xí)路由協(xié)議原理的“第一課”它依然不可替代。我個(gè)人的體會(huì)是把這個(gè)簡(jiǎn)單的實(shí)驗(yàn)認(rèn)認(rèn)真真做完再把那些故障場(chǎng)景親手復(fù)現(xiàn)一遍你對(duì)路由協(xié)議的理解會(huì)比直接看OSPF配置快得多。因?yàn)镽IP把路由協(xié)議最核心的要素都攤開了度量值、更新機(jī)制、計(jì)時(shí)器、環(huán)路防護(hù)、版本差異、鄰居關(guān)系。這些概念在任何路由協(xié)議里都存在只是被更復(fù)雜的算法包裝起來了。最后再分享一個(gè)小習(xí)慣我做RIP作業(yè)時(shí)會(huì)在每臺(tái)路由器上把所有接口地址、宣告網(wǎng)段、路由版本整理成一張表格對(duì)照著檢查。這看起來笨但能避免90%的低級(jí)錯(cuò)誤。如果你卡在某個(gè)配置問題上超過二十分鐘別繼續(xù)硬扛了把三臺(tái)路由器的show running-config全部拉到同一個(gè)窗口里逐行對(duì)比問題通常一眼就能看出來。RIP作業(yè)不難難的是靜下心來把每一步都看清楚做到心中有數(shù)。希望這篇內(nèi)容能幫你順利交掉這份作業(yè)更重要的是讓你真正弄懂距離向量協(xié)議到底是怎么運(yùn)轉(zhuǎn)的。