史萊姆論壇

返回   史萊姆論壇 > 教學文件資料庫 > 網路軟硬體架設技術文件
忘記密碼?
論壇說明 標記討論區已讀

歡迎您來到『史萊姆論壇』 ^___^

您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的!

請點擊這裡:『註冊成為我們的一份子!』

Google 提供的廣告


 
 
主題工具 顯示模式
舊 2003-09-30, 06:34 PM   #1
psac
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設 預設路由與負載均衡

現在企業網路中多鏈路Internet出口的情況越來越多,一般的做法是在一台邊界路由器上配置多個Internet鏈路接頭卡,這樣的好處是節省設備,出口統一,方便管理,尤其對異步撥號和ISDN這樣的PPP鏈路可採用Multi-link PPP的方式來進行鏈路綁定。另一種做法是安置兩台路由器,在兩台路由器間執行HSRP/VRRP,再通過standby priority的方式來在兩台路由器間進行負載均衡操作。

stub網路環境中最常用的路由設定就是採用預設路由,那麼使用預設路由能否實現負載均衡呢?

現在假設有這樣的模擬網路環境,其中R1有三個接頭,E0接局內網,E1和S0分別為Internet出口,連接ISP的路由器R2(這裡為簡化起見R2只用一台設備R2替代),同時R2上的S1口為一個遠端位址用來做測試,拓撲圖見文本底圖。

那麼很自然的就會想到,我可以在R1上起兩個預設路由,分別指向ISP的對端位址:

ip route 0.0.0.0 0.0.0.0 192.1.1.2
ip route 0.0.0.0 0.0.0.0 192.168.168.9

這時在路由器上看路由表,可以看到路由器上有兩個等價的預設路由表項:

Router1#sh ip route sta
S* 0.0.0.0/0 [1/0] via 192.1.1.2
[1/0] via 192.168.168.9

那麼到底用預設路由器的方式能不能實現負載均衡呢?這時又牽扯出另一個問題,即Cisco路由器上IP交換方式的問題,Cisco路由器上一般預設的交換方式為Fast Switching,Fast Switching採用的是在搜尋目標路由並確定出口接頭後,直接將目標路由其相關的出口接頭及下一跳的位址放進Fast Switching緩衝中,這樣後繼的流量就不需要再逐一搜尋路由表,而直接由Fast Switching緩衝中讀取相關資訊。
下面我在局內網10.1.1.2電腦上ping 193.1.1.2外網位址,並開啟debug ip packet對流量進行觀測:

ping 193.1.1.2

11:04:56: IP: s=10.1.1.2 (Ethernet0), d=193.1.1.2 (Serial0), g=192.1.1.2, len 60, forward

看debug ip packet的結果:可以看到這個包所採用的網關為192.1.1.2(g=192.1.1.2),並且雖然有4個ping包,但debug的結果只顯示出一次的結果(其餘的三次直接由Fast Switching緩衝讀取)

這時再看看Fast Switching緩衝中的內容:

Router1#sh ip cache
IP routing cache 2 entries, 396 bytes
35 adds, 33 invalidates, 0 refcounts
Minimum invalidation interval 2 seconds, maximum interval 5 seconds,
quiet interval 3 seconds, threshold 0 requests
Invalidation rate 0 in last second, 0 in last 3 seconds
Last full cache invalidation occurred 00:00:25 ago

Prefix/Length Age Interface Next Hop
10.1.1.2/32 00:00:22 Ethernet0 10.1.1.2
193.1.1.0/24 00:00:22 Serial0 192.1.1.2

上述黑體表項表明了對193.1.1.0/24的訪問所用的出口接頭為Serial0,下一跳位址為192.1.1.2。

為驗證使用預設路由是否能做到負載均衡,現在把兩個出口接頭的Fast Switching都關掉:

Router1(config)#int s0
Router1(config-if)#no ip route-cache
Router1(config-if)#int e1
Router1(config-if)#no ip route-cache

Router1#sh ip int s0
Serial0 is up, line protocol is up
Internet address is 192.1.1.1/24
...
IP fast switching is disabled
IP fast switching on the same interface is disabled
IP Flow switching is disabled
IP Fast switching turbo vector
IP multicast fast switching is disabled
IP multicast distributed fast switching is disabled
IP route-cache flags are None
...

這時再從10.1.1.2上ping 193.1.1.2,可以看到如下debug ip packet結果:

Router1#
11:23:00: IP: s=10.1.1.2 (Ethernet0), d=193.1.1.2 (Serial0), g=192.1.1.2, len 60, forward
11:23:01: IP: s=10.1.1.2 (Ethernet0), d=193.1.1.2 (Serial0), g=192.1.1.2, len 60, forward
11:23:02: IP: s=10.1.1.2 (Ethernet0), d=193.1.1.2 (Serial0), g=192.1.1.2, len 60, forward
11:23:03: IP: s=10.1.1.2 (Ethernet0), d=193.1.1.2 (Serial0), g=192.1.1.2, len 60, forward

值得注意的是這時debug的結果顯示了四條,表示每個ICMP包都必須由路由器的CPU進行路由器檢索。另外一個值得注意的現象是四條結果中的」g=「都是192.1.1.2,也就是說這四個包都只由一個出口出去,並沒有按照路由表中兩個預設路由的表項對資料包進行替換送出,也就是說,在使用多條預設路由的情況下,路由器並不會進行負載均衡操作,不管你用不用route cache。

下面看使用靜態路由的情況:

ip route 193.1.1.0 255.255.255.0 192.1.1.2
ip route 193.1.1.0 255.255.255.0 192.168.168.9

Router1#sh ip route sta
S 193.1.1.0/24 [1/0] via 192.1.1.2
[1/0] via 192.168.168.9

這時route cache仍然沒有開啟,10.1.1.2上ping 193.1.1.2的debug結果:

10:11:21: IP: s=10.1.1.2 (Ethernet0), d=193.1.1.2 (Serial0), g=192.1.1.2, len 60, forward
10:11:22: IP: s=10.1.1.2 (Ethernet0), d=193.1.1.2 (Ethernet1), g=192.168.168.9, len 60, forward
10:11:23: IP: s=10.1.1.2 (Ethernet0), d=193.1.1.2 (Serial0), g=192.1.1.2, len 60, forward
10:11:24: IP: s=10.1.1.2 (Ethernet0), d=193.1.1.2 (Ethernet1), g=192.168.168.9, len 60, forward

因為route cache沒有開,所以有四條debug結果,這時有趣的東西出來了,第一條的下一跳位址為192.1.1.2,第二條的為192.168.168.9,第三條的又回到192.1.1.2,第四條再為192.168.168.9,關於packet的負載均衡實現了。

下面再看開啟Fast Switching的結果:

Router1(config)#int s0
Router1(config-if)#ip route-cache
Router1(config-if)#int e1
Router1(config-if)#ip route-cache

我在10.1.1.2上ping了兩個位址,一個是193.1.1.2,另一個是193.1.1.3,debug的結果如下:

11:35:24: IP: s=10.1.1.2 (Ethernet0), d=193.1.1.2 (Serial0), g=192.1.1.2, len 60, forward
11:35:47: IP: s=10.1.1.2 (Ethernet0), d=193.1.1.3 (Ethernet1), g=192.168.168.9, len 60, forward

可以看到雖然我ping了兩次,總共有八個包,但debug結果只有兩條,說明Fast Switching起了作用。當然另外一個有趣的東西也出來了,ping 193.1.1.2走的網關是192.1.1.2,ping 193.1.1.3走的網關是192.168.168.9,負載均衡也實現了,這時實現的是關於destination的負載均衡。

當然另外還有一些東西也可以想一想,比如說兩個出口接頭中一個用了Fast Switcing,另一個沒用會是什麼效果呢?感興趣的朋友可以自己實驗看一下。

此外我這個實驗中其實並沒有涉及到真正的Internet多出口情況,因為沒有做NAT,如果做了NAT牽扯的東西就不只這麼多了,還涉及到原則路由和BGP路由的問題,這個話題就不在這個討論的話題之內了。

P.S. 在實驗前及做route cahce的切換中注意使用指令clear ip cache清空route cache。
實驗環境中動態路由傳輸協定和靜態路由傳輸協定混用,造成路徑轉發出錯。後發現在使用預設路由的情況下資料包是可以負載均衡的,使用Fast Switching或不使用Fast Switching均可以。
也可以將網段分擔給兩個路由器,通過調節HSRP的PRI來分配出口,或要求ISP執行EIGRP+BGP進行LOAD BALANCE.
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次
 


主題工具
顯示模式

發表規則
不可以發文
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

論壇啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇禁用 HTML 語法
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用


所有時間均為台北時間。現在的時間是 10:42 PM


Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2022, Jelsoft Enterprises Ltd.


SEO by vBSEO 3.6.1