链路聚合Eth-trunk
Eth-trunk主要为增加链路带宽、实现链路冗余、实现负载分担
Eth-trunk简称链路聚合,能够将多条线从逻辑上捆绑为1条线
分为两种聚合方法:
1.手工模式:
属于一种强制模式,没有协商机制,捆几条链路就用几条,容易出现一些问题,在配置阶段一端配上命令会直接进入转发状态,可能会引起临时的故障
当配置上出现问题,也没有检查措施,也无法探测到故障
[] int eth-trunk [号] \\进入捆绑接口
[eth-trunk下] trunkport [接口号] \\将接口加入聚合组
2.LACP模式:
(以后单发一篇细说)
有协商报文,能够自定义备份链路
需要保持两端接口数目一致
自动选择主动端,当出现两端接口优先级不同,将根据主动端选择活动接口
选取主动端的因素:
设备优先级(默认32768 越小越先)
mac地址(越小越先)
接口优先级(越小越先,在捆绑端口大于限制最大活动端口时,可根据此项选择活动端口)
接口号
[] lacp priority [优先级值] \\设置交换机LACP优先级
[接口下] lacp priority [优先级值] \\设置接口LACP优先级
进行捆绑接口设置
[] int eth-trunk [号] \\进入捆绑接口
[eth-trunk下] mode lacp-static \\设置为LACP静态模式
[eth-trunk下] trunkport [接口号] \\将接口加入聚合组
[eth-trunk下] max active-linknumber [最大端口数量] \\可以选择设置当前捆绑组最大存在多少个活跃端口
[eth-trunk下] least active-linknumber [接口数] \\设置组内最少活跃链路数量,当少于这个数则整个链路down
Eth-trunk的转发原理
Eth-trunk的负载分担有两种方法:逐包、逐流
默认是通过源IP、目的IP进行负载分担也就是逐流
Eth-Trunk模块内部维护一张转发表,这张表由两项组成:
HASH-KEY值:HASH-KEY值是根据数据包的MAC地址或IP地址等,经HASH算法再根据捆绑接口数量取余计算得出
接口号:Eth-Trunk转发表表项分布和设备每个Eth-Trunk支持加入的成员接口数量相关,不同的THASH-KEY值对应不同的出接口
当一个数据流要流经聚合链路,他会根据数据包的源IP、目的IP进行哈希计算,再区域,映射到交换机中维护的哈希表上,来决定从聚合链路的哪个接口发出
哈希表,假如只有两个接口在捆绑组中,哈希表应长这样↓
HASH-KEY | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|---|
port | 1 | 2 | 1 | 2 | 1 | 2 | 1 | 2 |
但是按照这种方法还会遇到一个问题,当下游交换机发来数据时,因为时哈希映射并不会考虑那条路径最优,可能会这样↓
针对此种问题,可以在聚合接口下使能流量本地优先转发
[] int eth-trunk xx \\进入聚合接口
[eth-trunk下] local-preference enable \\开启本地优先转发
增强型链路聚合E-trunk
全称Enhanced Trunk是一种实现跨设备链路聚合的机制,基于LACP进行的拓展。能够实现多台设备间的聚合,相当于一个主备的关系
如果右侧交换机的两个聚合口名称不同,则需要向对方告知自己聚合口号,
根据上图给出一个配置示例:
省略一些基本配置比如IP地址vlanif之类的
先把所有交换机的步骤一全做了、再把步骤二全做了、再做步骤三
步骤一-主备工作
[CE] interface Eth-Trunk 10
[Eth-Trunk 10] mode lacp-static
[Eth-Trunk 10] trunkportp gi 0/0/1 to gi 0/0/4 \\将接口加入聚合口
步骤一-主备工作
[SW1] lacp e-trunk system-id 0000-0506-0708 \\SW1SW2要保持一致,虚拟一个mac地址
[SW1] lacp e-trunk priority 32769 \\设置优先级用于选举聚合链路的主动端(越小越优先)
步骤二-创建e-trunk与聚合接口
[SW1] e-trunk 1
[e-trunk 1] priority 99 \\默认100,越小越优
[e-trunk 1] peer-address 10.1.1.2 source-address 10.1.1.1 \\设置对方的IP地址和告知自己的IP地址
[SW1] interface Eth-Trunk 11
[Eth-Trunk 11] mode lacp-static
[Eth-Trunk 11] trunkportp gi 0/0/1 gi 0/0/2 \\将接口加入聚合口
步骤三-聚合口加入e-trunk
[Eth-Trunk 11] e-trunk 1 remote-eth-trunk 12 \\本口加入e-trunk 1,另一端的聚合口是12
二选一 e-trunk 1 \\如果两段Eth-Trunk一样就不需要remote-eth-trunk
步骤一-主备工作
[SW2] lacp e-trunk system-id 0000-0506-0708 \\虚拟一个mac地址
[SW2] lacp e-trunk priority 32769 \\设置优先级用于选举聚合链路的主动端(越小越优先)
步骤二-创建e-trunk与聚合接口
[SW1] e-trunk 1
[e-trunk 1] priority 101 \\默认100,越小越优
[e-trunk 1] peer-address 10.1.1.1 source-address 10.1.1.2 \\设置对方的IP地址和告知自己的IP地址
[SW2] interface Eth-Trunk 11
[Eth-Trunk 12] mode lacp-static
[Eth-Trunk 12] trunkportp gi 0/0/1 gi 0/0/2 \\将接口加入聚合口
步骤三-聚合口加入e-trunk
[Eth-Trunk 12] e-trunk 1 remote-eth-trunk 11 \\本口加入e-trunk 1,另一端的聚合口是11
(此时SW1当选为主设备)
加入了E-trunk的设备只有一台能共工作
即使主设备断了一根线,也不会切换到备设备,只有与主设备连接的线全部down才会切换
在CE上dis eth-trunk 10 可以看到连接SW1的两条链路是Select状态,连接SW2的链路是unselect
此时我们在SW2上dis int brief 查看接口状态,SW2的1口2口是up状态,但eth-trunk 12确是down,因为他被选为备设备所以不转发流量