一、选举过程
1、选举根桥:第一步比较 ①(root id),根桥 ID 越小越优
先比较优先级,优先级一致则比较 MAC 地址,都是越小越优先
2、选举根端口:除了根桥设备以外,其他的非根桥设备,成为 Non-Root(非根交换机)
非根交换机会选举距离根桥最近的一个接口,称为 RP(根端口)
每个非根交换机,距离根桥可以有多个接口,最优的一个(有且只有一个)距离根桥最近的,就是根端口
这个端口,根据 ②(RPC)选举出来
3、选举指定端口:每个路径之间都要选举出一个指定端口,用于发送数据包和 BPDU
比较交换设备之间的端口,最优的一个成为 DP(指定端口)
一般会比较到 ③(BID)
4、阻塞(非根、非指定)端口:如果该接口不是 RP 也不是 DP,那么就会成为 AP 端口(或者是 BP )阻塞端口
————————————————————————————————————————————————
二、选举要素(选举的时候会根据以下的顺序进行比较)
①(Root ID):根桥ID,由 8字节组成
2 字节的优先级:16 bit,只有前 4bit 可以修改,后面 12bit 固定(4096 的倍数)默认:32768
6 字节的MAC地址:交换设备本身的 MAC 地址
②(RPC):根路径开销,由非根设备到达根桥所有的路径开销累计组成
交换设备之间的 cost ,称为:路径开销
非根交换设备到达根桥,累计路径上所有的开销值,称为(根路径开销)
③(BID):桥 ID,由 8字节组成
2 字节的优先级:16 bit,只有前 4bit 可以修改,后面 12bit 固定(4096 的倍数)默认:32768
6 字节的MAC地址:交换设备本身的 MAC 地址
(桥 ID 其实就是每个交换设备的 ID,只有根桥的称为 Root ID,其余非根设备的称为 BID)
只要是根桥 RID 和 BID 都一样,其他非根设备 RID 和 BID 不一致(RID 是根桥的)
④(PID):端口 ID (当两台交换设备互联,中间有多条链路时,需要阻塞一个接口,但是前 3 个要素都一致,所以比较交换设备的发送端口 ID)
越小越好
端口 ID,2字节组成
4bit 优先级 (例如:G0/0/1 和 G0/0/2 接口)
12bit 接口 ID (G0/0/1 端口ID为“128:1” G0/0/2 端口ID为“128:2”)
————————————————————————————————————————————————
端口角色
1、RP(根端口):非根交换机,距离根桥最近的一个接口,用于接收数据包以及 BPDU
2、DP(指定端口):用于发送数据包和 BPDU ,每个链路上都会有一个 DP 端口
3、AP(阻塞端口):用于备份,默认会阻塞处理,不转发数据包也不转发 BPDU
————————————————————————————————————————————————
华为的 STP 端口状态(STP、RSTP、MSTP)
Discarding:(阻塞状态)
代表发送和处理 BPDU 并且进行端口选举,但是不能转发用户数据(AP 端口最终的状态)
Learning:(学习状态)
代表发送和处理 BPDU 学习 MAC 地址,但是不能转发用户数据
Forwarding:(转发状态)
可以发送和处理 BPDU,并且能够转发用户数据(RP 和 DP 的最终状态)
————————————————————————————————————————————————
当拓扑发生改变时, MAC 地址表有可能会绑定错误的接口,为了解决错误的端口映射问题
当拓扑发生改变时,变化的设备会发送 TCN BPDU 给根桥设备处理,告知根桥拓扑改变
①变化的设备接口进入 forwarding (相当于接口发生改变) “思科的设备接口 UP 就相当于接口改变”
②该设备会产生一份 TCN BPDU 从 RP 接口发送到根桥
③上游设备收到后(如果是非根桥)会回复一份 配置BPDU,其中 TAC=1(代表收到 TCN),否则下游设备 2s 会重发一份 TCN BPDU
④当 TCN BPDU 到达根桥后,根桥会进行确认
第一份 配置BPDU(TAC=1 TC=1)代表,收到了 TCN 并且告知其他设备 MAC 地址表刷新
后续的 配置BPDU(TC=1)不需要重复确认
总共发送:35s (转发延迟+老化时间)15+20 / 约等于发送 17-18份
收到该 TC 置位 BPDU 的设备,会把 MAC 老化计时器刷新 “标准文档时把 300s 缩减到 15s”
————————————————————————————————————————————————————————————
STP 的基础配置命令
(系统配置视图)
stp mode stp // 修改 STP 的模式为 STP (默认为:MSTP 模式)
stp priority 4096 // 把 STP 的优先级修改为 4096 // (默认为:32768)越小越优先(但必须是 4096 的倍数)
————————————————————————————————————————————————————————
修改接口 cost
interface G0/0/0 // 进入 G0/0/0 接口
stp cost 100 // 修改接口 cost 为 100 (默认为:20000)
补充:修改接口的为路径开销,根路径开销等于累计的入接口路径开销
例如: SW1(G0/0/0)————(G0/0/1)SW2(G0/0/2)————(G0/0/3)SW3
SW1 为根桥,那么这个图中所有的接口 cost 都为 20000
SW3 到达 SW1 的根路径开销等于(G0/0/3)+(G0/0/1) 即:40000
如果想把 SW3 的根路径开销修改为 2000(必须同时修改 G0/0/3 和 G0/0/1)让它们的和为 2000 才可以实现
如果想把 SW3 的根路径开销修改为 30000 则(可以修改 G0/0/3 和 G0/0/1 其中一个为 10000 即可)
例2:如果想让 SW2 的根路径开销改为 100,则直接修改 G0/0/1 接口开销为 100 即可
(每台设备只会从自己的 RP 端口计算到达 根桥的开销值)这个值就是 根路径开销
查看 STP 接口角色命令:display stp brief
以太网设备(HUB、Switch)
HUB(集线器):是共享式的总线型设备,所有的数据都会采用泛洪方式发送(即:一个接口接收,其他所有的接口发送)
容易导致数据冲突,一个 HUB 设备就是一个冲突域(使用 CSMA/CD 解决)
Switch(交换机):也是共享式网络的设备,但是每一个接口都有独立的隔离作用,可以有效的隔离冲突域
一个接口就是一个冲突域(每个接口都通过 MAC 地址表转发数据,有效隔离数据冲突)
————————————————————————————————————————————————————
冲突域:是指一个共享网络的节点集合,该网络中,所有的设备发送数据包都会泛洪出去(单播、广播、组播)都进行泛洪处理
它们共享网络带宽,设备越多,冲突就越严重
广播域:广播域是指广播报文能够在二层网络中传递的范围,处于同一个广播域的设备都能收到广播报文
—————————————————————————————————————————————————————
二层交换设备的通信,是基于 MAC 地址来进行的
ETH II:一般转发数据帧(用户的数据或者上层协议的数据帧,如:APR、OSPF、ICMP 等)
802.3:以太网的控制协议数据帧(一般用于链路层协议封装,如:STP、LACP、IS-IS 等)
MAC(48 bit)十六进制的方式显示
每个网卡或者网络设备生产出来的时候都会有一个 MAC 地址(物理地址),该地址是固定不可变的(可以通过软件修改,但是网卡 MAC 不变)
———————————————————————————————————————————————————————————
单播:MAC 地址的第 8 bit 为 0,则是一个单播地址(也就是第一段为偶数)例如:02-AA-BB-CC-DD-EE
组播:MAC 地址的第 8 bit 为 1,则是一个组播地址(也就是第一段为奇数)例如:01-00-5E-00-00-AA
广播:MAC 地址全为 1, FF-FF-FF-FF-FF-FF 则是一个广播地址
———————————————————————————————————————————————————————————
交换设备如何处理一个数据帧
交换设备收到数据帧后,会根据目的 MAC 地址进行转发(转发前,先进行判断属于哪一种数据帧)
1、单播(未知单播):目的 MAC 地址是一个单播地址,但是这个地址在 MAC 地址表没有相应记录,就是一个未知的单播帧
交换设备会采用泛洪的方式处理
单播(已知单播):目的 MAC 地址是一个单播地址,该 MAC 地址在 MAC 地址表有相关记录,则按照记录的接口转发
————————————————————————————————————————————
2、组播:目的 MAC 地址是一个组播地址,然后先上送 CPU 处理,如果是本设备监听的组播 MAC ,则按相应的组播接口转发(1 个或者 N 个接口)
如果不是本设备监听的组播 MAC ,则泛洪处理
————————————————————————————————————————————
3、广播:目的 MAC 地址是一个广播地址,交换设备会直接泛洪处理
——————————————————————————————————————————————————————————————————
MAC 地址表
生成方式(动态、静态)
(交换设备是根据源 MAC 地址进行学习,根据 目的 MAC 地址来进行转发数据)
动态:根据数据包的源 MAC 地址进行学习,记录 MAC 地址的接口和 VLAN 对应关系(老化时间 300s)
接口 down 了,或者从其他接口收到相同的 MAC 地址,会进行删除和覆盖
interface ,本地接口的 MAC 地址,除非接口故障,否则不会删除
——————————————————————————————————————————————
静态:手工绑定 Static 绑定后,不会因为时间、接口 down 删除相关的记录,相同的 MAC 也不能覆盖这个地址表关系
一般用于固定的终端设备(如:打印机、服务器等)
手工绑定 blockhold 不会因为时间、接口 down 删除相关的记录,相同的 MAC 也不能覆盖这个地址表关系
用于孤立终端(例如:被攻击者持续发送 ARP 泛洪报文、BPDU-TC 报文等影响交换设备的正常工作,可以绑定该 MAC 地址)
当交换设备收到该 MAC 地址发送的数据帧,就会直接丢弃
——————————————————————————————————————————————————————