以太网链路聚合基础知识
技术背景
随着业务的发展和园区规模扩大,用户对于带宽、可靠性要求越来越高,传统的升级设备提高网络带宽、部署冗余链路并辅以生成树协议实现高可靠的解决方案存在灵活度低、故障恢复时间长、配置复杂等问题。通过链路聚合技术与堆叠、集群技术实现网络带宽提升与高可靠性保障。
可靠性
网络可靠性指的是当设备或者链路出现单点或多点故障时保证网络服务不间断的能力。 网络的可靠性可以从单板、设备、链路多个层面实现
单板可靠性
核心就是主控板和交换网板,线路板上就是我们常见到的各个接口。
单板可靠性体现在配置多个主控板和交换网板,单个槽位的主控板、交换网板损坏并不影响设备的正常运行。而线路板故障的话,该板卡上的接口也会故障无法使用。
设备可靠性
设备可靠性主要是使用冗余设备,采用主备模式,当其中一台设备故障时,另一台设备可以立马切换角色并接替原来设备的工作。
链路可靠性
同样也是主备思路,在设备之间部署多条物理路线,同时为了防止环路,搭配生成树协议,保留一条链路,其他链路称为备份链路。
链路聚合
在链路可靠性中,设备之间存在多条链路,但由于 STP 的防止环路,导致实际上只有一条链路工作,设备之间链路带宽并没有提高。 以太网链路聚合(Eth-Trunk),通过将多个物理接口捆绑成一个逻辑接口,可以提高链路带宽。
- 聚合组 (Link Aggregation Group, LAG) :若干个链路捆绑在一起形成的逻辑链路。每个聚合组唯一对应着一个逻辑接口,这个逻辑接口又称为 Eth-Trunk 接口。
- 成员接口和成员链路:一望而知,就是组成 Eth-Trunk 接口的各个物理接口以及其对应的链路。在同一个聚合组中要求成员接口的接口速率、双工模式和 VLAN 配置要相同。
- 活动接口和活动链路:活动接口又称为选中接口(Selected 接口),时参与数据转发的成员接口,其对应的链路就是活动链路(Active link)
- 非活动接口和非活动链路:相对活动接口和活动链路
- 聚合模式:根据是否开启 LACP(Link Aggregation Control Protocol,链路聚合控制协议),链路聚合可以分为手工模式和LACP模式
手工模式
Eth-Trunk的建立、成员接口的加入均使用手工配置,双方系统之间不使用 LACP 进行协商。 正常情况下所有链路都是活动链路,都参与数据的转发,平均分担流量,当其中有活动链路故障时,剩下的活动链路继续分担流量。
手工模式的缺陷:
- 手工模式下,设备之间没有报文交互,只能人工确认,必须保证成员接口的对端接口都属于同一设备并且加入同一链路聚合接口,如果出现下图情况则会导致通信异常:
其中一个成员接口的对端是 SW3 而不是 SW2 ,流量被负载分担到 SW3,导致通信异常。
- 手动模式下,只能通过物理层状态判断对端接口是否正常工作。
如上图的故障则无法自动判断出来。
LACP 模式
LACP模式:采用 LACP 协议的链路聚合模式,设备间通过 LACPDU (Link Aggregation Control Protocol Data Unit) 进行交互,通过协议协商确保对端是同一台设备、同一个聚合接口的成员接口。
LACPDU 报文中包含设备优先级、MAC地址、接口优先级、接口号等
系统优先级
LACP 模式下,两端设备所选的活动接口数目必须保持一致,否则 LAG 无法建立,此时可以使其中任意一端称为主动端,对应的另一端根据主动端选择活动接口。
通过设备优先级确定主动端,值越小优先级越高,优先级相同时通过比较哪一端的 MAC 地址小来确定主动端。
接口优先级
选出主动端后,两端都会以主动端的接口优先级来选择活动接口,优先级越高的先被选为活动接口,接口优先级值越小,优先级越高。 跟设备优先级一样,默认值为32768
最大活动接口数
当成员接口数目超过最大活动接口数时,会通过比较 接口优先级 和 接口号 选举出较优的接口称为活动接口,其余的成为非活动接口,同时对应的链路分别称为活动链路、非活动链路,交换机只会从活动接口中发送、接收报文。 当活动链路中出现链路故障时,可以从非活动链路中找出一条优先级最高(比较接口优先级、接口号)的链路替换故障链路,实现总体带宽不变化、业务的不间断转发。
选举过程
- 两台交换机通过多条链路连接后,两台机子都配置 LACP 模式的链路聚合,同时设置相同的最大活跃接口数。两台交换机的每个成员接口都收发LACPDU 根据 选举原则 选出优先级较高的交换机作为主动端
- 主动端在本端比较各个成员接口的优先级和接口编号,并根据最大活动接口数,选出活动接口
- 主动端选举完活动接口后,通过 LACPDU 将本端的选举结果告知对端, 每一个成员接口 都发送 LACPDU ,而不仅仅是活动接口。LACPDU 中有三个 flags 来标识端口状态,分别是 Synchronization、Collecting、Distributing ,如果是活跃端口,三个字段的值都为1,否则均为0
- 非主动端(备份端)根据主动端的选举结果,明确本端的活动接口,同时对应的链路成为活动链路。
负载分担
基于传输模式,负载分担可以分为:基于包的负载分担模式和基于流的负载分担。
基于包的负载分担中,如果数据帧在不同的链路上转发,可能导致数据帧到达对端的时间不一致,可能会导致数据乱序。 在 Eth-Trunk 中推荐采用基于流的负载分担,既保证同一数据流的数据帧在同一条物理链路转发,又实现了流量在聚合组内各物理链路上的负载分担。
Eth-Trunk 支持基于报文的 IP 地址或 MAC 地址来进行负载分担,本地有效,对出方向的报文生效。 根据不同的业务场景,选择不同的负载分担算法,可以很好的实现负载均衡。例如报文的 IP 地址变化频繁,那么基于源 IP 、目的 IP 或源目 IP 的负载分担模式更加合理:
堆叠、集群
堆叠(iStack):多台支持堆叠特性的交换机通过堆叠线缆连接在一起,从逻辑上变成一台交换设备,作为一个整体参与数据转发。
集群(Cluster Switch System,CSS):将两台支持集群特性的交换机设备组合在一起,从逻辑上组合成一台交换设备。 集群只支持两台设备,一般框式交换机支持 CSS ,盒式交换机支持 iStack
堆叠和集群的优势:
- 堆叠交换机对外表现为一台逻辑交换机,控制平面合一,统一管理
- 堆叠内物理设备转发平面合一,转发信息共享并实时同步
- 跨物理设备的链路被聚合成一个 Eth-Trunk 端口,和下游设备实现互联
堆叠、集群的应用:
需要增加交换机上行带宽时,可以增加新交换机与原交换机组成堆叠系统,将成员交换机的多条物理链路配置成一个 LAG ,同时形成设备间备份和链路的跨设备冗余备份,增加可靠性。
两台设备组成集群,虚拟成单一的逻辑设备。简化后的组网不再需要使用 MSTP 和 VRRP 等协议,简化了网络配置,同时依靠跨设备的链路聚合,实现快速收敛,提高可靠性。
堆叠、集群的具体细节见 堆叠与集群