天天看點

轉:LACP詳解



原文連結:http://www.jdccie.com/?p=3105

一、LACP簡介

1、LACP協定簡介

基于 IEEE802.3ad 标準的LACP(Link Aggregation Control Protocol,鍊路彙聚控

制協定)是一種實作鍊路動态彙聚與解彙聚的協定。LACP 協定通過LACPDU(Link

Aggregation Control Protocol Data Unit,鍊路彙聚控制協定資料單元)與對端互動資訊。

使能某端口的 LACP 協定後,該端口将通過發送LACPDU 向對端通告自己的系統優

先級、系統MAC、端口優先級、端口号和操作Key。對端接收到這些資訊後,将這些資訊與其它端口所儲存的資訊比較以選擇能夠彙聚的端口,進而雙方可以對端口

加入或退出某個動态彙聚組達成一緻。

2、LACP封包

轉:LACP詳解

主要字段介紹:

Actor_Port/Partner_Port:本端/對端接口資訊。

Actor_State/Partner_State:本端/對端狀态。

Actor_System_Priority/Partner_System_Priority:本端/對端系統優先級。

Actor_System/Partner_System:本端/對端系統ID。

Actor_Key/Partner_Key:本端/對端操作Key,各接口的該值相同才能夠聚合。

Actor_Port_Priority/Partner_Port_Priority:本端/對端接口優先級。

二、鍊路聚合的分類

1、 手工負載分擔模式鍊路聚合

1)手工彙聚概述

手工負載分擔模式是一種最基本的鍊路聚合方式,在該模式下,Eth-Trunk 接口的建

立,成員接口的加入完全由手工來配置,沒有鍊路聚合控制協定的參與。該模式下所有成員接口(selected)都參與資料的轉發,分擔負載流量,是以稱為手工負載分擔模式。手工彙聚端口的 LACP 協定為關閉狀态,禁止使用者使能手工彙聚端口的LACP 協定。

2) 手工彙聚組中的端口狀态

在手工彙聚組中,端口可能處于兩種狀态:Selected 或Standby。處于Selected 狀

态且端口号最小的端口為彙聚組的主端口,其他處于Selected 狀态的端口為彙聚組

的成員端口。

由于裝置所能支援的彙聚組中的最大端口數有限制,如果處于Selected 狀态的端口

數超過裝置所能支援的彙聚組中的最大端口數,系統将按照端口号從小到大的順序

選擇一些端口為Selected 端口,其他則為Standby 端口。

3)手工彙聚對端口配置的要求

一般情況下,手工彙聚對彙聚前的端口速率和雙工模式不作限制。但對于以下情況,

系統會作特殊處理:

對于初始就處于 DOWN 狀态的端口,在彙聚時對端口的速率和雙工模式沒有限制;

對于曾經處于 UP 狀态,并協商或強制指定過端口速率和雙工模式,而目前處于DOWN 狀态的端口,在彙聚時要求速率和雙工模式一緻;

對于一個彙聚組,當彙聚組中某個端口的速率和雙工模式發生改變時,系統不進行解彙聚,彙聚組中的端口也都處于正常工作狀态。但如果是主端口出現速率降低和雙工模式變化,則該端口的轉發可能出現丢包現象。

2、 LACP 協定鍊路聚合

LACP(Link Aggregation Control Protocol)鍊路聚合包含兩種類型:

1) 靜态 LACP 模式鍊路聚合

a)靜态 LACP 模式鍊路聚合簡介

靜态 LACP 模式下,Eth-Trunk 接口的建立,成員接口的加入,都是由手工配置完成的。但與手工負載分擔模式鍊路聚合不同的是,該模式下LACP 協定封包參與活動接口的選擇。也就是說,當把一組接口加入Eth-Trunk 接口後,這些成員接口中哪些接口作為活動接口,哪些接口作為非活動接口還需要經過LACP 協定封包的協商确定。

靜态彙聚端口的 LACP 協定為使能狀态,當一個靜态彙聚組被删除時,其成員端口

将形成一個或多個動态LACP 彙聚,并保持LACP 使能。禁止使用者關閉靜态彙聚端口的LACP 協定。

b)靜态彙聚組中的端口狀态

在靜态彙聚組中,端口可能處于兩種狀态:Selected 或Standby。Selected 端口和

Standby 端口都能收發LACP 協定,但Standby 端口不能轉發使用者封包。

說明:

在一個彙聚組中,處于Selected 狀态且端口号最小的端口為彙聚組的主端口,其他

處于Selected 狀态的端口為彙聚組的成員端口。

在靜态彙聚組中,系統按照以下原則設定端口處于 Selected 或者Standby 狀态:

系統按照端口全雙工/高速率、全雙工/低速率、半雙工/高速率、半雙工/低速率的優先次序,選擇優先次序最高的端口處于Selected 狀态,其他端口則處于Standby 狀态。

與處于 Selected 狀态的最小端口所連接配接的對端裝置不同,或者連接配接的是同一個對端裝置但端口在不同的彙聚組内的端口将處于Standby 狀态。

端口因存在硬體限制(如不能跨闆彙聚)無法彙聚在一起,而無法與處于Selected 狀态的最小端口彙聚的端口将處于Standby 狀态。

與處于 Selected 狀态的最小端口的基本配置不同的端口将處于Standby 狀态。由于裝置所能支援的彙聚組中的 Selected 端口數有限制,如果目前的成員端口數超過了裝置所能支援的最大Selected 端口數,系統将按照端口号從小到大的順序選擇一些端口為Selected 端口,其他則為Standby 端口。

2) 動态 LACP 模式鍊路聚合

a)動态 LACP 模式鍊路聚合簡介

動态 LACP 模式下,Eth-Trunk 接口的建立,成員接口的加入,活動接口的選擇完

全由LACP 協定通過協商完成。這就意味着啟用了動态LACP 協定的兩台直連裝置上,不需要建立Eth-Trunk 接口,也不需要指定哪些接口作為聚合組成員接口,兩台裝置會通過LACP 協商自動完成鍊路的聚合操作。動态 LACP 彙聚是一種系統自動建立/删除的彙聚,不允許使用者增加或删除動态LACP 彙聚中的成員端口。隻有速率和雙工屬性相同、連接配接到同一個裝置、有相同基本配置的端口才能被動态彙聚在一起。即使隻有一個端口也可以建立動态彙聚,此時為單端口彙聚。動态彙聚中,端口的LACP 協定處于使能狀态。

b)動态彙聚組中的端口狀态

在動态彙聚組中,端口可能處于兩種狀态:Selected 或Standby。Selected 端口和

Standby 端口都能收發LACP 協定,但Standby 端口不能轉發使用者封包。由于裝置所能支援的彙聚組中的最大端口數有限制,如果目前的成員端口數量超過了最大端口數的限制,則本端系統和對端系統會進行協商,根據裝置ID 優的一端的

端口ID 的大小,來決定端口的狀态。具體協商步驟如下:

比較裝置 ID(系統優先級+系統MAC 位址)。先比較系統優先級,如果相同再比較系統MAC 位址。裝置ID 小的一端被認為優。

比較端口 ID(端口優先級+端口号)。對于裝置ID 優的一端的各個端口,首先比較端口優先級,如果優先級相同再比較端口号。端口ID 小的端口為

Selected 端口,剩餘端口為Standby 端口。在一個彙聚組中,處于Selected 狀态且端口号最小的端口為彙聚組的主端口,其他處于Selected 狀态的端口為彙聚組的成員端口。

說明:

與手工彙聚組不同的是,在靜态彙聚組和動态彙聚組中,處于 DOWN 的端口為

Standby 狀态。

三、LACP實作原理

1、手工彙聚原理

手工負載分擔模式鍊路聚合是應用比較廣泛的一種鍊路聚合,大多數營運級網絡裝置

均支援該特性,當需要在兩個直連裝置間提供一個較大的鍊路帶寬而對端裝置又不支

持LACP 協定時,可以使用手工負載分擔模式

轉:LACP詳解

說明:

手工負載分擔模式的Eth-Trunk 接口可以聚合不同單闆、不同雙工模式的成員接口。

2、靜态彙聚原理

a)基本概念

靜态LACP 模式鍊路聚合是一種利用LACP 協定進行參數協商選取活動鍊路的聚合模

式。該模式由LACP 協定确定聚合組中的活動和非活動鍊路,又稱為M∶N 模式,即

M 條活動鍊路與N 條備份鍊路的模式。這種模式提供了更高的鍊路可靠性,并且可以

在M 條鍊路中實作不同方式的負載均衡。

轉:LACP詳解

M:N 模式的Eth-Trunk 接口中M 和N 的值可以通過配置活動接口數上限門檻值來确定。

b)系統 LACP 優先級

靜态LACP 模式下,兩端裝置所選擇的活動接口必須保持一緻,否則鍊路聚合組就無法建立。而要想使兩端活動接口保持一緻,可以使其中一端具有更高的優先級,另一端根據高優先級的一端來選擇活動接口即可。系統LACP 優先級就是為了區分兩端優先級的高低而配置的參數。

系統 LACP 優先級值越小優先級越高,預設系統LACP 優先級值為32768。

c)接口 LACP 優先級

接口LACP 優先級是為了差別不同接口被選為活動接口的優先程度。接口LACP 優先級值越小,優先級越高。預設情況下,接口LACP 優先級為32768。

d)靜态模式Eth-Trunk 接口建立過程

靜态模式Eth-Trunk 接口建立過程如下所示:

① 兩端互相發送 LACPDU 封包。

② 兩端裝置根據系統 LACP 優先級确定主動端。

③ 兩端裝置根據接口LACP 優先級确定活動接口,最終以主動端裝置的活動接口确定兩端的活動接口。

e) 互發 LACPDU 封包

在兩端裝置CX-A 和CX-B 上建立Eth-Trunk 接口并配置為靜态LACP 模式,然後向Eth-Trunk 接口中手工加入成員接口。此時成員接口上便啟用了LACP 協定,兩端互相發出LACPDU 封包,如下圖所示。

轉:LACP詳解

f)确定主動端

Eth-Trunk 兩端裝置均會收到對端發來的LACP 封包,根據封包中的優先級字段,确認

活動接口。優先級字段的值越小,優先級越高。

如下圖所示,當CX-B 收到CX-A 發送LACP 封包時,CX-B 會檢視并記錄對端資訊,并且比較系統優先級字段。CX-A 的系統優先級為10,高于CX-B 的系統優先級,是以選擇CX-A 為主動端。此時CX-B 将按照CX-A 的接口優先級選擇活動接口。如果 Eth-Trunk 鍊路兩端裝置的系統優先級一緻,系統将選擇系統ID 字段較小的作為主動端。系統ID 由裝置的MAC 位址産生。

轉:LACP詳解

g)選擇活動接口

選出主動端後,兩端都會以主動端的接口優先級來選擇活動接口。如上圖所示,CX-A 為主動端,CX-A 的接口GE1/0/1、GE1/0/2 的優先級高于接口GE2/0/1,此時接口GE1/0/1、GE1/0/2 被選為活動接口,組成LACP 聚合組,以負載分擔的方式轉發資料。

2、靜态彙聚原理

動态彙聚和靜态彙聚原理類似,隻是動态彙聚中所有端口都是通過協定确定,而不是像靜态彙聚通過協定在指定端口中确定彙聚相關端口。

四、實作細節

1、鍊路聚合控制的相關參數

a)LACP協定如何唯一的辨別聚合組:

系統ID(System ID) ,由“系統優先級+系統MAC位址”組成,其中,之是以要有“系統優先級”,是因為LACP協定中,鍊路聚合兩端裝置扮演不同角色,有了“系統優先級”,管理者可以通過配置幹預角色選舉。

b)端口ID(Port ID):

對于參與鍊路聚合的各個端口,也需要在裝置内部唯一辨別,端口ID由“端口優先級+端口号”組成,之是以需要“端口優先級”,也是因為涉及端口的不同角色選舉

c)Aggregator ID:

在一個裝置上,能進行多組聚合,即有多個Aggregator,為了區分這些Aggregator,給每個Aggregator配置設定了一個聚合ID(Aggregator ID),為一個16位整數

2、端口key

聚合端口中有兩種key:一種是操作key,一種是管理key。

操作key是為形成聚合目前使用的key,管理key是允許管理者對key值進行操作的key。

3、 操作key

在動态LACP聚合中,隻有操作KEY相同的端口才能屬于同一個聚合組,你可以認為操作KEY相同的端口,其屬性相同。

在手工聚合和靜态LACP聚合中,雖然同一個聚合組中的端口的操作KEY不一定相同(因端口由管理者手工加入),但是Selected端口的操作KEY一定相同。

操作Key 是在端口彙聚時,系統根據端口的配置(即速率、雙工、基本配置、管理

Key)生成的一個配置組合。

(1) 對于手工彙聚組和靜态彙聚組,Selected 的端口有相同的操作Key。

(2) 靜态彙聚端口在使能LACP 後,端口的管理Key 與彙聚組ID 相同。

(3) 動态彙聚端口在使能LACP 協定後,其管理Key 預設為零。

(4) 對于動态彙聚組,同組成員一定有相同的操作Key。

4、六要素

a)四個要素:

一個聚合組來說,如果需要進行唯一辨別的話,需要包含四個元素:本端系統ID、本端操作KEY、對端系統ID、對端操作KEY

b)兩個要素:

系統中并不是所有聚合組都包含多個鍊路,為了區分隻包含單個鍊路的聚合組的情況,還需要額外加上兩個元素:本端端口ID和對端端口ID。

c)結論:

這六個元素唯一确定了一個聚合組,稱為聚合組 ID(Link Aggregation Group ID,LAG ID)。如果一個聚合組中包含多個鍊路,那麼LAG ID中,本端端口ID和對端端口ID為0,相當于隻用四元組就可以刻畫包含多個鍊路的聚合組。

5、端口類型:

a)Selectet和Unselected:

參與流量轉發的端口稱為Selected端口,否則稱為Unselected端口

b)主端口(master端口)

處于Selected狀态且端口号最小的端口稱為主端口(Master Port),可以形象的認為,聚合組中的所有端口被彙聚到了主端口,主端口在邏輯上代表了整個聚合組,對于GVRP/GMRP、STP/RSTP/MSTP等二層協定,都隻從主端口發送,其他資料封包則在各個Selected端口間分擔。

c)補充:

由于Selected與Unselected端口在實際狀态下的選取受到硬體的影響,是以不同廠家産品的具體表現形式可能有差異

5、LACP綁定端口

判斷将一個端口綁定到Aggregator的關鍵依據是 LAG ID,判斷方法是:

(1)Aggregator的操作KEY和端口的操作KEY相同。

(2)已經綁定到這個Aggregator的其他端口和這個端口有相同的鍊路LAG ID,即與Aggregator關聯的LAG ID必須和端口的LAG ID相同。

(3) “LAG ID”則指的是聚合組ID( Link Aggregation Group ID),“聚合ID”則指的是Aggregator ID. (LAG ID就是指屬于同一個聚合中的所有port 包括selected 和Standby,對于手工和靜态比較好了解,就是指使用者所指定的所有port,對于動态彙聚,指所有port)

6、端口離開Aggregator

(1)如果Actor端口在一定時間内(使用long timeout時是90s,使用short timeout是3秒)收不到Partner端口發送的LACP封包,就宣告自己處于逾時狀态,如果在下一個short timeout時間(3秒)内還沒有收到Partner的封包,就會離開這個Aggregator。

(2)如果從Partner端口收到的LACP封包,發現LAG ID發生了改變(系統ID或操作KEY發生了變化,系統ID改變說明連接配接到的對端裝置發生了變化,操作KEY發生了變化可能是對端端口的屬性發生了變化),這時端口也會離開這個Aggregator。

(3)還有一種導緻端口離開Aggregator的情況:Actor端口本身的屬性發生了變化,裝置通過動态操作KEY功能給它配置設定的操作KEY發生變化,導緻和Aggregator的LAG ID不比對,進而離開聚合組。

7、Active模式和Passive模式

(1)Active模式下,端口正常周期性的發送LACP封包;

(2)Passive模式下,端口平時不發送LACP封包,不過,一旦收到了對端的LACP封包,就會正常發送LACP封包了。

繼續閱讀