LACP 与 802.3ad

LACP 与 802.3ad

我正在寻求使用 dladm 在 Solaris 机器上创建聚合。我了解,一旦创建了聚合,将使用 802.3ad 根据策略(L2、L3 或 L4)平衡负载。唯一的要求是接口连接到支持 802.3ad 的单个交换机,并且接口以相同的速度/全双工运行。我希望有人能评论以下几个问题:

  1. 默认情况下,每个聚合上均禁用 LACP。启用 LACP 有什么好处?我是否已经使用 802.3ad 和默认 L4 策略进行负载平衡了?据我所知,该策略根据源端口和目标端口的哈希值选择出站接口。阅读维基百科,LACP 似乎只有两个好处 (1) 故障转移和 (2) 自动配置。802.3ad 不是已经支持故障转移了吗?如果链接断开,交换机仍会尝试将数据包传输到该接口?很难相信这是真的。就自动配置而言,我不确定需要在交换机上配置什么。对于 802.3ad,我假设交换机只需要知道使用哪种负载平衡策略(L2、L3 或 L4)将数据包发送到聚合。我遗漏了什么吗?LACP 相对于 802.3ad 的优势是什么?

  2. 我在网上看到 NFS 在服务器/客户端之间使用两个连接:一个用于数据,一个用于元数据,并且聚合中数据包的典型传输是循环的,导致所有数据流量通过一个接口,而元数据通过另一个接口(假设是两个端口聚合)。这似乎与我读到的 802.3ad 负载平衡策略相悖。如果使用 L4(Solaris dladm 默认),则传出接口将基于源端口和目标端口,并且假设交换机也使用 L4,传入接口也将基于 src/dst 端口。我错了吗?顺便问一下,第 2 层交换机真的会查看 src/dst 端口吗?对于交换机来说,将数据包拆开以计算哈希值然后重新组装似乎会耗费大量资源。我也不期望传出和传入接口用于相同的 src/dst 哈希值,即主机使用的哈希算法可能与交换机不同,或者它们从不同端计算端口。因此,我很困惑为什么单个流会被限制为单个接口的最大吞吐量——如果传入和传出传输可能在不同的接口上。

我很抱歉这篇帖子内容不完整。我正在尝试了解这些技术,但一直找不到关于这些协议如何实际实现的优秀教程或文章。我看到很多文章将 802.3ad 和 LACP 归为一类。欢迎提出任何意见。

谢谢!

答案1

IEEE 802.3ad 是链路聚合的标准,尽管链路聚合标准已转移到 802.1 组,即 802.1ax。

LACP 的真正优势在于 LACPDU 可将链路从交换机传输到主机。这可确保链路的两侧均支持 LACP。第二个优势是,使用 LACP,主机和交换机都将所有聚合端口视为单个端口,从而可以充分利用所有路径,而主机侧 LAG 则不同,在主机侧 LAG 中,交换机仍会看到多个端口,所有发往主机的数据包都经过单个路径,只有来自主机的出站数据包会在链路之间进行负载平衡。

如果您使用的交换机供应商支持 MLAG 或多机箱链路聚合,则可以使用 LACP 将连接到多个交换机的多个链路绑定在一起。这可以实现很大的弹性,同时简化管理并优化吞吐量。

但基本上,如果您的交换机支持 LACP,请使用 LACP。如果您的交换机不支持 LACP,请使用非 LACP 聚合。

答案2

关于第 2 部分:

我发现我们的思科交换机使用了一种更基本的负载平衡算法。它们根据以太网帧详细信息构建源哈希表,并将每个哈希与通道中的端口相关联。

因此,每个源只与一个端口相关联,并且受限于物理链路的吞吐量。

相关内容