步骤1、小科普
1、链路聚合的基本概念 1)、链路聚合链路聚合是通过将多个以太网端口捆绑在一起形成的,多个物理以太网接口捆绑后形成一个聚合组(Channel-Group),聚合组内的所有物理链路作为一条逻辑链路来传送数据,多个端口汇聚成的逻辑接口称为聚合接口(Port-Channel),一个聚合组和一个聚合接口形成一条聚合链路(Etherchannel)。端口汇聚可以实现流量在汇聚组中各成员端口之间进行负载分担,以增加链路带宽,同时同一汇聚组内各个成员端口之间彼此动态备份,提高了链路的可靠性,一般用于交换机的互连中以实现具有高可靠性和高可用性的数据链路。
2)、聚合接口 聚合组将物理端口绑定在一个逻辑接口下,每个聚合组唯一对应一个逻辑接口,称为聚合接口(Port-Channel),每个聚合接口用一个用户自定义的聚合接口ID(Group-ID)唯一标识。
3)、成员端口 聚合组内的各个端口称为该聚合组的成员端口,聚合组中的成员端口主要有三种状态: 绑定状态(P-bundled in port-channel):处于此状态下的端口已经成功加入聚合链路并可以参与数据转发。 未启动状态(down):此状态下的成员端口不参与数据转发。 独立状态(I-Stand-Alone):此状态下的端口并未加入聚合组,而是作为独立端口正常转发数据。
2、链路聚合协议 1)、PAgP协议PAgP协议(Port Aggregation Protocol,端口汇聚)是思科私有的动态链路汇聚协议,通过启用PAgP协议,两端端口通过交换PAgP数据包获取对端端口参数,根据这些信息自动形成聚合链路,并指定哪些端口发送PAgP包,哪些端口只接收PAgP包。这种协议只能在思科设备上运行。
2)、LACP协议LACP(Link Aggregation Control Protocol,链路汇聚控制协议)是基于IEEE 802.3ad标准的实现链路动态汇聚与解汇聚的协议,是一种国际标准的链路汇聚协议,大部分厂商设备都兼容。LACP协议通过LACPDU(Link Aggregation Control Protocol Data Unit,链路汇聚控制协议数据单元)与对端交互端口信息,进行协商,实现对汇聚的自动化控制。
3、链路聚合的模式 思科交换机的链路聚合根据使用的协议可以分为三种工作模式LACP模式、PAgP模式和On模式。具体这三种工作模式下共有5种不同的端口模式active、passive、auto、desirable、on。其中active和passive使用LACP协议进行工作,auto和desirable使用PAgP协议进行工作,on则是强制启用链路聚合,相当于华三的手工聚合模式。我们来具体看一下这几种链路聚合模式的特点:
1)、LACP协议模式 这种链路聚合模式会使用LACP协议进行链路协商以形成聚合链路。这种模式下有两种端口模式可选,即active和passive。active模式下不管对端设备是否支持LACP协议,本端都会无条件启用LACP协议,这种模式下端口处于主动协商状态;而passive模式下只有检测到对端设备支持LACP协议,本端才会启用LACP协议,这种模式下端口处于被动协商状态。
2)、PAgP协议模式 这种链路聚合模式使用思科私有的PAgP协议进行链路协商以形成聚合链路。这种模式系也有两种端口模式可选,即auto和desirable。跟LACP模式下的两种端口模式相似,desirable模式下不管对端是否支持PAgP协议,本端都会启用PAgP协议;auto模式下只有检测到对端设备支持PAgP协议,本端才会启用LACP协议。
3)、On模式 使用On模式不经过协商(不使用任何链路聚合协议),直接进行强制链路聚合,只要两端端口二层配置一致(端口速率和所属VLAN一致),就可以直接将端口加入聚合接口,建立聚合链路。这种情况下,链路另一端聚合链路也必须使用On模式,否则会发生数据丢包。这种模式在两端设备不都支持PAgP协议或LACP协议的情况下比较有用,兼容性强,配置起来也比较方便,在实际中用的也比较多。
4、链路聚合的负载分担模式 聚合链路可以在多条物理链路上对数据流实现负载均衡,一般可以选择以下5种基准进行负载分担: dest-ip:基于目的IP地址进行负载分担 src-ip:基于源IP地址进行负载分担 dest-mac:基于目的MAC地址进行负载分担 src-mac:基于源MAC地址进行负载分担 src-dst-ip:基于源IP地址和目的IP地址进行负载分担 src-dst-mac:基于源MAC地址和目的MAC地址进行负载分担 一般默认的是基于源MAC地址进行负载分担,二层交换机没有特殊要求的话,保持默认负载分担模式即可。
注:这里只介绍了一些我们教程要用到的链路聚合的基本概念,可能并不是很全面,如果想了解更多细节请查阅官方技术手册。 注:这里介绍的链路聚合概念和接下来的配置教程只适用于思科交换机,且只针对二层链路。
步骤2、配置链路聚合
一般由于设备兼容性不同,支持的链路聚合协议也可能不同,动态的链路协商协议不一定总是适用,所以为了方便我们大多数时候在两端设备聚合端口使用On模式强制聚合来形成聚合链路,这种模式配置简单,兼容性强,在大多数情况下都直接使用这种模式进行简易的链路聚合配置。那么接下来我们就来了解一下如何使用这种简易的方式来配置链路聚合吧。
1、创建聚合组并进入聚合接口模式(全局配置模式) interface port-channel <group-id> 要建立聚合链路,首先要通过命令 conf t进入全局配置模式,在全局模式下通过 interface port-channel关键字来手工创建一个逻辑聚合接口,其中 <group-id>为一个数字编号,用来唯一标识这个聚合接口,不同的交换机可取的数值范围不同,如2960支持1-6,而3560支持1-48。 示例:创建一个聚合接口ID为10的手工聚合组 Cisco(config)#int port-channel 10 注:若要删除聚合组,可以使用命令no interface port-channel <group-id>。
2、聚合组描述(可选配置)(聚合接口模式) description <String> 创建聚合组之后,可以在聚合接口模式下可以对该聚合组进行描述,备注聚合组的功能信息。 description为描述的关键词,后边 <String>为你要添加的字符串描述信息,最长为200个字符。 示例:为聚合接口3添加描述信息Link to 10F Cisco(config-if)#description <Link to 10F> 注:若要删除聚合组描述,可使用命令no description。
3、将端口绑定到聚合接口并选择端口模式(端口模式) channel-group <group-id> mode {active|auto|desirable|on|passive} 创建好聚合接口(port-channel)之后,可以使用聚合组(channel-group)将物理端口绑定到对应的逻辑接口。对于需要加入聚合接口的端口,先在全局配置模式下使用用命令 int <int-type int-number>进入对应端口模式,然后使用关键词 channel-group指定要加入的聚合组, <group-id>为对应聚合接口的ID。同时后边要指定聚合端口的模式,一共有五种模式 active、passive、auto、desirable、on可选,简易配置我们直接选择on即可。 示例:将万兆端口te1/0/1,te2/0/1加入聚合组10并指定聚合模式为on。 Cisco(config)#int te1/0/1 Cisco(config-if)#channel-group 10 mode on Cisco(config-if)#eixt Cisco(config)#int te2/0/1 Cisco(config-if)#channel-group 10 mode on Cisco(config-if)#eixt 注:若要退出聚合组,可在端口模式下使用命令no channel-group <group-id>。 注:一个物理端口只能绑定到一个聚合接口下。
4、配置链路聚合负载均衡模式(可选配置)(全局配置模式) port-channel load-balance <load-balance-mode> 聚合链路可以在不同成员端口上实现负载均衡,可以在全局配置模式下使用关键词 port-channel load-balance来指定负载均衡的方式,一共可以选择以下5中负载分担方式 src-mac、dest-mac、src-ip、dest-ip、src-dst-ip、src-dst-mac,之前已经介绍过了这里就不再赘述,通常默认的负载均衡方式是基于源MAC(src-mac)进行负载均衡,一般保持默认即可。 注:要恢复默认负载分担方式,可以在全局模式下使用命令no port-channel load-balance。
5、聚合接口下进行端口配置(聚合接口端口模式) 将所有需要的成员端口加入聚合组之后,需要对聚合接口进行一些基本的二层配置,才能进行通信,如果成员端口已经加入某个聚合组,要对其进行二层配置,只能在聚合接口下进行集中配置。一般聚合链路用来交换机互连,可能会有承载不同的VLAN,所以最好将两端链路类型都配置成Trunk类型,如果都配置成Access口,必须保证两边Access端口所属VLAN一致。配置成员端口链路类型可以在聚合接口下进行统一配置,然后这些配置会自动同步到同一聚合组内的所有成员端口上,最后聚合组内所有成员端口都会拥有同样的端口配置(不包括某些特殊的配置信息,如端口描述信息只在当前端口生效)。 示例:在聚合接口下配置链路类型为trunk口并允许所有VLAN通过。 Cisco(config)#int port-channel 10 Cisco(config-if)#switchport mode trunk Cisco(config-if)#switchport trunk allowed vlan all Cisco(config-if)#exit 这里在聚合接口10下配置好之后,这些配置会自动同步到两个成员端口te1/0/1和te2/0/1上。 注:本端链路聚合配置好之后,对端也要进行相应的配置,否则无法进行正常通信。
步骤3、维护链路聚合
1、查看链路聚合简要状态信息 查看所有聚合组简要状态信息: show etherchannel summary 查看所有指定聚合组简要状态信息: show etherchannel <group-id> summary 如这里查看所有聚合链路的简要信息,如下图所示:
这里显示所有聚合链路的简要状态信息,最上边为一些简写字母的含义注释,下边可以看到聚合组数量一共有三个。最下边为聚合组内端口的一些关键状态信息,第一列为聚合组编号( Group),可以看到交换机上有一共有1、2、6共3个聚合组;第二列为对应的三个聚合接口( Port-Channel)Po1、Po2、Po3,括号里用简写字母表示聚合接口的状态,从上边注释易知,S表示二层聚合接口,U表示在用,D表示聚合接口为Down,P表示接口已经正常加入聚合接口;第三列为聚合接口使用的协议类型( Protocols),这里为强制聚合所以没有使用相关链路聚合协议,对应参数也为空;第四列为对应聚合组内的端口成员( Ports),前边为端口号,括号内用简写字母表示端口状态。
2、查看聚合链路详细状态信息 查看所有聚合组详细状态信息: show etherchannel detail 查看所有聚合组详细信息: show etherchannel <group-id> detail 如这里查看聚合链路1的详细状态信息,如下图所示,可以看到聚合组下各成员端口和聚合接口的状态信息,信息比较多,这里只介绍几个比较重要的信息:
最上边为聚合组信息,其中: Group state表示聚合组的状态; Ports表示当前聚合链路包含的成员端口数; Maxports:表示聚合链路支持的最大绑定端口数量。 之后为成员端口信息:其中 Port state表示成员端口状态; Channel group:表示成员端口所属聚合组; Mode:表示成员端口的模式; Port-channel:表示成员端口所属的聚合接口; Load:表示成员端口的负载分担模式; Protocol:表示成员端口使用的聚合协议类型。 最后为聚合接口的信息,其中 Number of Ports表示聚合接口中包含的成员端口数量; Port state表示聚合接口的状态; Protocol表示聚合接口使用的聚合协议类型; Port security表示端口安全启用状态;最后显示了聚合接口中所有成员端口的简要状态信息。
3、查看聚合接口的详细状态信息 查看所有聚合接口的详细状态信息: show ehterchannel port-channel 查看指定聚合接口的详细状态信息: show etherchannel <group-id> port-channel 如这里查看聚合接口2的详细状态信息,如下图所示,信息含义同上,这里就不再介绍了。
4、查看聚合链路负载均衡模式 show etherchannel load-balance 如这里查看当前链路聚合使用的负载均衡模式,如下图所示,可以看到当前使用的基于源MAC地址(src-mac)的负载分担模式:
步骤4、链路聚合配置演示
熟悉了链路聚合的基本配置命令后,我们来实际操作一下,由于实际交换机演示不方便,所以我们就以PT模拟器来进行演示,具体拓扑如下,两台2960接入交换机 Switch1 和 Switch2 使用两条千兆链路(一般实际中使用光纤线缆)互连,PC1连接 Switch1 的 F0/1 端口,所属 VLAN 为10,IP地址为 192.168.1.1,PC2连接 Switch1 的 F0/2 端口,IP地址为 192.168.2.1,所属 VLAN 为20,PC3连接 Switch2 的 F0/1 端口,IP地址为 192.168.2.2,所属 VLAN 为20,PC4连接 Switch2 的 F0/2 端口,所属 VLAN 为10,IP地址为 192.168.1.2。为了保证链路的可靠性和提高链路带宽,这里将两条互连链路做链路聚合从而实现负载分担和冗余备份,同时将互连带宽提升至原来的两倍,具体配置流程如下。
1、Cisco 2960S上配置链路聚合 首先在Switch0上创建聚合接口3,并把互连接口G0/1、G0/2加入聚合组,同样在Switch1上配置聚合接口3,并把互连接口G0/1、G0/2加入聚合组,然后在各自的聚合接口上配置端口中继模式为Trunk,允许业务VLAN通过,具体配置如下:
注:聚合接口需要手动 no shutdown 才会处于启动状态,默认创建后处于 shutdown 状态。 注:两端交换机上的互连接口不需要配置相同的聚合接口ID,只要保证两端端口都加入了聚合组即可。
2、检查链路聚合状态 配置好之后,查看两端的链路聚合状态,如下图所示,可以看到两端交换机上聚合接口已经可以正常使用(U-in use),各成员端口已经正常加入聚合接口(P-in port-channel),说明聚合配置基本没问题了。
3、测试网络联通性 最后链路聚合配置完成之后,在两端终端PC上进行ping包测试,以确认数据可以正常传输,这里分别在终端PC1上ping终端PC4,在终端PC2上ping终端PC3,结果如下,可以看到两边网络已经正常连通且可以正常传输数据,说明链路聚合配置成功。
4、聚合链路稳定性测试 在终端PC1长ping终端PC4,这时将聚合链路中的一条链路shutdown,可以看到聚合链路中一个G0/1端口状态变为D-down,但另一个仍为正常绑定状态,观察ping包测试结果,可以看到整个过程中无丢包现象,一条链路出现故障后,数据流量可以自动无缝切换,保证业务不会中断(实际情况中自动切换时可能会出现极少量丢包)。
其它注意事项
1、简单回顾一下链路聚合配置的主要命令: 创建聚合接口(全局配置模式下): interface port-channel <group-id> 将端口加入聚合组(端口模式下): channel-group <group-id> mode on 配置链路聚合负载均衡模式(全局配置模式下): port-channel load-balance <load-balance-mode> 查看链路聚合简要状态信息(特权模式下): show etherchannel summary show etherchannel <group-id> summary 查看链路聚合详细信息(特权模式下): show etherchannel detail show etherchannel <group-id> detail 查看聚合接口的详细状态信息(特权模式下): show ehterchannel port-channel show etherchannel <group-id> port-channel 查看聚合链路负载均衡模式(特权模式下): show etherchannel load-balance
2、本教程的配置只适用于使用IOS系统的思科交换机二层链路的聚合,IOS不同版本命令可能有细微区别。
3、这里只介绍了简易聚合模式(不使用聚合协议),如果想了解其它聚合模式的更多技术细节可以参考官方手册。
4、如果觉得教程有帮助的,麻烦顺便帮忙投个票哈!
结语
本篇教程主要介绍了一下思科交换机的简易链路聚合配置,配置比较简单,但是实际配置时可能会遇到一些其它干扰因素(如两端端口双工不匹配或物理链路故障等),但是只要慢慢排查还是能找到故障原因的,希望对大家有所帮助,每天都要加油丫~ By 看星星的小王子 2018.8.22