前言算法
在現網中,設備間若是經過一條鏈路鏈接,若是這條鏈路故障了,那麼設備兩端的終端就不可以通訊了。有什麼辦法能夠解決該問題呢?答案是——鏈路聚合。網絡
本示例中,兩臺交換機LSW1和LSW2之間經過一條鏈路互相鏈接,若是鏈路故障,那麼PC1和PC2則不可以通訊,經過部署鏈路聚合,能夠確保LSW1和LSW2之間的鏈路故障了一條,能夠走另一條鏈路。負載均衡
假設LSW1和LSW2之間的流量很大,超過了接口的帶寬1G,經過部署鏈路聚合,能夠確保SWA和SWB之間的鏈路不會產生擁塞。ide
正文code
1 什麼是鏈路聚合?blog
從端口的角度定義:接口
鏈路聚合(Link Aggregation)是指將多個物理端口匯聚在一塊兒,造成一個邏輯端口,以實現出/入流量吞吐量在各成員端口的負荷分擔,交換機根據用戶配置的端口負載分擔方式決定數據包從哪一個成員端口發送到對端的交換機。路由
從鏈路的角度定義:部署
鏈路聚合(Link Aggregation)是把兩臺設備之間的多條物理鏈路聚合在一塊兒,當作一條邏輯鏈路來使用。這兩臺設備能夠是一對路由器,一對交換機,或者是一臺路由器和一臺交換機。一條聚合鏈路能夠包含多條成員鏈路,默認最多爲8條。it
2 鏈路聚合的做用:
鏈路聚合可以提升鏈路帶寬。理論上,經過聚合幾條鏈路,一個聚合口的帶寬能夠擴展爲全部成員口帶寬的總和,這樣就有效地增長了邏輯鏈路的帶寬。
鏈路聚合爲網絡提供了高可靠性。配置了鏈路聚合以後,若是一個成員接口發生故障,該成員口的物理鏈路會把流量切換到另外一條成員鏈路上。
3 幾個概念:
把聚合後獲得的邏輯鏈路稱爲聚合鏈路,把聚合鏈路中的每一條物理鏈路稱爲成員鏈路。
把聚合後獲得的邏輯端口稱爲聚合端口,把聚合端口中的每個物理端口稱爲成員端口。
聚合鏈路也被稱爲Eth-Trunk鏈路,聚合端口也被稱爲Eth-Trunk端口。
4 鏈路聚合工做模式
鏈路聚合包含兩種模式:手動負載均衡模式和靜態LACP(Link Aggregation Control Protocol)模式。
手工負載分擔模式:
手工負載分擔模式下,Eth-Trunk的創建、成員接口的加入由手工配置,沒有鏈路聚合控制協議的參與。
使用場景:
當須要在兩個直連設備間提供一個較大的鏈路帶寬而設備又不支持LACP協議時,可使用手工負載分擔模式。
靜態LACP模式:
在靜態LACP模式中,鏈路兩端的設備相互發送LACP報文,協商聚合參數。協商完成後,兩臺設備肯定活動接口和非活動接口。
在靜態LACP模式中,須要手動建立一個Eth-Trunk口,並添加成員口。
靜態LACP模式也叫M:N模式。M表明活動成員鏈路,用於在負載均衡模式中轉發數據。N表明非活動鏈路,用於冗餘備份。
兩種鏈路聚合模式的主要區別:
在靜態LACP模式中,一些鏈路充當備份鏈路。
5 鏈路聚合的條件:
在一個聚合口中,聚合鏈路兩端的物理口(即成員口)的全部參數必須一致,包括物理口的數量,傳輸速率,雙工模式和流量控制模式。成員口能夠是二層接口或三層接口。
6 負載分擔的方式:
鏈路聚合帶來數據包亂序問題
數據流在聚合鏈路上傳輸,數據順序必須保持不變。一個數據流能夠看作是一組MAC地址和IP地址相同的幀。
兩臺設備間的SSH或SFTP鏈接能夠看作一個數據流。
若是未配置鏈路聚合,只是用一條物理鏈路來傳輸數據,那麼一個數據流中的幀老是能按正確的順序到達目的地。
如何解決數據包亂序
爲了不數據包亂序的問題,Eth-Trunk採用逐流負載分擔的機制。
這種機制把數據幀中的地址經過HASH算法生成HASH-KEY值,而後根據這個數值在Eth-Trunk轉發表中尋找對應的出接口,不一樣的MAC或IP地址HASH得出的HASH-KEY值不一樣,從而出接口也就不一樣。
這樣既保證了同一數據流的幀在同一條物理鏈路轉發,又實現了流量在聚合組內各物理鏈路上的負載分擔,即逐流的負載分擔。逐流負載分擔能保證包的順序,但不能保證帶寬利用率。
負載分擔的類型
*根據報文的目的MAC地址進行負載分擔;
*根據報文的源IP地址進行負載分擔;
*根據報文的目的IP地址進行負載分擔;
*根據報文的源MAC地址和目的MAC地址進行負載分擔;
*根據報文的源IP地址和目的IP地址進行負載分擔;
*根據報文的VLAN、源物理端口等對L二、IPv四、IPv6和MPLS報文進行加強型負載分擔。
7 鏈路聚合的配置案例:
如上圖所示,在兩臺交換機之間配置手勱模式的鏈路聚合 :
[LSW1]interface Eth-Trunk 1 [LSW1-Eth-Trunk1]interface GigabitEthernet0/0/1 [LSW1-GigabitEthernet0/0/1]eth-trunk 1 [LSW1-GigabitEthernet0/0/1]interface GigabitEthernet0/0/2 [LSW1-GigabitEthernet0/0/2]eth-trunk 1 [LSW2]interface Eth-Trunk 1 [LSW2-Eth-Trunk1]interface GigabitEthernet0/0/1 [LSW2-GigabitEthernet0/0/1]eth-trunk 1 [LSW2-GigabitEthernet0/0/1]interface GigabitEthernet0/0/2 [LSW2-GigabitEthernet0/0/2]eth-trunk 1
經過執行interface Eth-trunk <trunk-id>命令配置鏈路聚合。這條命令建立了一個Eth-Trunk口,而且進入該Eth-Trunk口視圖。
檢查鏈路聚合是否成功:
執行display interface eth-trunk <trunk-id>命令,能夠確認兩臺設備間是否已經成功實現鏈路聚合。也可使用這條命令收集流量統計數據,定位接口故障。
若是Eth-Trunk口處於UP狀態,代表接口正常運行。
若是接口處於Down狀態,代表全部成員口物理層發生故障。
如上圖所示,在兩臺交換機之間配置靜態LACP模式的鏈路聚合 :
[LSW1]interface Eth-Trunk 1 [LSW1-Eth-Trunk1] mode lacp-static [LSW1-Eth-Trunk1]interface GigabitEthernet0/0/1 [LSW1-GigabitEthernet0/0/1]eth-trunk 1 [LSW1-GigabitEthernet0/0/1]interface GigabitEthernet0/0/2 [LSW1-GigabitEthernet0/0/2]eth-trunk 1 [LSW2]interface Eth-Trunk 1 [LSW2-Eth-Trunk1] mode lacp-static [LSW2-Eth-Trunk1]interface GigabitEthernet0/0/1 [LSW2-GigabitEthernet0/0/1]eth-trunk 1 [LSW2-GigabitEthernet0/0/1]interface GigabitEthernet0/0/2 [LSW2-GigabitEthernet0/0/2]eth-trunk 1
檢查鏈路聚合是否成功:
執行display interface eth-trunk 1命令,能夠確認兩臺設備間是否已經成功實現鏈路聚合。端口處於select狀態表示是激活端口。