EtherChannel - 配置和注意事项

作者:Jermy Stretch 原文连接

Cisco术语EtherChannel :指的是把两个或多个以太网链接捆绑起来以达到把可用的带宽都聚合起来。这种方法也提供了物理层面的冗余备份。

在一般情况下,两个交换机由多条物理线路相连,那么在生成树协议下(STP), 冗余线路在其中一端会被关闭。



如果配置了EtherChannel,多条链路会组成一个端口通道,并且有它自己的虚拟端口。所以这一组链路可当做一条线路来使用。



EtherChannel Negotiation 沟通机制

建立起EtherChannel可通过以下三种方式:

  • PAgP - 思科专利
  • LACP (IEEE 802.3ad) - 国际通用标准
  • Static Persistence ("On") - 不使用沟通机制,默认建立Etherchannel


这三种方式无论哪一种都对大多数情况适用,不过到底选哪个还是值得考虑一下的。PAgP虽然好用,不过大概应该归为过时的专利协议了,除非你有特别的用处(例如用于旧设备)。这就剩下LACP和On,他们有各自的优势。


LACP可以避免由于错误配置而造成二层交换环路;开始LACP后,在两端没有成功沟通的情况下,EtherChannel是不会建立的。不过这样的沟通机制引入了更大数据报头和更长初始化延时。配置‘On’可以消除延时,但是如果配置失误的话可能造成严重后果。


用LACP配置EtherChannel,两边必须配置为active或者passive;配置为active模式的端口才会主动发起沟通试图建立EtherChannel。Passive模式的端口只恢复LACP请求。实际上,PAgP的配置是一样的,只不过两种模式分别是desirable和auto。


只需一行命令我们就能把端口归为一个端口通道:

S1(config)# interface range f0/13 -15
S1(config-if-range)# channel-group 1 mode ?
  active     Enable LACP unconditionally
  auto       Enable PAgP only if a PAgP device is detected
  desirable  Enable PAgP unconditionally
  on         Enable Etherchannel only
  passive    Enable LACP only if a LACP device is detected

S1(config-if-range)# channel-group 1 mode active
Creating a port-channel interface Port-channel 1


我们能注意到,为了表示逻辑链路,这里生成了Port-Channel 1。应用在虚拟端口的交换配置会复制到物理端口成员上。我们可以通过 show etherchannel summary 命令来查看端口通道的状态:


S1# show etherchannel summary
Flags:  D - down        P - bundled in port-channel
        I - stand-alone s - suspended
        H - Hot-standby (LACP only)
        R - Layer3      S - Layer2
        U - in use      f - failed to allocate aggregator

M - not in use, minimum links not met
        u - unsuitable for bundling
        w - waiting to be aggregated
        d - default port

Number of channel-groups in use: 1
Number of aggregators:           1

Group  Port-channel  Protocol    Ports
------+-------------+-----------+-----------------------------------------------
1      Po1(SD)         LACP      Fa0/13(D)   Fa0/14(D)   Fa0/15(D)   


在端口通道的另一端配置为passive (不过配成active也没关系)

S2(config-if-range)# channel-group 1 mode passive
Creating a port-channel interface Port-channel 1


当两侧成员端口全部开启时,端口通道也会变为开启状态。不过请注意时间戳:

*Mar  1 00:45:50.647: %LINK-3-UPDOWN: Interface FastEthernet0/14, changed state to up
*Mar  1 00:45:50.683: %LINK-3-UPDOWN: Interface FastEthernet0/13, changed state to up
*Mar  1 00:45:50.691: %LINK-3-UPDOWN: Interface FastEthernet0/15, changed state to up
*Mar  1 00:45:53.487: %LINK-3-UPDOWN: Interface Port-channel1, changed state to up


成员端口开启到端口通道开启差不多相差整整三秒时间。初始化结束后,我们能看到状态变为‘in use' 

S1# show etherchannel summary
Flags:  D - down        P - bundled in port-channel
        I - stand-alone s - suspended
        H - Hot-standby (LACP only)
        R - Layer3      S - Layer2
        U - in use      f - failed to allocate aggregator

M - not in use, minimum links not met
        u - unsuitable for bundling
        w - waiting to be aggregated
        d - default port

Number of channel-groups in use: 1
Number of aggregators:           1

Group  Port-channel  Protocol    Ports
------+-------------+-----------+-----------------------------------------------
1      Po1(SU)         LACP      Fa0/13(P)   Fa0/14(P)   Fa0/15(P)   


这里注意大写S指的是二层交换;在多层平台上,端口通道也可设定为用于路由。

为了对比我们可以用’On‘模式再次配置下EtherChannel:

S1(config)# no interface po1
S1(config)# interface range f0/13 -15
S1(config-if-range)# channel-group 1 mode on
Creating a port-channel interface Port-channel 1

S1(config-if-range)# no shutdown


这次我们可以看到当第一个成员端口开启时,端口通道也就开启了,没有延时:

This time we observe that the port-channel interface is enabled as soon as its first member port comes up, as there is no delay imposed by negotiation:

*Mar  1 00:56:12.271: %LINK-3-UPDOWN: Interface FastEthernet0/13, changed state to up
*Mar  1 00:56:12.287: %LINK-3-UPDOWN: Interface Port-channel1, changed state to up
*Mar  1 00:56:12.291: %LINK-3-UPDOWN: Interface FastEthernet0/14, changed state to up
*Mar  1 00:56:12.307: %LINK-3-UPDOWN: Interface FastEthernet0/15, changed state to up

《Campus Network High Availability Design Guide》思科更倾向于用On模式而不是利用沟通协议来配置端口通道。不过他们也警告,如果配置失误的话这样的做法并没有保护机制。


EtherChannel Load-Balancing (负载均衡)

另外一个需要考虑的方面是负载均衡的作用。端口通道提供的负载均衡是针对于每帧,而不是每字节。交换机运用哈希函数对每帧的一个和或多个区域进行检测,以此来决定这个帧通过哪一条成员链接来传输。检测一个帧的哪个区域取决于交换机的平台和配置。例如,Catalyst3550只关注这个数据帧的目的和源MAC地址。


S1(config)# port-channel load-balance ?
  dst-mac  Dst Mac Addr
  src-mac  Src Mac Addr


show etherchannel load-balance 命令显示了3550交换机默认利用源MAC地址做负载均衡:

S1# show etherchannel load-balance
EtherChannel Load-Balancing Configuration:
        src-mac

EtherChannel Load-Balancing Addresses Used Per-Protocol:
Non-IP: Source MAC address
  IPv4: Source MAC address


更加高级的平台可以用IP地址或者四层的端口号作为选择。一般来讲,我们更倾向与选择高层的数据区域,因为这样可以提供更加灵活的解决方案。

流量的方向同样是非常重要的信息,比如看以下例子:


从上向下的流量:数据包从SW1进入局域网的时候,源MAC地址总是VLAN的端口。如果源MAC地址用作负载均衡,那么所有数据帧将只会通过一根成员链路向下传送。所以,应该配置利用目的MAC地址做负载均衡,这样会更好的利用可用的带宽。


反过来对应S2也是一样:因为从局域网送去端口通道的数据包目的MAC地址都是VLAN端口,所以应用源MAC地址作为选项负载均衡效果更好。


EtherChannel Bandwidth and Costs

最后,需要记住的是,端口通道的带宽等于启用的成员链路带宽之和。比如,一个Etherchannel有三个100Mbps的成员链接,端口通道就会显示带宽为300Mbps。由于单个成员链接可能出现断路,所以端口通道的带宽会上下波动而状态一直是up


另扩展阅读:

http://www.cisco.com/c/en/us/td/docs/switches/lan/catalyst3550/software/release/12-1_13_ea1/configuration/guide/3550scg/swethchl.html


你可能感兴趣的:(EtherChannel)