网桥生成树算法
Ⅰ 计算机网络 STP
STP (Spanning Tree Protocol)是生成树协议的英文缩写。
生成树协议 运行生成树算法(STA). 生成树 算法很复杂,但是其过程可以归纳为以下3个步骤:
(1)选择根网桥
(2)选择根端口
(3)选择指定端口
First:BID(Bridge ID,网桥ID),因为根交换机的选举是基于BID的,BID由三部分组成——优先级、发送交换机的MAC地址、Extended System ID(扩展系统ID,可选项)
BID = 网桥ID=网桥优先级+网桥MAC地址组成的
First:(PID)=端口ID等于优先级加上端口编号,默认端口优先级是128。
P:每个非根交换机有且只有一个根端口。
选举根端口依照下面的顺序:
首先,最低花费的端口将成为根端口;在花费相同的情况下比较发送者的BID,BID小的将成为根端口。--->
即:到根网桥最低的根路径成本→发送BPDU的网桥ID(BID)较小→端口ID(PID)较小的。端口ID由端口优先级与端口编号组成。
请看下面这张拓扑图:
特殊的: 如果 发送者的BID相同,则比较发送者的PID:
关于选择指定端口:每个网段上选择一个指定端口。
P:每个网段有且只有一个指派端口
选择顺序为:根路径成本较低(花费较低)→发送BPDU的网桥ID值较小→本端口的PID值较小。
根网桥的接口皆为指定端口,因为根网桥上端口的根路径成本为0 。
第一种情况:假设路径花费不同的情况下 :
既不是根端口也不是指派端口的端口将被阻塞。看上图
Ⅱ 计算机网络关于STP的知识能详细介绍一下吗 (根桥选举,指派端口,根端口,非指派端口)
生成树协议运行生成树算法(STA).生成树算法很复杂,但是其过程可以归纳为以下3个步骤:
(1)选择根网桥
(2)选择根端口
(3)选择指定端口
关于选择根网桥:选择根网桥的依据是网桥ID,网桥ID由网桥优先级和网桥MAC地址组成。网桥的默认优先级是32768.使用show
mac-address-table时,显示在最前面的MAC地址就是计算时所使用的MAC地址。网桥ID值小的为根网桥,当优先级相同时,MAC地址小的为根网桥。
关于选择根端口:每个非根交换机选择一个根端口。选择顺序为:到根网桥最低的根路径成本→发送BPDU的网桥ID较小→端口ID较小的。端口ID由端口优先级与端口编号组成。默认的端口优先级为128。
关于选择指定端口:每个网段上选择一个指定端口。选择顺序为:根路径成本较低→发送BPDU的交换机的网桥ID值较小→本端口的ID值较小。另外,根网桥的接口皆为指定端口,因为根网桥上端口的根路径成本为0
Ⅲ 怎样用Java实现网桥自学习算法
网桥的自学习算法原理
珞辰
网桥:在数据链路层可以用网桥设备来扩展以太网。网桥工作在数据链路层,它根据MAC 帧的目的地址对收到的帧进行存储转发和过滤。当网桥收到一个数据帧时,并不是向所有的接口转发这个数据帧,而是会进行有条件的转发(网桥会丢弃CRC检验有差错的帧以及帧长过短和过长的无效帧)再根据此帧的目的MAC地址,然后查找转发表(网桥会自己维护转发表,转发表中每一条目都记录了到达某个目的MAC地址的数据帧可以从那个接口进行转发)根据转发表中的条目逐步匹配看该从那个接口转发或是否需要丢弃该数据帧。最简单的网桥只有两个接口(这里所讲的网桥都是两个接口的网桥)。
使用网桥设备的优点:
1,过滤通信量,增大吞吐量(网桥可以隔离碰撞域提高网络的吞吐量)
2,扩大了物理网络的范围(扩展以太网)
3,提供了可靠性(只影响单个网段)
4,可以互连不同的物理层,不同MAC子层和不同速率
使用网桥设备的缺点:
1,使用CMSA/CD算法增加了时延
2,不能进行流量控制,缓存存储空间可能会发生溢出
3,会产生广播风暴
网桥自学习和转发帧的一般步骤:
1,网桥收到一帧后先进行自学习。查找转发表中与收到数据帧的源地址有无匹配的项目。如果没有,就在转发表中增加一个项目(记录数据帧的源地址,进入网桥的接口和时间)。如果有,则把原来的项目进行更新。
2,转发帧。查找转发表中与收到数据帧的目的地址有无相匹配的项目。如果没有,则通过其他的接口(但进入网桥的接口除外)进行转发。如果有,则按转发表中给出的接口进行转发。但应当注意,若转发表中给出的接口就是该帧进入网桥的接口,则应该丢弃这个数据帧(因为这种情况不需要经过网桥进行转发)。
3,使用生成树算法,即互连载一起的网桥在进行彼此通信后,就能找出原来的网络拓扑的一个子集。在这个子集里,整个连通的网络中不存在回路,即在任何两个站点之间只有一条路径。
for example: 如图所示,6个站点通过透明网桥B1和B2连接到一个扩展的局域网上。初始时网桥B1和B2的转发表都为空。假设需要传输的帧序列如下:H2传输给H1;H5传输给H4;H3传输给H5;H1传输给H2;H6传输给H5。请给出这些帧传输完后网桥B1和网桥B2的转发表。假设转发表表项的格式为:[ 站点, 端口 ]。
发送的帧B1转发表 B1的处理 B2转发表 B2的处理
H2--->H1 H2,1 登记,转发 H2,1 登记,转发
H5--->H4 H5,2 登记,转发 H5,2 登记,转发
H3--->H5 H3,2 登记,丢弃 H3,1 登记,转发
H1--->H2 H1,1 登记,丢弃
H6--->H5 H6,2 登记,丢弃
解释说明:
1,H2主机向H1主机发送帧。连接在同一个局域网上的主机H1和网桥B1都能收到H2主机发送的数据帧。网桥B1收到这个数据帧后,先按源地址H2查找转发表。这时因为网桥B1的转发表为空,于是就把地址H2和收到此帧的接口1 写入到转发表中。这就表示,以后若收到要发给H2的帧,应当从网桥B1的这个接口1 转发出去。接着再按目的地址H1查找转发表。转发表中没有H1的地址,于是通过除收到此帧的接口1 以外的所有接口转发此帧。网桥B2 从其接口1 收到这个转发过来的帧。网桥B2按同样的方式处理收到的帧。网桥B2的转发表中没有H2的地址,因此在网桥B2的转发表中写入地址H2 和接口1 。网桥B2的转发表中没有H1的地址,因此网桥B2会通过除接收此帧的接口1 以外的所有接口转发这个帧。(H1本来就可以直接收到H2发送的数据帧,为什么还要让网桥B1和B2盲目地转发这个帧呢??? 答案是:这两个网桥当时并不知道网络的拓扑结构,因此要通过自学习过程才能逐步弄清所连接的网络拓扑,建立起自己的转发表)
2,H3主机向H5主机发送数据帧。首先看网桥B1,网桥B1从其接口2收到这个数据帧。网桥B1的转发表中没有H3,因此在B1的转发表中写入地址H3 和接口2。再查找目的地址H5。现在网桥B1的转发表中可以查询到H5,其转发的接口是2,和这个帧进入网桥B1的接口一样。于是网桥B1知道,不用自己转发这个帧,H5也能收到H3发送的帧。于是网桥B1把这个帧丢弃,不再继续转发了。再看网桥B2,网桥B2从其借口1 收到这个帧。网桥B2的转发表中没有H3,因此在B2的转发表中写入地址H3 和接口 1。再查找目的地址H5。现在网桥B2的转发表中可以查询到H5,其转发的接口是 2 ,于是网桥B2直接将这个帧从接口2 转发出去。
3,H6主机向H5主机发送数据帧。首先看网桥B2,网桥B2从其接口2 收到这个数据帧。网桥B2的转发表中没有H6,因此在B2的转发表中写入地址H6 和接口 2。再查找目的地址H5。现在网桥B2的转发表中可以查询到H5,其转发的接口是2,和这个帧进入网桥B2的接口一样。于是网桥B2知道,不用自己转发这个帧,H5也能收到H6发送的帧。于是网桥B2把这个帧丢弃,不再继续转发了。再看网桥B1,其根本不会收到H6主机向H5发送的数据帧,所以不会有任何其他操作。
PS:在网桥的转发表中写入的信息除了地址和接口外,还有帧进入该网桥的时间。网桥中的接口管理软件周期性的扫描转发表中的项目。只要在一定时间以前登记的都要删除。这样就使得网桥中的转发表能反映当前网络的最新拓扑状态。还有一点网桥是一种工作在数据链路层的网络设备,它能对于接收到的数据帧进行有条件的转发并且能隔离冲突域。