鏈路聚合,是將多個(gè)物理二層鏈路捆綁為一個(gè)邏輯二層鏈路的技術(shù)。不同的廠商有不同的叫法:
- Zte:Smartgroup,簡(jiǎn)稱SG
- Cisco稱作Ether Channel、簡(jiǎn)稱EC
- Brocade稱作Brocade LAG,簡(jiǎn)稱LAG
- 華為,華三:Link Aggregation group,簡(jiǎn)稱LAG,或者Trunk,如果這些接口都是以太網(wǎng)接口,則稱為Eth-Trunk
鏈路聚合解決什么問題
- 增加鏈路帶寬:多個(gè)小帶寬鏈路匯聚為一個(gè)大帶寬鏈路,一般采用負(fù)荷分擔(dān)模式:符合分擔(dān)是基于流來進(jìn)行的,避免亂序。
- 增加鏈路的可靠性:通過冗余的多個(gè)鏈路,一條物理鏈路出問題,不影響整個(gè)邏輯鏈路。
相關(guān)術(shù)語
- **鏈路聚合: ** 將—組物理接口捆綁在一起作為一個(gè)邏輯接口來增加帶寬及可靠性的方法。
- 鏈路聚合組:將若干條物理鏈路捆綁在一起所形成的邏輯鏈路稱之為鏈路聚合組(LAG)或者Trunk。這兒的LAG(Trunk)就是我們所說的邏輯上的二層接口。
-
以太網(wǎng)鏈路聚合組:如果這些被捆綁鏈路都是以太網(wǎng)鏈路,該聚合組被稱為以太網(wǎng)鏈路聚合組,簡(jiǎn)寫為Eth-Trunk。該聚合組接口稱之為Eth-Trunk接口。組成Eth-Trunk的各個(gè)接口稱之為成員接口。
Eth-Trunk接口可以作為普通的以太網(wǎng)接口來使用,它與普通以太網(wǎng)接口的差別只在于:轉(zhuǎn)發(fā)的時(shí)候Eth-Trunk需要從眾多成員接口中選擇一個(gè)或多個(gè)接口來進(jìn)行轉(zhuǎn)發(fā)。所以,除了一些必須在物理接口下配置的特性,可以像配置普通以太網(wǎng)接口那樣配置Eth-Trunk邏輯接口。
注:不能把已有的Eth-Trunk成員接口再捆綁成為其它Eth-Trunk的成員。 -
活動(dòng)接口(Selected)和非活動(dòng)接口(Standby):鏈路聚合存在活動(dòng)接口和非活動(dòng)接口兩種。轉(zhuǎn)發(fā)數(shù)據(jù)的接口稱為活動(dòng)接口,而不轉(zhuǎn)發(fā)數(shù)據(jù)的接口稱為非活動(dòng)接口。
活動(dòng)接口對(duì)應(yīng)的鏈路稱為活動(dòng)鏈路,非活動(dòng)接口對(duì)應(yīng)的鏈路稱為非活動(dòng)鏈路。 - 活動(dòng)接口數(shù)上限閾值:在Eth-Trunk中,如果配置了活動(dòng)接口數(shù)上限閾值,當(dāng)活動(dòng)接口數(shù)達(dá)到這個(gè)值后,再向Eth-Trunk中添加成員接口,不會(huì)增加Eth-Trunk活動(dòng)接口的數(shù)目。
- 活動(dòng)接口數(shù)下限閾值: 設(shè)置活動(dòng)接口數(shù)下限閾值主要目的是保證Eth-Trunk鏈路的帶寬。防止由于活動(dòng)接口數(shù)目過少而使這些鏈路負(fù)載過大,出現(xiàn)傳輸數(shù)據(jù)丟包的情況。在Eth-Trunk中,如果配置了活動(dòng)接口數(shù)下限閾值,當(dāng)活動(dòng)接口數(shù)目低于該值時(shí),Eth-Trunk接口狀態(tài)將變?yōu)镈own,此時(shí)所有Eth-Trunk中的成員接口不再轉(zhuǎn)發(fā)數(shù)據(jù)。
- 備份鏈路:在鏈路聚合中為了提高鏈路的可靠性,引入了備份鏈路的機(jī)制。而這些備份鏈路對(duì)應(yīng)的接口通常情況下?lián)?dāng)了非活動(dòng)接口的角色,只有當(dāng)前活動(dòng)接口出現(xiàn)故障時(shí),備份的接口才可以由非活動(dòng)接口轉(zhuǎn)變?yōu)榛顒?dòng)接口。
-
成員端口間M:N備份:靜態(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ù)載均衡。如圖2所示,兩臺(tái)設(shè)備間有M+N條屬性相同的鏈路,在聚合鏈路上發(fā)送流量時(shí)在M條鏈路上負(fù)載分擔(dān),即主鏈路。不在另外的N條鏈路發(fā)送流量,這N條鏈路提供備份功能,即備份鏈路。此時(shí)鏈路的實(shí)際帶寬為M條鏈路的總和,但是能提供的最大帶寬為M+N的總和。
當(dāng)M條鏈路中有一條鏈路故障時(shí),LACP會(huì)從N條備份鏈路中找出一條正常鏈路替換有故障的鏈路,形成M:N備份。此時(shí)鏈路的實(shí)際帶寬還是M條鏈路的總和,但是能提供的最大帶寬就變?yōu)镸+N-1條鏈路的總和。

這種場(chǎng)景主要應(yīng)用在我們只想向用戶提供M條鏈路的帶寬,同時(shí)又希望提供一定的故障保護(hù)能力。當(dāng)有一條鏈路出現(xiàn)故障時(shí),系統(tǒng)能夠自動(dòng)選擇一條優(yōu)先級(jí)最高且可以使用的鏈路加到當(dāng)前的聚合組中。
如果在備用鏈路中無法找到可以激活的鏈路,并且目前處于Up狀態(tài)的鏈路數(shù)目低于配置活動(dòng)接口數(shù)下限閾值,那么系統(tǒng)將會(huì)把匯聚端口關(guān)閉。

要是鏈路聚合正常工作,首先需要解決的問題是如何確定哪些接口形成一個(gè)邏輯接口(也就是說如何管理一個(gè)匯聚接口的成員接口,包括成員接口的加入、離開、是否參與轉(zhuǎn)發(fā)等)。
鏈路聚合成員接口管理的三種形式
- 手工聚合:管理員手工將多個(gè)鏈路配置為一個(gè)聚合鏈路,這種方式可能出現(xiàn)本端配置了匯聚,對(duì)端沒有配置,從而流量導(dǎo)致環(huán)路等問題。
手工匯聚模式是一種最基本的鏈路聚合方式,在該模式下,匯聚組的創(chuàng)建、成員接口的加入完全由手工來配置,沒有鏈路聚合控制協(xié)議的參與。該模式下所有成員接口(selected)都參與數(shù)據(jù)的轉(zhuǎn)發(fā),分擔(dān)負(fù)載流量,因此稱為手工負(fù)載分擔(dān)模式。手工匯聚端口的 LACP 協(xié)議為關(guān)閉狀態(tài),禁止用戶使能手工匯聚端口的LACP 協(xié)議。
在手工匯聚組中,端口可能處于兩種狀態(tài):Selected 或Standby。處于Selected 狀態(tài)且端口號(hào)最小的端口為匯聚組的主端口,其他處于Selected 狀態(tài)的端口為匯聚組的**成員端口。 **
由于設(shè)備所能支持的匯聚組中的最大端口數(shù)有限制,如果處于Selected 狀態(tài)的端口數(shù)超過設(shè)備所能支持的匯聚組中的最大端口數(shù),系統(tǒng)將按照端口號(hào)從小到大的順序選擇一些端口為Selected 端口,其他則為Standby 端口。(M:N備份模式)
- 靜態(tài)LACP聚合:與手工聚合類似,管理員指定哪些接口加入?yún)R聚鏈路,但同時(shí)啟用LACP協(xié)議。
靜態(tài) LACP模式下,匯聚組的創(chuàng)建、成員接口的加入,都是由手工配置完成的。但與手工負(fù)載分擔(dān)模式鏈路聚合不同的是,該模式下LACP協(xié)議報(bào)文參與活動(dòng)接口的選擇。也就是說,當(dāng)把一組接口加入?yún)R聚組,這些成員接口中哪些接口作為活動(dòng)接口,哪些接口作為非活動(dòng)接口還需要經(jīng)過LACP 協(xié)議報(bào)文的協(xié)商確定。
靜態(tài)LACP由協(xié)議確定聚合組中的活動(dòng)和非活動(dòng)鏈路,又稱為M:N模式,即M條活動(dòng)鏈路與N條備份鏈路的模式。這種模式提供了更高的鏈路可靠性,并且可以在M 條鏈路中實(shí)現(xiàn)不同方式的負(fù)載均衡。M:N模式的聚合組中M和N的值可以通過配置活動(dòng)接口數(shù)上限閾值來確定。
- 動(dòng)態(tài)LACP聚合:通過LACP協(xié)議決定將那些鏈路聚合。
LACP根據(jù)設(shè)備端口的配置(即速率、雙工、基本配置、管理Key)形成聚合鏈路并啟動(dòng)聚合鏈路收發(fā)數(shù)據(jù)。聚合鏈路形成后,LACP負(fù)責(zé)維護(hù)鏈路狀態(tài),在聚合條件發(fā)生變化時(shí),自動(dòng)調(diào)整或解散鏈路聚合,從而使兩端設(shè)備對(duì)端口加入或退出某個(gè)動(dòng)態(tài)匯聚組達(dá)成一致。
動(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)。
端口使能動(dòng)態(tài)LACP協(xié)議只需要在端口上使能LACP就可以了,不必為端口指定匯聚組,使能動(dòng)態(tài)LACP協(xié)議的端口需要自己尋找動(dòng)態(tài)匯聚組,如果找到了與自己信息(包括自己的對(duì)端信息)一致的匯聚組,直接加入;如果沒有找到與自己信息一致的匯聚組,創(chuàng)建一個(gè)新的匯聚組。
鏈路聚合的接口要求
由于最終的匯聚鏈路表現(xiàn)為一個(gè)邏輯上的二層鏈路,所以整個(gè)邏輯鏈路需要有相同的二層配置,否則聚合鏈路的工作可能會(huì)出現(xiàn)混亂。這些配置包括:
- STP配置
- QOS配置
- VLAN配置
- 鏈路類型:Access,Trunk,Hybrid
- 端口速率,全雙工模式
工作原理:
七層模型中的位置
根據(jù)IEEE,鏈路層分為兩個(gè)子層,MAC和LLC:
- MAC:媒體訪問控制子層:這一層與物理層密切相關(guān),比如以太網(wǎng)和令牌環(huán)網(wǎng)絡(luò),其MAC層的實(shí)現(xiàn)時(shí)完全不同的。
- LLC:邏輯鏈路控制子層:這一層則是獨(dú)立的,與物理層關(guān)系不大,用來提供鏈路的聚合等邏輯功能。鏈路聚合工作在這一層。(在沒有鏈路匯聚等功能時(shí),LLC這一層并不是必須的,可以裁剪)


鏈路聚合的控制面協(xié)議 - LACP
LACP為交換數(shù)據(jù)的設(shè)備提供一種標(biāo)準(zhǔn)的協(xié)商方式,以供系統(tǒng)根據(jù)自身配置自動(dòng)形成聚合鏈路并啟動(dòng)聚合鏈路收發(fā)數(shù)據(jù)。聚合鏈路形成以后,負(fù)責(zé)維護(hù)鏈路狀態(tài)。在聚合條件發(fā)生變化時(shí),自動(dòng)調(diào)整或解散鏈路聚合。LACP工作的基本流程如下:
-
鄰居發(fā)現(xiàn):在設(shè)備SwitchA和SwitchB上創(chuàng)建Eth-Trunk并配置為靜態(tài)LACP模式,然后向Eth-Trunk中手工加入成員接口。此時(shí)成員接口上便啟用了LACP協(xié)議,兩端互相發(fā)出LACPDU報(bào)文。
1. 鄰居發(fā)現(xiàn) -
確定主動(dòng)端:兩端設(shè)備均會(huì)收到對(duì)端發(fā)來的LACP報(bào)文。以SwitchB為例,當(dāng)SwitchB收到SwitchA發(fā)送的LACP報(bào)文時(shí),SwitchB會(huì)查看并記錄對(duì)端信息,并且比較系統(tǒng)優(yōu)先級(jí)字段,如果對(duì)端設(shè)備SwitchA的系統(tǒng)優(yōu)先級(jí)高于本端設(shè)備SwitchB的系統(tǒng)優(yōu)先級(jí),則確定SwitchA為L(zhǎng)ACP主動(dòng)端,SwitchB將按照SwitchA的接口優(yōu)先級(jí)選擇活動(dòng)接口,從而兩端設(shè)備對(duì)于活動(dòng)接口的選擇達(dá)成一致。
2. 確定主動(dòng)端 -
確定活動(dòng)端口:兩端設(shè)備選出主動(dòng)端后,兩端都會(huì)以主動(dòng)端的接口優(yōu)先級(jí)來選擇活動(dòng)接口。兩端設(shè)備選擇了一致的活動(dòng)接口,活動(dòng)鏈路組便可以建立起來,從這些活動(dòng)鏈路中以負(fù)載分擔(dān)的方式轉(zhuǎn)發(fā)數(shù)據(jù)。
3. 確定活動(dòng)端口的全過程
4.** 鏈路的保護(hù)與切換:**
- 切換時(shí)機(jī):靜態(tài)模式鏈路聚合組兩端設(shè)備中任何一端檢測(cè)到以下事件,都會(huì)觸發(fā)聚合組的鏈路切換:
- 鏈路Down事件。
- ETH-OAM檢測(cè)到鏈路失效。LACP協(xié)議發(fā)現(xiàn)鏈路故障。接口不可用。
- 在使能了LACP搶占前提下,更改備份接口的優(yōu)先級(jí)高于當(dāng)前活動(dòng)接口的優(yōu)先級(jí)后,會(huì)發(fā)生切換的過程。
- 切換流程:當(dāng)滿足上述切換條件其中之一時(shí),按照如下步驟進(jìn)行切換:
關(guān)閉故障鏈路。
從N條備份鏈路中選擇優(yōu)先級(jí)最高的鏈路接替活動(dòng)鏈路中的故障鏈路。
優(yōu)先級(jí)最高的備份鏈路轉(zhuǎn)為活動(dòng)狀態(tài)并轉(zhuǎn)發(fā)數(shù)據(jù),完成切換。
鏈路搶占:使能LACP搶占后,聚合組會(huì)始終保持高優(yōu)先級(jí)的接口作為活動(dòng)接口的狀態(tài)。如下圖所示,GE1/0/1、GE1/0/2和GE1/0/3為Eth-Trunk 1的成員接口,活動(dòng)接口數(shù)最大上限閾值為2,配置GE1/0/1和GE1/0/2接口的LACP優(yōu)先級(jí)分別為9和10,GE1/0/3保持缺省接口LACP優(yōu)先級(jí)。當(dāng)通過LACP協(xié)議協(xié)商完畢后,GE1/0/1、GE1/0/2接口因?yàn)閮?yōu)先級(jí)較高被選作活動(dòng)接口,GE1/0/3接口成為備份接口。

以下兩種情況需要使能LACP的搶占功能。
GE1/0/1接口出現(xiàn)故障而后又恢復(fù)了正常。當(dāng)接口GE1/0/1出現(xiàn)故障時(shí)被GE1/0/3所取代,如果在Eth-Trunk接口下未使能搶占,則故障恢復(fù)時(shí)GE1/0/1仍然保持備份接口狀態(tài);如果使能了LACP搶占,當(dāng)GE1/0/1故障恢復(fù)時(shí)可以重新成為活動(dòng)接口,GE1/0/3再次成為備份接口。
如果用戶希望GE1/0/3接口替換GE1/0/1、GE1/0/2中的一個(gè)接口成為活動(dòng)接口,可以通過更改GE1/0/3的接口LACP優(yōu)先級(jí)為8或更小的數(shù)值來實(shí)現(xiàn),但前提條件是已經(jīng)使能了LACP搶占功能。如果沒有使能LACP搶占功能,即使將備份接口的優(yōu)先級(jí)調(diào)整為高于當(dāng)前活動(dòng)接口的優(yōu)先級(jí),系統(tǒng)也不會(huì)進(jìn)行重新選擇活動(dòng)接口的過程,不切換活動(dòng)接口。
搶占延時(shí)的概念:LACP搶占發(fā)生時(shí),處于備用狀態(tài)的鏈路將會(huì)等待一段時(shí)間后再切換到轉(zhuǎn)發(fā)狀態(tài),這就是搶占延時(shí)。搶占延時(shí)是一個(gè)可配置的值,默認(rèn)為30s,可配置范圍為10s~180s。
配置搶占延時(shí)是為了避免由于某些鏈路狀態(tài)頻繁變化而導(dǎo)致整個(gè)Eth-Trunk數(shù)據(jù)傳輸不穩(wěn)定。如圖8所示,GE1/0/1由于鏈路故障切換為非活動(dòng)接口,此后該鏈路又恢復(fù)了正常。由于系統(tǒng)使能了LACP搶占,經(jīng)過搶占延時(shí)后,GE1/0/1會(huì)重新切換到活動(dòng)狀態(tài)。


