LAN&WAN 技术
1、交换机的端口类型存在哪几种,有什么特点?
在802.1Q中定义VLAN帧后,设备的有些接口可以识别VLAN帧,有些接口则
不能识别VLAN帧。根据对VLAN帧的识别情况,将接口分为4类,特点如下:
(1)Access接口:Access接口是交换机上用来连接用户主机的接口,它只能链接接入链路。仅仅允许唯一的VLAN ID通过本接口,这个VLAN ID与接口的
缺省VLAN ID相同(PVID),Access接口发往对端设备的以太网帧永远是不
带标签的帧。
(2)Trunk接口:Trunk接口是交换机上用来和其他交换机连接的接口,它只能连接干道链路,允许多个VLAN的帧(带Tag标记)通过。换而言之,除了与
pvid一致的vlan帧从trunk接口发送出去剥离tag外,其他帧全带tag。
(3)Hybrid接口:Hybrid接口是交换机上既可以连接用户主机,又可以连接其他交换机的接口。Hybrid接口既可以连接接入链路又可以连接干道链路。 Hybrid接口允许多个VLAN的帧通过,并可以在出接口方向将某些VLAN帧的
Tag剥离。换而言之,就是可以在接口进行配置,使得出这个接口的帧可以部分打tag,部分不打tag,可以做到灵活控制。
(4)QinQ接口:QinQ(802.1Q-in-802.1Q)接口是使用QinQ协议的接口。QinQ接口可以给帧加上双重Tag,即在原来Tag的基础上,给帧加上一个新的Tag,从而可以支持多达4094×4094个VLAN(不同的产品支持不同的规格),满足网络对VLAN数量的需求。外层的标签通常被称作公网Tag,用来存放公网的VLAN ID。内层标签通常被称作私网Tag,用来存放私网的VLAN ID。
2、交换机的不同端口类型对数据帧的处理方式?
为了提高处理效率,交换机内部的数据帧一律都带有VLAN Tag,以统一方
式处理。当一个数据帧进入交换机接口时,如果没有带VLAN Tag,且该接口上配置了PVID(Port Default VLAN ID),那么该数据帧就会被标记上接口的PVID。
各种类型接口对数据帧的处理方式如下图所示:
拓展问题1:什么情况下一定要用Hybrid端口?
当接口需要允许多个VLAN的数据帧不带TAG发出时,如:
(1)使用灵活QINQ时;
(2)使用基于MAC、子网、协议(type)、策略的划分方式VLAN时;
拓展问题2:Hybrid端口什么时候使用?什么时候打tag?什么时候不打tag?
使用场景:
(1)使用灵活QinQ时;
(2)使用其他方式(除基于端口)划分vlan时;
(3)实现不同vlan,并且相同网段进行互访时使用;(场景如下)
(1)什么时候打、什么时候不打tag,主要看端口的配置:
①数据帧进入交换机时,一定会打tag:
②如果收到数据帧不带标签,根据PVID打上,在根据端口的收发列表决定
是否接收;
(2)数据帧发出交换机时,根据端口的配置决定是否需要剥离tag;
如图所示,表示接口发出VLAN10的数据帧是tag发送,发出VLAN20的数据
帧时不带tag发送;(tagged/untagged的VLAN合并起来为该hybrid端口的允许收发列表)一般情况下对端为交换机时,一般都带tag发出,对端为主机,路由器等终端设备时是不带tag发出;
扩展问题3:ACCESS接口收到一个带tag数据帧如何处理?
比较tag的VLAN-id和接口的pvid是否一致,一致则接收,不一致则丢弃;
扩展问题4:交换机之间trunk接口PVID不一致带来的问题?
导致相同VLAN之间不能互访。
场景解释:
如上图:PC1能访问PC2,但是不能访问PC3。
分析: PC1发出的数据帧在SW1的g0/0/2接口打上了VLAN 5 的tag ,从
g0/0/1接口发出的时候剥离了tag,sw2的g0/0/1收到没有tag的数据帧后,打上接口相应的pvid (vlan 10),最终导致vlan 5 的数据帧发送到vlan 10 的终端上。
扩展问题5:交换机端口PVID作用?
每种端口类型的接口都存在PVID,默认都为VLAN 1;
当接口收到不带tag的数据帧,如果无法根据其他的方式划分VLAN(基于
MAC、子网等)时,则根据接口的PVID打上TAG;
当接口发出数据时,每种端口对PVID的处理方式不一致(详见各种类型接
口对数据帧的处理方式表)。
扩展问题6:实现QINQ的方式?
(1)基于端口QinQ:对进入二层QinQ接口的所有帧都加上相同的外层Tag。基
于接口的封装是指进入一个接口的所有流量全部封装一个相同的外层VLAN
Tag,封装方式不够灵活,用户业务区分不够细致,这种封装方式也称作QinQ
二层隧道。
(2)灵活QinQ:对进入二层QinQ接口的帧,可以根据不同的内层Tag而加上不
同的外层Tag,对于用户VLAN的划分更加细致。基于流的QinQ封装可以对
进入接口的数据首先进行流分类,然后对于不同的数据流选择是否封装外层
Tag、封装何种外层Tag,因此这种封装方式也称作二层灵活QinQ。(PS:
配置灵活QinQ时,接口类型一定要用hybrid,因为灵活QINQ的端口需要允
许多个VLAN剥离外层标签发送)
举场景时,可以使用如下案例:
扩展问题7:VLAN划分方式有哪些?
可以基于接口、MAC地址、子网、网络层协议、匹配策略方式来划分VLAN。 (详细请看华为产品文档VLAN划分方式差异表)
若入方向untagged报文同时匹配多种划分VLAN的方式,则优先级顺序从高
至低依次是:
(1)基于匹配策略划分VLAN->基于MAC地址划分VLAN或基于子网划分VLAN-> 基于协议划分VLAN->基于接口划分VLAN
(2)缺省情况下,优先基于MAC地址划分VLAN。可以通过命令改变基于MAC地址划分VLAN和基于子网划分VLAN的优先级,从而决定优先划分VLAN的方式。
(3)基于接口划分VLAN的优先级最低,但是最常用的VLAN划分方式。
STP
1.STP/RSTP 区别?
(1)端口角色: 通过端口角色的增补,简化了生成树协议的理解及部署保留STP的RP、DP端口,将STP中的blocking port(BP 阻塞端口)进行细分,分为backup por(t BP 备份端口)和 alternate port(AP 交替端口)。AP 以及 BP 的特点:
①AP: 阻塞状态,不转发 BPDU,存储 BPDU,做为 RP 的备份,当 RP
故障,AP 转化为 RP 时,无需等待 30S 的转发延迟,直接进入转发。
②BP:阻塞状态,不转发 BPDU,存储 BPDU,作为 DP 的备份,BP 在
一个网段中作为到根桥的备份路径,当 DP 故障之后,BP 需要等待老化时间才会成会 DP,成为 DP 之后需要等待转发延迟时间才进入转发。
从配置 BPDU 报文发送角度来看:
①Alternate 端口就是由于学习到其它网桥发送的配置 BPDU 报文而阻塞的端口。
②Backup 端口就是由于学习到自己发送的配置 BPDU 报文而阻塞的端口
(2)端口状态
RSTP 的状态规范把原来的 5 种状态缩减为 3 种。
根据端口是否转发用户流量和学习 MAC 地址来划分:
①如果不转发用户流量也不学习 MAC 地址,那么端口状态就是Discarding 状态。
②如果不转发用户流量但是学习 MAC 地址,那么端口状态就是Learning 状态。
③ 如 果 既 转 发 用 户 流 量 又 学 习 MAC 地 址 , 那 么 端 口 状 态 就 是
Forwarding 状态。
说明:端口状态和端口角色是没有必然联系的,上表显示了各种端口角色能够具有的端口状态。
(3)BPDU 不同
①类型不同:只存在一种 BPDU,RSTP BPDU,相当于 STP 配置 BPDU。
②配置 BPDU 格式的改变,充分利用了 STP 协议报文中的 Flag 字段。
Flags 字段,充分利用了原来保留的中间 6 位,如图所示:
③配置 BPDU 的处理发生变化 :
a)拓扑稳定后,配置 BPDU 报文的发送方式:
STP 中其他非根桥设备在收到上游设备发送过来的配置 BPDU 后,才会触发
发出配置 BPDU,此方式使得 STP 协议计算复杂且缓慢。RSTP 对此进行了
改进,即在拓扑稳定后,无论非根桥设备是否接收到根桥传来的配置 BPDU
25报文,非根桥设备仍然按照 Hello Timer 规定的时间间隔发送配置 BPDU,
该行为完全由每台设备自主进行。
b)更短的 BPDU 超时计时
如果一个端口在超时时间(超时时间=Hello Time × 3 × Timer Factor)
内没有收到上游设备发送过来的配置 BPDU,那么该设备认为与此邻居之间
的协商失败。而不像 STP 那样需要先等待一个 Max Age。
c)对次优 BPDU 的处理方式
当一个端口收到上游的指定桥发来的 RST BPDU 报文时,该端口会将自身存
储的 RST BPDU 与收到的 RST BPDU 进行比较。如果该端口存储的 RST BPDU 的优先级高于收到的 RST BPDU,那么该端口会直接丢弃收到的 RST BPDU,立即回应自身存储的 RST BPDU。当上游设备收到下游设备回应的 RST BPDU 后,上游设备会根据收到的 RST BPDU 报文中相应的字段立即更新自己存储的 RST BPDU。由此,RSTP 处理次等 BPDU 报文不再依赖于任何定时器通过超时解决拓扑收敛,从而加快了拓扑收敛。
(4)加速收敛
STP 在任何的情况端口从阻塞到转发最少需要 30S。RSTP 在以下的场景下,端口从阻塞到转发不需要转发延迟:
①根端口快速切换机制
如果网络中一个根端口失效,那么网络中最优的 Alternate 端口将成为根端
口,直接进入 Forwarding 状态,无需任何转发延迟。
②边缘端口机制
边缘端口不参与 RSTP 运算,可以由 Disable 直接转到 Forwarding 状态,且
不经历时延。
③Proposal/Agreement 机制
当一个端口被选举成为指定端口之后,在 STP 中,该端口至少要等待一个
Forward Delay(Learning)时间才会迁移到 Forwarding 状态。而在 RSTP 中,此端口会先进入 Discarding 状态,再通过 Proposal/Agreement 机制快速进入 Forwarding 状态。这种机制必须在点到点全双工链路上使用。
(5)拓扑变化处理的方式不同
在标准 STP 中检测拓扑是否发生变化的标准为有端口 down/Up,而在 RSTP 中检测拓扑是否发生变化只有一个标准:一个非边缘端口迁移到 Forwarding 状态。标准 STP 一旦检测到拓扑发生变化,非根桥交换机先触发 TCN 给到根桥交换机,在由根桥交换机触发 TC,此机制过于繁琐并且效率低下。而 RSTP 一旦检测到拓扑发生变化,将进行如下处理:
①为本交换设备的所有非边缘指定端口启动一个 TC While Timer,该计时器值是26Hello Time 的两倍(4s)。在这个时间内,清空状态从 Discarding 到Forwarding 的端口上学习到的 MAC 地址。
②同时,由这些端口向外发送 RST BPDU,其中 TC 置位。一旦 TC While Timer超时,则停止发送 RST BPDU。
③其他交换设备接收到 RST BPDU 后,清空所有端口学习到 MAC 地址,除了收到 RST BPDU 的端口。同时也为自己所有的非边缘指定端口和根端口启动 TC While Timer,重复上述过程。
(6)保护功能RSTP 提供的保护功能有:
①BPDU 保护
使用场景:正常情况下,边缘端口不会收到 RST BPDU。如果有人伪造 RST
BPDU 恶意攻击交换设备,当边缘端口接收到 RST BPDU 时,交换设备会自
动将边缘端口设置为非边缘端口,并重新进行生成树计算,从而引起网络震
荡。
保护动作:交换设备上启动了 BPDU 保护功能后,如果边缘端口收到 RST
BPDU,边缘端口将被 error-down,但是边缘端口属性不变,同时通知网管
系统。
说明:BPDU 保护功能在系统视图配置,但是只对边缘端口生效。
②根保护
使用场景:由于维护人员的错误配置或网络中的恶意攻击,网络中合法根桥
有可能会收到优先级更高的 RST BPDU,使得合法根桥失去根地位,从而引
起网络拓扑结构的错误变动。这种不合法的拓扑变化,会导致原来应该通过
高速链路的流量被牵引到低速链路上,造成网络拥塞。
保护动作:对于启用 Root 保护功能的指定端口,其端口角色只能保持为指
定端口。一旦启用 Root 保护功能的指定端口收到优先级更高的 RST BPDU
时,端口状态将进入 Discarding 状态,不再转发报文。在经过一段时间(通
常为两倍的 Forward Delay),如果端口一直没有再收到优先级较高的 RST
BPDU,端口会自动恢复到正常的 Forwarding 状态。
说明:Root 保护功能只能在指定端口上配置生效。
③环路保护
使用场景:在运行 RSTP 协议的网络中,根端口和其他阻塞端口状态是依靠
不断接收来自上游交换设备的 RST BPDU 维持。当由于链路拥塞或者单向链
路故障导致这些端口收不到来自上游交换设备的 RST BPDU 时,此时交换设
备会重新选择根端口。原先的根端口会转变为指定端口,而原先的阻塞端口
会迁移到转发状态,从而造成交换网络中可能产生环路。
当 BP2-CP1 之间的链路发生拥塞时,DeviceC 由于根端口 CP1 在超时时间内收不到来自上游设备的 BPDU 报文,Alternate 端口 CP2 放开转
变成了根端口,根端口 CP1 转变成指定端口,从而形成了环路。
保护动作:在启动了环路保护功能后,如果根端口或 Alternate 端口长时间
收不到来自上游设备的 BPDU 报 文时,则向网管发出通知信息(此时根端
口会进入 Discarding 状态,角色切换为指定端口),而 Alternate 端口则会
一直保持在阻塞状态(角色也会切换为指定端口),不转发报文,从而不会
在网络中形成环路。直到链路不再拥塞或单向链路故障恢复,端口重新收到
BPDU 报文进行协商,并恢复到链路拥塞或者单向链路故障前的角色和状态。
说明:环路保护功能只能在根端口或 Alternate 端口(存储 BPDU 来维护端
口角色)上配置生效。
○4 防 TC-BPDU 攻击
使用场景:交换设备在接收到 TC BPDU 报文后,会执行 MAC 地址表项和 ARP表项的删除操作。如果有人伪造 TC BPDU 报文恶意攻击交换设备时,交换设备短时间内会收到很多 TC BPDU 报文,频繁的删除操作会给设备造成很大的负担,给网络的稳定带来很大隐患。
保护动作:启用防 TC-BPDU 报文攻击功能后,在单位时间内,交换设备处
理 TC BPDU 报文的次数可配置。如果在单位时间内,交换设备在收到 TC
BPDU 报文数量大于配置的阈值,那么设备只会处理阈值指定的次数。对于
其他超出阈值的 TC BPDU 报文,定时器到期后设备只对其统一处理一次。这
样可以避免频繁的删除 MAC 地址表项和 ARP 表项,从而达到保护设备的目
的。
扩展问题1:STP选举四要素?
根桥ID(Root ID=根桥的优先级+mac地址)
2.根路径开销(RPC:根据接口的带宽计算)
3.发送者桥ID(Bridge ID=发送者交换机的优先级+mac地址)
4.发送者端口ID(Port ID=发送端口的优先级+端口编号)
若以上四个比较不出来:
5.接收端口的ID (接收端口优先级+端口编号)
扩展问题2:STP的各位状态是如何处理BPDU?
STP端口状态:
Forwarding:若是RP端口则接收BPDU,若是DP端口则发送。
Learning:若是RP端口则接收BPDU,若是DP端口则发送。
Listening:若是RP端口则接收BPDU,若是DP端口则发送。
Blocking:端口仅接收并处理BPDU。
Disabled:端口不处理BPDU报文。
RSTP/MSTP端口状态:
扩展问题3:华为交换机如果接口关闭了STP,收到BPDU会如何处理?
BPDU报文发送的目的地址为01-80-C2-00-00-00,华为交换机如果接口关闭了STP,收到目的MAC地址为:01-80-C2-00-00-00组播数据帧会接收不处理。
说明:开启了STP的交换机收到01-80-C2-00-00-00组播数据帧会进行STP的计算不会泛洪,计算完成之后(修改bpdu的发送者桥ID以及相应的根路径开销),再从DP端口发出。
扩展问题4:边缘端口的端口角色是什么角色?
DP端口,因为该端口没有收到更优的BPDU,当一台运行STP的交换机刚启动,端口的角色为DP端口,只有收到比该端口优的BPDU才会迁移成其他的角色,边缘端口一般用于连接终端设备,不会收到BPDU,即端口角色为DP端口。
扩展问题5:如果一个端口收到比自己还要差的BPDU会怎么处理?
华为将这种BPDU称为次优BPDU,华为交换机收到次优BPDU会丢弃该BPDU,并发送自己接口的最优的BPDU(stp与rstp处理行为一致)。
如果标准的STP,收到次优BPDU会直接丢弃。
扩展问题6:STP中为什么要设计转发延迟时间?
STP如果没有forwarding delay可能会带来的临时环路问题:
如下图,初始状态下SWA为根交换机,所有的交换机端口中,只有SWD的E0/2端口为Alternate Port,处于不转发状态。假设修改SWC的优先级,使SWC成为新的根交换机,SWD的E0/2接口成为新的根端口,进入转发状态,E0/1接口成为新的指定端口,处于转发状态,SWB的E0/2应当成为新的Alternate Port,进入不转发状态。如果在SWB的E0/2在从转发状态进入不转发状态之前,SWD的E0/2就从不转发状态进入转发状态,则网络中会出现临时环路。
解决临时环路的方法是:在一个端口从不转发状态进入转发状态之前(例如SWD的E0/2端口),需要等待一个足够长的时间,以使需要进入不转发状态的端口有足够时间完成生成树计算,并进入不转发状态说明:RSTP采用同步机制,避免临时环路问题。
扩展问题7:运行STP的交换机是怎么感知拓扑发送变化的,为什么要发送TC
BPDU,不发会怎么样?
标准的STP中当一个接口DOWN/UP则认为拓扑发生。拓扑发生变化之后,原有的MAC地址表是不能正确引导数据转发的,如果不发TCBPDU刷新MAC地址表,会导致数据流量无法正常转发,要等300S的MAC地址表老化时间后,才会刷新MAC地址表。
扩展问题8:什么情况下会触发P/A协商?
点到点全双工链路。
扩展问题9:P/A协商过程?
新链路连接成功后,P/A机制协商过程如下:
<1>p0和p1两个端口马上都先成为指定端口,发送RST BPDU 。
<2>S2的p1口收到更优的RST BPDU,意识到自己不是指定端口,S2停止发送RSTBPDU 。
<3>S1的p0进入Discarding状态,发送的RST BPDU中把proposal置1 。
<4>S2收到根桥发送来的携带proposal置位的BPDU时,开始将自己的所有端口入sync变量置位(RP阻塞其他非边缘端口,自己转为forwarding状态)。
<5>p2已经阻塞,状态不变;p4是边缘端口,不参与运算;所以只需要阻塞非边缘指定端口p3 。
<6>除了边缘端口的其他端口都进入Discarding状态之后,各端口的synced变量置位。当所有的端口都设置为synced后,根端口p1的synced也置位,便向S1返回Agreement位置位的RST BPDU并进入forwarding状态。该RST BPDU携带和刚才根桥发过来的BPDU一样的信息,除了Agreement位置位(Proposal位清零) 。
<7>当S1判断出这是对刚刚发出的Proposal的回应,端口p0马上进入Fowarding状态以上P/A过程可以向下游继续传递 。
说明:P/A机制要求两台交换设备之间链路必须是点对点的全双工模式。一旦P/A协商不成功,指定端口的选择就需要等待两个Forward Delay,协商过程与STP一样。
扩展问题10:rstp比stp收敛快,快在哪里?
1、P/A协商机制
2、AP端口备份机制
3、边缘端口
扩展问题11:为什么P/A机制的协商一定是点到点的全双工上才能发生?
不是点到点可能会出现临时环路并且P/A协商机制会复杂。
A and SW link 未连接时,A,B,D,F间是forwarding,当A 和SW 连上时,A 和C P/A协商后,都forwarding,A,B,D,F 间临时环路。当B sync后,会回Agreement给A后,不影响A C的结果,环路消失。
通过自动协商,得知端口是不是点到点全双工(命令: stp point-to-point {auto |force-false | force-true })。
可以强制半双工链路启用802.1w的场景如下: