EIGRP交換路由的過程并不復雜,首先路由器之間會使用Hello包建立鄰居關系,當初次交換路由信息時,交換的是整個路由表。當之后路由信息出現變化的話,將執行觸發更新操作。路由器將從鄰居處收到的路由信息放入到拓撲表中,并將該表中的最佳路徑標記為后繼路由通告給鄰居。EIGRP協議擁有自己的數據庫和數據結構,其包括接口表,鄰居表和拓撲表等。對于接口表來說,存儲的是所有開啟了EIGRP的本地接口信息,從這些接口才可以接收到EIGRP路由信息。對于鄰居表來說,存儲的是鄰居路由器信息。對于拓撲表來說,存儲的是所有EIGRP的可用路由信息。
在具體維護EIGRP協議運行時,會遇到各種情況,這就需要網管員通過排查保證EIGRP協議順利運行。下面以簡單的實驗環境,來說明EIGRP協議相關的維護技巧。
例如,在本實驗環境中,路由器R1和R3之間以Fa0/0連接,在R1和R2之間以Fa0/1連接,,R2和R3之間以Fa0/2接口連接,上述三個路由器之間實現的彼此相連的全互聯狀態,R3和R4通過S0/0串口單獨連接。
R1的環回口Loopback 0的 IP為 192.168.1.1,F0/0接 口IP為192.168.13.1,F0/1的IP為192.168.12.1。
R2的環回口Loopback 0的 IP為 192.168.2.1,F0/2接 口IP為192.168.23.2,F0/1的IP為192.168.12.1。
R3的環回口Loopback 0的 IP為 192.168.3.1,F0/0接 口IP為192.168.13.3,F0/2的IP為192.168.23.3,S0/0的IP為192.168.34.3。
R4的環回口Loopback 0的 IP為 192.168.4.1,S0/0接 口IP為192.168.34.4。其使用的自治系統號為90,在 R1上 使 用“router eigrp 90”,“network 192.168.1.0”,“network 192.168.12.0”,“network 192.168.13.0”,“no autosummary”等命令,將本地環回口Loopback0,和 R2,R3 連接的端口所在的網段宣告出去。在其余的路由器上執行對應的操作,使其得以運行EIGRP協議。
在R1上 執 行“show ip protocols”命令,檢查當前動態路由協議運行信息。 執 行“show ip eigrp interface”命令,查看哪些接口開啟了EIGRP。執行“show ip eigrp neighbors”命令,可以查看其鄰居信息。執 行“show ip eigrp neighbors Fa 0/1”命令,可以查看指定端口連接的鄰居信息。執行“show ip eigrp topology”命令,查看拓撲表信息。執行“debug ip eigrp”命令,可以監視本地EIGRP的路由事件信息,包括鄰居關系的建立和刪除,路由條目的建立和刪除等。執行“debug eigrp packets”命令,可以監控和EIGRP相關的所有數據包。
在R4上存在環回口Loopback0,其接口IP為192.168.4.1,當在 R1上執行“ping 192.168.4.1” 命令,卻出現了無法Ping通的情況,這就說明EIGRP的路由轉發存在某些問題。
首先,在R1上執行“show ip route”命令,查看本地路由表信息,沒有發現和192.168.4.0/24相關的網段路由信息,據此可以判斷R1根本沒有收到R4的上述網絡路由信息。
在路由表中可以看到,R2和R3之 間 的 路由192.168.23.0/24,以及R3和R4之間的路由192.168.34.0/24是正常存在的,兩條路由的下一跳均指向192.168.13.3,這就說明R3可以和R1之間正確的交換路由信息。
在R1上執行“show ip eigrp neighbors”命令,在鄰居表中看到和R3鄰居關系是正常的,因為R3的Fa0/0的 IP為 192.168.13.3。 同時看到R1和R2也正確建立了鄰居關系,這樣就排除了因為R1配置錯誤而無法收到R4路由的情況。
在R3上執行“show ip route”命令,在路由表中也沒有出現和192.168.4.0/24有關的路由信息。
執 行“show ip eigrp interfaces”命令,查看R3的接口表信息,發現其和其他三臺路由器連接的接口均處于開啟狀態。
執 行“show ip eigrp neighbors”項,查看R3的鄰居關系信息,卻發現R3只和R1,R2建立了鄰居關系,并沒有和R4建立鄰居關系。
但是R3和R4連接的Serial0/0已經處于開啟狀態,卻沒有和R4建立鄰居關系,這就要到R4上檢查與R3連接的端口是否開啟了EIGRP。在R4上執行“show ip eigrp interfaces”命令,發現其鄰居表是空的。
執 行“show ip in tbrie”命令,查看其端口的詳細信息,發現端口Serial0/0處于UP狀態。
執 行“show runningconfig|section router eigrp”命令,查看和EIGRP相關的配置指令。
發現其使用的宣告命令為“192.168.0.0”命令,試圖將R4上的環回口以及Serial0/0端口全部宣告出去。
但這種方式明顯是錯誤的,因為這樣的宣告方式只包含了192.168.0.0/24網段,顯然沒有包含R4上的相關端口地址。
處理方法是執行“route eigrp 90”,“network 192.168.0.0 0.0.255.255”。“end”命令,執行正確網址宣告,就可以打通從R1到R5的路由了。
當然,造成從R1無法訪問R4的原因不止上面提到的問題。
例如,在R1上執行“show ip eigrp neibors”命令,發現其和R2以及R3都建立了正確的鄰居關系。
執 行“show ip eigrp topology”命令,在拓撲表中可以看到192.168.34.0/24網段是從R3的Fa0/0處學來的,該端口IP為192.168.13.3。
而192.168.23.0/24網段路由是從R2的S0/0(IP為 192.168.12.2)和 R3的F0/0處學來的。
據此可以判斷,R1從R2和R3處收取路由信息是沒有問題的。
在R3上進行查看,發現其和R4的鄰居關系出現連續的浮動,并顯示“K-value mismatch”的提示信息。
根據以上信息,不難看出R3和R4的鄰居關系之所以出現動蕩,是因為K值不匹配的緣故。
因為EIGRP協議在計算度量值的時候,會使用到從K1到K5等數值,而兩臺路由器要想建立鄰居關系,其K值必須匹配。
如果其K值不同,說明兩者計算路徑度量值的方式存在差異,即對路徑判斷的依據無法統一,自然不能建立鄰居關系。
因為R3和R1以及R2可以建立鄰居關系,說明R3的K值配置沒有問題。
在R3上執行“show ip protocols”命令,在“EIGRP metric weight”欄中顯示K1和K3的值為1,其余的K值為0。
在R4上執行 “show ip protocols”命令,發現其所有的K值均為1,可能其K值被錯誤的修改過。
執 行“show runningconfig|section router eigrp”,發現錯誤的K值修改指令。處理方法將其清除即可。
例如,執行“route eigrp 90”,“no metric weights 0 1 1 1 1 1”之類的指令。就可以恢復默認的K值。
實際上,在建立EIGRP鄰居時,其自治系統號,K值以及認證參數等關鍵信息必須一致。