在开始深入原理之前,必须先把这个知识点在教材与标准文档里的正式称谓说清楚,否则后面所有分析都会失去基准。链路聚合在软考网络工程师考试中常以多种名称出现,考生若不能把它们对应起来,读题时就会产生歧义。链路聚合的英文全称是 Link Aggregation,其对应的国际标准最初是 IEEE 802.3ad,后来被并入 IEEE 802.1AX。这一技术把多条物理以太网链路捆绑成一个逻辑上的聚合组,向更上层表现为一条逻辑链路,从而实现带宽叠加、链路冗余和负载分担三大目标。在华为设备体系里,这个聚合组被称为 Eth-Trunk,也就是以太网链路聚合;在思科体系中它被称为 EtherChannel 或者 Port Channel;在通用术语里,链路聚合又常被叫作端口聚合、链路捆绑、端口捆绑。这些名称指向的是同一个技术本质,区别只在于厂商实现的细节与配置命令。软考命题在选择题里通常使用"链路聚合""Eth-Trunk""LACP"这些词,考生需要清楚它们之间的包含关系:链路聚合是总称,Eth-Trunk 是华为实现,LACP 是实现链路聚合时可选用的控制协议。
链路聚合组在逻辑上对应一个接口,这个逻辑接口被称为聚合接口,参与聚合的物理接口则被称为成员接口或者成员端口。聚合接口向下管理一组物理端口,向上提供统一的二层转发能力。从协议栈的角度看,链路聚合工作在数据链路层,它并不改变上层的帧结构,也不参与路由计算,只是把原本多条独立工作的物理链路在转发平面合并成一个整体。这一点是理解后续所有机制的前提:链路聚合解决的是链路层的带宽与冗余问题,它与网络层的路由冗余、与传输层的多路径传输是不同层面的技术,不能混为一谈。
链路聚合之所以被引入网络工程实践,是因为单条物理链路的带宽与可靠性存在天花板。早期以太网从十兆、百兆演进到千兆,带宽提升依赖的是物理层速率的跃迁,但每一次速率升级都意味着新硬件、新线缆、新端口的大规模投入。当企业网络需要一条超过千兆但又不愿意直接升级到万兆的骨干链路时,用两条千兆链路捆成一个逻辑链路,就成了一种低成本、平滑扩展的方案。更重要的是,链路聚合天然带来了冗余能力:当聚合组中的某一条物理链路因光纤断裂、端口故障或者光模块损坏而失效时,流量会自动切换到剩余的正常链路上,只要聚合组内还有至少一条可用链路,业务就不会中断。这种冗余与带宽叠加的结合,使链路聚合成为园区网与数据中心互联场景中性价比最高的技术之一。
从标准角度看,链路聚合的规范化经历了一个过程。IEEE 802.3ad 是最初定义链路聚合的标准,它规定了聚合的基本框架、链路聚合控制协议 LACP 的报文格式与状态机。后来,链路聚合的功能被纳入 IEEE 802.1AX 标准统一管理,802.3ad 相应地被整合其中。软考题目里偶尔会直接问"链路聚合遵循的标准是什么",正确选项应指向 802.3ad 或者 802.1AX。考生需要记住,链路聚合与生成树协议 STP 都属于 IEEE 802 系列标准,但链路聚合不依赖生成树,二者是并列互补的关系,而不是从属关系。理清这一点,有助于在后文理解"聚合组"与"生成树"协同工作的边界。
理解了概念定义之后,必须深入链路聚合的运行机制,否则只能停留在背命令的层面,遇到灵活变化的题目就会失分。链路聚合的底层机制可以拆成三个相互关联的部分:聚合组的形成与协商、负载分担的哈希计算、以及故障切换时的流量迁移。这三个部分分别回答了"哪些链路能绑在一起""数据到底从哪条链路走""某条链路断了怎么办"三个问题。
链路聚合组的形成有两种方式,一种是完全由管理员手工配置的静态聚合,另一种是通过链路聚合控制协议 LACP 动态协商的聚合。LACP 的全称是 Link Aggregation Control Protocol,它本身是一个运行在数据链路层的协议,其报文类型为 LACPDU。参与 LACP 协商的设备通过周期性地交互 LACPDU,交换各自的系统优先级、端口优先级、端口标识、操作密钥等信息,从而判断对端端口是否属于同一个聚合组、是否具备聚合条件。只有双方交换的信息满足一致性要求,端口才能被纳入同一个聚合组并进入正常工作状态。
LACP 协商涉及一个关键概念,就是操作密钥,通常称为 LAG 标识。同一台设备上,只有当多个端口的速率、双工模式、所属 VLAN、端口类型等属性完全一致时,它们才会被赋予相同的操作密钥,从而具备聚合到同一组的资格。如果一组端口中有一个是千兆、另一个是百兆,或者一个工作在二层、另一个工作在路由模式,它们的操作密钥不同,就无法加入同一个聚合组。这个机制的本质,是防止把属性不一致的物理链路捆在一起导致转发异常。软考命题经常在这一点上挖坑,例如问"以下哪种情况端口无法加入同一聚合组",正确思路就是从速率、双工、VLAN、二层三层属性这几个维度去比对。
链路聚合实现带宽叠加的关键,在于负载分担算法。这里需要先厘清一个容易被忽略的事实:链路聚合组在转发面上表现为一个逻辑端口,但真正承载数据包的仍然是那几条物理链路,因此设备必须在多条物理链路之间做出选择,而这个选择动作就是负载分担算法的职责所在。多条物理链路被捆绑后,流量并不会被简单地平均分割到每条链路上,而是依据哈希计算的结果,把不同的数据流转发到不同的成员端口。这里有一个极其重要的概念,就是链路聚合的负载分担是逐流进行的,而不是逐包进行的。所谓逐流,是指同一条数据流,也就是五元组相同的报文,永远走同一条物理链路;所谓逐包,是指同一个数据流的每个报文被轮流分发到不同链路。链路聚合采用逐流而非逐包,是为了保证同一条流的报文不会因经过不同物理链路而产生乱序。因为不同物理链路的传输时延可能不同,如果逐包分发,后发的报文可能先到,接收方就需要缓存重排,严重影响传输性能。
逐流分发的依据是哈希算法。哈希算法的本质是一个确定性映射函数,它把长度不定的输入字段压缩成一个固定长度的数值,并且保证相同的输入一定产生相同的输出。正是这种确定性,保证了同一条数据流的每个报文都会被映射到同一条物理链路上,从而在转发路径上保持报文顺序。设备从报文中提取参与哈希的字段,常见的有源 IP 地址、目的 IP 地址、源 MAC 地址、目的 MAC 地址、源端口、目的端口等,把这些字段送入哈希函数计算出一个结果,再用这个结果对成员端口数量取模,从而决定该流转发到哪个端口。管理员可以配置参与哈希的字段组合,例如华为设备上常见的负载分担方式有基于源目的 IP 的、基于源目的 MAC 的、基于源目的端口组合的等。不同的哈希字段组合适用于不同的网络场景,例如在三层转发的场景下用 IP 地址做哈希,在二层交换场景下用 MAC 地址做哈希。理解哈希字段的选择,是解答负载分担类题目的关键。
当聚合组中的某条成员链路发生故障时,链路聚合机制会自动把原本经由该链路转发的流量切换到其他正常链路上。这一过程涉及两个层面的动作,一个是端口状态的检测,另一个是哈希结果的重新映射。故障检测依赖物理层的链路状态检测或者 LACP 的定时器机制,一旦发现端口失效,设备会立即将该端口从聚合组中剔除。随后,原本映射到该端口的那些流,会被重新计算哈希并映射到剩余的成员端口上。由于负载分担是逐流的,切换时受影响的是原来走故障链路的那部分流,其余流不受影响。这种切换速度远快于生成树的收敛,因此链路聚合在冗余场景下提供了亚秒级的故障恢复能力。需要强调的是,哈希映射的重新计算只会影响原本经过故障链路的那部分数据流,其余数据流的转发路径保持不变,这种局部迁移的特性进一步降低了故障对整体业务的影响。此外,在运行 LACP 的设备上,故障检测还依赖 LACPDU 报文的超时机制,即便物理层信号未立即丢失,协议层也能在定时器超时后判定端口失效,从而触发迁移。
链路聚合在实际网络工程中有多种实现形态和工作模式,这一部分是软考选择题的高频命题区,也是考生最容易把概念记混的地方。本段把链路聚合的工作模式分类讲清楚,并与容易混淆的堆叠、端口聚合概念进行辨析。
在华为设备上,链路聚合的工作模式通常分为三类,这三类模式的本质差异在于协议是否参与以及端口以何种方式进入聚合组,考生需要从这两个维度去理解,而不是机械记忆模式名称。第一类是手动负载分担模式,这种模式下不运行 LACP 协议,聚合组的形成完全由管理员手工指定,设备之间不交换任何协商报文,因此也无法检测对端是否配置正确,存在因配置错误导致环路或者通信异常的风险。第二类是静态 LACP 模式,这种模式下运行 LACP 协议,由设备间协商建立聚合,但聚合组成员由管理员预先配置,LACP 只负责确认链路状态和聚合资格。第三类是动态 LACP 模式
本篇完!