以太网通道技术将多条链路反向复用成一个逻辑链路(在6000系列交换机上可以支到8),虽然每个平台在实现上有一些不同点,但都具备如下的共同的属性:
-
在多通道上分配帧的算法。
-
创建一个逻辑端口,可以运行一个STP的实例。
- 一个通道管理协议:PAgP
帧的多路传输
以太网通过使用一个帧分配算法将有效地将帧分配在多个10/100或千兆链路上进行传输。在不同的的平台上,这种分配方式略有差异,例如:
-
Catalyst6000系列交换机可以以线速读取第四层的IP懈信息,这就就可以实现比较仅依靠第二层的MAC地址更为复杂的智能分配。
-
5000平台上则依赖于木鞋收的EBC芯片,可以通过show port capabilities 来确认某个端口是否支持以太网通过。
下面列出了几个常见平台的帧分配算法:
平台 | 通道负载平衡算法 |
---|---|
Catalyst 5000 系列 | Catalyst 5000在模块支持的情况下,可以在每个FEC中支持2到4个链路。它们必须在同一个模块上。使用源MAC/目的MAC对来选择转发时所使用的链路。对源MAC和目的MAC的最后两样进行异或操作可以得到如下四组值: (0 0), (0 1), (1 0), or (1 1). 每个值标志着FEC中的一条物理链路。在FEC中只有两个端中的情况下,只使用一位来进行选择。 |
Catalyst 4000 系列 | Catalyst 4000的以太网通过使用每个帧的源/目的MAC地址的低位(第3、5、6字节)、进入的端口、VLAN号的hash值来进行分配,分配方法不能更改。 |
Catalyst 6000 系列 | 根据不同的引擎硬件,有两种hash算法。都是使用一个17位的多项式,由硬件根据MAC地址、IP地址或IP的TCP/UDP端号使用该多项式生成一个三位的值。这是独立于源/目的MAC地址的,再进行一次异或操作生成另一个三位的值,用于在一个Channel中分配帧。6000可以支持在任意模块上的8个口形成一个Channel. |
下表说明一6000上不同的引擎模块所支持的分配方法和缺省的习惯:
硬件 | 描述 | 分配方法 |
---|---|---|
WS-F6020(Layer 2 Engine) | 较早的SUP1 | Layer 2 MAC: SA; DA; SA & DA |
WS-F6020A(Layer 2 Engine)WS-F6K-PFC(Layer 3 Engine) | 较晚的Sup1、Sup1a和Sup1a/PFC1 | Layer 2 MAC: SA; DA; SA & DALayer; 3 IP: SA; DA; SA and DA (Default) |
WS-F6K-PFC2 | Sup2/PFC2需要CatOS 6.x | Layer 2 MAC: SA; DA; SA & DALayer 3 IP: SA; DA; SA & DALayer-4 Session: S port; D port; S & D port (Default) |
注意:在使用第四层分发时,第一个分段的包使用第四层分发,所有的后续包均使用第三层分发。
建议
在缺省情况下,Catalyst 6000系列交换机基本IP地址进行负载均衡,也是CatOS5.5中的推荐配置,使用如下命令进行设置:
set port channel all distribution ip both
Catalyst 4000和5000系列的帧分配都基于第二层的MAC地址,在绝大多数网络中这都没有问题。然而,当一个channel的两端只有两个工作站(源地址和目的地址都是固定的)时。所有的流量都只会在一条链路上进行传输。这在服务器之间的备份传输时表现得很典型。
虽然一个逻辑汇聚端口可以被SNMP做为一个单独的端口进行管理,但仍然建议分别监控每个端口的流量,这样才能发现帧分配机制究竟正常工作没有。
从CatOS 6.x开始,可以使用一个新的show channel traffic的命令来看出流量的分配状态,这比在5.x版中使用的show counters 或show mac 命令更为简捷有效。
其它选项
在使用4000或500的基于MAC的算法不能达到理想的效果时,可以考虑如下一些可能的解决办法:
-
布署Catalyst 6000s.
-
使用其它的方式增加带宽,如把几个100兆口换成一个千兆口,把几个千兆口换成一个10G的端口。
-
修改某些具有大流量的工作站的MAC地址。
-
为高带宽设备提供独立的链路或VLAN。
端口汇聚协议(PAgP)
PAgP是一个用于在检查Channel两端的参数的一致性以及在出现增加链路或链路失效时的重新适配的一个管理协议,具有如下限制条件:
-
PAgP需要所有Channel中的端口处于同一个VLAN或都配置成为Trunk端口(因为动态VLAN可能会强制的将端口放到不同的VLAN中,所以动态VLAN不能和以太网通道在一个端口上并行操作。)
-
当已经存在于一个Channel中的某一个端口的配置进行修改时(如改变VLAN或Trunk模式),该Channel中的所有端口均将做相同的修改。
-
PAgP不能在不同速度或不能双工模式的端口之间配合操作,当一个Channel中某个端口的速度或双工模式改变时,PAgP将改变该Channel中所有端口的速度和双工模式。
运行机制
PAgP协议控制每个独立的物理或逻辑端口打成Channel的行为。PAgP包使用和CDP包相同的一个组播地址:01-00-0c-cc-cc-cc, 协议号为0x0104. 下面是该协议运行的一些总结:
-
端口一旦处于UP状态,在检测阶段每秒发送一个PAgP包,稳定状态每30秒发送一个PAgP包。
-
该协议将侦听PAgP包,以保证物理端口能够双向连接到一个PAgP兼容的设备。
-
如果收到了数据包,但没收到PAgP包,则假定该端口连接的是一个非PAgP兼容的设备。
-
一但在某个组中的物理端口连续收到两个PAgP包,该端口马上尝试成为一个汇聚端口。
-
如果在一个时间间隔内PAgP包停止了,PAgP的状态转为关闭。
常规程序
为了便于理解该协议,需要先了解如下概念:
-
Agport—包含同一个汇聚中的所有的物理端口的一个逻辑端口,可以定义自己的SNMP ifIndex,这样一个agport不包括非运行端口。
-
Channel—汇聚所满足的格式标准。它可以包括非运行端口(agports是channels的子集). 在agports上的PAgP上运行的协议包括STP和VTP,不包CDP和DTP,在PAgP将agports连接到一个或多个物理端口前,这些协议均不能发送或接收包。
-
Group Capability—每个物理端口和agport都拥有组称为group-capability的配置参数。一个物理口只有当它有相同的group-capability时才能和另一个物理口进行汇聚
-
Aggregation Procedure—当一个物理端口到达UpData或UpPAgP状态,它被附加到一个适当的agport,当它变成其它状态时,它从该agport中剥离出来。
根据创建进程的不同阶段,有如下的状态定义:
状态 | 意义 |
---|---|
UpData | 没收到PAgP包,在发送PAgP包,该物理端口仅连接到它的agport,非PAgP包在物理端口和agport间传送。 |
BiDir | 已经收到一个正确的PAgP包,这保证一个双向连接到一个正确的邻居。该物理端口没有连接到任何的agport,在发送PAgP包,并可能收到。 |
UpPAgP | 这个物理端口正在和另一个物理端口进行关联,已连接到一个agport。在物理端中上发送并接收PAgP包,非PAgP包在在物理端口和agport间传输。 |
失效行为
如果一个Channel中的某个链路失效(拨掉光纤或光纤断了)了,agport会进更新,流量会在现有的端口上重新进行hash计算,不会有包丢失。
注意: 由于关闭一个模块的电源或拨除一个模块所引起的链路失效可能会有些不同,根据定义,一个Channel需要两个物理端口,如果在一个两端口Channel的系统中,一个端中丢失了,这个逻辑的agport关闭,另一个物理端口将重新进行初始化,并进行stp计算。这将意味着在stp计算完成的前的包将丢失。
这个规则在Catalyst 6000上有一个特例,在CatOS 6.3之前,仅与模块1和模块2相关的agport在出现上述现象进不会关闭。在6.3之后
这两种失效模式的差异对于网络维护来说是相当重要的,因为这可能为引想STP拓朴的改变。
为了避免在6000中出来不希望的拓朴改变::
-
如果在形成一个channel时每个模块只使用一个端口,则使用三个或更多的模块上的端口(这样,同一个channel中的端口数将超过三个)
-
如果一个模块只跨越两个模块,每个模块使用两个端口。
- 如果一个两端口的通过需要跨越两个模块,只使用引擎上的端口。
- 升级到CatOS6.3,这就不会引起STP的重新计算。
配置选项
以太通道可以配成如下表所示的模式:
模式 | 可配置选项 |
---|---|
On | PAgP不进行操作,不管对方是怎样配置的,端口总处理channeling状态,如果对方的模式也为on,刚形成一个channel. |
Off | 不管对方怎么配置的,端口均不进行channeling. |
Auto (缺省) | 使用PAgP协议进行汇聚协商。将端口置于一个被动协商状态,在收到PAgP包之前不会有PAgP包发送。 |
Desirable | 使用PAgP协议进行汇聚协商。将端口置于一个主动协商状态,主动发送PAgP包。 |
Non-silent(5000 的光FE和GE口的缺省状态) | 一个auto或desirable模式的关键字。 如果在接口上没有数据包收到,接口一直不会关联到agport,不能传输数据。 |
Silent(4000、6000的端口和5000的铜接口的缺省状态) | 一个auto或desirable模式的关键字。 如果在15秒内没收到数据包,接口将关联到一个agport并进行数据传输。Silent模式允许和一个不发送PAgP包的服务器进行channel操作。 |
silent/non-silent设置影响到端口如果去端对单向流量的情况,当一个端口不能发送数据时(如物理层损坏或线缆故障),可以让邻居继续处于运行状态。邻居继续发送数据,但数据丢失了,又收不到返回的数据,可能会由于这种单向连接而引起生成树的环路。
某些光纤口具有在丢失FEFI信号时能将端口置于非运行状态的能力,这可以对端的端口也处于非运行状态,这样就可以使链路down下去。
在使用一个会继续传送数据(如BPDUs)而又检测不到单向连接条件的设备时,建议使用non-slient模式使用端口保持非支持状态,直接链路确认处于双向连接为止。使用PAgP来检测单向连接需要3.5*30=105秒时间。30秒是两个成功的PAgP信息的间隔。在可能的情况下,推荐使用UDLD来快速检测单向连接。
当使用的设备不会继续传输任何数据时,可以使用slient模式,这可以强制使用端口处于连接和支持状态。些些端口会使用第一层的FEFI和UDLD来检测单向连接状态。
验证
下表描述了所有可能的PAgP方案,和最后的channel状态:
Switch-A模式 | Switch-B模式 | Channel状态 |
---|---|---|
On | On | Channel (non PAgP) |
On | Off | Not Channel (ErrDisable) |
On | Auto | Not Channel (ErrDisable) |
On | Desirable | Not Channel (ErrDisable) |
Off | On | Not Channel (ErrDisable) |
Off | Off | Not Channel |
Off | Auto | Not Channel |
Off | Desirable | Not Channel |
Auto | On | Not Channel (ErrDisable) |
Auto | Off | Not Channel |
Auto | Auto | Not Channel |
Auto | Desirable | PAgP Channel |
Desirable | On | Not Channel (ErrDisable) |
Desirable | Off | Not Channel |
Desirable | Auto | PAgP Channel |
Disirable | Desirable | PAgP Channel |
建议
建议在所有的交换机到交换机的通道连接上启用PAgP,避免使用ON模式,首选的应该在链路的两端均使用"desirable"模式,另外,保留"silent/non-silent"关键字的缺省设置,在6000和4000上使用silent,在5000的光口上使用non-silent.
如以前讨论的一样,在所其它的端口均设置为off状态,以便于数据的快速转发。可以避免浪费15秒在端口上channel协商上。命令如下:
set port channel mode desirable
set port channel mode off
!--- 当端口是非channel端口时,也可以使用set port host命令.
其它的选项
另一个比较常见的配置方案是在接入层交换机使用"desirable"模式,在分布层和核心层交换机使用"auto"模式。
当和不支持PAgP的设备进行channel时,这些channel口需要手工配置为固定的"on"模式,这些设备包括服务器、Local Director、内容交换机、路由器、Catalyst XL交换机和Catalyst 8540s:
set port channel mode on
从CatOS 7.x开始支持的新的IEEE 802.3ad链路汇聚控制协议(LACP)标准,很可能在未来取代PAgP,它可以带来跨平台和多厂商互操作的优点。