【太閣課堂】對(duì)鏈路聚合Eth-Trunk最佳總結(jié)!
鏈路聚合簡介
以太網(wǎng)鏈路聚合Eth-Trunk簡稱鏈路聚合,它通過將多條以太網(wǎng)物理鏈路捆綁在一起成為一條邏輯鏈路,從而實(shí)現(xiàn)增加鏈路帶寬的目的。同時(shí),這些捆綁在一起的鏈路通過相互間的動(dòng)態(tài)備份,可以有效地提高鏈路的可靠性。
目的:
隨著網(wǎng)絡(luò)規(guī)模不斷擴(kuò)大,用戶對(duì)骨干鏈路的帶寬和可靠性提出越來越高的要求。在傳統(tǒng)技術(shù)中,常用更換高速率的接口板或更換支持高速率接口板的設(shè)備的方式來增加帶寬,但這種方案需要付出高額的費(fèi)用,而且不夠靈活。
采用鏈路聚合技術(shù)可以在不進(jìn)行硬件升級(jí)的條件下,通過將多個(gè)物理接口捆綁為一個(gè)邏輯接口,達(dá)到增加鏈路帶寬的目的。在實(shí)現(xiàn)增大帶寬目的的同時(shí),鏈路聚合采用備份鏈路的機(jī)制,可以有效的提高設(shè)備之間鏈路的可靠性。
鏈路聚合主要有以下三個(gè)優(yōu)勢:
增加帶寬
鏈路聚合接口的最大帶寬可以達(dá)到各成員接口帶寬之和。
提高可靠性
當(dāng)某條活動(dòng)鏈路出現(xiàn)故障時(shí),流量可以切換到其他可用的成員鏈路上,從而提高鏈路聚合接口的可靠性。
負(fù)載分擔(dān)
在一個(gè)鏈路聚合組內(nèi),可以實(shí)現(xiàn)在各成員活動(dòng)鏈路上的負(fù)載分擔(dān)。
原理描述
基本概念:
如在兩個(gè)設(shè)備之間通過三條以太網(wǎng)物理鏈路相連,將這三條鏈路捆綁在一起,就成為了一條邏輯鏈路。這條邏輯鏈路的最大帶寬等于原先三條以太網(wǎng)物理鏈路的帶寬總和,從而達(dá)到了增加鏈路帶寬的目的;同時(shí),這三條以太網(wǎng)物理鏈路相互備份,有效地提高了鏈路的可靠性。
鏈路聚合的一些基本概念:
鏈路聚合組和鏈路聚合接口
鏈路聚合組LAG(Link Aggregation Group)是指將若干條以太鏈路捆綁在一起所形成的邏輯鏈路。
每個(gè)聚合組唯一對(duì)應(yīng)著一個(gè)邏輯接口,這個(gè)邏輯接口稱之為鏈路聚合接口或Eth-Trunk接口。鏈路聚合接口可以作為普通的以太網(wǎng)接口來使用,與普通以太網(wǎng)接口的差別在于:轉(zhuǎn)發(fā)的時(shí)候鏈路聚合組需要從成員接口中選擇一個(gè)或多個(gè)接口來進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā)。
成員接口和成員鏈路
組成Eth-Trunk接口的各個(gè)物理接口稱為成員接口。成員接口對(duì)應(yīng)的鏈路稱為成員鏈路。
活動(dòng)接口和非活動(dòng)接口、活動(dòng)鏈路和非活動(dòng)鏈路
鏈路聚合組的成員接口存在活動(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ù)上限閾值
設(shè)置活動(dòng)接口數(shù)上限閾值的目的是在保證帶寬的情況下提高網(wǎng)絡(luò)的可靠性。當(dāng)前活動(dòng)鏈路數(shù)目達(dá)到上限閾值時(shí),再向Eth-Trunk中添加成員接口,不會(huì)增加Eth-Trunk活動(dòng)接口的數(shù)目,超過上限閾值的鏈路狀態(tài)將被置為Down,作為備份鏈路。
例如,有8條無故障鏈路在一個(gè)Eth-Trunk內(nèi),每條鏈路都能提供1G的帶寬,現(xiàn)在最多需要5G的帶寬,那么上限閾值就可以設(shè)為5或者更大的值。其他的鏈路就自動(dòng)進(jìn)入備份狀態(tài)以提高網(wǎng)絡(luò)的可靠性。
注:手工負(fù)載分擔(dān)模式鏈路聚合不支持活動(dòng)接口數(shù)上限閾值的配置。
活動(dòng)接口數(shù)下限閾值
設(shè)置活動(dòng)接口數(shù)下限閾值是為了保證最小帶寬,當(dāng)前活動(dòng)鏈路數(shù)目小于下限閾值時(shí),Eth-Trunk接口的狀態(tài)轉(zhuǎn)為Down。
例如,每條物理鏈路能提供1G的帶寬,現(xiàn)在最小需要2G的帶寬,那么活動(dòng)接口數(shù)下限閾值必須要大于等于2。
鏈路聚合模式
鏈路聚合模式分為手工模式和LACP模式兩種
兩種鏈路聚合模式比較:
維度手工模式LACP模式定義Eth-Trunk的建立、成員接口的加入由手工配置,沒有鏈路聚合控制協(xié)議的參與。Eth-Trunk的建立是基于LACP協(xié)議的,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)整或解散鏈路聚合。設(shè)備是否需要支持LACP協(xié)議不需要需要數(shù)據(jù)轉(zhuǎn)發(fā)一般情況下,所有鏈路都是活動(dòng)鏈路。所有活動(dòng)鏈路均參與數(shù)據(jù)轉(zhuǎn)發(fā)。如果某條活動(dòng)鏈路故障,鏈路聚合組自動(dòng)在剩余的活動(dòng)鏈路中分擔(dān)流量。一般情況下,部分鏈路是活動(dòng)鏈路。所有活動(dòng)鏈路均參與數(shù)據(jù)轉(zhuǎn)發(fā)。如果某條活動(dòng)鏈路故障,鏈路聚合組自動(dòng)在非活動(dòng)鏈路中選擇一條鏈路作為活動(dòng)鏈路,參與數(shù)據(jù)轉(zhuǎn)發(fā)的鏈路數(shù)目不變。是否支持跨設(shè)備的鏈路聚合不支持支持檢測故障只能檢測到同一聚合組內(nèi)的成員鏈路有斷路等有限故障,但是無法檢測到鏈路故障、鏈路錯(cuò)連等故障。不僅能夠檢測到同一聚合組內(nèi)的成員鏈路有斷路等有限故障,還可以檢測到鏈路故障、鏈路錯(cuò)連等故障。
設(shè)備支持的鏈路聚合方式:
同一設(shè)備:是指鏈路聚合時(shí),同一聚合組的成員接口分布在同一設(shè)備。
堆疊設(shè)備:是指在堆疊場景下,成員接口分部在堆疊的各個(gè)成員設(shè)備上。
跨設(shè)備:是指E-Trunk基于LACP(單臺(tái)設(shè)備鏈路聚合的標(biāo)準(zhǔn))進(jìn)行了擴(kuò)展,能夠?qū)崿F(xiàn)多臺(tái)設(shè)備間的鏈路聚合。
手工模式鏈路聚合:
根據(jù)是否啟用鏈路聚合控制協(xié)議LACP,鏈路聚合分為手工模式和LACP模式。
手工模式下,Eth-Trunk的建立、成員接口的加入由手工配置,沒有鏈路聚合控制協(xié)議LACP的參與。當(dāng)需要在兩個(gè)直連設(shè)備之間提供一個(gè)較大的鏈路帶寬而設(shè)備又不支持LACP協(xié)議時(shí),可以使用手工模式。手工模式可以實(shí)現(xiàn)增加帶寬、提高可靠性和負(fù)載分擔(dān)的目的。
LACP模式鏈路聚合:
作為鏈路聚合技術(shù),手工負(fù)載分擔(dān)模式Eth-Trunk可以完成多個(gè)物理接口聚合成一個(gè)Eth-Trunk口來提高帶寬,同時(shí)能夠檢測到同一聚合組內(nèi)的成員鏈路有斷路等有限故障,但是無法檢測到鏈路層故障、鏈路錯(cuò)連等故障。
為了提高Eth-Trunk的容錯(cuò)性,并且能提供備份功能,保證成員鏈路的高可靠性,出現(xiàn)了鏈路聚合控制協(xié)議LACP(Link Aggregation Control Protocol),LACP模式就是采用LACP的一種鏈路聚合模式。
LACP為交換數(shù)據(jù)的設(shè)備提供一種標(biāo)準(zhǔn)的協(xié)商方式,以供設(shè)備根據(jù)自身配置自動(dòng)形成聚合鏈路并啟動(dòng)聚合鏈路收發(fā)數(shù)據(jù)。聚合鏈路形成以后,LACP負(fù)責(zé)維護(hù)鏈路狀態(tài),在聚合條件發(fā)生變化時(shí),自動(dòng)調(diào)整或解散鏈路聚合。
基本概念:
系統(tǒng)LACP優(yōu)先級(jí)
系統(tǒng)LACP優(yōu)先級(jí)是為了區(qū)分兩端設(shè)備優(yōu)先級(jí)的高低而配置的參數(shù)。LACP模式下,兩端設(shè)備所選擇的活動(dòng)接口必須保持一致,否則鏈路聚合組就無法建立。此時(shí)可以使其中一端具有更高的優(yōu)先級(jí),另一端根據(jù)高優(yōu)先級(jí)的一端來選擇活動(dòng)接口即可。系統(tǒng)LACP優(yōu)先級(jí)值越小優(yōu)先級(jí)越高。
接口LACP優(yōu)先級(jí)
接口LACP優(yōu)先級(jí)是為了區(qū)別同一個(gè)Eth-Trunk中的不同接口被選為活動(dòng)接口的優(yōu)先程度,優(yōu)先級(jí)高的接口將優(yōu)先被選為活動(dòng)接口。接口LACP優(yōu)先級(jí)值越小,優(yōu)先級(jí)越高。
成員接口間M:N備份
LACP模式鏈路聚合由LACP確定聚合組中的活動(dòng)和非活動(dòng)鏈路,又稱為M:N模式,即M條活動(dòng)鏈路與N條備份鏈路的模式。這種模式提供了更高的鏈路可靠性,并且可以在M條鏈路中實(shí)現(xiàn)不同方式的負(fù)載均衡。
LACP模式實(shí)現(xiàn)原理:
基于IEEE802.3ad標(biāo)準(zhǔn)的LACP是一種實(shí)現(xiàn)鏈路動(dòng)態(tài)聚合與解聚合的協(xié)議。LACP通過鏈路聚合控制協(xié)議數(shù)據(jù)單元LACPDU(Link Aggregation Control Protocol Data Unit)與對(duì)端交互信息。
在LACP模式的Eth-Trunk中加入成員接口后,這些接口將通過發(fā)送LACPDU向?qū)Χ送ǜ孀约旱南到y(tǒng)優(yōu)先級(jí)、MAC地址、接口優(yōu)先級(jí)、接口號(hào)和操作Key等信息。對(duì)端接收到這些信息后,將這些信息與自身接口所保存的信息比較,用以選擇能夠聚合的接口,雙方對(duì)哪些接口能夠成為活動(dòng)接口達(dá)成一致,確定活動(dòng)鏈路。
LACPDU報(bào)文:
報(bào)文字段說明:
字段長度說明Destination Address6字節(jié)目的MAC地址,是一個(gè)組播地址(01-80-C2-00-00-02)Source Address6字節(jié)源MAC地址,發(fā)送端口的MAC地址Length/Type2字節(jié)協(xié)議類型:0x8809Subtype1字節(jié)報(bào)文子類型:0x01,說明是LACP報(bào)文Version Number1字節(jié)協(xié)議版本號(hào):0x01TLV_type1字節(jié)0x00代表Terminator字段0x01代表Actor字段0x02代表Partner字段0x03代表Collector字段Actor_Information_Length1字節(jié)actor信息字段長度,為20字節(jié)Actor_Port2字節(jié)端口號(hào),根據(jù)算法生成,由接口所在的槽位號(hào)、子卡號(hào)和端口號(hào)決定Actor_State1字節(jié)本端狀態(tài)信息:LACP_Activity:代表鏈路所在的聚合組參與LACP協(xié)商的方式。主動(dòng)的LACP被編碼為1,主動(dòng)方式下會(huì)主動(dòng)發(fā)送LACPDU報(bào)文給對(duì)方,被動(dòng)方式不會(huì)主動(dòng)發(fā)送協(xié)商報(bào)文,除非收到協(xié)商報(bào)文才會(huì)參與。LACP_Timeout:代表鏈路接收LACPDU報(bào)文的周期,有兩種,快周期1s和慢周期30s,超時(shí)時(shí)間為周期的3倍。短超時(shí)被編碼為1,長超時(shí)被編碼為0。Aggregation:標(biāo)識(shí)該鏈路能否被聚合組聚合。如果編碼為0,該鏈路被認(rèn)為是獨(dú)立的,不能被聚合,即,這個(gè)鏈路只能作為一個(gè)個(gè)體鏈路運(yùn)行。Synchronization:代表該鏈路是否已被分配到一個(gè)正確的鏈路聚合組,如果該鏈路已經(jīng)關(guān)聯(lián)了一個(gè)兼容的聚合器,那么該鏈路聚合組的識(shí)別與系統(tǒng)ID和被發(fā)送的運(yùn)行Key信息是一致的。編碼為0,代表鏈路當(dāng)前不在正確的聚合里。Collecting:幀的收集使能位,假如編碼為1,表示在這個(gè)鏈路上進(jìn)來的幀的收集是明確使能的;即收集當(dāng)前被使能,并且不期望在沒有管理變化或接收協(xié)議信息變化的情況下被禁止。其它情況下這個(gè)值編碼為0。Distributing:幀的分配使能位,假如編碼為0,意味著在這個(gè)鏈路上的外出幀的分配被明確禁止,并且不期望在沒有管理變化或接收協(xié)議信息變化的情況下被使能。其它情況下這個(gè)值編碼為1。Default:診斷調(diào)試時(shí)使用,編碼為1,代表接收到的對(duì)端的信息是管理配置的。假如編碼為0,正在使用的運(yùn)行伙伴信息在接收到的LACPDU里。該值不被正常LACP協(xié)議使用,僅用于診斷協(xié)議問題。Expired:診斷調(diào)試時(shí)使用,編碼為1,代表本端的接收機(jī)是處于EXPIRED超時(shí)狀態(tài);假如編碼為0,本端接收狀態(tài)機(jī)處于正常狀態(tài)。該值不被正常LACP協(xié)議使用,僅用于診斷協(xié)議問題。Actor_System_Priority2字節(jié)本端系統(tǒng)優(yōu)先級(jí),可以設(shè)置,默認(rèn)情況下為32768Actor_System6字節(jié)系統(tǒng)ID,本端系統(tǒng)的MAC地址Actor_key2字節(jié)端口KEY值,系統(tǒng)根據(jù)端口的配置生成,是端口能否成為聚合組中的一員的關(guān) 鍵因素,影響Key值得因素有trunk ID、接口的速率和雙工模式Actor_Port_Priority2字節(jié)接口優(yōu)先級(jí),可以配置,默認(rèn)為0x8000Reserved3字節(jié)保留字段,可用于功能調(diào)試以及擴(kuò)展Partner_Information_Length1字節(jié)Partner信息字段長度。Partner字段代表了鏈路接口接收到對(duì)端的系統(tǒng)信息、接口信息和狀態(tài)信息,與actor字段含義一致。在協(xié)商最開始未收到對(duì)端信息時(shí),partner字段填充0,接收到對(duì)端信息后會(huì)把收到的對(duì)端信息補(bǔ)充到partner字段當(dāng)中。Partner_Port2字節(jié)對(duì)端端口號(hào)Partner_State2字節(jié)對(duì)端狀態(tài)信息Partner_System_Priority2字節(jié)對(duì)端系統(tǒng)優(yōu)先級(jí)Partner_System6字節(jié)對(duì)端系統(tǒng)ID,對(duì)端系統(tǒng)的MAC地址Partner_key2字節(jié)對(duì)端端口KEY值Partner_Port_Priority2字節(jié)對(duì)端接口優(yōu)先級(jí)Reserved2字節(jié)保留字段Collector_Information_Length1字節(jié)Collector信息字段長度:0x10CollectorMaxDelay2字節(jié)最大延時(shí):默認(rèn)情況下為0xffffReserved12字節(jié)保留字段Terminator_Length1字節(jié)Terminator信息字段長度:0x00Reserved50字節(jié)保留字段,全置0FCS4字節(jié)用于幀內(nèi)后續(xù)字節(jié)差錯(cuò)的循環(huán)冗余檢驗(yàn)(也稱為FCS或幀檢驗(yàn)序列)。
抓包示例:
LACP模式Eth-Trunk建立過程如下:
1. ?兩端互相發(fā)送LACPDU報(bào)文。
如下圖所示,在DeviceA和DeviceB上創(chuàng)建Eth-Trunk并配置為LACP模式,然后向Eth-Trunk中手工加入成員接口。此時(shí)成員接口上便啟用了LACP協(xié)議,兩端互發(fā)LACPDU報(bào)文。

2. ?確定主動(dòng)端和活動(dòng)鏈路。
如下圖所示,兩端設(shè)備均會(huì)收到對(duì)端發(fā)來的LACPDU報(bào)文。以DeviceB為例,當(dāng)DeviceB收到DeviceA發(fā)送的報(bào)文時(shí),DeviceB會(huì)查看并記錄對(duì)端信息,然后比較系統(tǒng)優(yōu)先級(jí)字段,如果DeviceA的系統(tǒng)優(yōu)先級(jí)高于本端的系統(tǒng)優(yōu)先級(jí),則確定DeviceA為LACP主動(dòng)端。如果DeviceA和DeviceB的系統(tǒng)優(yōu)先級(jí)相同,比較兩端設(shè)備的MAC地址,確定MAC地址小的一端為LACP主動(dòng)端。
選出主動(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. ?LACP搶占:
使能LACP搶占功能后,聚合組會(huì)始終保持高優(yōu)先級(jí)的接口作為活動(dòng)接口的狀態(tài)。

以下兩種情況需要使能LAXP的搶占功能:
Port1接口出現(xiàn)故障而后又恢復(fù)了正常。當(dāng)接口Port1出現(xiàn)故障時(shí)被Port3所取代,如果在Eth-Trunk接口下未使能LACP搶占功能,則故障恢復(fù)時(shí)Port1將處于備份狀態(tài);如果使能了LACP搶占功能,當(dāng)Port1故障恢復(fù)時(shí),由于接口優(yōu)先級(jí)比Port3高,將重新成為活動(dòng)接口,Port3再次成為備份接口。
如果希望Port3接口替換Port1、Port2中的一個(gè)接口成為活動(dòng)接口,可以使能了LACP搶占功能,并配置Port3的接口LACP優(yōu)先級(jí)較高。如果沒有使能LACP搶占功能,即使將備份接口的優(yōu)先級(jí)調(diào)整為高于當(dāng)前活動(dòng)接口的優(yōu)先級(jí),系統(tǒng)也不會(huì)進(jìn)行重新選擇活動(dòng)接口的過程,不切換活動(dòng)接口。
LACP搶占延時(shí):
搶占延時(shí)是LACP搶占發(fā)生時(shí),處于備用狀態(tài)的鏈路將會(huì)等待一段時(shí)間后再切換到轉(zhuǎn)發(fā)狀態(tài)。配置搶占延時(shí)是為了避免由于某些鏈路狀態(tài)頻繁變化而導(dǎo)致Eth-Trunk數(shù)據(jù)傳輸不穩(wěn)定的情況。
活動(dòng)鏈路與非活動(dòng)鏈路的切換:
LACP模式鏈路聚合組兩端設(shè)備中任何一端檢測到以下事件,都會(huì)觸發(fā)聚合組的鏈路切換:
鏈路Down事件。
以太網(wǎng)OAM檢測到鏈路失效。
LACP協(xié)議發(fā)現(xiàn)鏈路故障。
接口不可用。
在使能了LACP搶占功能的前提下,更改備份接口的優(yōu)先級(jí)高于當(dāng)前活動(dòng)接口的優(yōu)先級(jí)。
當(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ù),完成切換。
鏈路聚合負(fù)載分擔(dān)方式:
背景:
數(shù)據(jù)流是指一組具有某個(gè)或某些相同屬性的數(shù)據(jù)包。這些屬性有源MAC地址、目的MAC地址、源IP地址、目的IP地址、TCP/UDP的源端口號(hào)、TCP/UDP的目的端口號(hào)等。
對(duì)于負(fù)載分擔(dān),可以分為逐包的負(fù)載分擔(dān)和逐流的負(fù)載分擔(dān)。
逐包的負(fù)載分擔(dān)
在使用Eth-Trunk轉(zhuǎn)發(fā)數(shù)據(jù)時(shí),由于聚合組兩端設(shè)備之間有多條物理鏈路,就會(huì)產(chǎn)生同一數(shù)據(jù)流的第一個(gè)數(shù)據(jù)幀在一條物理鏈路上傳輸,而第二個(gè)數(shù)據(jù)幀在另外一條物理鏈路上傳輸?shù)那闆r。這樣一來同一數(shù)據(jù)流的第二個(gè)數(shù)據(jù)幀就有可能比第一個(gè)數(shù)據(jù)幀先到達(dá)對(duì)端設(shè)備,從而產(chǎn)生接收數(shù)據(jù)包亂序的情況。
逐流的負(fù)載分擔(dān)
這種機(jī)制把數(shù)據(jù)幀中的地址通過HASH算法生成HASH-KEY值,然后根據(jù)這個(gè)數(shù)值在Eth-Trunk轉(zhuǎn)發(fā)表中尋找對(duì)應(yīng)的出接口,不同的MAC或IP地址HASH得出的HASH-KEY值不同,從而出接口也就不同,這樣既保證了同一數(shù)據(jù)流的幀在同一條物理鏈路轉(zhuǎn)發(fā),又實(shí)現(xiàn)了流量在聚合組內(nèi)各物理鏈路上的負(fù)載分擔(dān)。逐流負(fù)載分擔(dān)能保證包的順序,但不能保證帶寬利用率。
“注:目前AR系列路由器僅支持逐流的負(fù)載分擔(dān)。
”
轉(zhuǎn)發(fā)原理:
Eth-Trunk位于MAC與LLC子層之間,屬于數(shù)據(jù)鏈路層。
Eth-Trunk模塊內(nèi)部維護(hù)一張轉(zhuǎn)發(fā)表,這張表由以下兩項(xiàng)組成。
HASH-KEY值
HASH-KEY值是根據(jù)數(shù)據(jù)包的MAC地址或IP地址等,經(jīng)HASH算法計(jì)算得出。
接口號(hào)
Eth-Trunk轉(zhuǎn)發(fā)表表項(xiàng)分布和設(shè)備每個(gè)Eth-Trunk支持加入的成員接口數(shù)量相關(guān),不同的HASH-KEY值對(duì)應(yīng)不同的出接口。
Eth-Trunk模塊根據(jù)轉(zhuǎn)發(fā)表轉(zhuǎn)發(fā)數(shù)據(jù)幀的過程如下:
Eth-Trunk模塊從MAC子層接收到一個(gè)數(shù)據(jù)幀后,根據(jù)負(fù)載分擔(dān)方式提取數(shù)據(jù)幀的源MAC地址/IP地址或目的MAC地址/IP地址。
根據(jù)HASH算法進(jìn)行計(jì)算,得到HASH-KEY值。
Eth-Trunk模塊根據(jù)HASH-KEY值在轉(zhuǎn)發(fā)表中查找對(duì)應(yīng)的接口,把數(shù)據(jù)幀從該接口發(fā)送出去。
負(fù)載分擔(dān)方式:
為了避免數(shù)據(jù)包亂序情況的發(fā)生,Eth-Trunk采用逐流負(fù)載分擔(dān)的機(jī)制,其中如何轉(zhuǎn)發(fā)數(shù)據(jù)則由于選擇不同的負(fù)載分擔(dān)方式而有所差別。
負(fù)載分擔(dān)的方式主要包括以下幾種,用戶可以根據(jù)具體應(yīng)用選擇不同的負(fù)載分擔(dān)方式。
根據(jù)報(bào)文的源MAC地址進(jìn)行負(fù)載分擔(dān)
根據(jù)報(bào)文的目的MAC地址進(jìn)行負(fù)載分擔(dān)
根據(jù)報(bào)文的源IP地址進(jìn)行負(fù)載分擔(dān)
根據(jù)報(bào)文的目的IP地址進(jìn)行負(fù)載分擔(dān)
根據(jù)報(bào)文的源MAC地址和目的MAC地址進(jìn)行負(fù)載分擔(dān)
根據(jù)報(bào)文的源IP地址和目的IP地址進(jìn)行負(fù)載分擔(dān)
配置負(fù)載分擔(dān)方式時(shí),請(qǐng)注意:
負(fù)載分擔(dān)方式只在流量的出接口上生效,如果發(fā)現(xiàn)各入接口的流量不均衡,請(qǐng)修改上行出接口的負(fù)載分擔(dān)方式。
盡量將數(shù)據(jù)流通過負(fù)載分擔(dān)在所有活動(dòng)鏈路上傳輸,避免數(shù)據(jù)流僅在一條鏈路上傳輸,造成流量擁堵,影響業(yè)務(wù)正常運(yùn)行。
例如,數(shù)據(jù)報(bào)文的目的MAC和IP地址只有一個(gè),則應(yīng)選擇根據(jù)報(bào)文的源MAC和IP地址進(jìn)行負(fù)載分擔(dān),如果選擇根據(jù)報(bào)文的目的MAC和IP地址進(jìn)行負(fù)載分擔(dān)則會(huì)造成流量只在一條鏈路上傳輸,造成流量擁堵。
配置注意事項(xiàng):
鏈路聚合前:
成員接口不能配置某些業(yè)務(wù),例如成員接口不能修改接口類型、不能配置靜態(tài)MAC地址。
Eth-Trunk接口不能嵌套,即Eth-Trunk接口的成員接口不能是Eth-Trunk接口。
一個(gè)Eth-Trunk接口中的成員接口必須是以太網(wǎng)類型和速率相同的接口。
以太網(wǎng)類型和速率不同的接口不能加入同一個(gè)Eth-Trunk接口,如GE接口和FE接口不能加入同一個(gè)Eth-Trunk接口,GE電接口和GE光接口不能加入同一個(gè)Eth-Trunk接口。
如果本端設(shè)備接口加入了Eth-Trunk,與該接口直連的對(duì)端接口也必須加入Eth-Trunk,兩端才能正常通信。
兩臺(tái)設(shè)備對(duì)接時(shí)需要保證兩端設(shè)備上鏈路聚合的模式一致。
鏈路聚合后:
一個(gè)以太網(wǎng)接口只能加入到一個(gè)Eth-Trunk接口,如果需要加入其它Eth-Trunk接口,必須先退出原來的Eth-Trunk接口。
當(dāng)成員接口加入Eth-Trunk后,學(xué)習(xí)MAC地址或ARP地址時(shí)是按照Eth-Trunk來學(xué)習(xí)的,而不是按照成員接口來學(xué)習(xí)。
刪除聚合組時(shí)需要先刪除聚合組中的成員接口。
缺省配置:
參數(shù)缺省值鏈路聚合模式手工負(fù)載分擔(dān)模式活動(dòng)接口數(shù)上限閾值8活動(dòng)接口數(shù)下限閾值1系統(tǒng)LACP優(yōu)先級(jí)32768接口LACP優(yōu)先級(jí)32768LACP搶占去使能LACP搶占等待時(shí)間30s接收LACP報(bào)文超時(shí)時(shí)間90s
鏈路聚合配置命令行
配置手工負(fù)載分擔(dān)模式:
如下圖,交換機(jī)1和2都有VLAN10,20.通過在兩個(gè)交換機(jī)之間配置鏈路聚合提高鏈路帶寬,以及增加一定的可靠性。
配置命令行:
兩個(gè)交換機(jī)配置相同
[SW1]dis?current-configuration?
#
sysname?SW1
#
vlan?batch?10?20
#
interface?Eth-Trunk1
?port?link-type?trunk?
?port?trunk?allow-pass?vlan?10?20
#
interface?GigabitEthernet0/0/1
?eth-trunk?1?//加入Eth-trunk接口
#
interface?GigabitEthernet0/0/2
?eth-trunk?1?//加入Eth-trunk接口
#
interface?GigabitEthernet0/0/3
?eth-trunk?1?//加入Eth-trunk接口
#
執(zhí)行:display eth-trunk 1,查看配置結(jié)果:

配置LACP模式鏈路聚合:
如下圖,在兩臺(tái)設(shè)備上配置LACP模式鏈路聚合組,提高兩設(shè)備之間的帶寬與可靠性,具體要求如下:
兩條活動(dòng)鏈路具有負(fù)載分擔(dān)的能力。
兩設(shè)備間的鏈路具有一條冗余備份鏈路,當(dāng)活動(dòng)鏈路出現(xiàn)故障鏈路時(shí),備份鏈路替代故障鏈路,保持?jǐn)?shù)據(jù)傳輸?shù)目煽啃浴?/p>

配置命令行:
[SW3]dis?current-configuration?
#
sysname?SW3
#
lacp?priority?100
//配置系統(tǒng)LACP優(yōu)先級(jí)
#
interface?Eth-Trunk1
//創(chuàng)建eth-trunk接口
?mode?lacp-static
//配置鏈路聚合模式為LACP模式
?least?active-linknumber?2
//配置鏈路聚合活動(dòng)接口數(shù)下限閾值?
?max?bandwidth-affected-linknumber?3
//配置帶寬計(jì)算的端口數(shù)量
?load-balance?dst-ip
//配置負(fù)載分擔(dān)方式
?lacp?timeout?fast
//配置當(dāng)前接口接收LACP協(xié)議報(bào)文的超時(shí)時(shí)間
?lacp?preempt?enable
//使能當(dāng)前Eth-Trunk接口的LACP搶占功能
?max?active-linknumber?2
//配置鏈路聚合活動(dòng)接口數(shù)上限閾值
?lacp?preempt?delay?20
//配置當(dāng)前Eth-Trunk接口的LACP搶占等待時(shí)間
//配置為fast,對(duì)端發(fā)送LACP報(bào)文的周期為1秒。
//配置為slow,對(duì)端發(fā)送LACP報(bào)文的周期為30秒。
//LACP協(xié)議報(bào)文的超時(shí)時(shí)間為LACP報(bào)文發(fā)送周期的3倍
?lacp?selected?speed
//更改LACP模式Eth-Trunk依據(jù)接口速率來選擇活動(dòng)接口
#
interface?GigabitEthernet0/0/1
?eth-trunk?1?//加入Eth-trunk接口
?lacp?priority?100
//配置當(dāng)前接口的LACP優(yōu)先級(jí)
#
interface?GigabitEthernet0/0/2
?eth-trunk?1
#
interface?GigabitEthernet0/0/3
?eth-trunk?1
#
配置結(jié)果:

其他常用命令:
trunkport?interface?gi?0/0/1?to?0/0/3?
//將多個(gè)接口同時(shí)加上eth-turnk接口中
display?eth-trunk??[?trunk-id?[?interface?interface-type?interface-number?|?verbose?]?]
//查看Eth-Trunk接口的配置信息
??
display?lacp?statistics?eth-trunk?1
//查看LACP模式下LACP報(bào)文收發(fā)統(tǒng)計(jì)信息
??
display?interface?eth-trunk?1?
//查看eth-trunk接口的狀態(tài)信息
??
display?trunkmembership?eth-trunk?1?
//查看eth-trunk的成員接口信息
??
reset?lacp?statistics?eth-trunk?1
//清除LACP收發(fā)報(bào)文的統(tǒng)計(jì)信息
??
reset?lacp?error?packet?statistics
//清除LACP錯(cuò)誤報(bào)文的統(tǒng)計(jì)信息