大家好,又见面了,我是你们的朋友全栈君。
链路聚合
- 介绍
- 链路聚合模式
-
- 两种链路聚合模式比较
- LACP模式实现原理
- Eth-Trunk的优势
- Eth-Trunk接口配置流程
- LACP抢占机制
- LACP模式Eth-Trunk建立过程
- Eth-Trunk接口负载分担
- Eth-Trunk接口配置注意事项
- 配置需求
- 综合配置
介绍
Eth-Trunk 是一种捆绑技术,它将多个物理接口捆绑成一个逻辑接口,这个逻辑接口就称为 Eth-Trunk 接口,捆绑在一起的每个物理接口称为成员接口。EthTrunk 只能由以太网链路构成。 系统 LACP 优先级值越小优先级越高,缺省系统LACP 优先级值为32768。
为什么需要这种技术?
Eth-Trunk可以用于二层的链路聚合,也可以用于三层的链路聚合。缺省情况下,以太网接口工作在二层模式。如果需要配置二层Eth-Trunk接口,可以通过portswitch命令将该接口切换成二层接口;如果需要配置三层Eth-Trunk接口,可以通过undo portswitch命令将该接口切换成三层接口。
链路聚合模式
手动负载均衡(manual load-balance)模式(当设备比较陈旧,不支持LACP模式就选这个) LACP(Link Aggregation Control Protocol)模式 (首选LACP) LACP模式也称为M:N模式,其中M条链路处于活动状态转发数据,N条链路处于非活动状态作为备份链路。
1.手工负载分担模式链路聚合 手工负载分担模式是一种最基本的链路聚合方式,在该模式下,Eth-Trunk 接口的建立,成员接口的加入完全由手工来配置,没有链路聚合控制协议的参与。该模式下所有成员接口(selected)都参与数据的转发,分担负载流量,因此称为手工负载分担模式。手工汇聚端口的 LACP 协议为关闭状态,禁止用户使能手工汇聚端口的LACP 协议。
2.LACP 协议链路聚合 LACP(Link Aggregation Control Protocol)链路聚合包含两种类型:
1) 静态 LACP 模式链路聚合
a)静态 LACP 模式链路聚合简介 静态 LACP 模式下,Eth-Trunk 接口的建立,成员接口的加入,都是由手工配置完成的。但与手工负载分担模式链路聚合不同的是,该模式下LACP 协议报文参与活动接口的选择。也就是说,当把一组接口加入Eth-Trunk 接口后,这些成员接口中哪些接口作为活动接口,哪些接口作为非活动接口还需要经过LACP 协议报文的协商确定。
静态汇聚端口的 LACP 协议为使能状态,当一个静态汇聚组被删除时,其成员端口 将形成一个或多个动态LACP 汇聚,并保持LACP 使能。禁止用户关闭静态汇聚端口的LACP 协议。
b)静态汇聚组中的端口状态 在静态汇聚组中,端口可能处于两种状态:Selected 或Standby。Selected 端口和 Standby 端口都能收发LACP 协议,但Standby 端口不能转发用户报文。
说明: 在一个汇聚组中,处于Selected 状态且端口号最小的端口为汇聚组的主端口,其他 处于Selected 状态的端口为汇聚组的成员端口。
2) 动态 LACP 模式链路聚合
a)动态 LACP 模式链路聚合简介 动态 LACP 模式下,Eth-Trunk 接口的建立,成员接口的加入,活动接口的选择完全由LACP 协议通过协商完成。这就意味着启用了动态LACP 协议的两台直连设备上,不需要创建Eth-Trunk 接口,也不需要指定哪些接口作为聚合组成员接口,两台设备会通过LACP 协商自动完成链路的聚合操作。动态 LACP 汇聚是一种系统自动创建/删除的汇聚,不允许用户增加或删除动态LACP 汇聚中的成员端口。只有速率和双工属性相同、连接到同一个设备、有相同基本配置的端口才能被动态汇聚在一起。即使只有一个端口也可以创建动态汇聚,此时为单端口汇聚。动态汇聚中,端口的LACP 协议处于使能状态。
b)动态汇聚组中的端口状态 在动态汇聚组中,端口可能处于两种状态:Selected 或Standby。 Selected 端口和Standby 端口都能收发LACP 协议,但Standby 端口不能转发用户报文。由于设备所能支持的汇聚组中的最大端口数有限制,如果当前的成员端口数量超过了最大端口数的限制,则本端系统和对端系统会进行协商,根据设备ID 优的一端的端口ID 的大小,来决定端口的状态。具体协商步骤如下:
确定设备主动端: 比较设备 ID(系统优先级 系统MAC 地址)。先比较系统优先级,如果相同再比较系统MAC 地址。设备ID 小的一端被认为优。
确定活动接口: 比较端口 ID(端口优先级 端口号)。对于设备ID 优的一端的各个端口,首先比较端口优先级,如果优先级相同再比较端口号。端口ID 小的端口为 Selected 端口,剩余端口为Standby 端口。在一个汇聚组中,处于Selected 状态且端口号最小的端口为汇聚组的主端口,其他处于Selected 状态的端口为汇聚组的成员端口。
说明: 与手工汇聚组不同的是,在静态汇聚组和动态汇聚组中,处于 DOWN 的端口为Standby 状态。
两种链路聚合模式比较
维度 | 手工模式 | LACP模式 |
---|---|---|
定义 | Eth-Trunk的建立、成员接口的加入由手工配置,没有链路聚合控制协议的参与。 | Eth-Trunk的建立是基于LACP协议的,LACP为交换数据的设备提供一种标准的协商方式,以供系统根据自身配置自动形成聚合链路并启动聚合链路收发数据。聚合链路形成以后,负责维护链路状态。在聚合条件发生变化时,自动调整或解散链路聚合。 |
设备是否需要支持LACP协议 | 不需要 | 需要 |
数据转发 | 一般情况下,所有链路都是活动链路。所有活动链路均参与数据转发。如果某条活动链路故障,链路聚合组自动在剩余的活动链路中分担流量。 | 一般情况下,部分链路是活动链路。所有活动链路均参与数据转发。如果某条活动链路故障,链路聚合组自动在非活动链路中选择一条链路作为活动链路,参与数据转发的链路数目不变。 |
是否支持跨设备的链路聚合 | 不支持 | 支持 |
检测故障 | 只能检测到同一聚合组内的成员链路有断路等有限故障,但是无法检测到链路故障、链路错连等故障。 | 不仅能够检测到同一聚合组内的成员链路有断路等有限故障,还可以检测到链路故障、链路错连等故障。 |
LACP模式实现原理
基于IEEE802.3ad标准的LACP是一种实现链路动态聚合与解聚合的协议。LACP通过链路聚合控制协议数据单元LACPDU(Link Aggregation Control Protocol Data Unit)与对端交互信息。
在LACP模式的Eth-Trunk中加入成员接口后,这些接口将通过发送LACPDU向对端通告自己的系统优先级、MAC地址、接口优先级、接口号和操作Key等信息。对端接收到这些信息后,将这些信息与自身接口所保存的信息比较,用以选择能够聚合的接口,双方对哪些接口能够成为活动接口达成一致,确定活动链路。
Eth-Trunk的优势
增加带宽:Eth-Trunk 接口的带宽是各成员接口带宽的总和。 提高可靠性:当某个成员链路出现故障时,流量会自动的切换到其他可用的链路上,从而提供整个 Eth-Trunk 链路的可靠性。 负载分担:在一个 Eth-Trunk 接口内,通过对各成员链路配置不同的权重,可以实现流量负载分担。
Eth-Trunk接口配置流程
①创建Eth-trunk ②选择链路聚合模式,默认是手工负载分担 ③加入成员接口 系统优先级小的为主动端
LACP抢占机制
若LACP开启抢占机制,假如一条主链路发生故障,此时备用链路就会被启用,进行数据转发。假设过了一段时间之后发生故障的主链路回复正常,则端口开始抢占,在抢占延时超时后,成为活跃端口,进入转发状态。备份链路不再转发数据。
为什么要设置抢占延时: 避免由于某些原因链路状态频繁变化而导致的链路聚合数据传输不稳定。(主动链路恢复后,立马抢占,然后突然又故障,有恢复。在恢复和故障之间来回徘徊)
LACP模式Eth-Trunk建立过程
1.两端互相发送LACPDU报文。 如下图所示,在DeviceA和DeviceB上创建Eth-Trunk并配置为LACP模式,然后向Eth-Trunk中手工加入成员接口。此时成员接口上便启用了LACP协议,两端互发LACPDU报文。
2.确定主动端和活动链路。
如下图所示,两端设备均会收到对端发来的LACPDU报文。以DeviceB为例,当DeviceB收到DeviceA发送的报文时,DeviceB会查看并记录对端信息,然后比较系统优先级字段,如果DeviceA的系统优先级高于本端的系统优先级,则确定DeviceA为LACP主动端。如果DeviceA和DeviceB的系统优先级相同,比较两端设备的MAC地址,确定MAC地址小的一端为LACP主动端。
选出主动端后,两端都会以主动端的接口优先级来选择活动接口,两端设备选择了一致的活动接口,活动链路组便可以建立起来,从这些活动链路中以负载分担的方式转发数据。
3.LACP抢占: 使能LACP抢占功能后,聚合组会始终保持高优先级的接口作为活动接口的状态。
Eth-Trunk接口负载分担
Eth-Trunk接口进行负载分担时,可以选择IP地址或者包作为负载分担的散列依据;同时还可以设置成员接口的负载分担权重。
两种散列依据造成的问题: 假如主机A向主机B发送一个数据比较大的100个包。
- 逐流负载分担的处理方式是:这100个包都从一条物理链路发送。这时可能会造成一条物理链路负载较大,一条物理链路空闲。
- 逐包负载分担的处理方式是:可能第1,3,5…个包从一条物理链路发送;第2,4,6…个包从另一条物理链路发送。此时数据包可能不能按顺序到达目的端,可能会造成数据乱码。
配置命令
代码语言:javascript复制进入Eth-Trunk接口视图,执行命令load-balance {
ip | packet-all },配置Eth-Trunk接口的散列依据。(缺省情况下,当Eth-Trunk接口根据IP进行散列。)
负载分担权重:配置成员接口的负载分担权重,某成员接口的权重值占所有成员接口负载分担权重之和的比例越大,该成员接口承担的负载就越大。 配置命令
代码语言:javascript复制进入以太网接口视图。执行命令distribute-weight weight-value,配置Eth-Trunk成员接口的负载分担权重。(缺省情况下,成员接口的负载分担权重为1。)
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。
配置需求
dis eth-trunk dis interface eth-trunk 查看详细信息
综合配置
代码语言:javascript复制SW1和SW2:
int Eth-Trurnk 1
mode lacp-static
int g0/0/1
eth-trunk 1
int g0/0/2
eth-trunk 1
int g0/0/5
eth-trunk 1
系统 LACP 优先级值越小优先级越高,缺省系统LACP 优先级值为32768。
修改系统优先级,希望SW1作为主动端
[SW1]lacp priority 100
修改最大活动数目MAX为2, 先看端口优先级,一样就看ID,越小越优. 选择两条
[SW1]int eth-trunk 1
[ ]max active-linknumber 2
修改端口优先级,让1和5作为活动链路,接口2作为备份
[SW1]int g0/0/1
[ ]lacp priority 100
[ ]int g0/0/5
[ ]lacp priority 100
LACP模式的抢占机制 (端口故障后 又恢复正常,抢回来)
[SW1]int eth-trunk 1
[SW1-Eth-Trunk1]lacp preempt enable 默认是关闭的,如果开了,默认是30秒
[SW1-Eth-Trunk1]lacp preempt delay 10
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/214338.html原文链接:https://javaforall.cn