【计算机网络】复杂的STP协议做了什么事情?

聪明的交换机也有学不会的时候

从上一个笔记 【计算机网络】数据链路层究竟解决了什么问题?,我们已经知道,交换机集线器 要聪明很多,可以学习连接着自己的主机在那个端口上。即是 只要主机一开口说话,交换机就知道主机的 MAC 地址与其所在的端口

我们只看到了一台交换机的连接情况,确实好像没啥问题,但是一旦交换机数量多了,就有可能产生学不会的情况。

在图片中的情况下,交换机A交换机B 同时连接着 局域网LAN1局域网LAN2。看起来好像貌似提到了高可用性,但却不幸的出现了环路。假如 机器1 要访问 机器2。一开始时,机器1 并不知道 机器2 的MAC地址,所以它需要发起一个 ARP 广播。广播到达 机器2,然后 机器2 就会把MAC地址返回来,看起来并没有问题。 

但是,交换机A 还是会收到来自 机器1 的广播包机器1 并不知道 机器2 在那个局域网上,于是 机器1 将广播包放到 局域网LAN2,而在 局域网LAN2 广播的时候,交换机B 又将广播包再次广播到 局域网LAN1。而此时,交换机A 还是不知道 B 在哪一个局域网中,于是再次将 机器1 的广播包广播到 局域网LAN2。于是绕呀绕呀绕,形成了一个永无止境的圈。

有人可能会问,当两台交换机学会网络拓扑结构之后,是不是就可以了?(也就是 交换机A 知道 机器2 的位置在 局域网LAN1,就不需要再把广播包放到 局域网LAN2 中了)

可惜交换机是学不会的,我们来看看原因。

  1. 交换机A左端收到了来自 机器1 的广播包,于是判断 机器1 在局域网1 中,并且广播到 局域网LAN2
  2. 然后,交换机B右端也收到了来自 机器1 的广播包,于是判断 机器1 在 局域网LAN2 中,并且将广播包广播到 局域网LAN1。于是 交换机A 所学的会被刷新掉。
  3. 接着,交换机A 再次收到广播包,又再次认为 机器1局域网LAN1 中。
  4. 如此反复,导致 交换机A交换机B 一直无法判断到底 机器1 在哪一个局域网中。

这就称之为 环路问题

分析上面的过程我们已经知道,回路的出现会导致广播包永无止境地在两个局域网中来回转发,增加了网络负载压力。也就是前面笔记中所说的(【计算机网络】数据链路层究竟解决了什么问题?),马路上越来越堵,导致最后可能所有的车都开不出去。

STP协议解决环路问题

在数据结构中,有环的我们称为图,当图中的环打破掉,就生成了树,这个算法称为 最小生成树(Spanning Tree Protocol,STP) 算法。STP协议比较复杂,我们先来看看它的概念。

  • Root Bridge,也就是 根交换机。可以理解为终极大BOSS,或者是掌门(统一天下的感觉)。
  • Designated Bridge,就是 指定交换机。可以理解为一个小弟。在树中,这就是树的一个树枝。(而不是叶子节点,叶子节点一般都是主机)
  • Bridge Protocol Data Units(BPDU),网络协议数据单元。可以比喻为“相互比较 实力 ”的网络协议。BPDU只有最大的BOSS能发,其他的小弟们只能转发上级的命令。
  • Priority Vector,优先级向量。可以理解为每个交换机的 实力。能力越大的交换机越能掌管更多的交换机,他就会离 根交换机 越近。实力 的考核标准是什么呢?[Root Bridge ID, Root Path Cost, Bridge ID, Port ID]。先看 Root Bridge ID。拿出老大的 ID 看看,发现掌门一样,那就是师兄弟;再比 Root Path Cost,也即我距离我的老大的距离,也就是拿和掌门关系比,看同一个门派内谁和老大关系铁;最后比 Bridge ID,比我自己的 ID,拿自己的本事比。

工作过程是怎么样的呢?

最开始的时候,网络上一片混乱,谁都认为自己是最大的BOSS,谁也不愿意做小弟。每个网桥都被管理员分配了一个 ID,当然管理员知道哪一些交换机更贵,于是对应着更高的等级。边上的数字表示着他们之间的距离。这时候节点之间还没有出现 隶属关系。如下图:

下一步,他们每个人都认为自己是BOSS,谁都不服谁。于是相互发送 BPDU 来比试比试,一比试就出现了输赢,输了的交换机就成了赢家的小跟班(小跟班没有发自己的BPDU的权力了,只能转发大哥的BPDU),这就有了第一个 隶属关系

1和7碰上了,7的优先级低,所以7做了1的小弟。类推,形成了 n 个二人组(1-7,2-8,5-6,3-4 等)。接下来就会产生四种情况:

  • A的大哥遇上B的大哥

1和5相遇了,他们在上一轮中分别都当上了二人组的大哥,都有一个小弟。当然,1的优先级高于5,最总1胜出,5就会带着自己的小弟投靠1。

  •  A的小弟甲遇上了A的小弟乙

同门相遇,可以是BOSS与自己的小弟相遇,说明此时碰到“环”了。这个小弟已经通过别人拜到你门下,结果你还不认识,就PK了一把。结果有可能BOSS发现小弟的实力还不错,不应该排这么低,于是就把它招到门下亲自带。相当于小弟升职了。

例如图中,1和6相遇了,但是6原本就是通过5成为了1的小弟,只不过6的上司是5,5的上司是1。1发现6的距离只有2,而通过5到6的距离需要(4+1=5),那6直接汇报给我吧,于是6不再需要通过5汇报给1,自己汇报即可。

同门相遇还可以是小弟相遇。这个时候就要比较谁和掌门的关系近,当然近的当大哥。刚才 5 和 6 同时汇报给 1 了,后来 5 和 6 再比较功夫的时候发现,5 你直接汇报给 1 距离是 4,如果 5 汇报给 6 再汇报给 1,距离只有 2+1=3,所以 5 干脆拜 6 为上司。

  • A的小弟遇上B的大哥

小弟拿本帮掌门和这个掌门比较,赢了,这个掌门拜入门来。输了,会拜入新掌门,并且逐渐拉拢和自己连接的兄弟,一起弃暗投明。例如,2 和 7 相遇,虽然 7 是小弟,2 是掌门。就个人武功而言,2 比 7 强,但是 7 的掌门是 1,比 2 牛,所以没办法,2 要拜入 7 的门派,并且连同自己的小弟都一起拜入。

  • A的小弟遇上B的小弟

各自拿掌门比较,输了的拜入赢的门派,并且逐渐将与自己连接的兄弟弃暗投明。例如,5 和 4 相遇。虽然 4 的武功好于 5,但是 5 的掌门是 1,比 4 牛,于是 4 拜入 5 的门派。后来当 3 和 4 相遇的时候,3 发现 4 已经叛变了,4 说我现在老大是 1,比你牛,要不你也来吧,于是 3 也拜入 1。

最终,一棵树就形成了,即便一开始出现了环,最终通过STP协议生成了一棵树

STP协议的缺点:

  • 当一个大BOSS挂掉了,又需要重新选一次,使用的周期较长。
  • 对于跨地域甚至跨国组织的网络支持,计算量很大,比较难完成。

学习笔记,参考《趣谈网络协议》。

发布了104 篇原创文章 · 获赞 27 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_41960890/article/details/105003654