网络子系统25_生成树协议

//参考 深入理解linux网络技术内幕
//生成树协议(Spanning Tree Protocol, STP)是用于消除环路拓扑的分布式算法。


//生成树协议的基本元素:
//	1.链路开销,当链路没有指定开销,或者都设置成相同开销时,一个节点到达根的距离用网络跃点数来测量。
//	2.BPDU,STP通过让各个网桥之间交换称为网络协议数据单元(BPDU)的特殊帧来传递配置信息。
//	3.根网桥,唯一能产生BPDU的网桥,其他网桥只有在接收到BPDU时才会传输BPDU(当网桥第一次加入时,会认为
//	自己就是根网桥)。
//	4.指定网桥,每个LAN都有一个指定网桥,它成为该LAN中所有主机和网桥到达根节点的网桥。
//	5.端口状态,由STP或手工设置网桥端口可以处于的状态,见状态转换图。
//	6.端口角色:
//		6.1根端口,每个网桥设备只能有一个根端口,能到达根网桥具有最高优先级的端口,被选为根端口。
//		6.2指定端口,每个网桥设备可以有多个指定端口,但没有LAN只能有一个指定端口,网桥设备通过其指定端口到达其他LAN。
//	根端口由根网桥使用,给各个lan发送信息,指定端口由lan使用,通过其向根网桥发送信息。
//	7.网桥id,每个网桥都会被指派一个id,8字节,分两部分,低6字节为其某个端口的mac地址,高2字节为可配置的优先级。
//	8.端口id,每个端口都会被指派一个id,2字节,分两部分,设置端口号的方式和具体协议有关,且其值只在网桥本地有意义。
//	9.端口开销,开销越低,表示该端口越应当被优先使用。
//网桥id,端口id
                                网络子系统25_生成树协议_第1张图片

//网桥协议数据单元(BPDU)类型:
//	1.配置BPDU,用于定义无环路拓扑,
//		1.1发送时机:
//			1.1.1 根网桥会运行一个定时器(Hello定时器),到期后触发配置BPDU的传输,或者当网桥加电时,会认为自己是根网桥,
//			设置所有端口为指定端口,然后发送配置BPDU.
//			1.1.2 非根网桥只有在应答其根端口收到的BPDU才会生成BPDU,生成的BPDU中传输者的网桥id和端口id会被该网桥替换,
//			该网桥会把开销更新为其接收到的开销加上其本地网桥中接收BPDU的端口的开销之和。
//			1.1.3 无论网桥是否为根网桥,当一台网桥接收到一个BPDU,如果其优先级向量低于该网桥在其端口所用的,那么网桥会
//			以自己的(较高优先级)的信息应答;当一台网桥接收到一个TCN BPDU,会立刻发出一个设有特殊标示的配置BPDU作为应答。
//			1.1.4 当非根网桥,由于添加或删除端口导致网桥配置信息的改变,使网桥从非根网桥变为根网桥,则在所有指定端口上,
//			发送配置BPDU。
//	2.TCN(拓扑变化通知) BPDU,当检测到拓扑变化时,网桥用于通知根网桥。


                                    网络子系统25_生成树协议_第2张图片

//配置BPDU的优先级向量:
//		包含四个元素,<根网桥ID,根路径开销,网桥ID,端口ID>,长度为22字节,值越小,表明网桥在拓扑中越重要。

//拓扑中配置更新的顺序:选择根网桥,选择根端口,选择指定端口

//STP中涉及到的定时器:
//1.网桥使用的定时器:
	//定时器				默认值(s)				取值范围(s)
	//Hello 				2 						1~10
	//Topology Change 		转发延迟+最大生存期 	未定义
	//TCN					Hello时间 				未定义
	//Address Aging 		300或转发延迟 			未定义


//2.端口使用的定时器:
	//定时器				默认值(s)				取值范围(s)
	//Message Aging 		20						6~40
	//Forward Delay			15						4~30
	//Hold					1 						未定义


//并非所有定时器都可由用户配置,有些定时器使用相同的配置(TCN和Hello)
//1.网桥使用的定时器:
//	Hello,用于定期产生配置BPDU,只有根网桥使用该定时器。
//	TCN,由检测到拓扑变化而且必须通知根网桥的网桥设备使用。
//	Topology Change,由根网桥使用,以便记住要在其配置BPDU中设定一个特殊标识,此标识用于将拓扑变化通知其他网桥。
//	Aging,用于从转发数据库清除无效的地址,无论其是否启用STP。

//2.端口使用的定时器:
//	Message Aging,BPDU所携带的信息生存期是有限的,该定时器用于强制执行这个生存期,每当端口上接收了一个BPDU后,
//	该定时器就会重启,只要接收到一个BPDU,就会对它的消息生存期和网络允许的最大生存期做一比较,如果前者大于后者,
//  该帧就会被丢弃。其在非指定端口上运行,在没有任何问题的稳定环境下,该定时器绝不会到期,但当根网桥无法产生BPDU,
//	或者接收到的BPDU已过期,此定时器就会到期,当此定时器到期时,该端口就会被重新启动,被分配为指定角色。
//	Forward Delay,该定时器负责状态转移,从监听到学习以及从学习到转发。
                                    网络子系统25_生成树协议_第3张图片

//用户可配置信息:
//	1.网桥和端口优先级
//	2.端口开销
//	3.端口上运行的定时器







你可能感兴趣的:(Linux网络子系统)