您的位置:首页 > 编程语言 > PHP开发

STP生成树协议

2011-05-20 15:10 375 查看
    STP概述

    1.STP产生的原因:在实际网络环境中,物理环路可以提高网络的可靠性,一条链路无法传输数据的时候,另外的 一条链路仍然可以传输数据。但是在交换网络中,当交换机收到一个未知MAC地址的帧时,交换机会将这个数据帧从除收到接口以外的所以接口发送广播,这样环 路的网络就会形成双向的广播环,甚至产生广播风暴,导致交换机down掉。STP就是为了解决物理环路产生的,STP在逻辑上断开网络的环路,防止广播风 暴的产生,一旦当正在使用的链路出现故障,逻辑上被断开的链路就会连通,这样确保网络的正常通信。
    2.STP简介:STP协议就是把一个环形的网络结构改变成一个树形的网络结构。STP协议就是通过一种算法,在逻辑上阻塞一些端口,来形成树形结构。
    3.STP的工作原理

    生成树算法,生成树协议运行生成树算法(STA),过程分为3个步骤:
    (1)选择根网桥(RB,root bridge)

    (2)选择根端口(RP,root ports)
    (3)选择指定端口 (designated ports)
    1) 选择根网桥

    选择根网桥的依据是网桥ID,网桥ID是一个8字节的字段,前2个字节的十进制数称为网桥优先级,后六个字是网桥的MAC地址。
    
       

     图:1-1

    网桥的MAC地址可以通过 show version 来查
    


    根据生成树的算法,比较STP参数的取值时,值小的优先级高。在选择根网桥时,网桥ID小的成为根网桥,网桥ID分2部分,默认情况下,网桥优先级是32768,所以MAC地址小的成为根网桥。
    


        图:1-2
    如图1-2 选择根网桥的时候先比较网桥优先级,SW2的优先级高,所以SW2成为根网桥,当网桥优先级是一样的时候,MAC地址小的成为根网桥。
    2)选择根端口,每一个非根网桥上都有一个根端口,选择根端口的依据:
    (1)到根网桥的最低成本路径
    (2)直连网桥的ID最小
    (3)端口ID最小
    路径成本用来代表一条链路的带宽的大小,一条链路的带宽越大,传输数据的成本越低
    


        图:2-1 带宽与路径成本的关系
    端口ID是一个二字节的STP参数,由一个字节的端口优先级和一个字节的端口号组成。
    


    图:2-2
    端口优先级一个可配置的STP参数,端口优先级的十进制取值范围是0-255,默认是128

    端口编号是Catalyst用于列举哥哥端口的数字标识符,端口编号不是端口号,但是端口号越小的端口编号越小。

    比较端口ID值的时候比较的是接收到对端的端口ID值
    三台交换机的选举:
    


        图:2-3

    SW2 被选举为根网桥后,SW1和SW3上各选举一个根端口,根据根端口的选举规则,到根网桥路径成本最低的端口被选为根端口。

    图:2-3上路径成本都是19(100M链路)

    如果SW1到SW2的链路带宽是10M,那么SW1上和SW3上连接的端口成为根端口,计算根路径成本发生在BPDU进入的那一个交换机端口,而不是离开的端口。
    如果是2台交换机相连,非根网桥上的端口到根网桥的路径成本也是一样的话,那么就要比较直连网桥ID值,因为对端端口所在的是一个交换机上,所以直连网桥的ID也是一样的,那么就要比较对端端口的ID值,对端端口ID值小的端口成为指定端口。

    如图:2-4
    二台交换机的选举:
    


        图:2-4
    SW1成为根网桥,在SW2上选举一个根端口,F0/23和F0/24到SW1 的路径成本一样(19),这时候应该比较连接F0/23 ,F0/24的交换机的网桥ID,和F0/23,F0/24直接相连的都是SW1,网桥ID一样,最终要比较端口ID,SW2的F0/23,F0/24的 对端端口分别是SW1的F0/24,F0/23,SW1的F0/23端口的端口ID值要小一些,所以SW2的F0/24端口成为根端口。
    选择指定端口,是在每一条链路上选择一个指定端口,依据是:

    (1)根路径成本较低

    (2)所在交换机的网桥ID的值值较小

    (3)端口ID的值较小(和选举根端口不同,选举指定端口是比较自己的端口ID)

    和根网桥上的端口都是指定端口,因为到根网桥的路径成本为0

    三台交换机的选举
    


        图:3-1

    如图:3-1 SW1的F0/23,F0/24成为指定端口,现在要在SW2和SW3的链路上选择一个指定端口。

    先比较到根路径的成本,SW2的F0/23到根网桥的成本为38(19+19),SW3上的F0/24到根网桥的成本也是38(19+19),这时就要比较交换机所在的网桥ID值,SW2的网桥ID值比SW3的网桥ID值小,所以SW2的F0/23成为指定端口。

    选举结束后,SW3的F0/24端口既不是根端口,也不是指定端口,SW3的F0/24的端口被阻塞。被阻塞的端口不能传输数据,SW2和SW3的之间的链路成为备份链路。
    二台交换机的选举就不列举了
    

    4.生成树算法的验证

    在交换机上使用 show spanning-tree查看生成树
    5.BPDU(Bridge Protocol Data Unit,桥协议数据单元)

    交换机之间根据网桥ID选择根网桥,根据根路径成本选择根端口和指定端口,那么交换机如何获知网络中的其他交换机的网桥ID呢?根路径成本又是怎么算出来的?
    交换机之间通过BPDU来交换网桥ID,端口ID,根路径成本等信息。交换机从端口发送出一个BPDU帧,使用该端口本身的MAC地址作为 源地址。交换机本身并不知道它的周围是否还有其他交换机存在。因此,BPDU帧利用了一个STP组播地址(01-80-c2-00-00-00)作为它的 目的地址,使之能到达相邻的、并处于STP侦听状态的交换机。
    交换机每隔2秒,向所有端口发送一次BPDU报文,以便交换机能能交换最新的拓扑信息,并迅速识别和检测其中的环路。
    5.1 BPDU的两种类型,一种是配置BPDU,用于生成树计算。第二种是拓扑变更通告BPDU,用于通告网络拓扑变化。

    5.2 BPDU中包含根网桥ID、根路径成本、发送网桥ID、端口ID、计时器等

    (1)根网桥ID:是由一个二字节优先级和一个六字节的网桥MAC地址组成,这个信息组合标明已经被选定为根网桥的设备标识。

    (2)根路径成本:说明了这个BPDU从根网桥传输了多远,成本是多少。这个字段的值用来决定哪些端口进行转发,哪些端口将被阻塞。

    (3)发送网桥ID,这是发送该BPDU的网桥信息。由网桥的优先级和网桥的MAC地址组成。

    (4)端口ID,端口ID是由一个字节的端口优先级和一个字节的端口编号组成。

    (5)计时器:计时器用以说明生成树用多长时间能完成它的每项功能。这些功能包括报文的老化时间、最大老化时间、访问时间和转发延迟。
    5.3 STP利用BPDU选择根网桥的过程
    根网桥的选择是一个持续、反复的过程,它每隔2秒出发一次,检查BPDU的根网桥ID是否发生了变化、网络中是否有网桥ID值更低的交换机假如进来。根网桥的选择具体如下:

    当一台交换机第一次启动时,假定自己是根网桥,在BPDU报文中的网桥ID字段填入自己的网桥ID,向外发送。
    


        图:5-1 交换机假定自己是根网桥,并且向其他交换机发送BPDU报文
    交换机比较接收到BPDU报文中的网桥ID和自己本身的网桥ID值,如果接收到BPDU中报文的网桥ID比自己小,则将自己保存的网桥ID 替换成更小的网桥ID值并向外发送。这时,交换机仍会继续监听其他交换机发送的BPDU报文,比自己保存的小,就替换掉。这样,    一段时间后,所有 的交换机都接收到BPDU报文后,就能选择出根网桥。
    


    



     图:5-2 交换机比较接收到BPDU中的网桥ID,用较小的替换掉保存的根网桥ID

    5.4 STP利用BPDU确定端口的根路径成本。

    根网桥发送一个根路径成本为0的BPDU报文,因为端口本身属于根网桥。
    


    当下一级交换机接收到BPDU报文后,就把BPDU所到达的那个端口的成本与根网桥的成本值相加。
    


    邻接的交换机以新的根路径成本值向外发送BPDU报文

    当邻接交换机的下一级交换机收到此BPDU报文时,把到这个端口的成本值与根路径成本值相加,依次类推。
    6.STP的收敛
    (1)生成树端口的状态
    生成树协议在交换机中自动运行,在交换机开机是可以看到交换机的指示灯为黄色,大约有30秒的时间不能转发数据,这是交换机在运行STP计算。直到交换机的STP计算完毕后,有些端口可以转发数据,有些端口阻塞,也就是网络收敛后,才能转发数据。并且当 网络拓扑发生变化时,交换机还要重新运行STP计算,形成新的网络拓扑.
    在STP计算过程中,交换机的每一个端口都必须一次经历好几种状态。
    


    如果一个端口允许转发数据,它首先从Disabled状态开始,经过几个被动状态,最后进入Active状态。    
    Disabled(禁用):由网络管理员设定或因网络故障使系统的端口处于Disabled状态,这个状态时比较特殊的状态,它并不是端口正常STP的一部分。
    Blocking(阻塞):在端口初始化后,一个端口既不能接收或者发送数据,也不能向它的地址表中添加MAC地址。这样的端口状态仅允许接收BPDU报文,以便能侦听其他交换机的信息。此外,选出制定端口后非指定的端口也将处于阻塞状态。
    Listening(侦听):如果交换机认为一个端口可选为根端口或者指定端口,那么,它就把该端口从Blocking状态变为Listening状态。    
    Listening状态,端口仍不能接收或者发送数据帧。但是可以接收、发送BPDU报文,以便让端口加入到STP拓扑过程中。由于端口可以通过发送、接收BPDU报文给其他交换机通告端口的信息。所以端口可能被允许成为根端口或者指定端口,如果该端口失去根端口或者指定端口的地位,那么它将返回到Blocking状态。
    Learning(学习):一个端口在Listening状态下经过一段时间后(称为转发延迟)将转为Learning状态。Learning状态可以接收、发送BPDU报文,也可以学习MAC地址,并将MAC地址添加到地址表中。
    Forwarding(转发):在Learning状态下再经历一定的转发延迟时间,该端口转入到Forwarding状态。此状态下,可以发送、接收数据帧,也可以学习MAC地址,还可以接收、发送BPDU报文。此状态下,端口才成为一个全功能的交换机端口。
    
    (2)生成树计时器
    STP在交换机互相发送BPDU报文时,尽力形成一个无环路的网路。BPDU报文总一台交换机传送到另外一台交换机时总要花费一定的时间,另外,当网络结构发生变化的消息传送到另一侧时,也要经历一定的转播延迟。由于存在这些延迟,而需要为交换机设置足够的时间来完成BPDU的转发和生成树的计算,因此,在交换机的内部设置了一些计时器来控制每个阶段的时间长度。
    STP利用三种计时的方法来确保网络的正确收敛:
    Hello时间:网桥发送配置BPDU报文的间隔时间。默认为2秒
    转发延迟:一个交换机的端口从Listening和Learning状态所花费的时间间隔。默认值各为15秒
    最大老化时间:交换机在丢弃BPDU报文之前储存它的最大时间。在执行STP时,每一个交换端口都保存着一份“最好的”BPDU备份。如果源BPDU报文失去了与交换机端口的联系,交换机则在最大老化时间之后通知网络拓扑已经发生了变化。最大老化时间默认为20秒
    侦听和学习都是生成树所实施的过渡状态,用来强迫端口等待来自其他交换机上所有的BPDU。典型的端口过渡如下:
     
    


   STP的计时器可以调整,如果不是经过认真考虑,建议不要轻易改变计数器时间的默认值。

附件:http://down.51cto.com/data/2358145
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  职场 stp 休闲