LACP 与 802.3ad

Chi*_*sky 5 solaris lacp

我希望使用 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 归为一类。任何意见将不胜感激。

谢谢!

Tim*_*edy 2

IEEE 802.3ad 是链路聚合标准,尽管链路聚合标准已移至 802.1 组(如 802.1ax)。

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

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

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