一個簡單路由拓撲中有一個想不明白的地方,具體拓撲見問題描述:?
如圖,所有路由都配置 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,要做些什麼?
※根據規則,根埠是在非根交換機上選舉,指定埠是在一個網段上選舉,那麼這兩個埠有可能是同一個嗎?
※流量控制與擁塞控制的區別。為什麼要把流量控制與擁塞控制分為兩個名詞?