多生成树(MST)是把IEEE802.1w 的快速生成树(RST)算法扩展而获得的,多生成树协议定义文档是IEEE802.1S。css
多生成树提出了域的概念,在域的内部能够生成多个生成树实例,并将VLAN关联到相应的实例中,每一个VLAN只能关联到一个实例中。这样在域内部每一个生成树实例就造成一个逻辑上的树拓扑结构,在域与域之间由CIST实例将各个域连成一个大的生成树。各个VLAN内的数据在不一样的生成树实例内进行转发,这样就提供了负载均衡功能。算法
MSTP(Multiple Spanning Tree Protocol,多生成树协议)服务器
将存在环路的网络修剪成为一个无环的树型网络,避免报文在环路网络中的增生和无限循环,同时还提供了数据转发的多个冗余路径,在数据转发过程当中实现VLAN 数据的负载均衡。MSTP 兼容STP 和RSTP,而且能够弥补STP 和RSTP 的缺陷。它既能够快速收敛,也能使不一样VLAN 的流量沿各自的路径分发,从而为冗余链路提供了更好的负载分担机制。网络
MSTP与其余几种生成树协议对比:app
实验模拟
实验拓扑如上图所示。设PC八、九、10为vlan 10中的设备,PC十一、12/13为vlan 20中的设备,使SW-1成为vlan 10的根桥交换机,SW-2成为vlan 20的交换机。要求:运行MSTP,防止环路存在,同时实现负载均衡。
注意:运行MSTP须要在每台交换机上都进行配置。负载均衡
SW-1ide
SW-1(config)#interface range g0/0-1 SW-1(config-if-range)#switchport trunk encapsulation dot1q SW-1(config-if-range)#switchport mode trunk SW-1(config-if-range)#exit SW-1(config)#interface range g1/0-1 SW-1(config-if-range)#switchport trunk encapsulation dot1q SW-1(config-if-range)#switchport mode trunk SW-1(config-if-range)#exit SW-1(config)#vlan 10 SW-1(config-vlan)#vlan 20 SW-1(config-vlan)#exit SW-1(config)#spanning-tree mode mst //进入MSTP的配置模式下 SW-1(config)#spanning-tree mst configuration //设置域名,全部运行MSTP的设备应当一致 SW-1(config-mst)#name cisco SW-1(config-mst)#revision 1//设置版本号 //建立实例 SW-1(config-mst)#instance 1 vlan 10 SW-1(config-mst)#instance 2 vlan 20 //查看实例信息 SW-1(config-mst)#show pending Pending MST configuration Name [cisco] Revision 1 Instances configured 3 Instance Vlans mapped -------- --------------------------------------------------------------------- 0 1-9,11-19,21-4094 1 10 2 20 ------------------------------------------------------------------------------- SW-1(config-mst)#exit //基于实例设置优先级 SW-1(config)#spanning-tree mst 1 priority 0 SW-1(config)#spanning-tree mst 2 priority 4096 //检查配置是否正确 SW-1(config)#do show running-config | section spanning-tree spanning-tree mode mst spanning-tree extend system-id spanning-tree mst configuration name cisco revision 1 instance 1 vlan 10 instance 2 vlan 20 spanning-tree mst 1 priority 0 spanning-tree mst 2 priority 4096 //另外一种设置实例优先级的方法 SW-(config)#spanning-tree mst 1 root primary
SW-2ui
SW-2(config)#interface range g0/0-1 SW-2(config-if-range)#switchport trunk encapsulation dot1q SW-2(config-if-range)#switchport mode trunk SW-2(config-if-range)#exit SW-2(config)#interface range g1/0-1 SW-2(config-if-range)#switchport trunk encapsulation dot1q SW-2(config-if-range)#switchport mode trunk SW-2(config-if-range)#exit SW-2(config)#vlan 10 SW-2(config-vlan)#vlan 20 SW-2(config-vlan)#exit SW-2(config)#spanning-tree mode mst SW-2(config)#spanning-tree mst configuration SW-2(config-mst)#name cisco SW-2(config-mst)#revision 1 SW-2(config-mst)#instance 1 vlan 10 SW-2(config-mst)#instance 2 vlan 20 SW-2(config-mst)#exit SW-2(config)#spanning-tree mst 1 priority 4096 SW-2(config)#spanning-tree mst 2 priority 0 //检查配置是否正确 SW-2(config)#do show running-config | section spanning-tree spanning-tree mode mst spanning-tree extend system-id spanning-tree mst configuration name cisco revision 1 instance 1 vlan 10 instance 2 vlan 20 spanning-tree mst 1 priority 4096 spanning-tree mst 2 priority 0 //另外一种设置实例优先级的方法 SW-2(config)#spanning-tree mst 2 root primary
SW-3this
SW-3(config)#interface range g0/1-2 SW-3(config-if-range)#switchport trunk encapsulation dot1q SW-3(config-if-range)#switchport mode trunk SW-3(config-if-range)#exit SW-3(config)#vlan 10 SW-3(config-vlan)#exit SW-3(config)#interface range g1/0-2 SW-3(config-if-range)#switchport mode access SW-3(config-if-range)#switchport access vlan 10 SW-3(config-if-range)#exit SW-3(config)#spanning-tree mode mst SW-3(config)#spanning-tree mst configuration SW-3(config-mst)#name cisco SW-3(config-mst)#revision 1 SW-3(config-mst)#instance 1 vlan 10 SW-3(config-mst)#exit //查看实例信息 SW-3(config)#do show spanning-tree mst 1 ##### MST1 vlans mapped: 10 Bridge address 5000.0003.0000 priority 32769 (32768 sysid 1) Root this switch for MST1 Interface Role Sts Cost Prio.Nbr Type ---------------- ---- --- --------- -------- -------------------------------- Gi0/1 Altn BLK 20000 128.2 Shr Bound(RSTP) Gi0/2 Mstr FWD 20000 128.3 Shr Bound(RSTP) Gi1/0 Desg FWD 20000 128.5 Shr Gi1/1 Desg FWD 20000 128.6 Shr Gi1/2 Desg FWD 20000 128.7 Shr
SW-4spa
SW-4(config)#interface range g0/1-2 SW-4(config-if-range)#switchport trunk encapsulation dot1q SW-4(config-if-range)#switchport mode trunk SW-4(config-if-range)#exit SW-4(config)#vlan 20 SW-4(config-vlan)#exit SW-4(config)#interface range g1/0-2 SW-4(config-if-range)#switchport mode access SW-4(config-if-range)#switchport access vlan 20 SW-4(config-if-range)#exit SW-4(config)#spanning-tree mode mst SW-4(config)#spanning-tree mst configuration SW-4(config-mst)#name cisco SW-4(config-mst)#revision 1 SW-4(config-mst)#instance 2 vlan 20 SW-4(config-mst)#exit
经过查看端口状态,可验证无环路要求已实现。要想实现负载均衡,还需进行链路聚合的相关配置。
链路聚合是将两个或更多数据信道结合成一个单个的信道,该信道以一个单个的更高带宽的逻辑链路出现。链路聚合通常用来链接一个或多个带宽需求大的设备,例如链接骨干网络的服务器或服务器群。
端口汇聚是将多个端口汇聚在一块儿造成一个汇聚组,以实现出/入负荷在汇聚组中各个成员端口中的分担,同时也提供了更高的链接可靠性。
公有:LACP(Link Aggregation Control Protocol,链路汇聚控制协议)。是一种实现链路动态汇聚的协议。LACP协议经过LACPDU(Link Aggregation Control Protocol Data Unit,链路汇聚控制协议数据单元)与对端交互信息。启用某端口的LACP协议后,该端口将经过发送LACPDU向对端通告本身的系统优先级、系统MAC地址、端口优先级、端口号和操做Key。对端接收到这些信息后,将这些信息与其它端口所保存的信息比较以选择可以汇聚的端口,从而双方能够对端口加入或退出某个动态汇聚组达成一致。
操做Key是在端口汇聚时,LACP协议根据端口的配置(即速率、双工、基本配置、管理Key)生成的一个配置组合。动态汇聚端口在启用LACP协议后,其管理Key缺省为零。静态汇聚端口在启用LACP后,端口的管理Key与汇聚组ID相同。
私有:端口汇集协议(PAgP)(Port Aggregation Protocol)是Cisco的专有协议,PAgP是一种管理功能,它在链路的任一末端检查参数的一致性,而且有助于保持网络可用性。 PAgP 分组为了商议一个通道的造成在快速以太通道可能的端口发送。
主动模式:主动发送协商包,主动发起协商
被动模式:接收协商包,进行协商
LACP;聚合链路能够为二、四、八、16条。最大能够聚合链路为8条,剩余8条做为备份存在。
PAgP:二、四、8条。
SW-1
SW-1(config)#interface range g1/0-1 //描述协议信息,与具体使用什么协议无关 SW-1(config-if-range)#channel-protocol lacp //设置聚合组编号 SW-1(config-if-range)#channel-group 1 mode passive //查看配置信息 SW-1(config)#do sh 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 N - not in use, no aggregation f - failed to allocate aggregator M - not in use, minimum links not met m - not in use, port not aggregated due to minimum links not met u - unsuitable for bundling w - waiting to be aggregated d - default port A - formed by Auto LAG Number of channel-groups in use: 1 Number of aggregators: 1 Group Port-channel Protocol Ports ------+-------------+-----------+----------------------------------------------- 1 Po1(SD) LACP Gi1/0(s) Gi1/1(s)
SW-2
SW-2(config)#interface range g1/0-1 SW-2(config-if-range)#channel-protocol lacp SW-2(config-if-range)#channel-group 1 mode active /*提示信息:Creating a port-channel interface Port-channel 1*/ //查看配置信息 SW-2(config)#do 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 N - not in use, no aggregation f - failed to allocate aggregator M - not in use, minimum links not met m - not in use, port not aggregated due to minimum links not met u - unsuitable for bundling w - waiting to be aggregated d - default port A - formed by Auto LAG Number of channel-groups in use: 1 Number of aggregators: 1 Group Port-channel Protocol Ports ------+-------------+-----------+----------------------------------------------- 1 Po1(SU) LACP Gi1/0(P) Gi1/1(P)
经过查看带宽信息,咱们能够发现SW-2的带宽从以前的1G变为如今的2G,实现了链路聚合。
链路聚合默认状况下基于源目IP负载(可修改)
//可修改成下列几种负载方式 SW-2(config)#port-channel load-balance ? dst-ip Dst IP Addr dst-mac Dst Mac Addr src-dst-ip Src XOR Dst IP Addr src-dst-mac Src XOR Dst Mac Addr src-ip Src IP Addr src-mac Src Mac Addr
其余查看配置命令:
SW-2(config)#do show run | section channel interface Port-channel1 switchport trunk encapsulation dot1q switchport mode trunk channel-protocol lacp channel-group 1 mode active channel-protocol lacp channel-group 1 mode active SW-2(config)#do show run | section channel-group channel-group 1 mode active channel-group 1 mode active SW-2(config)#do show etherchannel load-balance EtherChannel Load-Balancing Configuration: src-dst-ip EtherChannel Load-Balancing Addresses Used Per-Protocol: Non-IP: Source XOR Destination MAC address IPv4: Source XOR Destination IP address IPv6: Source XOR Destination IP address
当存在两条聚合链路时,可经过设置优先级的状况下改变链路使用状态
查看默认状况下的聚合链路信息
SW-2(config)#do show etherchannel port Channel-group listing: ---------------------- Group: 1 ---------- Ports in the group: ------------------- Port: Gi1/0 ------------ Port state = Up Mstr Assoc In-Bndl Channel group = 1 Mode = Active Gcchange = - Port-channel = Po1 GC = - Pseudo port-channel = Po1 Port index = 0 Load = 0x00 Protocol = LACP Flags: S - Device is sending Slow LACPDUs F - Device is sending fast LACPDUs. A - Device is in active mode. P - Device is in passive mode. Local information: LACP port Admin Oper Port Port Port Flags State Priority Key Key Number State Gi1/0 SA bndl 32768 0x1 0x1 0x101 0x3D Partner's information: LACP port Admin Oper Port Port Port Flags Priority Dev ID Age key Key Number State Gi1/0 SP 32768 5000.0001.0000 8s 0x0 0x1 0x101 0x3C Age of the port in the current state: 0d:00h:15m:49s Port: Gi1/1 ------------ Port state = Up Mstr Assoc In-Bndl Channel group = 1 Mode = Active Gcchange = - Port-channel = Po1 GC = - Pseudo port-channel = Po1 Port index = 0 Load = 0x00 Protocol = LACP Flags: S - Device is sending Slow LACPDUs F - Device is sending fast LACPDUs. A - Device is in active mode. P - Device is in passive mode. Local information: LACP port Admin Oper Port Port Port Flags State Priority Key Key Number State Gi1/1 SA bndl 32768 0x1 0x1 0x102 0x3D Partner's information: LACP port Admin Oper Port Port Port Flags Priority Dev ID Age key Key Number State Gi1/1 SP 32768 5000.0001.0000 11s 0x0 0x1 0x102 0x3C Age of the port in the current state: 0d:00h:15m:47s
观察相关的信息咱们能够发现,默认优先级为32768.
修改方法:
SW-2(config)#interface g1/0 SW-2(config-if)#lacp por SW-2(config-if)#lacp port-priority ? <0-65535> Priority value
须要注意的是,若修改聚合链路优先级,应当将本端口和对端端口的优先级进行同步配置,不可只配置一个端口。