转:LACP详解
?
?
原文鏈接:http://www.jdccie.com/?p=3105
一、LACP簡(jiǎn)介
1、LACP協(xié)議簡(jiǎn)介
基于 IEEE802.3ad 標(biāo)準(zhǔn)的LACP(Link Aggregation Control Protocol,鏈路匯聚控
制協(xié)議)是一種實(shí)現(xiàn)鏈路動(dòng)態(tài)匯聚與解匯聚的協(xié)議。LACP 協(xié)議通過(guò)LACPDU(Link
Aggregation Control Protocol Data Unit,鏈路匯聚控制協(xié)議數(shù)據(jù)單元)與對(duì)端交互信息。
使能某端口的 LACP 協(xié)議后,該端口將通過(guò)發(fā)送LACPDU 向?qū)Χ送ǜ孀约旱南到y(tǒng)優(yōu)
先級(jí)、系統(tǒng)MAC、端口優(yōu)先級(jí)、端口號(hào)和操作Key。對(duì)端接收到這些信息后,將這些信息與其它端口所保存的信息比較以選擇能夠匯聚的端口,從而雙方可以對(duì)端口
加入或退出某個(gè)動(dòng)態(tài)匯聚組達(dá)成一致。
2、LACP報(bào)文
主要字段介紹:
Actor_Port/Partner_Port:本端/對(duì)端接口信息。
Actor_State/Partner_State:本端/對(duì)端狀態(tài)。
Actor_System_Priority/Partner_System_Priority:本端/對(duì)端系統(tǒng)優(yōu)先級(jí)。
Actor_System/Partner_System:本端/對(duì)端系統(tǒng)ID。
Actor_Key/Partner_Key:本端/對(duì)端操作Key,各接口的該值相同才能夠聚合。
Actor_Port_Priority/Partner_Port_Priority:本端/對(duì)端接口優(yōu)先級(jí)。
二、鏈路聚合的分類
1、 手工負(fù)載分擔(dān)模式鏈路聚合
1)手工匯聚概述
手工負(fù)載分擔(dān)模式是一種最基本的鏈路聚合方式,在該模式下,Eth-Trunk 接口的建
立,成員接口的加入完全由手工來(lái)配置,沒有鏈路聚合控制協(xié)議的參與。該模式下所有成員接口(selected)都參與數(shù)據(jù)的轉(zhuǎn)發(fā),分擔(dān)負(fù)載流量,因此稱為手工負(fù)載分擔(dān)模式。手工匯聚端口的 LACP 協(xié)議為關(guān)閉狀態(tài),禁止用戶使能手工匯聚端口的LACP 協(xié)議。
2) 手工匯聚組中的端口狀態(tài)
在手工匯聚組中,端口可能處于兩種狀態(tài):Selected 或Standby。處于Selected 狀
態(tài)且端口號(hào)最小的端口為匯聚組的主端口,其他處于Selected 狀態(tài)的端口為匯聚組
的成員端口。
由于設(shè)備所能支持的匯聚組中的最大端口數(shù)有限制,如果處于Selected 狀態(tài)的端口
數(shù)超過(guò)設(shè)備所能支持的匯聚組中的最大端口數(shù),系統(tǒng)將按照端口號(hào)從小到大的順序
選擇一些端口為Selected 端口,其他則為Standby 端口。
3)手工匯聚對(duì)端口配置的要求
一般情況下,手工匯聚對(duì)匯聚前的端口速率和雙工模式不作限制。但對(duì)于以下情況,
系統(tǒng)會(huì)作特殊處理:
對(duì)于初始就處于 DOWN 狀態(tài)的端口,在匯聚時(shí)對(duì)端口的速率和雙工模式?jīng)]有限制;
對(duì)于曾經(jīng)處于 UP 狀態(tài),并協(xié)商或強(qiáng)制指定過(guò)端口速率和雙工模式,而當(dāng)前處于DOWN 狀態(tài)的端口,在匯聚時(shí)要求速率和雙工模式一致;
對(duì)于一個(gè)匯聚組,當(dāng)匯聚組中某個(gè)端口的速率和雙工模式發(fā)生改變時(shí),系統(tǒng)不進(jìn)行解匯聚,匯聚組中的端口也都處于正常工作狀態(tài)。但如果是主端口出現(xiàn)速率降低和雙工模式變化,則該端口的轉(zhuǎn)發(fā)可能出現(xiàn)丟包現(xiàn)象。
2、 LACP 協(xié)議鏈路聚合
LACP(Link Aggregation Control Protocol)鏈路聚合包含兩種類型:
1) 靜態(tài) LACP 模式鏈路聚合
a)靜態(tài) LACP 模式鏈路聚合簡(jiǎn)介
靜態(tài) LACP 模式下,Eth-Trunk 接口的建立,成員接口的加入,都是由手工配置完成的。但與手工負(fù)載分擔(dān)模式鏈路聚合不同的是,該模式下LACP 協(xié)議報(bào)文參與活動(dòng)接口的選擇。也就是說(shuō),當(dāng)把一組接口加入Eth-Trunk 接口后,這些成員接口中哪些接口作為活動(dòng)接口,哪些接口作為非活動(dòng)接口還需要經(jīng)過(guò)LACP 協(xié)議報(bào)文的協(xié)商確定。
靜態(tài)匯聚端口的 LACP 協(xié)議為使能狀態(tài),當(dāng)一個(gè)靜態(tài)匯聚組被刪除時(shí),其成員端口
將形成一個(gè)或多個(gè)動(dòng)態(tài)LACP 匯聚,并保持LACP 使能。禁止用戶關(guān)閉靜態(tài)匯聚端口的LACP 協(xié)議。
b)靜態(tài)匯聚組中的端口狀態(tài)
在靜態(tài)匯聚組中,端口可能處于兩種狀態(tài):Selected 或Standby。Selected 端口和
Standby 端口都能收發(fā)LACP 協(xié)議,但Standby 端口不能轉(zhuǎn)發(fā)用戶報(bào)文。
說(shuō)明:
在一個(gè)匯聚組中,處于Selected 狀態(tài)且端口號(hào)最小的端口為匯聚組的主端口,其他
處于Selected 狀態(tài)的端口為匯聚組的成員端口。
在靜態(tài)匯聚組中,系統(tǒng)按照以下原則設(shè)置端口處于 Selected 或者Standby 狀態(tài):
系統(tǒng)按照端口全雙工/高速率、全雙工/低速率、半雙工/高速率、半雙工/低速率的優(yōu)先次序,選擇優(yōu)先次序最高的端口處于Selected 狀態(tài),其他端口則處于Standby 狀態(tài)。
與處于 Selected 狀態(tài)的最小端口所連接的對(duì)端設(shè)備不同,或者連接的是同一個(gè)對(duì)端設(shè)備但端口在不同的匯聚組內(nèi)的端口將處于Standby 狀態(tài)。
端口因存在硬件限制(如不能跨板匯聚)無(wú)法匯聚在一起,而無(wú)法與處于Selected 狀態(tài)的最小端口匯聚的端口將處于Standby 狀態(tài)。
與處于 Selected 狀態(tài)的最小端口的基本配置不同的端口將處于Standby 狀態(tài)。由于設(shè)備所能支持的匯聚組中的 Selected 端口數(shù)有限制,如果當(dāng)前的成員端口數(shù)超過(guò)了設(shè)備所能支持的最大Selected 端口數(shù),系統(tǒng)將按照端口號(hào)從小到大的順序選擇一些端口為Selected 端口,其他則為Standby 端口。
2) 動(dòng)態(tài) LACP 模式鏈路聚合
a)動(dòng)態(tài) LACP 模式鏈路聚合簡(jiǎn)介
動(dòng)態(tài) LACP 模式下,Eth-Trunk 接口的建立,成員接口的加入,活動(dòng)接口的選擇完
全由LACP 協(xié)議通過(guò)協(xié)商完成。這就意味著啟用了動(dòng)態(tài)LACP 協(xié)議的兩臺(tái)直連設(shè)備上,不需要?jiǎng)?chuàng)建Eth-Trunk 接口,也不需要指定哪些接口作為聚合組成員接口,兩臺(tái)設(shè)備會(huì)通過(guò)LACP 協(xié)商自動(dòng)完成鏈路的聚合操作。動(dòng)態(tài) LACP 匯聚是一種系統(tǒng)自動(dòng)創(chuàng)建/刪除的匯聚,不允許用戶增加或刪除動(dòng)態(tài)LACP 匯聚中的成員端口。只有速率和雙工屬性相同、連接到同一個(gè)設(shè)備、有相同基本配置的端口才能被動(dòng)態(tài)匯聚在一起。即使只有一個(gè)端口也可以創(chuàng)建動(dòng)態(tài)匯聚,此時(shí)為單端口匯聚。動(dòng)態(tài)匯聚中,端口的LACP 協(xié)議處于使能狀態(tài)。
b)動(dòng)態(tài)匯聚組中的端口狀態(tài)
在動(dòng)態(tài)匯聚組中,端口可能處于兩種狀態(tài):Selected 或Standby。Selected 端口和
Standby 端口都能收發(fā)LACP 協(xié)議,但Standby 端口不能轉(zhuǎn)發(fā)用戶報(bào)文。由于設(shè)備所能支持的匯聚組中的最大端口數(shù)有限制,如果當(dāng)前的成員端口數(shù)量超過(guò)了最大端口數(shù)的限制,則本端系統(tǒng)和對(duì)端系統(tǒng)會(huì)進(jìn)行協(xié)商,根據(jù)設(shè)備ID 優(yōu)的一端的
端口ID 的大小,來(lái)決定端口的狀態(tài)。具體協(xié)商步驟如下:
比較設(shè)備 ID(系統(tǒng)優(yōu)先級(jí)+系統(tǒng)MAC 地址)。先比較系統(tǒng)優(yōu)先級(jí),如果相同再比較系統(tǒng)MAC 地址。設(shè)備ID 小的一端被認(rèn)為優(yōu)。
比較端口 ID(端口優(yōu)先級(jí)+端口號(hào))。對(duì)于設(shè)備ID 優(yōu)的一端的各個(gè)端口,首先比較端口優(yōu)先級(jí),如果優(yōu)先級(jí)相同再比較端口號(hào)。端口ID 小的端口為
Selected 端口,剩余端口為Standby 端口。在一個(gè)匯聚組中,處于Selected 狀態(tài)且端口號(hào)最小的端口為匯聚組的主端口,其他處于Selected 狀態(tài)的端口為匯聚組的成員端口。
說(shuō)明:
與手工匯聚組不同的是,在靜態(tài)匯聚組和動(dòng)態(tài)匯聚組中,處于 DOWN 的端口為
Standby 狀態(tài)。
三、LACP實(shí)現(xiàn)原理
1、手工匯聚原理
手工負(fù)載分擔(dān)模式鏈路聚合是應(yīng)用比較廣泛的一種鏈路聚合,大多數(shù)運(yùn)營(yíng)級(jí)網(wǎng)絡(luò)設(shè)備
均支持該特性,當(dāng)需要在兩個(gè)直連設(shè)備間提供一個(gè)較大的鏈路帶寬而對(duì)端設(shè)備又不支
持LACP 協(xié)議時(shí),可以使用手工負(fù)載分擔(dān)模式
說(shuō)明:
手工負(fù)載分擔(dān)模式的Eth-Trunk 接口可以聚合不同單板、不同雙工模式的成員接口。
2、靜態(tài)匯聚原理
a)基本概念
靜態(tài)LACP 模式鏈路聚合是一種利用LACP 協(xié)議進(jìn)行參數(shù)協(xié)商選取活動(dòng)鏈路的聚合模
式。該模式由LACP 協(xié)議確定聚合組中的活動(dòng)和非活動(dòng)鏈路,又稱為M∶N 模式,即
M 條活動(dòng)鏈路與N 條備份鏈路的模式。這種模式提供了更高的鏈路可靠性,并且可以
在M 條鏈路中實(shí)現(xiàn)不同方式的負(fù)載均衡。
M:N 模式的Eth-Trunk 接口中M 和N 的值可以通過(guò)配置活動(dòng)接口數(shù)上限閾值來(lái)確定。
b)系統(tǒng) LACP 優(yōu)先級(jí)
靜態(tài)LACP 模式下,兩端設(shè)備所選擇的活動(dòng)接口必須保持一致,否則鏈路聚合組就無(wú)法建立。而要想使兩端活動(dòng)接口保持一致,可以使其中一端具有更高的優(yōu)先級(jí),另一端根據(jù)高優(yōu)先級(jí)的一端來(lái)選擇活動(dòng)接口即可。系統(tǒng)LACP 優(yōu)先級(jí)就是為了區(qū)分兩端優(yōu)先級(jí)的高低而配置的參數(shù)。
系統(tǒng) LACP 優(yōu)先級(jí)值越小優(yōu)先級(jí)越高,缺省系統(tǒng)LACP 優(yōu)先級(jí)值為32768。
c)接口 LACP 優(yōu)先級(jí)
接口LACP 優(yōu)先級(jí)是為了區(qū)別不同接口被選為活動(dòng)接口的優(yōu)先程度。接口LACP 優(yōu)先級(jí)值越小,優(yōu)先級(jí)越高。缺省情況下,接口LACP 優(yōu)先級(jí)為32768。
d)靜態(tài)模式Eth-Trunk 接口建立過(guò)程
靜態(tài)模式Eth-Trunk 接口建立過(guò)程如下所示:
① 兩端互相發(fā)送 LACPDU 報(bào)文。
② 兩端設(shè)備根據(jù)系統(tǒng) LACP 優(yōu)先級(jí)確定主動(dòng)端。
③ 兩端設(shè)備根據(jù)接口LACP 優(yōu)先級(jí)確定活動(dòng)接口,最終以主動(dòng)端設(shè)備的活動(dòng)接口確定兩端的活動(dòng)接口。
e) 互發(fā) LACPDU 報(bào)文
在兩端設(shè)備CX-A 和CX-B 上創(chuàng)建Eth-Trunk 接口并配置為靜態(tài)LACP 模式,然后向Eth-Trunk 接口中手工加入成員接口。此時(shí)成員接口上便啟用了LACP 協(xié)議,兩端互相發(fā)出LACPDU 報(bào)文,如下圖所示。
f)確定主動(dòng)端
Eth-Trunk 兩端設(shè)備均會(huì)收到對(duì)端發(fā)來(lái)的LACP 報(bào)文,根據(jù)報(bào)文中的優(yōu)先級(jí)字段,確認(rèn)
活動(dòng)接口。優(yōu)先級(jí)字段的值越小,優(yōu)先級(jí)越高。
如下圖所示,當(dāng)CX-B 收到CX-A 發(fā)送LACP 報(bào)文時(shí),CX-B 會(huì)查看并記錄對(duì)端信息,并且比較系統(tǒng)優(yōu)先級(jí)字段。CX-A 的系統(tǒng)優(yōu)先級(jí)為10,高于CX-B 的系統(tǒng)優(yōu)先級(jí),所以選擇CX-A 為主動(dòng)端。此時(shí)CX-B 將按照CX-A 的接口優(yōu)先級(jí)選擇活動(dòng)接口。如果 Eth-Trunk 鏈路兩端設(shè)備的系統(tǒng)優(yōu)先級(jí)一致,系統(tǒng)將選擇系統(tǒng)ID 字段較小的作為主動(dòng)端。系統(tǒng)ID 由設(shè)備的MAC 地址產(chǎn)生。
g)選擇活動(dòng)接口
選出主動(dòng)端后,兩端都會(huì)以主動(dòng)端的接口優(yōu)先級(jí)來(lái)選擇活動(dòng)接口。如上圖所示,CX-A 為主動(dòng)端,CX-A 的接口GE1/0/1、GE1/0/2 的優(yōu)先級(jí)高于接口GE2/0/1,此時(shí)接口GE1/0/1、GE1/0/2 被選為活動(dòng)接口,組成LACP 聚合組,以負(fù)載分擔(dān)的方式轉(zhuǎn)發(fā)數(shù)據(jù)。
2、靜態(tài)匯聚原理
動(dòng)態(tài)匯聚和靜態(tài)匯聚原理類似,只是動(dòng)態(tài)匯聚中所有端口都是通過(guò)協(xié)議確定,而不是像靜態(tài)匯聚通過(guò)協(xié)議在指定端口中確定匯聚相關(guān)端口。
四、實(shí)現(xiàn)細(xì)節(jié)
1、鏈路聚合控制的相關(guān)參數(shù)
a)LACP協(xié)議如何唯一的標(biāo)識(shí)聚合組:
系統(tǒng)ID(System ID) ,由“系統(tǒng)優(yōu)先級(jí)+系統(tǒng)MAC地址”組成,其中,之所以要有“系統(tǒng)優(yōu)先級(jí)”,是因?yàn)長(zhǎng)ACP協(xié)議中,鏈路聚合兩端設(shè)備扮演不同角色,有了“系統(tǒng)優(yōu)先級(jí)”,管理員可以通過(guò)配置干預(yù)角色選舉。
b)端口ID(Port ID):
對(duì)于參與鏈路聚合的各個(gè)端口,也需要在設(shè)備內(nèi)部唯一標(biāo)識(shí),端口ID由“端口優(yōu)先級(jí)+端口號(hào)”組成,之所以需要“端口優(yōu)先級(jí)”,也是因?yàn)樯婕岸丝诘牟煌巧x舉
c)Aggregator ID:
在一個(gè)設(shè)備上,能進(jìn)行多組聚合,即有多個(gè)Aggregator,為了區(qū)分這些Aggregator,給每個(gè)Aggregator分配了一個(gè)聚合ID(Aggregator ID),為一個(gè)16位整數(shù)
2、端口key
聚合端口中有兩種key:一種是操作key,一種是管理key。
操作key是為形成聚合當(dāng)前使用的key,管理key是允許管理者對(duì)key值進(jìn)行操作的key。
3、 操作key
在動(dòng)態(tài)LACP聚合中,只有操作KEY相同的端口才能屬于同一個(gè)聚合組,你可以認(rèn)為操作KEY相同的端口,其屬性相同。
在手工聚合和靜態(tài)LACP聚合中,雖然同一個(gè)聚合組中的端口的操作KEY不一定相同(因端口由管理員手工加入),但是Selected端口的操作KEY一定相同。
操作Key 是在端口匯聚時(shí),系統(tǒng)根據(jù)端口的配置(即速率、雙工、基本配置、管理
Key)生成的一個(gè)配置組合。
(1) 對(duì)于手工匯聚組和靜態(tài)匯聚組,Selected 的端口有相同的操作Key。
(2) 靜態(tài)匯聚端口在使能LACP 后,端口的管理Key 與匯聚組ID 相同。
(3) 動(dòng)態(tài)匯聚端口在使能LACP 協(xié)議后,其管理Key 缺省為零。
(4) 對(duì)于動(dòng)態(tài)匯聚組,同組成員一定有相同的操作Key。
4、六要素
a)四個(gè)要素:
一個(gè)聚合組來(lái)說(shuō),如果需要進(jìn)行唯一標(biāo)識(shí)的話,需要包含四個(gè)元素:本端系統(tǒng)ID、本端操作KEY、對(duì)端系統(tǒng)ID、對(duì)端操作KEY
b)兩個(gè)要素:
系統(tǒng)中并不是所有聚合組都包含多個(gè)鏈路,為了區(qū)分只包含單個(gè)鏈路的聚合組的情況,還需要額外加上兩個(gè)元素:本端端口ID和對(duì)端端口ID。
c)結(jié)論:
這六個(gè)元素唯一確定了一個(gè)聚合組,稱為聚合組 ID(Link Aggregation Group ID,LAG ID)。如果一個(gè)聚合組中包含多個(gè)鏈路,那么LAG ID中,本端端口ID和對(duì)端端口ID為0,相當(dāng)于只用四元組就可以刻畫包含多個(gè)鏈路的聚合組。
5、端口類型:
a)Selectet和Unselected:
參與流量轉(zhuǎn)發(fā)的端口稱為Selected端口,否則稱為Unselected端口
b)主端口(master端口)
處于Selected狀態(tài)且端口號(hào)最小的端口稱為主端口(Master Port),可以形象的認(rèn)為,聚合組中的所有端口被匯聚到了主端口,主端口在邏輯上代表了整個(gè)聚合組,對(duì)于GVRP/GMRP、STP/RSTP/MSTP等二層協(xié)議,都只從主端口發(fā)送,其他數(shù)據(jù)報(bào)文則在各個(gè)Selected端口間分擔(dān)。
c)補(bǔ)充:
由于Selected與Unselected端口在實(shí)際狀態(tài)下的選取受到硬件的影響,所以不同廠家產(chǎn)品的具體表現(xiàn)形式可能有差異
5、LACP綁定端口
判斷將一個(gè)端口綁定到Aggregator的關(guān)鍵依據(jù)是 LAG ID,判斷方法是:
(1)Aggregator的操作KEY和端口的操作KEY相同。
(2)已經(jīng)綁定到這個(gè)Aggregator的其他端口和這個(gè)端口有相同的鏈路LAG ID,即與Aggregator關(guān)聯(lián)的LAG ID必須和端口的LAG ID相同。
(3) “LAG ID”則指的是聚合組ID( Link Aggregation Group ID),“聚合ID”則指的是Aggregator ID. (LAG ID就是指屬于同一個(gè)聚合中的所有port 包括selected 和Standby,對(duì)于手工和靜態(tài)比較好理解,就是指用戶所指定的所有port,對(duì)于動(dòng)態(tài)匯聚,指所有port)
6、端口離開Aggregator
(1)如果Actor端口在一定時(shí)間內(nèi)(使用long timeout時(shí)是90s,使用short timeout是3秒)收不到Partner端口發(fā)送的LACP報(bào)文,就宣告自己處于超時(shí)狀態(tài),如果在下一個(gè)short timeout時(shí)間(3秒)內(nèi)還沒有收到Partner的報(bào)文,就會(huì)離開這個(gè)Aggregator。
(2)如果從Partner端口收到的LACP報(bào)文,發(fā)現(xiàn)LAG ID發(fā)生了改變(系統(tǒng)ID或操作KEY發(fā)生了變化,系統(tǒng)ID改變說(shuō)明連接到的對(duì)端設(shè)備發(fā)生了變化,操作KEY發(fā)生了變化可能是對(duì)端端口的屬性發(fā)生了變化),這時(shí)端口也會(huì)離開這個(gè)Aggregator。
(3)還有一種導(dǎo)致端口離開Aggregator的情況:Actor端口本身的屬性發(fā)生了變化,設(shè)備通過(guò)動(dòng)態(tài)操作KEY功能給它分配的操作KEY發(fā)生變化,導(dǎo)致和Aggregator的LAG ID不匹配,從而離開聚合組。
7、Active模式和Passive模式
(1)Active模式下,端口正常周期性的發(fā)送LACP報(bào)文;
(2)Passive模式下,端口平時(shí)不發(fā)送LACP報(bào)文,不過(guò),一旦收到了對(duì)端的LACP報(bào)文,就會(huì)正常發(fā)送LACP報(bào)文了。
總結(jié)
- 上一篇: java开机自动运行,怎么用java实现
- 下一篇: C语言——结构体