一個簡單路由拓撲中有一個想不明白的地方,具體拓撲見問題描述:?

如圖,所有路由都配置 ospf ,area 0,lo表示環回口, 以10.1.1.1為源能ping通2.2.2.3 , 3.3.3.4 。接著以10.1.1.1為源 ping 192.168.1.1 然後在R3 和 R4都開啟debug ip icmp 發現是R4收到R1的icmp包 , 問:為什麼是R4 而不是 R3?

附r2的路由表:

問題抽象為:兩個內網之間通信 當目的ip如192.168.1.1,該ip對應不只有一台設備,是如何精確到具體哪一台的? 望賜教 謝謝!


跟著上面的大神一起來湊下熱鬧!!!

一旦控制層面的路由表項已經顯示ECMP了,實際數據怎麼走和路由協議關係就不大了,詳細去看數據層面的CEF負載演算法

show ip cef exact-route src-ip dst-ip

用這條命令去查看你CEF表中數據真正流向的下一跳

當然CEF的演算法可以全局去修改

ip cef load-sharing algorithm xxx(演算法我就不BB了,你可以自己打問號看)

也可以介面下去調整

ip load-sharing [ per-packet | per-destination ]

默認介面下是基於目的,推薦在現網裡使用默認

然而CEF的演算法各個硬體設備平台下(交換機/路由器)功能都不同,詳細還是以思科官網的Configuration Guides為準


在R2上其實有兩條完全等價路由,那R2如何做負載均衡呢?預設的演算法就是對IP包(Source IP, Destination) 計算一個hash值,然後根據這個hash值來在所有等價鏈路上負載均衡:相同hash值會選擇同樣的路徑,這種演算法有個好處,即同一個通信會話session 會選擇同一個路徑,因為source, destination 不變,所以hash值每次計算都是一樣的。

回到你的問題,因為你的ping 包源地址、目的地址每次都是不變的,所以他們只會選擇一條路徑,所以你如果ping 5個包,這5個包會走同樣的路徑。

為什麼是R4而不是R3?

route table ---&>CEF table ---&>FIB table ,等價路由在前的,FIB 表也在前,如果有八條路徑,[p1,p2,p3…p8] 做load balance,對於流量計算hash,第一個hash就hit P1,第二個 不同的hash hit P2,以此類推,hash值相同的hit 同一個path。

因為題主ping 包是第一個觸發load balance 的,所以會選擇FIB靠前的表相,即對應排在最前面的路由。

至於為何R4條目出現在前,R3條目出現在後,這應該是隨機的,總有一個先後順序。

你可以做個實驗, 看看是不是R3能收到? 因為它們得hash值不同,可能會hit P2。按照演算法應該會選擇他們。

ping 192.168.1.1 source 1.1.1.1

ping 192.168.1.1 source 2.2.2.2

如果有什麼問題,可以留言,一併回復,謝謝。


路由表中很明顯負載均衡了。cost值一樣。

隨機的選路的。

至於你說的同網段上大網問題。

1.私網禁止上大網,nat轉換。

2.公網就不會有地址衝突問題了。


推薦閱讀:

如何形象地理解衝突域和廣播域?
CCNA考試是中文的還是英文的?想考個ccna證書呢。?
想自學考CCNA,要做些什麼?
根據規則,根埠是在非根交換機上選舉,指定埠是在一個網段上選舉,那麼這兩個埠有可能是同一個嗎?
流量控制與擁塞控制的區別。為什麼要把流量控制與擁塞控制分為兩個名詞?

TAG:計算機網路 | CCNA | 路由交換技術 |