STP学习心得 下载本文

STP学习心得

1、 STP协议叫什么?

STP是Spanning Tree Protocol的缩写,译名生成树协议。

2、 STP产生的背景?

在二层网络中没有TTL概念,如果存在环路,如图1当PC3发送一个广播帧ARP后,交换机SW1除去0/0/1以外的其它所有端口(0/0/2,0/0/10,0/0/6)会将该数据帧复制并发送出去,该ARP帧随后被SW2的0/0/5和SW3的1/0/0接收,SW2的0/0/10和0/0/6端口再复制发送,SW3的1/0/4和1/0/1端口会再复制发送……依此规律每个接到该帧的交换机都会将ARP复制到非接收端口后继续发送,循环往复,最终导致广播风暴。

广播风暴不仅会导致流量倍增,还会造成mac地址表不稳定,交换机在每次接收到数据帧时都从中学习对应的mac地址,写入到自己的mac缓存表中,在广播风暴中,mac表会被不断的刷新,导致其不稳定。

图1

另外,环路还会将单播帧重复拷贝。如图1,当PC3发送一个单播帧给PC4时,SW1接收到该帧时,如果SW1还没有学习到PC4的mac地址,根据交换机原理,对未知单播进行洪泛转发(上面说到的除去接收端口意外的端口都转发),和广播风暴类似,只有当该帧发送到SW4时(SW4知道PC4接在自己的1/0/4端口上)才会发送给PC4,原本PC3只是给PC4发送一个单播帧,而PC4却接收到了很多个单播帧,这样导致网络环境出现问题,比如流量计费不精确问题。

提问:在上述中PC3向PC4发送一个单播帧时,PC4到底会收到多少个单播帧?

基于上述种种环路产生的各种网络问题,STP被设计出来解决这些问题。

3、 BPDU是什么?

STP通过拥塞冗余路径上的一些端口,确保达到任何一个目的地的逻辑路径只有一条。STP借用交换BPDU(Bridge Protocol Data Unit,桥接数据单元)来阻止环路。BPDU是二层报文。BPDU中包含了计算生成树的参数信息。 BPDU包含主要字段如下:

协议ID:该值总为0。

版本号:STP的版本(为IEEE 802.1d时值为0)。 报文类型:BPDU类型(配置BPDU=0,TCN BPDU=80)。

标记域:LSB(最低有效位)=TCN标志;MSB(最高有效位)=TCA标志。

根网桥ID:根信息由2字节优先级和6字节ID组成。这个信息组合标明已经被选定为根网桥的设备标识。

根路径成本:路径成本为到达根网桥交换机的STP开销。表明这个BPDU从根网桥传输了多远,成本是多少。这个字段的值用来决定哪些端口将进行转发,哪些端口将被阻断。

发送网络桥ID:发送该BPDU的网桥信息。由网桥的优先级和网桥ID组成。 端口ID:发送该BPDU的网桥端口ID。

计时器:计时器用于说明生成树用多长时间完成它的每项功能。这些功能包括报文老化时间、最大老化时间、访问时间和转发延迟。

最大老化时间:网桥将根桥看做不可用前保留根ID的最大时间。 访问时间:根网桥连续发送BPDU的时间间隔。 转发延迟:网桥在监听学习状态所停留的时间。

4、 STP算法

STP使用STA(Spanning Tree Algorithm,生成树算法)来决定交换机上的哪些端口被堵塞用来阻止环路的发生,STA选择一台交换机作为根交换机,称作根桥(Root Bridge),以该交换机作为参考点计算所有路径。 5、 根交换机选举

首先要知道什么是BID(Bridge ID,桥ID),因为根交换机的选举是基于BID的,BID由三部分组成:优先级、发送交换机的MAC地址、Extended System ID(扩展系统ID,可选项)如下图所示:

BID一共8个字节,其中优先级2个字节,MAC地址6个字节。在不使用Extended System ID的情况下,BID由优先级域和交换机的MAC地址组成,针对每个VLAN,交换机的MAC地址都不一样,交换机的优先级可以是0-65535。在使用Extended System ID的情况下每个VLAN的MAC地址可以相同,默认值1。值得一提的是,现在的交换机普遍使用Extended System ID。拥有最小BID的交换机被选举成为根交换机。

选举过程:在同一个广播域中的所有交换机都参与选举根交换机,当一台交换机启动时,它假设自己是根交换机,并默认每隔2秒发送一次“次优BPDU”帧,BPDU帧中的Root ID(根交换机的BID)和本机的BID相同。在一个广播域中的交换机互相转发BPDU帧,并且从接收到的BPDU中读取Root ID,如果读取到的Root ID比本交换机的BID小,交换机更新Root ID为这个较小的Root ID,然后继续转发修改后的BPDU;如果接收的BPDU中的Root ID比本交换机的BID大,那么继续将自己的BID作为Root ID向外发送BPDU,直到最后在同一个生成树实例中拥有一致的Root ID,这个Root ID对应了这个广播域中某台交换机的BID(并且这个BID一定是这个广播域最小的),这台交换机就被选作根交换机。当两个RootID一致时,再比较mac地址,mac地址小的作为根交换机。 6、 路径花销和端口花销

路径花销是指从根交换机出发达到目的交换机进入端口的总花销。如果一台交换机有多条路径达到根交换机,那么会选取花销最小的那条路径。如下图是默认的端口花销对照表。

参照表只是默认花费,端口的花费是可以手动修改的,如下图修改命令,但是部分交换机是不支持修改的。

7、 STP端口角色 根端口 指派端口 Root Port,RP,每个非根交换机上有且仅有一个根端口,到达根交换机花销最小,优先级最小的端口。 Designated Port,DP,网桥上除根端口外,所有允许转发流量的端口,每个网段都有一个指派端口,根交换机上的端口都是指派端口。 非指派端口 Blocking既不是根端口也不是指派端口,这种端口虽然是激活的但是会被堵塞(Blocking)用来阻止环路。根端口和指派端口都处于转发(Forwarding)状态。 禁用端口

8、 STP端口状态 Down Blocking 禁用状态,可以使用”no shutdown”之类的命令和插入网线来激活。 阻塞状态,链路激活后转入阻塞状态,这个状态大约停留20秒,主要用来确定该端口的角色。如果判断出该端口是非指派端口,则将保持在这一状态,即阻塞,如果处在阻塞状态的端口接收不到BPDU了,也会转入下一状态。如果判断出是其他端口角色,则转入下一状态。 侦听状态,这个状态大约停留15秒,除了接收BPDU外,还向邻居发送BPDU,通知邻居它将参与激活拓扑。 学习状态,大约停留15秒,开始学习MAC地址。 转发状态,端口可以转发数据帧。 被管理员使用”shutdown”命令关闭的端口称作禁用端口,禁用端口不参与生成树算法。 Listening Learning Forwarding

9、 BPDU的几种时间 Hello Time Max Age Hello时间控制了发送BPDU的时间间隔,默认2秒。这是根交换机生成BPDU并向非根交换机发送的间隔。 非根交换机接收到根交换机发送来的BPDU,再从除接收端口以外的其他端口转发出去,如果在2-20秒里面由于网络故障没有新的BPDU从根交换机发送过来,非根交换机将停止向外发送从根交换机接收到的BPDU。如果这种情况持续20秒,也就是最大存活期,非根交换