简介
本文档介绍Cisco Catalyst交换机上用于负载均衡和冗余的EtherChannel算法。
先决条件
要求
本文档没有任何特定的要求。
使用的组件
本文档不限于特定的软件和硬件版本。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
规则
有关文档规则的详细信息,请参阅 Cisco 技术提示规则。
背景信息
Fast EtherChannel 允许将多条物理快速以太网链路组合到一个逻辑通道中。这样便可在通道中的链路之间实现流量负载共享,还可以在通道中的一条或多条链路出现故障时提供冗余。Fast EtherChannel 可用于通过非屏蔽双绞线 (UTP) 配线或单模和多模光纤将 LAN 交换机、路由器、服务器和客户端互连在一起。本文档将 Fast EtherChannel、Gigabit EtherChannel、端口通道、通道和端口组统称为一个词: EtherChannel。本文档中的信息适用于所有这些 EtherChannel。
本文档介绍通过使用 EtherChannel 在 Cisco Catalyst 交换机上实现负载均衡和冗余的概念。本文档还介绍端口聚合协议 (PAgP) 及 EtherChannel 对中继的支持。本文档未介绍如何在 Catalyst 交换机上配置 EtherChannel。有关如何在 Catalyst 交换机上配置 EtherChannel 的详细信息,请参考相关信息部分中的文档。
Catalyst 6500、Catalyst 2950、EtherChannel
确定发送流量要通过的链路
本部分针对各交换机平台介绍如何通过 EtherChannel 组对数据包进行负载均衡。
Catalyst 6500/6000 系列
EtherChannel 可将以帧形式寻址的二进制模式的一部分缩减为一个选择通道中某一链路的数值,以便在通道的链路之间分发帧。EtherChannel 帧分发使用 Cisco 专有的散列算法。算法是确定性的;如果使用相同的地址和会话信息,则始终散列到通道中的相同端口。此方法可避免无序传送数据包。
Cisco 专有的散列算法计算出位于 0 到 7 范围内的值。根据此值,选择 EtherChannel 中的特定端口。端口设置包括一个掩码,它指示端口在传输时接受哪些值。如果单个 EtherChannel 中具有最大数量的端口(即八个端口),则每个端口只接受一个值。如果 EtherChannel 中有四个端口,每个端口接收两个值,依此类推。下表按 EtherChannel 中的端口数,列出每个端口接受值的比率:
EtherChannel 中的端口数 |
负载平衡 |
8 |
1:1:1:1:1:1:1:1 |
7 |
2:1:1:1:1:1:1 |
6 |
2:2:1:1:1:1 |
5 |
2:2:2:1:1 |
4 |
2:2:2:2 |
3 |
3:3:2 |
2 |
4:4 |
注:此表仅列出特定端口接受的散列算法计算的值数。您不能控制特定流量使用的端口。只能通过可导致最大多样性的帧分发方法来影响负载均衡。
注意:不能配置或更改哈希算法以在EtherChannel中的端口之间对流量进行负载均衡
注:运行Cisco IOS®软件的Cisco Catalyst 6500/6000系列交换机也实施了相同的Cisco专有散列算法。
因此,如果端口通道中有两个、四个或八个端口,则即使使用随机地址,也只能实现完美的负载均衡。
Cisco IOS
运行Cisco IOS系统软件的Catalyst 6500/6000交换机最多支持64个EtherChannel。在 Catalyst 6500/6000 系列交换机内的任何模块上,都可以构建一个具有多达 8 个配置兼容的 LAN 端口的 EtherChannel。每个 EtherChannel 中所有 LAN 端口的速度都必须相同,并且所有这些端口都必须配置为第 2 层或第 3 层 LAN 端口。
运行 Cisco IOS 系统软件的 Catalyst 6500/6000 交换机使用 Cisco 专有的散列算法。
EtherChannel 负载均衡可以使用 MAC 地址、IP 地址或者带 Policy Feature Card 2 (PFC2) 的第 4 层端口号以及源模式和/或目标模式。所选模式适用于在该交换机上配置的所有 EtherChannel。请使用可在配置中提供最大多样性的选项。例如,如果通道上的流量仅流向单个 MAC 地址,则使用目标 MAC 地址会导致每次都在通道中选择同一链路。使用源地址或 IP 地址可获得更好的负载均衡。若要配置负载均衡,请发出全局配置命令 port-channel load-balance {src-mac | dst-mac | src-dst-mac | src-ip | dst-ip | src-dst-ip | src-port | dst-port | src-dst-port | mpls}。
注: port-channel load-balance src-dst-mixed-ip-port命令可以更改Supervisor的PFC/DFC/CFC上的硬件转发,并可能导致流量中断数秒到数分钟,直到计算出新的散列算法并开始相应地转发流量。建议在非生产时段对散列算法执行任何更改。
若要检查帧分配策略,请发出 show etherchannel load-balance 命令。您可以根据帧分配策略确定 EtherChannel 用哪个接口来转发流量。若要确定这一点,请发出 remote login switch 命令以远程登录到交换机处理器 (SP) 控制台。然后,发出test etherchannel load-balance interface port-channelnumber{ip | l4port | mac} [source_ip_add|source_mac_add|source_l4_port] [dest_ip_add|dest_mac_add|dest_l4_port] 命令。
下面列举了一些示例:
-
6509#remote login switch
Trying Switch ...
Entering CONSOLE for Switch
Type "^C^C^C" to end this session
6509-sp#test etherchannel load-balance interface port-channel 1 ip 10.10.10.2 10.10.10.1
Would select Gi6/1 of Po1
6509-sp#
-
6509#remote login switch
Trying Switch ...
Entering CONSOLE for Switch
Type "^C^C^C" to end this session
6509-sp#test etherchannel load-balance interface port-channel 1 mac 00d0.c0d7.2dd4 0002.fc26.2494
Would select Gi6/1 of Po1
6509-sp#
Catalyst 4500/4000 系列
Cisco IOS
装有 Cisco IOS 软件(Supervisor 引擎 II+ 及更高版本)的 Catalyst 4500/4000 系列交换机最多支持 64 个 EtherChannel。您可以在任何模块上和各模块之间构建一个具有多达八个配置兼容的以太网接口的 EtherChannel。每个 EtherChannel 中所有接口的速度必须相同,并且所有这些接口必须配置为第 2 层或第 3 层接口。
EtherChannel 可将由帧形式的地址构成的二进制模式的一部分缩减为一个选择通道中某一链路的数值,以便在通道的链路之间均衡流量负载。EtherChannel 负载均衡可以使用 MAC 地址、IP 地址或者第 4 层端口号以及源模式和/或目标模式。请使用可在配置中提供最大多样性的选项。例如,如果通道上的流量仅流向单个 MAC 地址,则使用目标 MAC 地址会导致每次都在通道中选择同一链路。使用源地址或 IP 地址能可获得更好的负载均衡。若要配置负载均衡,请发出全局配置命令 port-channel load-balance {src-mac | dst-mac | src-dst-mac | src-ip | dst-ip | src-dst-ip | src-port | dst-port | src-dst-port}。必须全局配置负载均衡,并且不能按端口更改负载均衡选项。
注:交换机使用源MAC地址和目的MAC地址的低位来确定必须使用哪些链路来传输数据。因此,如果从同一源接收数据,则使用EtherChannel的同一链路来转发数据。
Catalyst 2900XL/3500XL 系列
如果 Catalyst 2900XL 运行的 Cisco IOS 软件版本低于 Cisco IOS 软件版本 11.2(8)SA3,则它会根据上次在其中侦听目标 MAC 地址的链路来选择通道中的链路。如果了解到此地址所在链路比其他链路繁忙,则软件会动态地将该地址重新分配到通道中的另一条链路。可以将运行 Cisco IOS 软件版本 11.2(8)SA3 或更高版本的 Catalyst 2900XL 以及运行 Cisco IOS 软件版本 11.2(8)SA6 或更高版本的 Catalyst 3500XL 配置为在 Fast EtherChannel 中选择要发送流量的链路。该交换机根据帧的目标或源 MAC 地址选择链路。默认设置使用源 MAC 地址。此默认设置意味着该交换机在一个非 Fast EtherChannel 端口上接收所有数据包,该端口的源 MAC 地址相同,而目标 MAC 地址位于通道的另一端(与该通道使用同一链路)。如果连接到 Catalyst 2900XL/3500XL 的多个工作站向位于 Fast EtherChannel 另一端的少数几个工作站(例如单个路由器)发送流量,则使用基于源的转发。在这种情况下使用基于来源的转发会在通道中的所有链路之间均匀地分发流量。此外,Catalyst 2900xl/3500XL 交换机还保留了使用默认端口传输生成树协议 (STP)、多播和未知单播等流量的概念。
Catalyst 3750/3560
Catalyst 3750/3560 系列交换机在 EtherChannel 中最多可支持八个配置兼容的以太网接口。EtherChannel 可在您的交换机与另一台交换机或主机之间提供高达 800 Mbps(Fast EtherChannel)或 8 Gbps(Gigabit EtherChannel)的全双工带宽。使用 Cisco IOS 软件版本 12.2(20)SE 及更低版本时,最大 EtherChannel 数为 12。使用 Cisco IOS 软件版本 12.2(25)SE 及更高版本时,最大 EtherChannel 数为 48。
EtherChannel 可将以帧形式寻址的二进制模式的一部分缩减为一个选择通道中某一链路的数值,从而在通道的链路之间均衡负载。EtherChannel 负载均衡可以使用 MAC 地址、IP 地址、源和/或目标地址。该模式适用于配置在交换机上的所有 EtherChannel。通过使用全局配置命令 port-channel load-balance {dst-ip | dst-mac | src-dst-ip | src-dst-mac | src-ip | src-mac},配置负载均衡和转发方法。
可以根据负载均衡方法确定要在 EtherChannel 中用于转发流量的接口。用于此确定的命令是test etherchannel load-balance interface port-channel number {ip | mac} [source_ip_add|source_mac_add] [dest_ip_add|dest_mac_add] 。
Catalyst 2950/2955/3550
Catalyst 2950/2955 系列交换机在 EtherChannel 中最多可支持八个配置兼容的以太网接口。EtherChannel 可在您的交换机与另一台交换机或主机之间提供高达 800 Mbps(Fast EtherChannel)或 2 Gbps(Gigabit EtherChannel)的全双工带宽。最大 EtherChannel 数为 6,每个 EtherChannel 各有 8 个端口。
Catalyst 3550 系列交换机支持第 2 层和第 3 层 EtherChannel,该通道最多可具有八个配置兼容的以太网接口。EtherChannel 可在您的交换机与另一台交换机或主机之间提供高达 800 Mbps(Fast EtherChannel)或 8 Gbps(Gigabit EtherChannel)的全双工带宽。最大 EtherChannel 数是相同类型的端口数。
对于2950/2955/3550系列交换机,EtherChannel通过随机关联新学习的MAC地址与通道中的某个链路来平衡通道中各链路上的流量负载。EtherChannel 负载均衡可以使用源 MAC 或目标 MAC 地址转发。
如果使用源 MAC 地址转发,则在将数据包转发到 EtherChannel 后,将根据传入数据包的源 MAC 地址在通道中的端口之间分发这些数据包。因此,为了提供负载均衡,来自不同主机的数据包在通道中使用不同的端口,而来自同一主机的数据包在通道中使用同一端口。如果使用目标 MAC 地址转发,则在将数据包转发到 EtherChannel 后,将根据传入数据包的目标主机 MAC 地址在通道中的端口之间分发这些数据包。因此,目标相同的数据包将通过相同端口转发,而目标不同的数据包将通过通道中的不同端口发送。
对于 3550 系列交换机,如果使用源 MAC 地址转发,还会为路由的 IP 流量启用基于源和目标 IP 地址的负载分配。所有路由的 IP 流量均根据源和目标 IP 地址选择端口。两台 IP 主机之间的数据包始终在通道中使用相同的端口,而任何其他主机对之间的流量可以在通道中使用不同的端口。
若要配置负载均衡和转发方法,请发出全局配置命令 port-channel load-balance {dst-mac | src-mac}。
注意:默认端口用于传输流量,例如生成树协议(STP)、组播和未知单播。默认端口可以通过show etherchannel summary命令的输出中标出d。
Catalyst 1900/2820
如果启用 PAgP,则确定链路的两种可能方法是:保持顺序和在 Fast EtherChannel 中的链路之间最大化负载均衡。本文档的什么是PAgP和在哪里使用它?部分介绍了PAgP。默认设置是最大化负载均衡。PAgP 用于与位于通道另一端的设备协商所配置的方法。如果配置了保持顺序,则指示位于另一端的设备使用基于源的传输,以便 Catalyst 1900/2820 始终在通道中的同一链路上使用相同源 MAC 地址接收数据包。这是 Catalyst 1900/2820 始终用于向此 MAC 地址发送流量的链路。如果配置了最大化负载均衡,则 PAgP 会通知另一端它可以任意分配流量,然后 Catalyst 1900/2820 通过上次发现的源地址所在链路传输单播流量。这提供了最大可能的负载均衡配置。如果 Fast EtherChannel 配置为禁用 PAgP,交换机则无法与合作伙伴协商交换机的获取能力。交换机是否保留帧顺序取决于Fast EtherChannel合作伙伴是否执行基于源的分配。
Catalyst 1900/2820 还会选出一个活动端口。该活动端口用于未知单播、未注册多播和广播数据包等泛洪流量。如果端口通道模式为 on(禁用了 PAgP),则活动端口是具有最高优先级值的链路。如果该模式为 desirable 或 auto(启用了 PAgP),则根据具有较高以太网地址的交换机中链路的优先级来选择活动端口。当具有较高以太网地址的交换机上两个端口的优先级相同时,将选择具有较低 ifIndex 的端口。
Catalyst 2948G-L3/4908G-L3
当一个链路发生故障时,以前使用该链路的所有流量现在都会使用其相邻的链路。例如,如果链路捆绑中的链路 1 发生故障,则以前在发生故障前使用链路 1 的流量现在会使用链路 2。
负载均衡方法矩阵
此矩阵整合了负载均衡方法:
Platform |
用在 XOR 中的地址 |
是否基于源? |
是否基于目标? |
是否基于源和目标? |
负载均衡方法是可配置还是固定的? |
6500/6000 |
第2层、第3层地址、第4层信息或MPLS信息2 |
Yes |
Yes |
Yes |
可配置 |
4500/4000 |
第 2 层地址,第 3 层地址或第 4 层信息 |
Yes |
Yes |
Yes |
可配置 |
2900XL/3500XL |
仅第 2 层地址 |
Yes |
Yes |
— |
可配置 |
3750/3560 |
仅第 2 层或第 3 层地址 |
Yes |
Yes |
Yes |
可配置 |
2950/2955/3550 |
仅第2层地址1 |
Yes |
Yes |
—1 |
可配置 |
1900/2820 |
这些平台使用一种特殊的负载均衡方法。有关详细信息,请参阅Catalyst 1900/2820部分。 |
1 对于3550系列交换机,当使用源MAC地址转发时,也会为路由的IP流量启用基于源IP地址和目标IP地址的负载分配。所有路由的 IP 流量均根据源和目标 IP 地址选择端口。
2 对于运行Cisco IOS的6500系列交换机,MPLS第2层信息也可用于对MPLS数据包进行负载均衡。
什么是 PAgP?在哪里使用它?
PAgP 可帮助自动创建 EtherChannel 链路。在支持 EtherChannel 的端口之间发送 PAgP 数据包,以便协商通道的信息。在 PAgP 中专门引入了一此限制。这些限制包括:
-
PAgP 不能在为动态 VLAN 配置的端口上构建链路捆绑。PAgP 要求信道中的所有端口均属于同一 VLAN 或均配置为中继端口。如果已存在一个链路捆绑,并要修改其中某一端口的 VLAN,则将修改该链路捆绑中的所有端口以匹配该 VLAN。
-
PAgP 不会对以不同速度或端口双工运行的端口进行分组。如果在存在某一链路捆绑时速度和双工发生更改,则 PAgP 会更改该链路捆绑中所有端口的端口速度和双工。
-
PAgP 模式包括 off、auto、desirable 和 on。只有 auto-desirable、desirable-desirable 和 on-on 组合才允许构建通道。如果位于通道一端的设备(例如路由器)不支持 PAgP,则位于另一个端的设备必须将 PAgP 设为 on。
以下交换机不支持 PAgP:
EtherChannel上的ISL/802.1Q中继支持
您可以将 EtherChannel 连接配置为使用或不使用交换机内链路协议 (ISL)/IEEE 802.1Q 中继。在构建通道后,该通道中作为中继的任何端口的配置都会应用于该通道中的所有端口。配置相同的中继端口可以配置为 EtherChannel。您必须拥有所有ISL或所有802.1Q;不能混合使用这两者。ISL/802.1Q 封装(如果启用)独立于 Fast EtherChannel 的源/目标负载均衡机制执行。VLAN ID 不会对数据包使用的链路产生影响。ISL/802.1Q 只是让该中继属于多个 VLAN。如果未启用中继,则与 Fast EtherChannel 关联的所有端口必须属于同一 VLAN。
相关信息