1. 程式人生 > >Layer2-閘道器冗餘技術HSRP、VRRP、GLBP

Layer2-閘道器冗餘技術HSRP、VRRP、GLBP

session 1 ARP代理技術
1、arp代理
       arp代理功能是L3層閘道器裝置所有的功能,路由器或者L3層交換機。arp代理功能利用arp協議的不可靠性來代替終端進行L3層轉發,因為arp-requst廣播被L3層隔離,所以需要L3層閘道器代替終端進行arp-requst,當PC傳送arp-requst去往不同目的網段時,閘道器裝置會收到arp廣播,並且用自己的MAC地址作為PC請求的目的主機的MAC地址回給傳送端PC(利用arp欺騙原理),讓PC構建一個目的ip對應閘道器MAC的幀,這樣再次傳送單播資料的時候L2頭部封裝的就是閘道器的MAC地址,而源、目的ip還是終端PC和目的PC的,閘道器收到這個幀後修改L2頭部的源為閘道器自己路由出口的MAC,目的為下一條目的介面或者目標PC的MAC,將資料幀發給目的PC(同樣利用arp欺騙原理讓目的pc的arp表也對應的傳送端PC的ip和閘道器連線目的PC介面的MAC),目的PC在回覆arp-reply給傳送方PC的時候根據arp表直接發往了閘道器的介面,閘道器再次修改L2頭部進行代理轉發。具體轉發過程參看Layer2 ,L3層轉發原理。
        arp代理冗餘:兩個閘道器裝置都開啟arp代理,終端不需要填寫預設閘道器。終端PC傳送資料通過閘道器(假冒的)arp迴應來轉發資料,2個閘道器誰後發來就使用哪個閘道器的地址做預設閘道器,當其中一個裝置down後(這裡說的情況不是裝置本身壞了,而是裝置與internet的連線斷開了)另一個裝置會繼續接收轉發工作,缺點是當一個L3閘道器裝置down後,由於PC的arp表不會馬上清除,所以在PC的arp的age-time 30min結束前,PC都存的是down閘道器的MAC地址,所以PC傳送資料的時候不會發送arp廣播,只會將資料發往外網down的閘道器,但是外網down的閘道器由不能連線到internet造成無法通訊,直到arp經過30min或者手動清除cache後才能夠學到冗餘閘道器的MAC地址。
       雖然說L3層閘道器裝置開啟了arp代理功能後,連線在閘道器下面的終端PC就可以不需要設定預設閘道器地址,而通過arp廣播來讓閘道器裝置主動幫助轉發,但是在真實環境中,win7以上的作業系統(winxp沒有測試)在不設定預設閘道器的情況下發行資料包時,如果該資料的目的ip地址主機檢測到不和自己在同一個網段,那麼主機將不傳送arp請求直接丟棄,但是可以隨意設定預設閘道器地址用來觸發arp廣播從而使得閘道器裝置能收到PC終端的arp包而代理PC進行資料的轉發,哪怕閘道器寫的和PC的地址完全不在一個網路也沒有問題,閘道器會根據目的ip地址和MAC地址代理轉發。
現在這種arp代理技術基本被淘汰了,所以建議介面中關閉。
SW(config-fi)#no ip proxy-arp,cisco預設是都開啟的
補充:
1、代理arp能夠工作的前提是這臺裝置在連線了使用者端的介面上開啟了代理arp功能,並且有去往目的ip地址的路由轉發才可以,否則代理arp也無法工作。

2、在多點訪問的網路中(MA網路),靜態路由建議寫下一條地址的原因是如果對端裝置沒有開啟代理arp功能的話,寫出介面的路由條目通訊將會不通。不通的原理是:arp請求包封裝的問題,以下圖為例說明。


PC1:192.168.1.2/24                   R1的f0/0:12.1.1.1/24
PC2:172.16.1.2/24                     R2的f0/0:12.1.1.2/24
條件:1、R1、R2沒有開啟arp代理,PC1設定了閘道器為R1的f0/0介面的ip
      PC1要傳送資料去PC2,(假設PC1填寫了閘道器,這時PC1發的arp包L2層頭部的目的地址就不是廣播了,而是R1的f0/0介面的MAC地址,如果PC1沒有填寫閘道器那麼它將會發送一個L2層目的mac是廣播的arp,這個arp在被R1收到後分兩種情況,R1如果開啟了arp代理,那麼會幫助PC1轉發這個arp廣播包,並回給PC1自己的mac地址,如果沒有開啟arp代理,arp廣播直接丟包),就會發送一個單播arp給R1,R1收到後首先就是檢視有沒有路由,發現有!有一條去往PC2網路的靜態路由,使用的是出介面。路由有了,那麼R1就可以傳送資料了,R1將PC1的arp請求包重新組裝好,在L2層源地址用的是自己f0/1介面的mac,目的地址用的是FFFF.FFFF.FFFF,L3層使用的源ip是自己f0/1口的ip,目的ip是PC2的ip(因為路由器沒有閘道器,所以當R2發現PC2的地址和自己f0/1不是一個網段的時候也和PC機一樣發arp廣播,而不是給R2發單播),這個廣播被R2收到後直接丟棄(R2沒有開arp代理),等於R1直接去請求了PC2的mac地址,不通。
      而如果R1到達PC2的網路靜態路由寫的下一跳(R2的f0/0介面的話),那麼R1會先發arp請求R2f0/0口的mac地址,然後將幫PC1轉發的arp包以單播形式發給R2,R2在根據路由轉發給PC2,完成一次單項通訊,而PC2返回給PC1的資料包是單播arp-offer來完成了PC1和PC2之間的雙向通訊。
      所以這就是為什麼寫下一跳地址比寫出介面更加好,或者是出介面、下一跳同時寫。真是環境中cisco的路由器都是預設開啟了arp代理的,所以都能通。
 
2、IP重定向技術解決arp代理down掉後
SW(config-fi)#ip redirects,cisco預設是都開啟的
此命令是在上面的arp代理例項中當其中一個L3層閘道器與internet的連線down後,再收到PC終端的資料幀後會返回給PC終端一個ICMP的重定向,內容是目的地址的MAC地址(重定向到另外一個閘道器的MAC),使得終端PC立馬更新自己的arp表項繫結目的ip與另外一個閘道器的MAC地址,從而實現切換功能。

3、IRDP冗餘(host無預設閘道器技術)
IRDP是Icmp discovery protocol 利用L2層交換機來替代PC找L3層閘道器MAC地址的技術,該技術需要條件:
L3層執行RIP路由協議(SW監聽rip路由協議)、PC支援IRDP協議(winxp以上的都已經不支援了) ,來達到PC不設閘道器通訊的目的,由於侷限性太大,已經被淘汰。

session 2 閘道器冗餘技術

一、HSRP
      hot standby routing protocol 熱備份路由協議,cisco私有協議。是利用L3層閘道器裝置虛擬一個ip和MAC的閘道器地址供PC使用(arp寫入),來實現閘道器冗餘及故障後快速切換閘道器功能。
      HSRP使用UDP協議來代替傳輸,埠源及目的都是1985,具體格式見圖可以看到使用UDP傳輸的


HSRP協議中L3層裝置發出的三種訊息:
1、hello報文:主路由器傳送優先順序和狀態資訊,預設3s一次。在初次選舉的時候主、從路由器都發送用於比較
2、Coup報文:從路由變為主路由時傳送
3、Resign報文:主路由發現更高優先順序的路由的時候傳送,或者主路由關閉、重啟的時候傳送(斷電不算)
運行了HSRP協議的L3層閘道器所經歷的六中狀態(類似stp)
1、Init or Disable 初始狀態,表示hsrp未執行。修改配置或介面剛啟動時的狀態
2、learn 學習狀態,學習狀態,不知道虛擬IP,未看到活躍路由器發hello。等待活躍路由器發hello
3、listen 監聽狀態,L3層裝置已經得到了虛擬IP地址,但是它既不是活動路由器也不是等待路由器(比如冗餘閘道器有3個,那麼出去主和從的剩下一臺的狀態)。它一直監聽從活動路由器和等待路由器發來的HELLO報文。
4、speak 發言狀態,處於該狀態的路由器定期傳送hello訊息,如果在一定時間內發現了優先順序更高的hello包就轉化為listen狀態
5、standby 備用狀態,從路由器定期傳送hello訊息,檢測活躍主路由器的狀態
6、Active 活躍狀態,定期傳送hello訊息,併為PC提供閘道器服務
HSRP的具體配置命令:
SW(config-if)#standby 10 ip 192.168.1.150 虛擬ip配置在hsrp組10中(MAC自動虛擬出來),需要兩臺L3層裝置都輸入
show stanbdy檢視hsrp的狀態資訊
HSRP選舉活躍閘道器和備用閘道器的選舉依據是:1、優先順序(大),ip地址(大)的被選舉為主路由器
SW(config-if)#standby use-bia   讓HSRP使用真實介面物理MAC地址做虛擬MAC地址給PC,兩臺都要輸入,用處是早期的硬體裝置不支援一個介面上有2個MAC地址,所以只能使用介面真實實體地址。
SW(config-if)#standby 10 priority 150  修改HSRP的優先順序,預設的是100
SW(config-if)#standby 10 preempt  配置搶佔功能,被配置的裝置立馬成為active執行資料轉發(前提是priority高,因為HSRP的特性是一旦備用裝置成了active路由器就不在改變,哪怕主裝置故障修理完畢也不能夠成為active了,所以需要配置搶佔來完成將active搶回來),在專案中建議在active路由器上開啟保證active路由器故障被修好後能夠切換回active路由狀態進行轉發資料。
SW(config-if)#standby 10 authentication md5 cisco  配置HSRP組的認證密碼
SW(config-if)#standby 10 follw cisco 配置HSRP的組名,標識用沒有實際意義
SW(config-if)#standby 10 mac-address 1234.1234.1234  自定義配置虛擬MAC地址
SW(config-if)#standby 10 times 3 10 指定hello包傳送間隔3-10秒預設的是
SW(config-if)#standby 10 times msec 200  指定hello包傳送間隔為200ms
SW(config-if)#standby 10 track f0/1 50 檢測裝置的f0/1狀態,一旦down則將自己的priority減少50(預設是10)。用於主網       關本身沒有down但是連線internet的光纖斷了後,將檢測自己連線internet的埠,一旦down則將自己的priority降低,讓備份閘道器階梯自己完成資料傳輸,配合備用閘道器裝置搶佔使用。(還能track很多東西,比如一個列表數,。在全域性下設定了這個監控的內容就可以檢測跟蹤狀態,包括路由條目、路由度量值、資料延遲等,全域性下的track技術和sla技術非常使用,建議單獨學習,並不是hsrp的重點)。

2、VRRP
VRRP(Virtual Router Redundancy Protocol):虛擬路由冗餘協議
跟HSRP的區別
1、公有標準閘道器冗餘協議
2、虛擬ip地址可以使用介面真實ip地址,虛擬MAC地址是0000.5e00.01XX,其中XX是VRRP組號
當虛擬ip地址設定為一臺閘道器裝置的真實介面ip地址時,這臺裝置的priority會自動被設定為255,成為主閘道器。
3、HSRP選舉結束後是一個active'一個備用,而VRRP是一個master多個備用(也就是說在一個VRRP組中除了master其他的裝置都是backup)。且只有active裝置會發送hello包
4、每一臺路由閘道器的預設priority,預設是100,如果配置為0表示不再是VRRP虛擬組的成員
5、協議號112,組播地址224.0.0.18,預設通告間隔3s,hold=3
6、VRRP預設有搶佔機制,無需單獨配置。
7、HSRP支援直接track跟蹤介面,VRRP不支援直接track跟蹤介面,只支援track呼叫一個工程(object)。這個工程是事先在全域性模式中定義好的工程,該工程的內容是定義一些流量的引數,比如源、目的、ip、路由度量、延遲、語音、視訊資料、協議等引數。(流量工程中知識,在VRRP中不是重點)
8、HSRP的L4層呼叫UDP協議進行傳輸,VRRP自己就是公有協議傳輸不呼叫其他協議傳輸
VRRP的報文結構如下:


9、VRRP只有一種訊息報文:Announcement,當裝置的介面down後,報文中的priority會自動變為0
session 2
VRRP配置命令
SW(config-if)#vrrp 10 authentication
md5 cisco  配置vrrp組的認證密碼
SW(config-if)#vrrp 10 description
v10zu 配置vrrp的組名為v10zu,標識用沒有實際意義
SW(config-if)#vrrp 10 timers advertise
10  指定hello包傳送間隔為10s,預設是1s
SW(config-if)#vrrp 10 track 1 decrement 50
檢測跟蹤一個track工程1,如果失效則priority自動減少50

session 3 GLBP 
GLBP:Gateway Load Balancing Protocol 閘道器負載均衡協議,cisco私有協議
      glbp是將多臺閘道器路由裝置配置成一個組時向用戶提供單一的虛擬ip地址,及最多4個虛擬MAC地址(最多支援4臺可以帶終端轉發資料的閘道器裝置,包括AVG、備用AVG和AVF),讓glbp組中所有的閘道器裝置都能為使用者提供資料轉發,而不在成為備份的空閒裝置。組內所有成員之間使用hello包進行交流,預設3s,holdtime=10s,使用組播地址為224.0.0.102,blbp同hsrp一樣借用L4層UDP協議傳輸,埠322。


在GLBP組中,只有一臺裝置成為AVG(active virtual
       gateway動態虛擬閘道器),另外可以只有一臺裝置作為從AVG。其他路由器作為AFV(active virtualforward動態虛擬轉發裝置),當AVG不可用時備份的AVG會頂替AVG(備用AVG和AVF不衝突,一般情況都是一臺裝置同時是備用AVG和AVF)。在組中AVG的任務是為組中裝置分配虛擬MAC地址(每個組成員一個,最多支援4個),並將這些MAC地址平均的迴應給使用者PC端,使多使用者在傳送資料的時候可以傳送給多個閘道器裝置,從而形成負載均衡(一般AVG也是AVF角色,同時負責MAC地址的分配和資料的轉發)。這些能為使用者提供資料轉發是裝置都叫做AVF。


GLBP支援負載均衡模式:
1、host-dependent 確保主機使用同一個虛擬MAC,已經淘汰
2、round-robin 每次輪流的分配AVF的虛擬MAC地址給終端使用者
3、weighted 權重:終端前往AVF的流量大小取決於AVF自己的wighted值大小,越大的越優先


glbp的狀態:
GLBP最多支援1024虛擬路由和4個虛擬MAC地址,AVG為active狀態
備用AVG為standby狀態,其餘的AVF都為listen狀態,weighted預設為100,最大值為200
AVG的選舉和hsrp一樣通過比較priority值和介面ip地址(大的)來選擇
GLBP中搶佔preempt是預設關閉的,同hsrp一樣需要手動配置,配置了preempt後當AVG故障處理完畢後能夠立即從備用AVG那裡將AVG搶佔回來。


GLBP的配置
R1(config-if)#glbp 10 ?
  authentication  Authentication method                      配置glbp的認證方式,可選MD5或明文,使用鑰匙或鑰匙串

  forwarder       Forwarder configuration                       配置路由器會搶佔成為AVG,優先順序低於priority
  ip              Enable group and set virtual IP address      配置共用的虛擬ip
  load-balancing  Load balancing method                     選擇負載均衡的方式
  name            Redundancy name                                 配置glbp組的名稱
  preempt   Overthrow lower priority designated routers   允許路由器進行AVG搶佔,否則priority再高都不會進行搶佔
  priority        Priority level                                             配置搶佔優先順序,預設為100,大的優先成為active主路由器
  timers          Adjust GLBP timers                                  配置hello時間
  weighting       Gateway weighting and tracking           配置權重

基本配置例項:

R1(config-if)#glbp 10 ip 12.1.1.10                                       配置虛擬ip地址為12.1.1.10
R1(config-if)#glbp 10 authentication md5 key-chain 123    配置md5密文認證,密碼123

R1(config-if)#glbp 10 preempt delay minimum 2                開啟搶佔功能,延遲2s進行搶佔

R1(config-if)#glbp 10 priority 200                                       配置路由器優先順序為200,優先成為主閘道器
R1(config-if)#glbp 10 load-balancing weighted                  配置負載均衡模式為比較weighted

R1(config-if)#glbp 10 weighting 200                                   配置裝置的權重為200,使用者流量優先走R1

拓展配置:
R1(config-if)#glbp 10 weighting track 1 decrement 50        配置權重在track工程1失效時將權重降低50(配置track時才有效)
 
      在實際工程中HSRP、VRRP、GLBP都用的不多,因為無論是hsrp還是vrrp都無法實現負載均衡,只能有一個active裝置進行資料轉發,另外的備用閘道器裝置永遠在閒置(主閘道器無故障的情況下),造成大量的頻寬和費用的浪費。為了解決這個問題衍生了GLBP技術,可以實現在冗餘的前提下形成流量的負載均衡,使得資源得到最大化的利用,但是GLBP在很多實際的案例中都無法很好的工作,比如NAT環境,當配置了GLBP的AVGdown後,那麼nat的outside地址就會從AVG的外網地址變為備用AVG(或其他的AVF)的外網地址,而之前從AVG中nat出去的流量無法再次通過AVG的外網地址nat回來,造成通訊失敗。還有許多ISP的技術都會在這幾種冗餘協議中產生嚴重的問題,所以在實際的工程中都是使用專業的負載均衡裝置來支援網路,尤其是金融、軍事等要求延遲和丟包為0的網路,這幾種技術只是個在簡單的企業網中使用。