Eth-Trunk技術原理與配置
隨着網絡當中,部署的業務量不斷地增長,我們會發現設備原先的鏈路帶寬可能會滿足我們的需求,但是隨着時間的推移,業務量的增加,原本的鏈路帶寬已經不能滿足我們的需求了,如果將當前接口板替換爲具備更高帶寬的接口板,則會浪費現有的設備資源,而且升級代價較大。如果增加設備間的鏈路數量,則在作爲三層口使用時需要在每個接口上配置IP地址,從而導致浪費IP地址資源。如果是二層接口的話,會通過生成樹協議,導致增加的接口處於空閒的狀態
Eth-Trunk( 鏈路聚合技術 )作爲一種捆綁技術,可以把多個獨立的物理接口綁定在一起作爲一個大帶寬的邏輯接口使用,這樣既不用替換接口板也不會浪費IP地址資源。本次博客會來介紹Eth-Trunk技術。
組網中經常會遇到的問題
對於匯聚層和核心層來說,他們會接收來自接入層的大量的終端的用戶流量數據,然後通過鏈路把數據轉到目的地址去,所以對於這些層次的鏈路來說,它轉發的流量是非常大的,那我們怎麼來增加接口的帶寬,包括避免接口的單點故障的問題,如果將當前接口板替換爲具備更高帶寬的接口板,則會浪費現有的設備資源,而且升級代價較大。如果增加設備間的鏈路數量,則在作爲三層口使用時需要在每個接口上配置IP地址,從而導致浪費IP地址資源;如果是二層鏈路的話,增加鏈路有可能會形成環路;單條鏈路的組網中沒有冗餘的設計,如果接入層設備上聯的鏈路故障時,影響接入設備下聯的整個區域的設備正常通信。
此時,可以把多個獨立的物理接口綁定在一起作爲一個大帶寬的邏輯接口使用,即鏈路聚合技術,既不用替換接口板也不會浪費IP地址資源。Eth-Trunk是一種捆綁技術,將多個物理接口捆綁成一個邏輯接口,這個邏輯接口就稱爲Eth-Trunk接口。對於Eth-Trunk接口,只有以太網接口纔可以加入。
Eth-Trunk概念
Eth-Trunk是一種將多個以太網接口捆綁成一個邏輯接口的捆綁技術。
如下圖所示,RTA和RTB之間的3條物理接口,通過鏈路聚合捆綁成了一條邏輯上的鏈路eth-trunk,形成一個大帶寬的鏈路來進行使用,對於用戶層面來說,這個邏輯接口是隻有一個接口來體現的。在沒有做鏈路聚合之前,對於三層接口來說,RTA上的三條鏈路對應的三個接口都需要配置ip地址,兩臺設備,所需要的ip地址就是6個,做了鏈路聚合之後,只需要給聚合後的一個接口配置ip地址即可,大大減少了ip地址的使用;如果這兩臺設備是二層設備的話,在沒有做鏈路聚合之前,通過生成樹,設備上的三個接口至少要阻塞兩個端口,才能不會產生環路,那麼做了鏈路聚合之後,就是一個邏輯上的接口,生成樹協議不會去阻塞端口,這樣就可以實現大帶寬的使用,還不會造成環路。
數據在轉發的時候,還是在物理鏈路上去進行傳輸的,在三條物理鏈路上進行負載分擔,如果其中的一條鏈路壞了,也不影響數據的傳輸,提高了鏈路的可靠性。
Eth-Trunk鏈路聚合模式:手工負載分擔模式;LACP模式。
手工負載分擔模式
當兩臺設備中至少有一臺不支持LACP協議時,可使用手工負載分擔模式的Eth-Trunk來增加設備間的帶寬及可靠性。
在手工負載分擔模式下,加入Eth-Trunk的鏈路都進行數據的轉發。
需要注意的是,在進行鏈路聚合的時候,這個鏈路的接口只能是以太網口,不能是串行鏈路的串口。
以上是第一種模式:手工負載分擔
接着來看一下LACP模式
LACP模式
在LACP模式,設備和設備之間會交互LACP報文,來協商一些東西。
LACP模式也稱爲M:N模式,其中M條鏈路處於活動狀態轉發數據,N條鏈路處於非活動狀態作爲備份鏈路。
圖中設置的活躍鏈路數爲2,即2條鏈路處於轉發狀態,1條鏈路處於備份狀態,不轉發數據,只有當活躍的鏈路出現故障時,備份鏈路才進行轉發。
假如現在鏈路上有三條物理鏈路,現在想讓兩條鏈路處於轉發狀態,一條鏈路處於備份狀態,那麼對於兩條處於轉發狀態的鏈路是怎麼被選出來的呢? 這裏面就涉及到了選舉的過程。
LACP模式活動鏈路的選取
如圖所示,設備之間相連的鏈路數爲3條,設置的最大活躍鏈路數爲2,即2條鏈路處於轉發狀態,1條鏈路處於備份狀態。在LACP模式的Eth-Trunk中加入成員接口後,這些接口將向對端通告自己的系統優先級、MAC地址、接口優先級、接口號等信息。對端接收到這些信息後,將這些信息與自身接口所保存的信息比較以選擇能夠聚合的接口,雙方對哪些接口能夠成爲活動接口達成一致,確定活動鏈路。
在兩端設備中選擇系統LACP優先級較高的一端作爲主動端,如果系統LACP優先級相同則選擇MAC地址較小的一端作爲主動端。系統LACP優先級的值越小,則優先級越高,缺省情況下,系統LACP優先級的值爲32768。
接口LACP優先級的值越小,則優先級越高。如果接口LACP優先級相同,接口ID(接口號)小的接口被優先選爲活動接口。接口LACP優先級是爲了區別同一個Eth-Trunk中的不同接口被選爲活動接口的優先程度,優先級高的接口將優先被選爲活動接口。
LACP模式的搶佔機制
當活動鏈路出現故障的時候,備份鏈路會頂替活動鏈路進行工作,當故障的活動鏈路恢復了正常之後,如果開啓了搶佔機制,原來的活動鏈路會搶佔備份鏈路的身份成爲活動鏈路,而原來的備份鏈路繼續充當備份的角色,這個就是搶佔機制。
LACP搶佔延時設置:
LACP搶佔發生時,處於備用狀態的鏈路將會等待一段時間後再切換到轉發狀態,這就是搶佔延時。配置搶佔延時是爲了避免由於某些鏈路狀態頻繁變化而導致Eth-Trunk數據傳輸不穩定的情況。如圖所示,Port1由於鏈路故障切換爲非活動接口,此後該鏈路又恢復了正常。若系統使能了LACP搶佔並配置了搶佔延時,Port1重新切換回活動狀態就需要經過搶佔延時的時間。
如果延時的時間是0的話,說是立馬搶佔,也就是說故障的高優先級的活動鏈路在被修復之後,不會等待一段時間,會立刻馬上進行搶佔,把目前的活動鏈路的身份搶過來,讓自己成爲活動鏈路。
開啓搶佔功能的場景:
Port1接口出現故障而後又恢復正常。當接口Port1出現故障時被Port3所取代,如果在Eth-Trunk接口下未使能搶佔,則故障恢復時Port1將處於備份狀態;如果使能了LACP搶佔,當Port1故障恢復時,由於接口優先級比Port3高,將重新成爲活動接口,Port3再次成爲備份接口。 如果希望Port3接口替換Port1、Port2中的一個接口成爲活動接口,可以將Port3的接口LACP優先級調高,但前提條件是已經使能了LACP搶佔功能。如果沒有使能LACP搶佔功能,即使將備份接口的優先級調整爲高於當前活動接口的優先級,系統也不會進行重新選擇活動接口的過程,也不切換活動接口。
Eth-Trunk接口負載分擔
Eth-Trunk接口進行負載分擔時,可以選擇IP地址或者包作爲負載分擔的散列依據;同時還可以設置成員接口的負載分擔權重。Eth-Trunk接口中,某成員接口的權重值佔所有成員接口負載分擔權重之和的比例越大,該成員接口承擔的負載就越大。
Eth-Trunk接口的負載分擔分爲兩種,如下圖所示:
接口負載分擔 |
特點 |
逐流負載分擔 |
當報文的源IP地址、目的IP地址都相同或者報文的源MAC地址、目的MAC地址都相同時,這些報文從同一條成員鏈路上通過。 |
逐包負載分擔 |
以報文爲單位分別從不同的成員鏈路上發送。 |
假如現在要給張三發送一個文件,可能這個文件會被分成100個包發送過去,如果是逐流負載分擔的話,如果這100個包書是屬於同一個數據流的話,那麼這一百個包全部走一個鏈路,怎麼判斷是不是屬於同一個數據流,當報文的源IP地址、目的IP地址都相同或者報文的源MAC地址、目的MAC地址都相同時,這些報文從同一條成員鏈路上通過,即使這個數據流裏有100個包,如果屬於同一個數據流的;逐流負載分擔的優點:保證報文是順序發送出去,然後按順序到達的;缺點:帶寬的利用率是不能保證的。因爲現在這一百個包全都走了同一個鏈路,那麼剩下的一個鏈路就被閒置了。
逐包負載分擔是以包爲單位的,一個數據流可能有100個包,這一百個包各走各的,在所有的鏈路上都會走,優點就是實現負載分擔,保證帶寬的利用率,缺點是保證不了報文的順序。有可能1、3、5的數據包走第一根鏈路,早就到了,2、4、6的數據包走第二根鏈路,但是第二根鏈路有一定的延遲,所以對於逐包負載分擔有可能會亂序。可以通過命令行去選擇是用逐流負載分擔還是逐包負載分擔。
Eth-Trunk接口配置流程
如下圖所示是配置eth-trunk接口的流程,不管是哪種模式都需要配置的,首先創建eth-trunk,然後選擇鏈路聚合模式是手工負載分擔還是LACP模式,如果是手工負載分擔就不用配置,缺省就是手工負載分擔模式,然後將物理接口加入到eth-trunk這個邏輯接口裏面。
將成員接口加入Eth-Trunk時,需要注意以下問題:
成員接口不能有IP地址等三層配置項,也不可以配置任何業務;
成員接口不能配置靜態MAC地址;
Eth-Trunk接口不能嵌套,即成員接口不能是Eth-Trunk;
一個以太網接口只能加入到一個Eth-Trunk接口,如果需要加入其他Eth-Trunk接口,必須先退出原來的Eth-Trunk接口;
如果本地設備使用了Eth-Trunk,與成員接口直連的對端接口也必須捆綁爲Eth-Trunk接口,兩端才能正常通信;
Eth-Trunk有兩種工作模式:二層工作模式和三層工作模式。Eth-Trunk的工作模式不影響成員鏈路的加入,例如,以太網接口既可以加入二層模式的Eth-Trunk,也可以加入三層模式的Eth-Trunk。
配置手工負載分擔模式
如下圖所示,把RTA和RTB之間的3條物理鏈路加入到eth-trunk接口裏面,
配置手工負載分擔模式的步驟:
創建Eth-Trunk;
配置Eth-Trunk的工作模式;
Eth-Trunk中加入成員接口。
創建手工負載分擔模式Eth-Trunk:
1.執行命令system-view,進入系統視圖。
2.執行命令interface Eth-Trunk trunk-id,創建Eth-Trunk接口並進入Eth-Trunk接口視圖。
3.(可選)執行命令portswitch,將Eth-Trunk接口切換爲二層模式。
配置Eth-Trunk的工作模式:
1.執行命令mode manual load-balance,配置當前Eth-Trunk工作模式爲手工負載分擔模式。
缺省情況下,Eth-Trunk的工作模式爲手工負載分擔模式。
2.Eth-Trunk中加入成員接口:
在Eth-Trunk接口視圖下:
執行interface eth-trunk trunk-id命令,進入Eth-Trunk接口視圖。
執行以下任一個步驟,添加 Eth-Trunk成員接口。
執行 trunkport interface-type { interface-number1 [ to interface-number2 ] } &<1-16>命令,批量增加成員接口。
執行 trunkport interface-type interface-number命令,增加一個成員接口。
在成員接口視圖下:
執行 interface { ethernet | gigabitethernet } interface-number命令,進入要捆綁到此Eth-Trunk的成員接口的接口視圖。
執行 eth-trunk trunk-id命令,將當前接口加入Eth-Trunk。
配置LACP模式
在配置LACP模式的時候,中間是有LACP的協商的,所以在這個模式裏面是有一些 可選參數來進行配置的。
對於可選參數,如果沒有配置的話,都會有默認的。
在成員接口視圖下:
執行interface { ethernet | gigabitethernet } interface-number命令,進入要捆綁到此Eth-Trunk的成員接口的接口視圖。
執行eth-trunk trunk-id命令,將當前接口加入Eth-Trunk。
(可選)配置系統LACP優先級:執行命令lacp priority priority,配置當前路由器的系統LACP優先級。
(可選)配置活動接口數上限閾值:執行命令interface eth-trunk trunk-id,進入Eth-Trunk接口視圖。
執行命令max active-linknumber link-number,配置活動接口數上限閾值。
(可選)配置接口LACP優先級:
執行命令interface interface-type interface-number,進入接口視圖。
執行命令lacp priority priority,配置當前接口的LACP優先級。
(可選)使能LACP搶佔並配置搶佔等待時間:
執行命令interface eth-trunk trunk-id,進入Eth-Trunk接口視圖。
執行命令lacp preempt enable,使能當前Eth-Trunk接口的LACP搶佔功能。
執行命令lacp preempt delay delay-time,配置當前Eth-Trunk接口的LACP搶佔等待時間。
執行trunkport interface-type interface-number命令,增加一個成員接口。
Eth-trunk配置需求
如下圖所示是一個園區的組網拓撲,爲了提高網絡的可靠性,需要在各層設備之間採用鏈路聚合技術。其中核心層的設備需要配置IP地址,作爲內網的網關;匯聚層與接入層的設備通過二層實現通信。
以核心層R1路由器爲例說明配置;
1.創建Eth-Trunk接口並配置地址:
將物理接口添加入Eth-Trunk中:
以匯聚層LSW1交換機爲例說明配置,創建Eth-Trunk接口,因爲匯聚層設備使用二層互聯,所以無需配置地址,將物理接口添加入Eth-Trunk中 。
如下圖所示:
以匯聚層LSW3交換機爲例說明配置,創建Eth-Trunk接口,因爲匯聚層設備使用二層互聯,所以無需配置地址,將物理接口添加入Eth-Trunk中 。
以核心層R2爲例,配置LACP模式的鏈路聚合
如下圖所示,修改模式爲LACP,先配置模式再加入接口
接着R2和LSW2上的鏈路上使用抓包工具抓包,可以看到關於LACP的報文
接着我們在R2上去修改它的lacp系統優先級,修改爲4096,如下圖所示
查詢結果
把搶佔功能打開
和R2使用共同鏈路的LSW2也需要把搶佔功能打開
結果驗證,在鏈路上抓包,看到了優先級不再是之前的32768,而是已經修改過的4096
還可以修改接口的lacp優先級,如下圖所示
結果驗證
over!!!!