请 详述 一下 BPDU 数据包的格式 和结构

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请 详述 一下 BPDU 数据包的格式 和结构相关的知识,希望对你有一定的参考价值。

请 详述 一下 BPDU 数据包的格式 和结构
例如: 协议 版本 Hello计时器 最大生存时间 等~~

结构 例如: protocol Id : 0000 IEEE 802.1d 什么的 等 ~~

BPDU GUARD与BPDU FILTER这2个可以再全局模式下开启也可以再端口下开启。当然不同的开启方式效果也不同。BPDU GUARD在全局下开启只对portfast端口生效,并且收到BPDU就将接口过渡到ERR-DISABLE状态。在接口下开启不管是不是portfast端口一旦收到BPDU都将接口过渡到err-disable状态。如果BPDU FILTER在全局下开启只对portfast端口生效并且只能过滤掉发出的BPDU并不能过滤掉收到的BPDU。如果在接口下下开启。那么不管是否是不是portfast端口都将生效。并且将会使发出或收到的都被过滤掉,这样就相当于在这个接口关掉了STP是很危险的动作,不建议在接口下开启。 参考技术A 你可以看看我的BLOG,详解,并且验证了STP协议的整个过程 http://blog.sina.com.cn/mzhhly 答案补充 http://blog.sina.com.cn/s/articlelist_1561378223_1_1.html
STP协议BPDU报文2 (2008-11-29 17:04:33)
RSTP,MSTP (2008-10-31 23:28:20)
收敛链路变化protfast,uplinkfast,backbonefast (2008-10-30 23:47:59)
STP协议BPDU报文1 (2008-10-23 18:17:44)

STP协议

一:概述

交换机使用生成树(spanning-tree)协议互相协商相关参数,进行根桥、根端口和指定端口的选举,进而在逻辑上断开环路,防止广播风暴的产生。

二:BPDU报文格式

交换机之间通过互相发送BPDU报文进行根网桥、根端口和指定端口的选举,继而形成逻辑上无环的网络拓扑。

BPDU报文格式如下:
技术图片

Protocol Identifier:协议ID,该字段为0;
Protocol Version Identifier:协议版本,STP为0,RSTP为2,MSTP为3;
BPDU Type:BPDU消息类型,通常有两种,一类是配置BPDU,负责建立并维护STP拓扑,值为0x00,另一类是TCN BPDU,用于传达拓扑变更信息,值为0x80;
BPDU Flags:内含两个标识位,TC位:拓扑变化标志;TCA位,拓扑变化确认标志;
Root Identifier:当前根桥的桥ID,由2字节的桥优先级和6字节的MAC地址组成,该MAC地址默认情况下为VLAN 1的MAC地址;
Root Path Cost:发送该BPDU的端口到达根桥的开销值;
Bridge Identifier:发送该BPDU报文的交换机的桥ID,也是由2字节的桥优先级和6字节的MAC地址组成,该MAC地址默认情况下为VLAN 1的MAC地址;
Port Identifier:发送该BPDU报文的端口ID;
Message Age:该BPDU消息的年龄;
Max Age:指BPDU消息的最大生存时间,即老化时间;
Hello Time:指发送两个BPDU的时间间隔;
Forward Delay:指拓扑改变后,交换机端口在发送数据包前维持在监听和学习状态的时间。

抓包分析BPDU报文:
技术图片

二:交换机将环形网络生成无环拓扑的步骤

1:选取根桥
交换机启动后,会向相连的交换机发送BPDU报文,起初,每台交换机都认为自己是根桥,互相交换BPDU报文后,会进行根桥的选举,选取根桥比较的是桥ID,桥ID包括交换机的优先级和MAC地址,先比较优先级,优先级的范围为0-32768,必须为4096的倍数,默认情况下为32768。优先级较小的成为根桥,如果优先级相同,比较MAC地址,MAC地址较小的成为根桥。根桥的选举采用抢占机制,如果一台优先级较小的交换机接入网络,会抢占根桥,并重新进行STP计算,生成新的无环网络。

2:选取根端口
选择根端口的依据:首先比较根路径成本,根路径成本与链路的带宽有关,带宽越大,根路径成本越低,到达根桥路径成本最低的端口成为根端口,如果根路径成本相同,再比较直连交换机的桥ID,连接桥ID较小的交换机的端口成为根端口,如果直连交换机的桥ID相同(采用双链路连接到同一台交换机的情况),就会比较端口ID,所连接上行交换机的端口ID较小的端口成为根端口。

3:选取指定端口
网络中每段链路(每个冲突域)都要选举一个指定端口,选举指定端口的依据是先比较两个端口到达根桥的路径成本,如果路径成本相同,再比较两台交换机的桥ID,桥ID较小的交换机的端口成为指定端口。

实验分析选举过程:

网络拓扑如下图所示,其中,拓扑中所有交换机优先级均为默认值(32768),所有链路带宽均相同。

技术图片

①选举根桥:
根桥的选举比较的是桥ID,桥ID内部含有交换机的优先级和MAC地址,先比较优先级,发现优先级都相同,于是比较MAC地址,各交换机的MAC地址如下图所示:
技术图片

由图可知,SW4的MAC地址最小,因此选举SW4为根桥:
技术图片

②选举根端口:
在非根交换机上选举根端口,非根交换机有4台,每台交换机都要选举:SW0有两个接口,分别为Fa0/1和Fa0/2,由图可知,Fa0/2口到达根桥的路径成本较低,因此该端口被选举为根端口。以此类推,SW1的Fa0/1口成为根端口;SW2的Fa0/1口成为根端口。SW3的Fa0/3口和Fa0/4口到达根桥的路径成本相同,于是比较直连交换机的桥ID,发现桥ID也相同(连接的是同一台交换机),因此比较直连交换机端口ID,SW3的两个端口分别连接SW4的Fa0/3口和Fa0/4口,Fa0/3口的端口ID较小,因此选择本地连接Fa0/3口的端口作为根端口,根端口选举完成,拓扑如下:
技术图片

③选举指定端口:
上述网络拓扑中共有6段链路,因此需要选举6个指定端口,与根桥连接的3段链路中,根桥上的端口到达根桥的路径成本最低,所以根桥上的所有端口都为指定端口。在SW0和SW1所连链路中,SW0的Fa0/1口到达根桥的成本较低,因此该链路中,Fa0/1口为指定端口,同理,SW1和SW2所连链路中,两个端口到达根桥的根路径成本相同,于是比较各自的桥ID,SW1的MAC地址较小,因此选举SW1的Fa0/2口成为指定端口,在SW2和SW3所连链路中,SW3的Fa0/1口到达根桥的路径成本较低,因此该端口成为指定端口。网络拓扑如下:
技术图片
剩余的端口即为逻辑上断开的端口(block端口),最终形成无环的网络拓扑。

三:STP协议下的端口状态

STP协议下,交换机端口分为Disabled、Blocking、Listening、Learning、Forwarding状态:

Disabled:端口没有启用的状态,不接收BPDU,不转发BPDU,不参与生成树计算,不学习MAC地址表,不转发数据帧。
Blocking:阻塞状态,接收BPDU,不转发BPDU,不参与生成树计算,不学习MAC地址表,不转发数据帧。
Listening:监听状态,接收BPDU,转发BPDU,参与生成树计算,不学习MAC地址表,不转发数据帧。
Learning:学习状态,接收BPDU,转发BPDU,参与生成树计算,学习MAC地址表,不转数据帧。
Forwarding:转发状态,接收BPDU,转发BPDU,参与生成树计算,学习MAC地址表,正常转发数据帧。

汇总如下表所示:
技术图片

端口状态转变所需的时间:

①blocking→listening:需要经过20s。
②listening→learning:需要经过15s。
③learning→forwarding:需要经过15s。

以上是关于请 详述 一下 BPDU 数据包的格式 和结构的主要内容,如果未能解决你的问题,请参考以下文章

STP原理-路由交换原理11-HCNA笔记

要用loadrunner做一个B/S结构软件的登录功能的测试,负载测试和压力测试的场景分别怎么设计?请详述!

生成树协议

请问一下PostgreSQL啥意思 请详述 谢谢

IP数据包的格式

生成树基本内容