广播风暴产生的原因
交换机(针对二层交换机)收到一个未知单播报文的处理动作是在除了接收的接口以外的所有接口进行广播,如果其他交换机收到该交换机收到广播报文会进行泛洪,如果sw2收到pc1的arp请求(单播包),然后自己进行广播寻找,sw2会记录pc1对应的接口mac然后从自己的其他接口发送广播寻找目的mac(同vlan),sw3和sw1收到该广播包,在自己除了接收端口的端口进行泛洪这样子就导致sw2->sw1->sw3->sw2,或者sw2->sw3->sw1->sw2,从sw2发送的广播报文又被转发回来了,然后sw2又进行泛洪,导致一个报文被无休止的转发,并且产生很多报文,这就是广播风暴。
广播风暴的概念
如果在一个数据帧在一个闭合网络中无休止被转发,会导致设备性能下降,cpu占满,导致都在处理这些泛洪的报文,无法处理正常的报文,最终导致设备宕机。
MAC地址漂移/震荡
二层也就是数据链路层,交换机(二层)负责会有记录mac地址的mac地址表,广播风暴会导致这个mac地址表不断被修改,还是刚刚那个假设,pc1发送一个单播(里面有发送方的源mac),sw2收到该包记录下发送方的源mac地址对应接口为g0/0/3接口,表示该mac地址在自己的g0/0/3接口下,然后交换机发送一个广播包(源mac为pc的mac,目的mac为全F),发送给sw1或者sw3,sw1或者sw3通过环路又发送给sw2,然后sw2发现自己从自己的g0/0/1或者g0/0/2接口收到pc1的源mac,这时交换机会认为pc1被连在了自己的g0/0/1或者g0/0/2接口,所以会修改mac地址表,因为上文提到的广播风暴,所以地址会不断变动,这就是mac地址漂移/震荡。
STP(生成树协议)
作用:
阻塞端口,消除环路。
概念:
1、根桥:为了破除环路,生成树网络首先要选举出一个根桥,也叫作根交换机。
2、桥ID:bridge-id:由桥优先级(默认取值为32768,必须为4096的倍数)和桥MAC地址组成,越小越优,0为最优。
3、根ID:根桥的桥ID。
4、非根桥:除了根桥以外的交换机都叫做非根桥或非根交换机,一个生成树网络中只有一个根桥。
5、端口ID:也叫作PID,由端口号(例0/0/1、0/0/2)构成。
6、RPC:root path cost,根路径开销,即到达根桥的开销值。
7、根端口:又叫做RP(root port),非根桥上去往根桥最近的端口(非根交换机接收最优BPDU的端口成为根端口)。
8、指定端口:又叫做DP,会在每一条链路上的两个端口之间选取出一个指定端口,用于转发BPDU,根桥上都是指定端口。
9、BPDU:桥协议单元,是生成树协议唯一的报文,分为配置BPDU和TCN-BPDU其中TCN-BPDU只有根桥可以发出配置BPDU,其他非根桥转发根桥的配置BPDU,非根桥可以发出TCN-BPDU。
STP的端口角色
RP:根端口、DP:指定端口
STP的端口状态
Disable:端口down或者没有开启STP协议,这时该接口不处理任何BPDU
Blocking:接收BPDU,不发送BPDU,选举根桥和端口,不学习MAC地址,不转发数据
Listening:接收BPDU,发送BPDU,不学习MAC地址,不转发数据
Learning:接收BPDU,发送BPDU,学习MAC地址,不转发数据
Forwarding:接收BPDU,发送BPDU,学习MAC地址,转发数据
STP时间
hello时间 hello time : 2s一次
老化时间 max age: 20s
选根桥
所有交换机在初始状态下都会认为自己是根桥,发送以自己为根的BPDU(报文中的root id字段为自己的BID)。所有的交换机都会使用BPDU中的root id来进行比较,比较桥ID,谁的BID更优秀谁将成为根桥。
BID的比较原则:
首先比较桥优先级,数值默认为32768,越小越优。
如果优先级比较不出来,则继续比较桥MAC地址,越小越优先
选取根端口(非根桥上才有根端口)
在每一台非根交换机上选举一个根端口,接收BPDU
选举原则:非根交换机接收到最优BPDU的接口为根端口
最优BPDU的标准
1、根桥ID小的
如图sw1根据比较桥ID选举sw1为根桥
2、开销cost小的
sw4根据选举cost小的选举根端口为0/0/1
3、发送者(转发桥)的桥ID小的
sw4根据比较中转桥ID,选举出sw2桥ID更小更优
4、发送者端口ID小的
根据比较桥ID选举出sw1为根桥,所以sw2为非根桥,根据比较发送者(sw1发送给sw2,所以发送者是sw1)端口ID(越小越好)选举出sw1的g0/0/1对应的本端接口g0/0/1接口是根端口
5、本地端口小的
根据比较桥ID选举出sw1为根桥,所以sw2为非根桥,根据本地端口越小越优先,所以阻塞g0/0/2,选举g0/0/1端口为根端口。
选取阻塞端口
概念:在每一条链路上选择一个指定端口,转发BPDU。根桥确定后,根桥的所有接口全部默认为指定端口,部分用不到的会被阻塞。当非根交换机选举出根端口以后,将会默认其他端口为指定端口。那么就会将根端口接收到的BPDU进行一个加工, 将自己的一些参数加工后,生成新的BPDU,由这些指定端口向外发送。这个指定端口在向外发送加工后的BPDU时,同时也会受到对向发来的BPDU,这时就要进行比较。收到对端发来的BPDU后,如果发现自己的BPDU更优秀,那么指定端口这个角色不会改变,继续保持为指定端口角色;如果比较后对方的BPDU更好,那么指定端口将会被阻塞。比较BPDU的原则与根端口的最优BPDU标准相同。
STP拓扑的变化
在STP协议中,BPDU有两种类型,分别为配置BPDU和TCN-BPDU。 先由变更点朝根桥方向发送TCN消息,收到该消息的上游交换机就会回复TCA消息进行确认;最后TCN消息到达根桥后,再由根桥发送TC消息通知设备删除桥MAC地址表项。收到TC消息的交换机将会把自己的MAC地址表老化时间强制修改为15s。