以下是华为数通面试考试的一道真题,原题如下;

请举例说明 stp 的 edge port 的作用,用在什么场景,并且使用 edge port 会碰到什么问题,怎么解决和防止?

提到边缘端口,我们是在NP课程的交换部分第一次接触,在RSTP中深入讲解了边缘端口的作用,作用如下;

<1>配置边缘端口的端口在UP后即可直接将端口的状态转变为forwarding状态, 不需要经历转发延时。
<2>网络发生变化,边缘端口所在交换机上的根端口发生变化时,边缘端口可以继续保持forwarding状态,持续为连接到边缘端口的设备转发流量。
<3>边缘端口从down转变为forwarding状态不算拓扑变化,不会触发产生TC报文;可以避免MAC表刷新。

以下是之前的考生跟考官的对话,可以脑补一下考试的现场画面;

我说完作用后,然后问考官有没有什么问题(如果他没有问题,我就接着说应用场景),但是考官就开始问了:“你刚才说边缘端口转为forwarding不算拓扑变化,那要是down了呢,算拓扑变化吗?”我回答“不算。”考官说“你确定吗?”我当时犹豫了一会儿说:“确定,因为如果边缘端口down了,交换机就直接在它的MAC地址表项里删除这个条目了,不会向其他交换机发TC-BPDU。”考官又问:“如果是普通端口,在down了之后,算拓扑变化吗?”我回答:“不算。”然后考官停顿了一会儿,问“你刚才说根端口发生变化时,边缘端口不会被同步,在什么情况下根端口会发生变化呢?”我说:“当一个非边缘端口DOWN的时候,比如说一个交换机连接根交换机的端口DOWN了,那么它的根端口就发生变化了。”考官好像没太理解,说“你能不能画个图解释一下,抛去边缘端口不谈,就说普通端口down了,交换机怎么处理?”我当时已经有点蒙了,觉得这道题好像已经跟边缘端口没什么关系了。我等了几秒后,就给他在电脑屏幕上画了一个图,解释了一下,当交换机检测到拓扑改变的时候,STP和RSTP是怎么做的,其中提到了TC-BPDU。考官又开始追问了“你说的这个TC-BPDU和普通的BPDU有什么区别?”我回答:“TC-BPDU的flag字段中的TC位置位。”考官停顿了几秒,说没有问题了,然后问另一个考官“X老师(具体姓什么我忘了),你还有什么问题么?”那个考官说“没有问题了。”然后考官说“你可以继续下一道了。”

这里注意了,什么是拓扑变化,拓扑变化一定是一个非边缘端口从不转发状态(down或者是discarding状态)转变为转发状态(forwarding)状态才算拓扑变化,是拓扑变化就会触发TC。一个非边缘端口从转发状态变为不转发状态不算拓扑变化,不会引发TC。

那TC的作用什么呢?
TC的作用是当拓扑发生变化候能够起到快速老化或者删除(华为实际为删除)MAC的效果,以此来防止由于拓扑已经发生变化,mac地址存在导致交换机误转数据这样的问题。

但是TC被华为交换机收到后会删除那些接口的MAC地址呢?是删除全部吗?
不是,除了收到TC BPDU的端口以外的其他端口(除边缘端口以外)MAC表项全部清空。如下图所示;

华为数通HCIE面试题目解密系列之RSTP边缘端口_第1张图片

边缘端口虽然很好,如果使用不当就会出现以下问题;

<1>临时环路的问题。(下图中HUB可以是无STP运行的switch) 初始时当Edge Port 在没有收到BPDU,且都处于forwarding state时,loop出现。既然是临时环路,这里就要问题大家了,临时环路是多久?欢迎大家评论提交你的答案啊。

华为数通HCIE面试题目解密系列之RSTP边缘端口_第2张图片
 
 
 
<2>当边缘端口收到 BPDU 时,就丧失了边缘端口的特性,成为普通的 STP 端口,并重新进行生成树计算,从而引起网络震荡。

如果解决呢,需要配置BPDU保护:
交换机上启用了BPDU 保护功能后,如果边缘端口收到STP BPDU,边缘端口将被shutdown,但是边缘端口属性不变,同时通知网管系统. 被shutdown的边缘端口只能由网络管理员手动恢复。 如果用户需要被shutdown的端口自动恢复,可通过配置使能端口自动恢复功能,并可设置延迟时间。被shutdown 的端口经过延迟时间后能够自动恢复。边缘端口状态恢复后,如果再次收到RST BPDU,该边缘端口将再次被shutdown。