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

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



注:拓扑和手工的相同。
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
不知何故,我似乎无法获得包含我的聚合的响应...使用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
什么是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
我在使用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
我想同时执行多个聚合函数,例如获取按状态分组的最大和最小id:Model.maximum(:id).minimum(:id).group(:status)这行不通(至少对于Rails3.1.1是这样)——你在最小调用时收到一个错误,说它没有在Fixnum上定义。NoMethodError:undefinedmethod`minimum'for22377:Fixnum我可以为它做原始sql-但只是想知道是否有更高级别/Rails选项...谢谢,克里斯 最佳答案 我有一个类似的问题,我在Rails4中使用groupwithpluck解决
如何编写考虑整个字段值而不是单个标记的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字段。如果您
聚合操作,在es中的聚合可以分为大概四种聚合:bucketing(桶聚合)mertic(指标聚合)matrix(矩阵聚合)pipeline(管道聚合)bucket类似于分类分组,按照某个key将符合条件的数据都放到该类别的组中mertic计算一组文档的相关值,比如最大,最小值matrix根据多个key从文档中提取值生成矩阵,这个操作不支持脚本(script)pipeline将其他聚合的结果再次聚合输出聚合是支持套娃(嵌套)操作的,你可以在聚合的结果上接着进行聚合操作,es是不限制聚合的深度的。本篇笔记目录如下:指标聚合的基本结构平均值聚合去重统计聚合统计汇总最大值、最小值聚合百分位统计百分位排
使用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。很好,但我真正想要的是饼图中完全相同的东西(因
如果我有这样(或类似)的对象: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} 最佳答案 正如其他人所指出的,没有内
我正在使用angular-js。我有一项服务需要在每次发生某事时触发事件。为此,我需要一个对象来充当eventaggregator。我需要build一个吗?或者我应该使用$rootScope吗?如果我应该使用$rootScope,我如何确保没有事件名称冲突?对于不需要它们传播到子作用域的事件,使用$rootScope是否有效? 最佳答案 我在平板电脑的Web项目中建模并实现了以下机制:在您的服务中定义通知。我不想使用术语事件,因为我不希望我团队中的其他开发人员将它与DOM事件混淆。对于具有智能感知支持的IDE和调试,通知的半类型名称
概览我需要以某种方式自定义jqGrid插件,通过巧妙的技巧、技巧或修改插件,以支持以下类型的聚合/分组。我将非常感谢jqGrid社区关于如何实现它的一些想法。详情聚合/分组的工作方式如下。用户最初会看到如下所示的数据网格,根据“第1列”进行分组。注意超链接(例如“+5”);这些超链接表示“折叠”行,其中这些行中的所有数据对于所有列都具有相同的值,但带有超链接的列除外。例如,通过单击“+5”链接,表格会展开以显示之前折叠成一行的5行(替换包含“+5”链接的折叠行)。请注意,现在展开的行在第2列中都具有唯一值,该列之前具有“+5”链接。关于如何实现这个的任何想法?这可能与任何其他网格插件一