天天看點

TCP/IP 2.6均衡負載

小小的一片雲呀慢慢地走過來,請你們歇歇腳呀暫時停下來,山上的山花開呀我才到山上來,原來嘛你也是上山看那山花開。

小小的一陣風呀慢慢的走過來,請你們歇歇腳呀暫時停下來,海上的浪花開呀我才到海邊來,

原來嘛你也愛浪花才到海邊來。

-------踏浪(沈雁)

喜歡~~~~

3.7 均分負載

上面的那種情況下(是指上一節浮動靜态路由的時候),隻有一條鍊路可用,另一條鍊路在閑置。

均分負載又叫負載均衡,允許路由器利用多路徑的優點,在所有可用的路徑上發送資料包。

均分負載等價和非等價的兩種

等價均分負載:将流量均勻地分布到多條度量相同的路徑上。

非等價均分負載:将資料包分布到度量不同的多條路徑上。(代價越低,流量越大)

Net檔案和配置檔案見2.6的附件

TOP

TCP/IP 2.6均衡負載

如果想實作負載均衡在前面的那個實驗路由就應該這樣寫

Rabbit路由

ip route 10.1.5.0 255.255.255.0 10.1.10.1

ip route 10.1.5.0 255.255.255.0 10.1.20.1

ip route 10.4.0.0 255.255.0.0 10.1.10.1

ip route 10.4.0.0 255.255.0.0 10.1.20.1

ip route 192.168.1.0 255.255.255.0 10.1.10.1

ip route 192.168.1.0 255.255.255.0 10.1.20.1

Piglet路由

ip route 10.1.30.0 255.255.255.0 10.1.10.2

ip route 10.1.30.0 255.255.255.0 10.1.20.2

ip route 10.4.0.0 255.255.0.0 192.168.1.193

ip route 192.168.1.0 255.255.255.0 192.168.1.193

檢視路由表

TCP/IP 2.6均衡負載
TCP/IP 2.6均衡負載

但是這個時候你debug ip packet 看到的卻不是你想看到的情況。他還是自從一條路上走的,并沒有等價負載均衡。

看debug資訊

TCP/IP 2.6均衡負載

下面解釋為什麼會出現這種問題

慢慢道來~

負載均衡有2種方式:基于目标網絡和基于資料包

1、  基于目标網絡和基于資料包負載均衡

基于目标網絡的負載均衡是根據目标位址配置設定負載。

實際上是按照<b>源目位址對</b>進行負載均衡,所有發往<b>特定目标位址</b>的流量隻要<b>源位址相同</b>都會從<b>相同的接口出站</b>,而<b>不同源目位址對</b>的流量<b>可能</b>會從<b>下一個接口出站</b>。

囧~文檔上都這麼寫。但是怎麼了解這句話沒有人說~ 我要細細想下~給個例子出來~ 因為我實在是沒有想清楚~

TOP見上

我以Pooh源,每個位址對去檢視。看好滴

要做個小小的改動配置

Pooh(config)#no ip route 10.1.0.0 255.255.0.0 192.168.1.34

Pooh(config)#ip route 10.1.0.0 255.255.0.0 192.168.1.66

Pooh#sh run | include ip route

ip route 10.1.0.0 255.255.0.0 192.168.1.66

ip route 10.4.0.0 255.255.0.0 192.168.1.34

ip route 192.168.1.192 255.255.255.224 192.168.1.34

TCP/IP 2.6均衡負載

這邊可以看到源位址是192.168.1.1,目标位址不同,他們的出接口不一樣~這就基于目标網絡的負載均衡了~

也可以讓他不負載均衡~不管他去什麼地方我都讓他從一個接口出來。

做個小改動

Pooh(config)#no ip route 10.1.0.0 255.255.0.0 192.168.1.66

Pooh(config)#ip route 10.1.0.0 255.255.0.0 192.168.1.34

Pooh(config)#do sh run | in ip route

ip route 10.1.0.0 255.255.0.0 192.168.1.34

看呀~

TCP/IP 2.6均衡負載

基于資料包的負載均衡方式意味着在不同的鍊路上發送資料包。做個好了解

我以Rabbit為例。看喔

Rabbit(config-if)#do sh run | in ip route

至于為什麼要做這種配置我一會大家(這個知識點放在後面)先讓大家看到效果

Rabbit(config)#no ip cef

Rabbit(config)#int s1/0

Rabbit(config-if)#no ip cef

Rabbit(config)#int s1/1

Rabbit(config-if)#no ip route-ca

Rabbit(config-if)#no ip route-cache

Rabbit(config-if)#int s1/0

Rabbit(config-if)#int lo0

Rabbit(config)#no ip route-ca

Rabbit(config)#int lo0      

Rabbit(config-if)#

Rabbit(config-if)#end

TCP/IP 2.6均衡負載

可以看到5個資料包,第一包是從S1/0出來,第二個是從s1/1出來,第三個是從S1/0,第四個S1/1,第五個是S1/0。

類似于公司裡面,中午去食堂吃飯,一部分從電梯走,一部分從樓梯走。

路徑代價不通,呢麼可能會按高低代價路徑上按照代價比率進行分流。(走樓梯的人沒有做電梯的多)

基于資料包的負載均衡方式可以更加均勻地分布流量

但是資料包選擇不通的路徑去往目标網絡會引起非順序到達。對于某些應用來說,這是不能接口的,例如VOIP~~聲音如果到達順序不一樣~額~那還能聽出他在說什麼嗎~~囧

現在我們再來看我們一開始看到的那個問題就會發現那是基于目标網絡的負載均衡。為什麼他會是基于目标網絡的負載均衡的~

再看

1、  Cisco急速轉發(CEF)

Cisco急速轉發(CEF)使用的預設負載均衡方式。

IPv4的預設交換模式是CEF

CEF的工作原理:1、從路由表中擷取資訊并把資訊存儲在轉發資訊庫中(FIB)FIB中有所有的目标網絡,路由表穩定的時候,FIB不變。

2、CEF使用一個單獨的資料表—鄰接關系表,為FIB的每個表現維護第二層轉發資訊

FIB和鄰接關系表在資料包轉發之前就已經建立好了

資料包利用FIB和鄰接關系表來轉發

這邊我們可以完全解釋上面的疑問

Cisco路由器ipv4情況下預設開啟的是ip cef的功能。而cef的功能使用的是基于目标網絡的負載均衡。是以你看到的情況是那樣的

   檢視cef  show cef

   Show cef interface

   打開cef

   Ip cef

   關閉cef

   No ip cef

TCP/IP 2.6均衡負載

這裡查找的是FIB 綠色的

1、  快速交換

快速交換的工作方式

1、  當路由器為第一個去往特定目标的資料包進行交換處理時,路由器查RT(RT=路由表)

2、  擷取備選接口的資料鍊路資訊(ARP表),成幀,封裝,轉發

3、  路由和鍊路資訊放入高速緩存中

4、  以後有去往相同目标位址的時候他直接使用高速緩存

快速交換去往相同目标位址用的一定是相同的接口,是以是基于目标的負載均衡,

5、  過程交換

對于每個資料包,路由器都要進行路由表查詢和接口選擇,然後在查詢資料鍊路資訊。因為每一次為資料包确定路由的過程都是互相獨立的。他的接口不一定相同。

過程交換用的是基于資料包的負載均衡

打開過程交換的指令

no ip route-cache

TCP/IP 2.6均衡負載

你看這個地方查找的是RIB 綠色的标記

IOS根據入站和出站接口的配置确定交換方式

IPV4

入站配置

出站配置

所使用的交換方法

CEF

快速

過程

繼續閱讀