草庐IT

链路聚合(Link Aggregation)

L_F_A_L 2023-04-21 原文

一,链路聚合概述

        链路聚合是将物理接口捆绑在一起作为一个逻辑接口来增加带宽和可靠性的方法。将若干条以太链路捆绑在一起形成的逻辑链路,简写为Eth-Trunk。

        如图所示,SW1和SW2之间通过三条以太网链路相连,将三条链路加入链路聚合组,就成为了一条Eth-Trunk逻辑链路,这条逻辑链路的带宽等于原先链路的带宽总和;同时三条以太网链路互相备份,有效提高了链路的可靠性。

 二,链路聚合的模式

        设备支持手工负载分担和LACP(Link Aggregation Control Protocol)两种聚合模式,支持接口链路本地优先转发,还支持跨设备的链路聚合E-Trunk。

①手工负载分担:

        手工负载分担模式下,Eth-Trunk的建立、成员接口的加入完全由手工配置。该模式下所有活动链路都参与数据的转发,平均分担流量。如果某条活动链路故障,链路聚合组自动在剩余的活动链路中平均分担流量。手工负载分担模式通常应用在对端设备不支持LACP协议的情况下。

②LACP模式

        LACP是一种利用LACP协议进行聚合参数协商,确定活动接口和非活动接口的链路聚合方式。该模式下,手工创建Eth-Trunk,手工加入Eth-Trunk成员接口,由LACP协议协商确定活动接口和非活动接口。

        LACP模式也成为M:N模式,这种方式同时实现链路负载分担和链路冗余。意思是在链路聚合组中M条链路处于活动状态,这些链路负责转发数据并进行负载分担,另外N条链路作为备份链路不转发数据。当M条链路出现故障。系统会从N条链路中选择优先级最高的接替出现故障的链路,并开始转发数据。

        LACP和手工负载分担的主要区别为:LACP模式有备份链路,而手工负载分担均处于转发状态,分担负载流量。

三,缺省配置

参数缺省值
链路聚合模式手工负载分担
活动接口数上限8
活动接口数下限1
系统LACP优先级32768
接口LACP优先级32768
LACP抢占disable
LACP抢占等待时间30s
接收LACP报文超时时间90s
Eth-Trunk接口流量本地优先转发Eanble

四,配置手工负载分担

4.1拓扑

4.2配置步骤

SW1配置:

1.在系统视图下进入Eth-Trunk接口视图。"interface Eth-Trunk id"

[SW1]interface Eth-Trunk 1

2.默认是手工负载分担,并将G0/0/1~0/0/3接口加入链路聚合组。可以在Eth-Trunk接口视图下将接口加入,也可以在物理接口视图下使用"eth-trunk 1"加入。(删除Eth-Trunk接口时,必须先将成员接口undo。)


[SW1-Eth-Trunk1]mode manual  load-balance  
[SW1-Eth-Trunk1]trunkport GigabitEthernet  0/0/1 to 0/0/3
[SW1-Eth-Trunk1]dis this
#
interface Eth-Trunk1
#
return

物理成员接口下加入Eth-Trunk注意事项:

        · 每个Eth-Trunk接口下最多可以包含8个成员接口。

        · 成员接口不能配置任何业务和静态MAC地址。

        · 成员接口加入Eth-Trunk时,必须为缺省的hybrid类型接口。

        · Eth-Trunk接口不能嵌套,Eth-Trunk接口不能作为Eth-Trunk的成员接口。

        · 一个以太网接口只能加入到一个Eth-Trunk接口,如果需要加入其他Eth-Trunk接口,必须先退出原来的Eth-Trunk接口。

        · 一个Eth-Trunk接口中的成员接口必须是同一类型。

        · 可以将不同接口板上的以太网接口加入到同一个Eth-Trunk。

        · 如果本地设备使用了Eth-Trunk,与成员接口直连的对端接口也必须捆绑为Eth-Trunk接口,两端才能正常通信。

        · 当成员接口速率不一致,速率较小的接口可能会出现拥塞,导致丢包。

        · 当成员接口加入Eth-Trunk后,学习MAC地址时是按照Eth-Trunk来学习的,而不是按照成员接口。

3.将Eth-Trunk 1配置为Trunk,允许VLAN10和20通过。

[SW1]vlan batch  10 20    
[SW1]interface  GigabitEthernet  0/0/4 
[SW1-GigabitEthernet0/0/4]port link-type access 
[SW1-GigabitEthernet0/0/4]port default vlan 10
[SW1-GigabitEthernet0/0/4]interface GigabitEthernet 0/0/5
[SW1-GigabitEthernet0/0/5]port link-type access          
[SW1-GigabitEthernet0/0/5]port default vlan 20  
[SW1-GigabitEthernet0/0/5]interface  Eth-Trunk  1
[SW1-Eth-Trunk1]port link-type trunk 
[SW1-Eth-Trunk1]port trunk allow-pass vlan 10 20

4.SW2配置如下:

[SW2]interface  Eth-Trunk  1
[SW2-Eth-Trunk1]interface G0/0/1
[SW2-GigabitEthernet0/0/1]eth-trunk 1
[SW2-GigabitEthernet0/0/1]interface G0/0/2
[SW2-GigabitEthernet0/0/2]eth-trunk 1     
[SW2-GigabitEthernet0/0/2]interface G0/0/3
[SW2-GigabitEthernet0/0/3]eth-trunk 1  
[SW2-GigabitEthernet0/0/3]vlan batch 10 20
[SW2]interface GigabitEthernet  0/0/4
[SW2-GigabitEthernet0/0/4]port link-type access
[SW2-GigabitEthernet0/0/4]port default vlan 10
[SW2-GigabitEthernet0/0/4]interface GigabitEthernet 0/0/5
[SW2-GigabitEthernet0/0/5]port link-type access          
[SW2-GigabitEthernet0/0/5]port default vlan 20 
[SW2-GigabitEthernet0/0/5]interface eth-trunk 1
[SW2-Eth-Trunk1]port link-type trunk
[SW2-Eth-Trunk1]port trunk allow-pass vlan 10 20

5.检查Eth-Trunk

[SW1]display  eth-trunk  1
Eth-Trunk1's state information is:
WorkingMode: NORMAL         Hash arithmetic: According to SIP-XOR-DIP   
# NORMAL及手工负载分担        # 交换机默认支持逐流,基于源目IP的哈希
Least Active-linknumber: 1  Max Bandwidth-affected-linknumber: 8    
# 活动的链路最小数量          # 可以加入链路聚合组的最大数量
Operate status: up          Number Of Up Port In Trunk: 3                     
--------------------------------------------------------------------------------
PortName                      Status      Weight 
GigabitEthernet0/0/1          Up          1      
GigabitEthernet0/0/2          Up          1      
GigabitEthernet0/0/3          Up          1  

6.修改负载分担的方式

①dst-ip

从目的IP地址、出端口的TCP/UDP端口号中分别选择指定位的3bit数值进行异或运算,选择对应接口。

②dst-mac

从目的MAC、VLAN ID、以太网类型以及入端口信息中分别选择指定位的3bit数值进行异或运算。

③src-ip

从源IP地址、入端口的TCP/UDP端口号中分别选择指定位的3bit数值进行异或运算。

④src-mac

从源MAC地址、VLAN ID、以太网类型及入端口信息中分别选择指定位的3bit数值进行异或运算,根据运算结果选择Eth-Trunk表中对应的出接口。

⑤src-dst-ip

从源目IP地址两种负载分担模式的运算结果进行异或运算,根据运算结果选择Eth-Trunk表中对应的出接口。

⑥stc-dst-mac

从源目MAC地址,VLAN ID,以太网类型及入端口信息中分别选择指定位的3bit数值进行异或运算,根据运算结果选择Eth-Trunk表中对应的出接口。

#修改逐流逐包

[SW2]load-balance  ?
  flow    Load balance per flow
  packet  Load balance per packet

修改方式:

[SW1-Eth-Trunk1]load-balance  ?
  dst-ip       According to destination IP hash arithmetic
  dst-mac      According to destination MAC hash arithmetic
  src-dst-ip   According to source/destination IP hash arithmetic
  src-dst-mac  According to source/destination MAC hash arithmetic
  src-ip       According to source IP hash arithmetic
  src-mac      According to source MAC hash arithmetic

7.修改活动数目上限下限

[SW1-Eth-Trunk1]least  active-linknumber  ?
  INTEGER<1-8>  The data of least active-linknumber
[SW1-Eth-Trunk1]max  bandwidth-affected-linknumber  ?
  INTEGER<1-8>  The data of bandwidth-affected-linknumber

4.3 故障测试

        如上图拓扑中所示,PC1和PC3通信,PC2和PC4通信然后依次down掉其他每个接口的其他两个接口查看通信是否正常。我在ENSP中试了有问题,在真机环境也试了一下是正常的,短暂的丢包后会恢复正常通信。真实环境测试如图所示:

五,配置静态LACP

5.1拓扑

  注:拓扑和手工的相同。

 5.2配置

1.修改模式为静态LACP模式

SW1:

[SW1]interface  Eth-Trunk  1
[SW1-Eth-Trunk1]undo trunkport  GigabitEthernet  0/0/1 to 0/0/3 #将成员接口先移除
[SW1-Eth-Trunk1]mode  lacp-static 
[SW1-Eth-Trunk1]trunkport  GigabitEthernet  0/0/1 to 0/0/3

SW2:

[SW2]interface  Eth-Trunk  1
[SW2-Eth-Trunk1]undo trunkport  GigabitEthernet  0/0/1 to 0/0/3
[SW2-Eth-Trunk1]mode  lacp-static  
[SW2-Eth-Trunk1]trunkport GigabitEthernet  0/0/1 to 0/0/3

注意:更换模式后,活动链路上下限会自动变更。

2.查看LACP模式的链路聚合

[SW2]display  eth-trunk  1
Eth-Trunk1's state information is:
Local:
LAG ID: 1                   WorkingMode: STATIC    #模式为LACP                           
Preempt Delay: Disabled     Hash arithmetic: According to SIP-XOR-DIP         
# 抢占默认关闭                    # 默认基于源目IP地址HASH的逐流
System Priority: 32768      System ID: 4c1f-cc35-037c      
# 系统优先级(越小越优)       # 系统ID(越小越优先)                   
Least Active-linknumber: 1  Max Active-linknumber: 8  
# 最小活动链路                # 最大活动链路                        
Operate status: up          Number Of Up Port In Trunk: 3                     
--------------------------------------------------------------------------------
ActorPortName          Status   PortType PortPri PortNo PortKey PortState Weight
GigabitEthernet0/0/1   Selected 1GE      32768   2      305     10111100  1     
GigabitEthernet0/0/2   Selected 1GE      32768   3      305     10111100  1     
GigabitEthernet0/0/3   Selected 1GE      32768   4      305     10111100  1     
Partner:
--------------------------------------------------------------------------------
ActorPortName          SysPri   SystemID        PortPri PortNo PortKey PortState
GigabitEthernet0/0/1   32768    4c1f-cc0e-6b53  32768   2      305     10111100
GigabitEthernet0/0/2   32768    4c1f-cc0e-6b53  32768   3      305     10111100
GigabitEthernet0/0/3   32768    4c1f-cc0e-6b53  32768   4      305     10111100
    

3.开启抢占并配置抢占时间

# SW1
[SW1-Eth-Trunk1]lacp  preempt  enable  
[SW1-Eth-Trunk1]lacp preempt delay 10
# SW2
[SW2-Eth-Trunk1]lacp  preempt  enable  
[SW2-Eth-Trunk1]lacp preempt delay  10

4.修改最大活动链路数量

# SW1
[SW1-Eth-Trunk1]max  active-linknumber  2
# SW2
[SW2-Eth-Trunk1]max  active-linknumber  2

5.检查Eth-Trunk

[SW1-Eth-Trunk1]display  eth-trunk  1
Eth-Trunk1's state information is:
Local:
LAG ID: 1                   WorkingMode: STATIC                               
Preempt Delay Time: 10      Hash arithmetic: According to SIP-XOR-DIP         
System Priority: 32768      System ID: 4c1f-cc0e-6b53                         
Least Active-linknumber: 1  Max Active-linknumber: 2   
                                # 最大活动链路变为2                       
Operate status: up          Number Of Up Port In Trunk: 2                     
--------------------------------------------------------------------------------
ActorPortName          Status   PortType PortPri PortNo PortKey PortState Weight
GigabitEthernet0/0/1   Selected 1GE      32768   2      305     10111100  1     
GigabitEthernet0/0/2   Selected 1GE      32768   3      305     10111100  1     
GigabitEthernet0/0/3   Unselect 1GE      32768   4      305     10100000  1     
# 比较优先级相同,接口越小越优,最大的接口变为备份状态
Partner:
--------------------------------------------------------------------------------
ActorPortName          SysPri   SystemID        PortPri PortNo PortKey PortState
GigabitEthernet0/0/1   32768    4c1f-cc35-037c  32768   2      305     10111100
GigabitEthernet0/0/2   32768    4c1f-cc35-037c  32768   3      305     10111100
GigabitEthernet0/0/3   32768    4c1f-cc35-037c  32768   4      305     10100000
    

6.优先级相同所以比较System ID,本端System ID为4c1f-cc35-037c,对端System ID为4c1f-cc0e-6b53。对端的更优所以链路的状态根据对端的接口优先级决定。(注意:修改优先级命令为:

[SW1]lacp  priority  ?
  INTEGER<0-65535>  Priority value, the default value is 32768

7.优先级更高的SW1上修改G0/0/3的优先级为32767,使得G0/0/3变为活动状态。

[SW1-GigabitEthernet0/0/3]lacp  priority  32767
[SW1]display  eth-trunk  1
Eth-Trunk1's state information is:
Local:
LAG ID: 1                   WorkingMode: STATIC                               
Preempt Delay Time: 10      Hash arithmetic: According to SIP-XOR-DIP         
System Priority: 32768      System ID: 4c1f-cc0e-6b53                         
Least Active-linknumber: 1  Max Active-linknumber: 2                          
Operate status: up          Number Of Up Port In Trunk: 2                     
--------------------------------------------------------------------------------
ActorPortName          Status   PortType PortPri PortNo PortKey PortState Weight
GigabitEthernet0/0/1   Selected 1GE      32768   2      305     10111100  1     
GigabitEthernet0/0/2   Unselect 1GE      32768   3      305     10100000  1     
GigabitEthernet0/0/3   Selected 1GE      32767   4      305     10111100  1     
Partner:
--------------------------------------------------------------------------------
ActorPortName          SysPri   SystemID        PortPri PortNo PortKey PortState
GigabitEthernet0/0/1   32768    4c1f-cc35-037c  32768   2      305     10111100
GigabitEthernet0/0/2   32768    4c1f-cc35-037c  32768   3      305     10100000
GigabitEthernet0/0/3   32768    4c1f-cc35-037c  32768   4      305     10111100

六,综合实验(二层三层链路聚合)

有关链路聚合(Link Aggregation)的更多相关文章

  1. ruby - Rails Elasticsearch 聚合 - 2

    不知何故,我似乎无法获得包含我的聚合的响应...使用curl它按预期工作:HBZUMB01$curl-XPOST"http://localhost:9200/contents/_search"-d'{"size":0,"aggs":{"sport_count":{"value_count":{"field":"dwid"}}}}'我收到回复:{"took":4,"timed_out":false,"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":90,"max_score":0.0,"hits":[]},"a

  2. c# - Ruby 等效于 C# Linq 聚合方法 - 2

    什么是Linq聚合方法的ruby​​等价物。它的工作原理是这样的varfactorial=new[]{1,2,3,4,5}.Aggregate((acc,i)=>acc*i);每次将数组序列中的值传递给lambda时,变量acc都会累积。 最佳答案 这在数学以及几乎所有编程语言中通常称为折叠。它是更普遍的变形概念的一个实例。Ruby从Smalltalk中继承了这个特性的名称,它被称为inject:into:(像aCollectioninject:aStartValueinto:aBlock一样使用。)所以,在Ruby中,它称为inj

  3. sql - Arel 导致聚合无限循环 - 2

    我在使用Arel聚契约(Contract)一查询中的2列时遇到了问题。当我运行它时,在railsdev-server崩溃之前,整个服务器会卡住一分钟。我怀疑是无限循环:)。也许我误解了Arel的整个概念,如果有人能看一下,我将不胜感激。这个查询的预期结果是这样的:[{:user_id=>1,:sum_account_charges=>300,:sum_paid_debts=>1000},...]a_account_charges=Table(:account_charges)a_paid_debts=Table(:paid_debts)a_participants=Table(:exp

  4. ruby-on-rails - 如何在 Rails/ActiveRecord 中同时使用多个聚合函数? - 2

    我想同时执行多个聚合函数,例如获取按状态分组的最大和最小id:Model.maximum(:id).minimum(:id).group(:status)这行不通(至少对于Rails3.1.1是这样)——你在最小调用时收到一个错误,说它没有在Fixnum上定义。NoMethodError:undefinedmethod`minimum'for22377:Fixnum我可以为它做原始sql-但只是想知道是否有更高级别/Rails选项...谢谢,克里斯 最佳答案 我有一个类似的问题,我在Rails4中使用groupwithpluck解决

  5. ruby - ElasticSearch 术语按整个字段聚合 - 2

    如何编写考虑整个字段值而不是单个标记的ElasticSearch术语聚合查询?例如,我想按城市名称聚合,但以下返回new、york、san和francisco作为单独的桶,而不是纽约和旧金山作为预期的桶。curl-XPOST"http://localhost:9200/cities/_search"-d'{"size":0,"aggs":{"cities":{"terms":{"field":"city","min_doc_count":10}}}}' 最佳答案 您应该在映射中修复此问题。添加一个not_analyzed字段。如果您

  6. es笔记六之聚合操作之指标聚合 - 2

    聚合操作,在es中的聚合可以分为大概四种聚合:bucketing(桶聚合)mertic(指标聚合)matrix(矩阵聚合)pipeline(管道聚合)bucket类似于分类分组,按照某个key将符合条件的数据都放到该类别的组中mertic计算一组文档的相关值,比如最大,最小值matrix根据多个key从文档中提取值生成矩阵,这个操作不支持脚本(script)pipeline将其他聚合的结果再次聚合输出聚合是支持套娃(嵌套)操作的,你可以在聚合的结果上接着进行聚合操作,es是不限制聚合的深度的。本篇笔记目录如下:指标聚合的基本结构平均值聚合去重统计聚合统计汇总最大值、最小值聚合百分位统计百分位排

  7. javascript - 如何制作饼图聚合数据源? - 2

    使用KendoUICompleteforASP.NETMVC,版本:2013.31119(2013.11.20)...如果我有这段代码:$("#status-chart").kendoChart({dataSource:{data:[{Status:10},{Status:20},{Status:200},{Status:200}]},series:[{field:'Status',categoryField:"Status",aggregate:'count'}]});我得到这张图表:如您所见-状态10和20的值为1,状态200的值为2。很好,但我真正想要的是饼图中完全相同的东西(因

  8. javascript - 如何聚合对象属性? - 2

    如果我有这样(或类似)的对象:sales={obs1:{Sales1:{Region:"North",Value:200},Sales2:{Region:"South",Value:100}},obs2:{Sales1:{Region:"North",Value:50},Sales2:{Region:"South",Value:20}}}如何按Region汇总属性Value的总和?答案可以是纯JavaScript或库。最终结果应该是这样的:totals={North:250,South:120} 最佳答案 正如其他人所指出的,没有内

  9. javascript - $rootScope 作为事件聚合器 - 2

    我正在使用angular-js。我有一项服务需要在每次发生某事时触发事件。为此,我需要一个对象来充当eventaggregator。我需要build一个吗?或者我应该使用$rootScope吗?如果我应该使用$rootScope,我如何确保没有事件名称冲突?对于不需要它们传播到子作用域的事件,使用$rootScope是否有效? 最佳答案 我在平板电脑的Web项目中建模并实现了以下机制:在您的服务中定义通知。我不想使用术语事件,因为我不希望我团队中的其他开发人员将它与DOM事件混淆。对于具有智能感知支持的IDE和调试,通知的半类型名称

  10. javascript - jqGrid 中的自定义聚合/分组 - 2

    概览我需要以某种方式自定义jqGrid插件,通过巧妙的技巧、技巧或修改插件,以支持以下类型的聚合/分组。我将非常感谢jqGrid社区关于如何实现它的一些想法。详情聚合/分组的工作方式如下。用户最初会看到如下所示的数据网格,根据“第1列”进行分组。注意超链接(例如“+5”);这些超链接表示“折叠”行,其中这些行中的所有数据对于所有列都具有相同的值,但带有超链接的列除外。例如,通过单击“+5”链接,表格会展开以显示之前折叠成一行的5行(替换包含“+5”链接的折叠行)。请注意,现在展开的行在第2列中都具有唯一值,该列之前具有“+5”链接。关于如何实现这个的任何想法?这可能与任何其他网格插件一

随机推荐