Port-Channel

一、链路聚合

1、链路聚合背景

随着内网即时应用比如视频桌面、互动消息、VoIP、会议协作等的蓬勃发展,园区网核心及边缘内部对带宽的扩容需求日益增加,同时关键任务应用也需要弹性的网络设计(支持弹性扩容链路)。伴随着园区网中部署的交换以太网链路带宽越来越大,用户也会聚合其已有资源或升级上行链路/核心的速度,从而扩展全网性能。例如来自多个VLAN的流量在低端接入层交换机上以100Mbps的速度汇聚到汇聚层交换机,那么接入层和汇聚层相连接的链路需要大于100Mbps才能满足所有VLAN的流入流量需求。针对这种情况,解决方案有两种,但是都存在弊端:

  • 提高端口速度:比如升级成1Gbps或10Gbps,但是随着VLAN链路速度的提升,该方案存在局限性。

  • 增加交换机之间的互联链路数量:以此来增加交换机间通信的总速率,该方案也存在局限性,因为所有物理链路的配置需要严格一致,还有就是STP可能会阻塞某个端口导致某个链路失效。

为了实现Campus Network和DCN对带宽的弹性扩容的需求,Etherchannel技术应运而生。Etherchannel可以将多条物理链路逻辑上捆绑成为一条逻辑链路来解决流量拥塞的问题。链路聚合的主要就是弹性增加链路带宽链路冗余欺骗生成树。链路聚合其他优势:

  • 利用交换机已有端口,无需升级交换机互联链路,从而节省投资成本

  • 支持交换端口和路由端口

  • 对逻辑通道操作,同步至所有已捆绑的端口配置中

  • 支持多条链路负载均衡

2、链路聚合应用场景

聚合链路可以部署在交换机间、服务器和交换机间。但是同一条聚合链路中的成员端口不能向两台不同的交换机发送流量。一条聚合链路的两端始终只连接着两台设备,而且两台设备上成员端口的端口配置必须相同。

VSS(即虚拟交换系统)或vPC(虚拟端口通道)可以使来自接入层的一组聚合链路同时上联到两台汇聚交换机上,从而提供更好的冗余性。

3、链路聚合原理

链路聚合创建的聚合链路会被看作一条逻辑链路/逻辑通道/聚合组(即port-channel)。在配聚合组时,只需要配置聚合组即可,配置将会自动同步到聚合组中的每个成员端口中。配置聚合组时需要注意的:

  • 仅需配置聚合组,配置会同步到成员端口中。

  • 只能捆绑相同类型的物理端口。

  • 聚合组可以配置为access或者trunk。

  • 聚合组支持物理端口的模式为交换端口(L2)和路由端口(L3)。

思科聚合组叫port-channel,华为聚合组叫Eth-Trunk

默认情况下,两台交换机之间创建的聚合链路中的任何一个成员都不会被STP协议阻塞,但是如果在两台交换机间创建多条聚合链路,会被STP阻塞一条,处于逻辑链路中的物理接口全部被阻塞。

二、链路聚合协议

交换机在配置Etherchannel时为了知道对端的配置信息(比如配置的一致性和链路状态),需要工程师手动配置或者由链路聚合协议去同步。链路聚合支持三种聚合信息同步的方式:LACPStaticPAGP

1、LACP

LACP(Link Aggregation Control Protocol,链路汇聚控制协议)是由802.3ad定义的公有标准。作用就是协商将多个物理端口捆绑到一起形成一个逻辑聚合组。启用LACP的交换机将发送LACP数据包来和对端自动协商捆绑通道。LACP的优点就是公有协议,允许多厂商间的交换机创建逻辑通道。

LACP会检查两台交换机的配置一致性以及链路状态用来确保port-channel创建时,所有被绑定的端口配置有相同的端口速率、双工模式、VLAN信息等。在确保聚合组建立后,任一端口配置修改都会影响通道另一端的端口状态。

接收方会将对端的端口属性与自身的端口属性进行比较。LACP会为etherchannel端口分配角色。带有最低的系统优先级的交换机将决定哪些活动端口可以加入etherchannel。端口根据其优先级选举出active端口(数值越低表示越优先)。正常情况下一个port-channel最大支持16条链路,同一时间只能有8条处于active状态。其余8条处于standby状态。如果某条active链路发生故障,standby端口将接管成为active端口。

LACP包括以下两种操作模式:

  • active:启用LACP。

  • passive:当检测到LACP时启用LACP。

在配置LACP时,可以附加以下参数:

  • 系统优先级:每台运行LACP的交换机都有,系统优先级可以是自动生成,也可以手动指定,系统优先级由2 bytes的优先级值和6 bytes的MAC地址构成。系统优先级低的交换机负责选定active端口。

  • 端口优先级:交换机的每个端口都有,端口优先级可以是自动生成,也可以手动指定,端口优先级由2 bytes的优先级值和2 bytes的端口号构成。交换机会优选端口优先级低的端口成为active端口

2、Static

静态方式即手动创建聚合组、将成员端口添加入聚合组。当需要在交换机间使用链路聚合而不采用动态的方式则可以使用静态方式配置。静态方式下,所有活动链路都参与数据转发并分担流量。手动配置时需要注意:

  • 聚合组中的成员端口必须具有相同的以太网类型和速率。

  • 聚合链路两端相连的成员端口的数量、速率、双工方式、流控配置必须一致。

  • 只有当成员端口都加入到聚合组中时,聚合链路才能up。

3、PAGP

PAGP(port aggregation protocol,端口聚合协议)是思科私有协议,用于协商链路聚合的协议。

PAGP包括以下两种操作模式:

  • desirable:启用PAGP

  • auto:当检测到PAGP时启用PAGP

三、链路聚合配置

链路聚合配置时,主要成员接口的端口速率和双工模式必须一致,成员接口的STP路径开销也需要一致。聚合组不能作为SPAN的目的端口,当删除聚合组时,成员接口将被shutdown;当配置聚合组时,配置将被同步到成员接口。当聚合口link up,但是protocol down时,手动shutdown/no shutdown即可。链路聚合分为L2和L3两种,且支持成员接口间的流量负载均衡。

1、L2 Port-Channel

@基于LACP L2 Port-Channel@
interface range E0/1-4
channel-protocol lacp
channel-group 10 mode [active | passive]

interface port-channel 10
switchport trunk encapulation dot1x
switchport mode trunk

@基于静态 L2 Port-Channel@
interface range E0/1-4
channel-group 10 mode on

interface port-channel 10
switchport trunk encapulation dot1x
switchport mode trunk

@基于PAGP L2 Port-Channel@ (基本不用)
interface range E0/1-4
channel-protocol pagp
channel-group 10 mode [desirable | auto]

interface port-channel 10
switchport trunk encapulation dot1x
switchport mode trunk

2、L3 Port-Channel

@基于LACP L3 Port-Channel@
interface range E0/1-4
no switchport
channel-protocol lacp
channel-group 10 mode [active | passive]

interface port-channel 10
no switchport
ip address 101.202.4.1 255.255.255.0

3、状态检查

(1) IOS-XE 
show run interface port-channel 10  #查看port-channel配置
show etherchannel summary #查看port-channel状态
show etherchannel load-balance #查看port-channel HASH算法

(2) NX-OS
show run interface port-channel 10
show port-channel summary
show port-channel load-balance 
show port-channel traffic #查看流量负载情况
clear counts interface port-channel 10  #清空接口计数

四、链路聚合最佳实践

需求:SW-A和SW-B之间采用静态方式建立EC,SW-A下挂VLAN 10和VLAN 20,SW-B下挂VLAN 2、10、20,SW-B拥有三个VLAN的网关。A访问C,B访问C,测试:

  • 正常情况下,验证负载分担情况。

  • 断开一条链路,验证负载分担情况。

1、基础配置&状态检查(静态Port-Channel)

SW-A#
Vlan 10,20

int g0/0
switchport mode access
switchport access vlan 10
no shutdown

int g0/1
switchport mode access
switchport access vlan 20
no shutdown

interface GigabitEthernet0/2
 switchport trunk encapsulation dot1q
 switchport mode trunk
 switchport nonegotiate
channel-group 11 mode on

interface GigabitEthernet3/2
 switchport trunk encapsulation dot1q
 switchport mode trunk
 switchport nonegotiate
channel-group 11 mode on

interface Port-channel11
 switchport trunk encapsulation dot1q
 switchport mode trunk
 switchport nonegotiate

SW-B#
feature interface-vlan

vlan 2,10,20
exit

interface Vlan2
  no shutdown
  ip address 10.112.2.254/24

interface Vlan10
  no shutdown
  ip address 10.112.10.254/24

interface Vlan20
  no shutdown
  ip address 10.112.20.254/24

interface Ethernet1/1
  switchport mode trunk
  switchport trunk allowed vlan 2,10,20
  channel-group 10 mode on

interface Ethernet1/2
  switchport mode trunk
  switchport trunk allowed vlan 2,10,20
  channel-group 10 mode on

interface Ethernet1/3
  switchport access vlan 2

interface port-channel10
  switchport mode trunk
  switchport trunk allowed vlan 2,10,20

检查port-channel建立状态。

ping测试

查看SW-B的负载情况

2、测试断开成员端口情况下的负载分担(静态Port-Channel)

此时清空接口计数:clear counters g0/2、g3/2。

关闭g0/2接口,A访问网关不丢包。

查看SW-B的负载情况

3、基础配置&状态检查(LACP)

SW-A#
No interface port-channel 11 (删除port-channel的时候,会使得物理接口down。)

interface GigabitEthernet0/2
 switchport trunk encapsulation dot1q
 switchport mode trunk
 switchport nonegotiate
 no negotiation auto
 channel-protocol lacp
 channel-group 11 mode active

interface GigabitEthernet3/2
 switchport trunk encapsulation dot1q
 switchport mode trunk
 switchport nonegotiate
 no negotiation auto
 channel-protocol lacp
 channel-group 11 mode active

interface Port-channel11
 switchport trunk encapsulation dot1q
 switchport mode trunk
 switchport nonegotiate

SW-B#
feature lacp

interface Ethernet1/1
  switchport mode trunk
  switchport trunk allowed vlan 2,10,20
  channel-group 10 mode active

interface Ethernet1/2
  switchport mode trunk
  switchport trunk allowed vlan 2,10,20
  channel-group 10 mode active

interface port-channel10
  switchport mode trunk
  switchport trunk allowed vlan 2,10,20

正常情况下,A和B访问C,单播数据包数量各50,并查看负载情况

链路聚合两端接口HASH算法:A采用src-dst-mac,B采用src-dst-ip

链路聚合两端接口HASH算法:src-dst-mac

结论:正常访问下,如果两边HASH算法一致采用src-dst-mac的话,那么就能实现50%的负载分担,如果一边HASH算法采用src-dst-mac,另一边HASH算法采用src-dst-ip,那么将会出现偏离50%的情况,但是仍然接近负载分担。

4、测试断开成员端口情况下的负载分担(LACP)

断开SW-A G0/2的情况下(单播数据包发送接近25个的时候),A和B访问C,单播数据包数量各50,并查看负载情况。

结论:当port-channel成员接口出现故障时,数据仍然可以通过正常的成员接口发送数据,不产生丢包。交换机两边HASH算法一致采用src-dst-mac,且接近25个数据包断开后,流量的负载分担值接近25%,75%。

五、链路聚合Troubleshooting

1、成员接口suspend

如果查看链路聚合状态时,发现成员接口suspend,那么仅需通过查看本端接口物理状态即可推断问题。

Nexus接口物理状态:

  • notconnected:对端没有连接,确认对端已经连接的情况下,翻滚该接口。

  • suspended:对端接口关闭,对端端口需要管理up。

  • connected:对端已连接。