数据中心网络高可用技术之从服务器到交换机:链路聚合 (balance-xor, balance-rr, broadcast)

💡 原文中文,约7000字,阅读约需17分钟。
📝

内容提要

本文讨论了Linux bonding模式中的active-backup, balance-tlb和balance-alb,并提出了链路聚合作为完美的解决方案。链路聚合将多个物理线路组合成一个逻辑线路,实现带宽的充分利用和自动切换。文章还介绍了链路聚合的负载均衡算法和配置实验。最后,作者提到了balance-rr和broadcast两种特殊的bonding模式。

🔎

延伸解读

链路聚合的命名乱象与本质

文章列举了链路聚合的众多别名,如EtherChannel、Eth-Trunk、bonding、teaming等,指出这些名称本质相同,都是将多条物理链路虚拟为一条逻辑链路。不同厂商使用不同术语,部分原因是为了市场宣传。读者在接触不同设备时,不必被术语迷惑,应关注其核心功能:带宽叠加与故障自动切换。

负载均衡算法不标准化的原因与影响

链路聚合的负载均衡算法没有统一标准,因为标准化成本高,且最佳算法取决于拓扑和流量特征。发送端可自由选择基于MAC、IP或端口的哈希算法,接收端需兼容所有算法。这导致同一流量上下行可能走不同物理链路,如实验中ping请求从eth1发出、回复从eth0收到,只要单个方向不乱序即可接受。

故障切换的挑战与监控选择

在链路聚合中,服务器和交换机各自独立选路,双方状态不互通。若服务器网卡故障,交换机可能仍向其发送数据导致丢包。因此Linux侧建议使用ARP monitoring而非MII monitoring来检测整条链路状态,交换机侧也需配置类似机制。但ARP monitoring可能因目标IP问题误判,切换准确性仍是难点。

balance-rr与broadcast的特殊适用场景

balance-rr是唯一允许同一flow使用所有网卡的模式,通过轮询发送包,可使单个TCP连接利用总带宽,但会造成乱序,因此更适合不关心顺序的UDP协议。broadcast模式将包复制到所有接口发送,适用于流量复制等特殊拓扑,但会带来重复包和回复,需谨慎使用。

❓

Q&A

链路聚合的主要功能是什么?

链路聚合将多个物理线路组合成一个逻辑线路,实现带宽的充分利用和自动切换。

Linux bonding模式中有哪些类型?

Linux bonding模式包括active-backup、balance-tlb和balance-alb等。

balance-xor模式的负载均衡算法是如何工作的?

balance-xor模式使用基于MAC地址和包类型的XOR运算来选择线路,确保同一数据流使用同一条线路。

在链路聚合中,故障切换的复杂性是什么?

故障切换的复杂性在于Linux和交换机之间的状态检测,双方需要配置监控机制以确保正确切换。

balance-rr模式适合什么场景?

balance-rr模式适合某些UDP协议,因为它允许同一个flow使用所有网卡,但可能导致数据包乱序。

broadcast模式的用途是什么?

broadcast模式将包复制到所有接口,适用于流量复制的特殊场景。

🏷️

标签

➡️

继续阅读