10.1 环路问题
10.1.1 广播风暴
- 多路径冗余链路切换,但是需要避免二层环路;
- 三层路由TTL跳转限制,可以避免环路。
- HOSTX发送消息是,交换机针对帧进行转发,学习帧的原地址,查看MAC地址表,根据目标MAC地址查找MAC地址表,如果存在,就进行相应转发。如果不存在,就泛洪查找。
- 交换机不能隔绝广播域,交换机A收到广播帧后,经广播进行转发。到交换机B后,交换机接着广播,
不停的广播,形成了广播风暴。
10.1.2 多帧复制
因为环路导致一个设备收到多分拷贝帧,虽然会收一个,丢弃一个,但还是消耗了资源。
10.1.3 MAC表絮乱
- MAC地址泛洪攻击,导致MAC地址表填满,充斥垃圾信息。
- 从多个地方学到同一条MAC地址;
10.2 STP
通过某种方式进行选举,选择一个软关闭,避免环路;
10.2.1 STP机制
选举一个,软关闭;实时监控,一旦拓扑发生变化,可以随时打开:
- 在交换域或者广播域选择一个根桥(交换机)root,设置为生成树的根;
- 每台非root交换机,每台交换机选择一个根端口root port,距离root交换机开销最小的端口;
- 每个链路有两个接口,选择一个指定端口designated port,(root交换机上的接口不能被阻塞,所以root交换机上的接口都是DP端口;其余离root交换机最近的端口);
- 剩下的设置为非指定端口,被阻塞。
注意:RP收BPDU包,DP发BPDU包。
10.2.2 选举步骤
BPDU:网桥协议数据单元;BPDU为STP协议的数据包;通过BPDU泛洪,泛洪STP选取参数,便于生成树计算;
第一步:选择根桥,即root交换机,交换机ID最小的为root交换机。
- 交换机ID,每台运行STP协议的都有,8个字节,2个字节的桥优先级可以认为设定,默认为32768;后六位为交换机的MAC地址,是交换机背板的MAC,不是端口MAC地址。
- 先比较根桥的桥优先级,比小的,相同的情况下,比MAC地址,也比小。
最开始所有交换机都认为自己是root,通过泛洪BPDU,不停的比较和计算,最后得出root交换机。
- 选择完根桥后,已根桥为参考点计算。
- 非根桥的设备,只有一个根端口:
- 同一台交换机不同端口,距离根路由器最近的、或者开销最小的选为root prot;
- 当开销都一样的情况下,比较发送BPDU者的桥ID,小的成为RP;当桥IDID也一样,则比较发送者的端口ID。
选取DP
阻塞非DP
总结:
- 刚运行的交换网络,所有交换机都会认为自己是root,并且向各个方向泛洪BPDU包;
- BPDU包就包含自己的桥ID,经过义序列的泛洪,得到root;
- 接着选择RP,DP,将非DP阻塞接口。
- 剩下的就是root不断的发BPDU,非root不断的转发,阻塞端口不会转发,最终形成无环树。
10.2.3 案例
10.2.3.1 案例1
- sw1为root,因为桥ID最小;
- RP:SW2和SW3连接SW1的端口;
- DP:SW的所有端口,SW2和SW3连的端口,到根开销一样,比较桥ID;
- SW3和SW2连的端口为阻塞。
10.2.3.2 案例2
- Root不变;
- RP:SW2和SW1连接的RP,SW3和SW2连接的RP;
- DP:SW1的接口,SW2和SW3相连的是DP;一般情况下和RP相连的是DP
- RP是收,DP是发BPDU包
10.2.3.3 案例3
假设带宽一样
- SW4上的RP看SW2和SW3的桥ID,小的方向为RP;
- DP中,和RP相连的设置为DP。
10.2.3.4 案例4
SW1达到SW2的开销一样,桥ID也一样,最后比较SW1的端口ID。
10.2.4 STP端口状态
- BLOCKING:经过选举后,被列为阻塞状态,不转发帧,接受BPDU,当处于阻塞状态超过了计时器最大计时20S,没有收到BPDU包时,就开始不安分;
- LISTENING:侦听数据帧,不转发帧,也不学习,持续15秒;
- LEARNING:学习帧MAC地址,维护MAC地址表,持续15秒;
- FORWARDING:RP和DP的状态;
阻塞端口都会努力转为转发端口。