STP帧格式:
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
STP包内容:

1、  BPDU采用的是多播,目标MAC地址:01-80-C2-00-00-00Bridge_group_addr:网桥组多播地址)
2、  协议标识符和协议版本都是固定的0
工作流程:

1、  建立生成树
根桥选择:选举的原则是根据BPDU当中的BID来进行判断,优先级最小的成为根网桥;当BID 的网桥的优先级相同时就根据MAC地址小的选为根桥。
选定根端口:根据下列配置消息的优先级进行比较,落选端口进入阻塞状态,只侦听BPDU
配置消息的优先级比较原则
标识
优先级
RootID(根ID
越小优先级越高
BPDU携带信息
RootPathCost(根开销)
越小优先级越高
TransmitID(根桥ID
越小优先级越高
PortID(端口ID
越小优先级越高
交换机本身比较
指定端口和阻塞(Blocking)端口的定义:
端口类型
条件
指定端口
收到的配置消息里的RootID>其他端口收到的RootID
如果收到的配置消息里的RootID相同,比较开销:开销>RootPathCost+1
如果RootID相同,开销=RootPathCost+1BID< 配置消息里的BID
阻塞(Blocking)端口
收到的配置消息里的RootID=ID
如果RootID相同,开销=RootPathCost+1BID> 配置消息里的BID

 

2、  生成树的维护
参数
说明
Message Age(消息年龄)
报文老化时间,按时间递增,每当收到一个生存期更小的配置消息,则更新自己的配置消息
Max Age(信息寿命)
BPDU的生存期(控制交换机保存BPDU信息的最长时间,根据BPDU更新)
当一段时间未收到任何配置消息,生存期达到Max Age时,网桥则认为该端口连接的链路发生故障,进行故障处理
Hello time
根交换机发送BPDU的时间间隔,根交换机发送BPDU包,非根交换机转发

 

3、  生成树的重新建立
拓扑改变消息的传播
BPDU 分为两种:Configuration BPDU (配置的BPDU) TCN BPDU(拓扑变化的BPDU
< 1 > TCN BPDU ---拓扑变化的BPDU

非根桥始发。当一台非根桥交换机,检测到网络拓扑发生变化的时候,就会产生一个TCN BPDU,这个BPDU是告诉根桥的,也就是说只有根端口才会向跟桥方向发送这类的BPDU,上行
    当交换机从它的指定端口接收到TCNBPDU,它必须为其做转发,从它自已的根端口上发送出去,这样一级一级地传到根交换机后,TCN的任务才算完成。
    在以上的过程中,无论是哪台交换机从它的指定端口上收到了TCN类型的BPDU,它都必须给一个回复,必须从指定端口上发出BPDU Type=0x01 configuration BPDU

 

< 2 > Configuration BPDU ---配置BPDU
根桥始发。当根桥收到 TCN BPDU 后,会产生一个配置BPDU,告诉所有它知道的非根桥交换机,拓扑发生了变化。会发现这种的BPDU 是通过指定端口始发和转发的,下行。
    当所有交换机都知道拓扑发生改变后,开始重新进行生成树计算,端口进入Listening状态

 

端口的五种状态:
端口状态
端口能力
Disabled
不收发任何报文
Blocking
不接收或转发数据,接收但不发送BPUDs,不进行地址学习
Listening
不接收或转发数据,接收并发送BPDUs,不进行地址学习
Learning
不接收或转发数据,接收并发送BPDUs,开始地址学习
Forwarding
接收并转发数据,接收并发送BPDUs,进行地址学习
Forward Delay(转发延迟):交换机端口处于侦听、学习状态的时间;决定了listeninglearning状态之间的切换时间