STP:生成树
三层架构-----冗余----线路冗余—二层的桥接环路
导致的现象:
1、广播风暴(同一个广播帧在二层环路的顺时针和逆时针无止境的循环)
2、MAC地址表翻滚
3、同一数据帧的重复拷贝(交换机转发一个帧时,会复制该帧,并且需要向多少条链路转发就会复制多少份)
生成树协议用于实现二层的线路冗余,在网络中逻辑的阻塞部分接口,来实现从源到目标仅拥有唯一的一条路径;当最佳路径故障时,阻塞端口自动工作来实现备份的作用;
所谓生成树,其实就是在二层的网络中构建一个树形结构;-----必须唯一、尽量最短、尽量星型拓扑;
所有交换机间使用BPDU的数据帧来进行沟通;
BPDU====桥协议数据单元,跨层封装到二层;
BPDU存在两种类型:
1、配置BPDU----只有根网桥可以发出;在最初无根网桥时,所有交换机均发出;
2、次优BPDU----TCN—拓扑变更消息
Hello time 2s hold time 20s
一、IEEE802.1D算法:
会在二层的桥接环路中进行4种角色的选举:
1)根网桥(一台交换机为一个单位)
2)根端口(一个接口为一个单位)
3)指定端口(一个接口为一个单位)
4)非指定端口---阻塞端口(一个接口为一个单位,该接口被逻辑阻塞,所有流量可以收到但绝不转发)
以上2/3/4所有类型的接口都会收到BPDU
默认初始时,所有交换机均认为本地是根网桥,均向外发送本地BPDU,之后根网桥被选出;导致今后仅根网桥发出BPDU,其他交换机仅进行转发;
根网桥(一台交换机):在一棵生成树实例中有且仅有一台;对整个树进行管理和部署,通
过发送BPDU来进行指挥和维护;
选举参数:BPDU中存在 BID—桥ID;
桥ID的构成===网桥优先级+MAC地址
网桥优先级默认32768;范围0—65535;
MAC地址====背板地址池中最小值的MAC地址
选举规则:先比较BID中网桥优先级,最小最优;若优先级相同,再比较MAC地址,
小优;
交换机转发流量不需要mac地址,一般当交换机要实现SVI功能时会用到SVI,一般支持SVI的交换机也有Console口(可配置),可以支持stp等多种协议;
二层交换机的SVI接口只有一个,所以只有一个mac,三层交换机的SVI接口有多个,所以有多个mac;
根端口(一个接口):在每台非根网桥上有且仅有一个;根端口是非根网桥上离根网桥最近
的接口,该接口可以转发用户的流量;用于接收来自根网桥的BPDU;
选举参数:PID=端口ID==接口优先级+接口编号
默认接口优先级=128 范围0-240
选举规则:
1、比较各个接口从根网桥发出到该接口进入时的最小cost值----进接口
2、若入口的cost值相同,便比较该接口对端的交换机BID,小优(此时关注未来根网桥若故障,谁会成为新的根网桥)
3、若对端的BID相同,便比较该接口对端接口的PID(接口优先级+接口编号),先比较PID中的优先级,小优;若优先级相同比较接口编号,小优(PID小的接口更容易成为指定端口,通常根端口对端为指定端口);
4、若接口对端的PID相同,比较本地的PID,小优
选举根端口时Cost值只会在BPDU进入接口的时候叠加,具体叠加多少与带宽有关
带宽与cost值关系:
10M 100
100M 19
1000M 4
10000M 2
>10000M 1
指定端口(一个接口):在每段物理链路有且仅有一个;指定端口是用于转发用户的数据,
以及转发来自根网桥的BPDU;默认根网桥所有端口均为指定端口
选举规则:
1、比较从根网桥发出后,经过该接口再发出时的cost值,小优---出方向(比较哪个接口更快发出BPDU)
2、若出向cost值相同,比较本地的BID,小优
3、若本地的BID相同,再比较本地的PID,小优
4、若本地PID相同,该接口直接阻塞
非指定端口—阻塞端口(一个接口):逻辑阻塞,可以接收到流量,但是不向任何接口进行
转发;
选举规则:当一个网络中将以上三种角色均选举完成后,剩余所有未分
配任何角色的接口成为非指定端口;
关于对生成树协议的干涉,至少必须关注根网桥的位置,最合适的地点为汇聚层设备;
在802.1D中,端口除了角色外,还存在状态:
Down:默认所有交换机接口初始状态,指示灯不显示;一旦双up,向外发出BPDU进入下
一状态;
Listening:侦听(15s)----指示灯为橙色;进行生成树的选举,各个接口角色的生成;
若接口角色为根端口或指定端口那么进入下一状态;
若接口角色定义为非指定端口,状态直接切换为阻塞,指示灯保
持为橙色;
Learning:学习(15s)-----指示灯为橙色;学习PC发出的数据包中的源MAC地址,生成MAC
地址表;学习完成后,进入下一状态;
一般交换机上mac地址表的记录将维持300s,300s后记录被删除;
Forward:转发---------------指示灯为绿色
阻塞状态-------非指定端口的状态
802.1d算法的收敛时间:
1、初始收敛---30s
2、结构突变--------1)30s 直连检测前提下,本地的阻塞端口启用需要15s侦听+15s学习
2)50s 非直连检测的前提下,阻塞端口需要20s hold time+30s选举
两种结构突变:
1 存在直连检测:原来转发流量的接口故障后本地仅有一个阻塞端口可以继续收到BPDU,15s侦听+15s学习完成收敛,阻塞端口进入转发状态
2 不存在直连检测:交换机的一个处于转发状态的接口的对端接口为一个阻塞端口,无法从对端阻塞端口收到任何BPDU,此时能收到BPDU的接口出现故障,导致该交换机无法收到任何BPDU,此时交换机会从未故障的接口发出自己的BPDU,对端阻塞端口会收到该BPDU,该BPDU相对root发出的BPDU属于次优BPDU,此时对端阻塞端口进入20s等待,若对端阻塞端口经历20s后仍收到次优BPDU则该阻塞端口开始经历30s(侦听+学习)最后进入转发状态开始发送BPDU和流量
总共经历50s(20s等待+30s收敛)
注:任何接口在选举未完成前,均不能转发用户的流量;
802.1d算法的缺点:
1、收敛速度慢(30s-50s)
2、链路利用率低(存在阻塞端口的链路不转发流量)
二、PVST:cisco私有;基于vlan的生成树协议;特点为使用了同802.1d完全一致的算
法,但每个vlan独立使用一颗生成树;仅能基于ISL的trunk干道封装技术进
行工作;基于每个vlan发出不同的BPDU,各自进行各自的选举;选举规则
为802.1d规则;默认所有vlan发出的BPDU中网桥优先级为32768+vlan的ID;
管理员手工修改网桥优先级,只能修改32768的部分,且该部分的修改必须
以4096的倍数来进行;
优点:可以将不同vlan的根网桥放置于不同的汇聚层设备上,然后实现流量的分担,提高
了链路的利用率;
缺点:1、收敛速度慢 2、树形结构多 3、仅能基于ISL的封装进行工作;
注:一台设备若希望存在某个vlan的生成树,必须存在该vlan,
同时存在该vlan的用户或者存在trunk干道;
三、PVST+: cisco的技术;其工作原理同PVST完全一致;但可以基于isl和802.1q工作;
可以实现部分的加速;
交换机加入某个vlan的生成树的条件:
1 该交换机上创建了对应vlan
2 该交换机存在该vlan的活动用户或活动的trunk干道
干涉PVST+的生成树选举指令:
1、修改网桥优先级,可以起到干涉根网桥位置,包括各种端口;
Switch(config)#spanning-tree vlan 3 priority 28672 必须基于不同的vlan分开进行
在priority后随便输入某个错误的数值,将会显示所有可选的数值
2、直接干涉根网桥的位置
sw1(config)#spanning-tree vlan 2 root primary 本地成为vlan2的根网桥
sw1(config)#spanning-tree vlan 3 root secondary 本地成为vlan3的备份根
原理:修改为根,本地自动将网桥优先级下调2倍4096;修改为备份根下调1倍4096;
3、修改接口的优先级 默认128,范围0—240
sw1(config)#interface fastEthernet 0/24
sw1(config-if)#spanning-tree vlan 2 port-priority ?
<0-240> port priority in increments of 16 修改时必须为16的倍数
4、修改接口的cost值
CORE(config)#interface f0/1
CORE(config-if)#spanning-tree vlan 2 cost ?
<1-200000000> Change an interface's per VLAN spanning tree path cost
PVST+的部分加速指令:
1、端口加速 ----用于access接口,连接pc;不需要进行生成树选举,直接进入转发状态;
Switch(config)#in f0/1
Switch(config-if)#spanning-tree portfast
CORE(config)#interface f0/35
CORE(config-if)#switchport host 接口默认修改为access,同时portfast功能激活
CORE(config)#spanning-tree portfast default 全局激活postfast,对trunk干道无效
2、上行链路加速 -----交换机在存在直连检测的前提下,本地阻塞端口需要15s侦听,15s学习才能进入
转发状态,开启上行链路加速后,这种接口将直接进入转发状态;
CORE(config)#spanning-tree uplinkfast 该指令只用于接入层设备;
因为接入层设备存在阻塞端口最佳,故uplinkfast开启后,该设备的网桥优先级和cost值将成倍增加;被强制固定为非根设备;
满足直连检测需要交换机本身具有阻塞端口,这种交换机的桥优先级通常会比较大(无法成为根),为了能够成为阻塞端口,端口的优先级也要比较大
3、骨干加速----交换机在没有直连检测的前提下,需要20s的hold + 30s的收敛才能转发流量;开启骨
干加速后,可以省略20s的hold 但剩余30s,必须正常进行;接收到次优BPDU后,骨干
加速的设备可以省略20s的hold time;
CORE(config)#spanning-tree backbonefast 所有交换机均可以正常使用
骨干加速后,20s可以省略,但30s无法省略,如上图,虽然中间连接根的链路故障,但若左右两边的接口全部立刻进入转发状态则环路会再次形成,此时仍需要经历30s选举来决定最后哪个接口进入转发状态
优点:1、可以将不同vlan的根网桥放置于不同的汇聚层设备上,然后实现流量的分担,提
高了链路的利用率;
2、可以部分的加速、兼容802.1Q
缺点:1、收敛速度慢 –加速不够彻底,初次收敛无加速;拓扑变更若无直连检测则仍需30s
2、树形结构多
RSTP/RPVST/802.1W:快速生成树(1-2s收敛完成)
RSTP/RPVST为私有协议基于每个VLAN一颗生成树,选举算法同PVST+一致;(pvst+升级版)
802.1w为公有协议,整个交换网络为一棵树;(802.1D升级版)
不依赖计时器,主动的切换接口状态;
sw1(config)#spanning-tree mode ?
mst Multiple spanning tree mode 802.1s
pvst Per-Vlan spanning tree mode pvst+
rapid-pvst Per-Vlan rapid spanning tree mode 802.1w
sw2(config)#spanning-tree mode rapid-pvst 建议所有交换机切换模式一致
注:不是所有的物理接口均支持RSTP;
点到点链路 RSTP
共享型链路 默认不支持RSTP,默认为PVST+
链路类型由接口的双工模式来决定:全双工 ---点到点
半双工 ----sharde
让10M半双工接口也运行RSTP:
sw2(config)#interface range ethernet 0/0 -1
sw2(config-if-range)#spanning-tree link-type point-to-point 修改链路的类型
Cisco私有:
优点:快速、分流、兼容
缺点:树多
公有:
优点:快速
缺点:链路利用率低
MSTP/802.1S:多生成树 组生成树
配置:
sw1(config)#spanning-tree mode mst 所有交换机上修改
默认存在0号组,所有VLAN均在该组
sw1#show spanning-tree
sw1#show spanning-tree mst 0
sw1(config)#spanning-tree mst configuration 进行组配置
sw1(config-mst)#instance 1 vlan 6-10,115 创建组号1,同时定义该组的VLAN
注:该命令必须在所有交换机上均配置;
sw1(config)#spanning-tree mst 1 root ? 修改根网桥的位置
primary Configure this switch as primary root for this spanning tree
secondary Configure switch as secondary root
sw1(config)#spanning-tree mst 1 priority ? 修改网桥优先级
<0-61440> bridge priority in increments of 4096
sw1(config-if)#spanning-tree mst 1 ? 修改接口优先级,或cost值
cost Change the interface spanning tree path cost for an instance
port-priority Change the spanning tree port priority for an instance
切记:在PVST以上的生成树协议中,均存在基于不同vlan或不同的组来实现多生成树;
若基于多vlan的生成树协议,要求本地必须存在这些vlan,同时本地存在这些vlan的活动用户或者存在活动的trunk干道;否则该交换机上不会出现该vlan的树;
基于组的生成树,原理一致;
CDP:cisco设备发现协议
sw#show cdp neighbors 通过CDP协议可以远程了解网络拓扑;默认开启60s周期向所有邻居告知本地信息;
但cdp协议携带目标敏感信息--
-VTP 域名 nativevlan id 管理VLAN的ip地址 拓扑结构
建议接入层设备同用户相连的接口关闭CDP 协议
sw(config)#no cdp run 全局关闭,该设备上直接关闭CDP协议
sw(config)#interface e0/0
sw(config-if)#no cdp enable 关闭某个接口的CDP协议
SSH:安全外壳协议
安全的远程登录协议,自动对流量进行加密传输
IOS版本中携带K字母,标示安全性设备;
若一台设备需要基于SSH登录,需要该设备上存在秘钥库;
r1(config)#ip domain name haojian.com
r1(config)#crypto key generate rsa general-keys 默认生成512长度
r1(config)#crypto key generate rsa general-keys modulus 1024
可修改1024,SSH版本1.99支持
生成秘钥库后,开启远程登录即可
r1(config)#line vty 0 4
r1(config-line)#login local
r1(config-line)#exit
r1(config)#username ccna privilege 15 secret cisco123
默认此时telnet和ssh登录均可
r1(config)#line vty 0 4
r1(config-line)#transport input ssh 仅允许SSH登录
使用一台设备来SSH登录另一台设备
r2#ssh -l ccna 1.1.1.2
Password:
交换实验:
DTP用于创建trunk,VTP正常工作需要trunk干道支持
步骤:
1 DTP创建trunk干道
在单臂路由中,交换机相互连接和交换机与路由器相连的接口都要调整为trunk接口,这样交换机才能转发不同vlan的流量给路由器;
DTP一条链路的两个接口均为被动模式则trunk干道无法形成,必须至少有一方为主动模式或手动模式;
2 配置VTP
两台交换机间的VTP必须要两台交换机间有trunk干道支持;
两台交换机间要配置相同的域(domain)和密码(passwd)才能将vlan信息同步成功;
3 接口划入vlan
4 路由器创建子接口
5 配置dhcp
Router(config)#ip dhcp pool a
Router(dhcp-config)#network 172.16.1.0 255.255.255.128
Router(dhcp-config)#default-router 172.16.1.1
Router(dhcp-config)#dns-server 119.29.29.29
Router(dhcp-config)#exit
通常路由器与终端连接的接口要被调整为被动接口,路由器将宣告该接口所属网段路由但该接口本身不会向下发送控制信息;
路由器上子接口才能识别vlan标签;
如果路由器上有子接口,则需要调整子接口为被动接口,调整物理接口本身不会阻止接口发送控制信息,在进行其他配置(NAT/ACL...)时也要将子接口看做一个独立的物理接口来配置;