Loading

Network系列:交换基础(三)

交换基础

1. 园区网典型架构

image-20220901104149048

以太网二层交换机特性:转发数据的端口都是以太网口,并且只能够针对数据的二层头部 (以太网数据帧头) 中的MAC地址进行寻址并转发数据。

以太网二层交换机处于图中的接入层


2. 交换机的工作原理

image-20220901104712130

二层交换设备通过学习以太网数据帧的源MAC地址来维护MAC地址与接口的对应关系(保存MAC与接口对应关系的表称为MAC地址表,可使用display mac-address命令查看),通过其目的MAC地址来查找MAC地址表决定向哪个接口转发。


2.1 数据帧的处理行为

image-20220901105057837

交换机对帧的处理行为一共有三种:泛洪(Flooding),转发(Forwarding),丢弃(Discarding)。

泛洪:交换机把从某一端口进来的帧通过所有其它的端口转发出去(注意,“所有其它的端口”是指除了这个帧进入交换机的那个端口以外的所有端口)。

转发:交换机把从某一端口进来的帧通过另一个端口转发出去(注意,“另一个端口”不能是这个帧进入交换机的那个端口)。

丢弃:交换机把从某一端口进来的帧直接丢弃。


2.1.1 泛洪

image-20220901105857443

场景一:主机1想要访问主机2,发送单播数据帧,交换机收到后,若MAC地址表中查不到对应的表项,则会泛洪该数据帧。

场景二:主机1想要访问主机2,但不知道对应的MAC地址,则会发送ARP请求报文,该报文为广播数据帧,交换机收到后,则会泛洪该数据帧。


2.1.2 转发

image-20220901110000019

主机1想要访问主机2,发送单播数据帧,交换机收到后,在MAC地址表中查到了对应的表项,则会点对点转发该数据帧。


2.1.3 丢弃

image-20220901110050601

主机1想要访问主机2,发送单播数据帧,交换机1收到后,若MAC地址表中查不到对应的表项,则会泛洪该数据帧。交换机2收到该数据帧后,发现目的MAC地址对应的端口就是接收数据帧的端口,则会丢弃该数据帧。


2.2 交换机的MAC学习过程

image-20220901111041157

初始状态下,交换机并不知道所连接主机的MAC地址,所以MAC地址表为空。


image-20220901111108389

主机1想要发送数据给主机2(假设已知对端的IP地址和MAC地址),会封装数据帧,包含自己的源IP地址和源MAC地址。 交换机收到后会查自己的MAC地址表,发现没有对应表项,则收到的数据帧是“未知单播帧” 。


image-20220901111220865

由于收到的数据帧是“未知单播帧”,因此交换机会泛洪该数据帧。同时,交换机将收到的数据帧的源MAC地址和对应端口编号记录到MAC地址表中。

华为S系列交换机MAC地址表的老化时间缺省值是300秒


image-20220901111349419

广播网络中的所有主机均会收到该数据帧,但是只有主机2会处理(因为目的MAC地址是主机2)。主机2会回复数据帧给主机1,也是单播数据帧。


image-20220901111428223

交换机收到该单播数据帧后,会查看自己的MAC地址表,发现有对应的表项,则将数据从对应的端口转发出去。同时,交换机将收到的数据帧的源MAC地址和对应端口编号记录到MAC地址表中。


3. VLAN

为了解决广播域带来的问题,人们引入了VLAN (Virtual Local Area Network),即虚拟局域网技术:

通过在交换机上部署VLAN,可以将一个规模较大的广播域在逻辑上划分成若干个不同的、规模较小的广播域,由此可以有效地提升网络的安全性,同时减少垃圾流量,节约网络资源。


VLAN的特点:

  1. 一个VLAN就是一个广播域,所以在同一个VLAN内部,计算机可以直接进行二层通信;而不同VLAN内的计算机,无法直接进行二层通信,只能进行三层通信来传递信息,即广播报文被限制在一个VLAN内。

  2. VLAN的划分不受地域的限制。


VLAN的好处:

  1. 灵活构建虚拟工作组:用VLAN可以划分不同的用户到不同的工作组,同一工作组的用户也不必局限于某一固定的物理范围,网络构建和维护更方便灵活。

  2. 限制广播域:广播域被限制在一个VLAN内,节省了带宽,提高了网络处理能力。

  3. 增强局域网的安全性:不同VLAN内的报文在传输时是相互隔离的,即一个VLAN内的用户不能和其它VLAN内的用户直接通信。

  4. 提高了网络的健壮性:故障被限制在一个VLAN内,本VLAN内的故障不会影响其他VLAN的正常工作。


3.1 如何实现VLAN

image-20220901125340315

SW1识别出某个帧是属于哪个VLAN后,会在这个帧的特定位置上添加一个标签。这个标签明确地标明了这个帧是属于哪个VLAN的。其他交换机(如SW2)收到这个带标签的数据帧后,就能轻而易举地直接根据标签信息识别出这个帧属于哪个VLAN。

IEEE 802.1Q定义了这种带标签的数据帧的格式。满足这种格式的数据帧称为IEEE 802.1Q数据帧,也称VLAN数据帧。


下图为插入Tag的一些字段细节

image-20220901125516979


下图是VLAN的实现

image-20220901125733299


3.2 VLAN的划分方式

image-20220901130008138

常用的还是基于接口方式进行VLAN划分


4. 以太网二层接口类型

4.1 Access接口

交换机上常用来连接用户PC、服务器等终端设备的接口。Access接口所连接的这些设备的网卡往往只收发无标记帧。Access接口只能加入一个VLAN。


image-20220901130737343


Access接口特点:

仅允许VLAN ID与接口PVID相同的数据帧通过。


Access接口接收数据帧:

  • 当Access接口从链路上收到一个Untagged帧,交换机会在这个帧中添加上VID为PVID的Tag,然后对得到的Tagged帧进行转发操作(泛洪、转发、丢弃)。

  • 当Access接口从链路上收到一个Tagged帧,交换机会检查这个帧的Tag中的VID是否与PVID相同。如果相同,则对这个Tagged帧进行转发操作;如果不同,则直接丢弃这个Tagged帧。


Access接口发送数据帧:

当一个Tagged帧从本交换机的其他接口到达一个Access接口后,交换机会检查这个帧的Tag中的VID是否与PVID相同:

  • 如果相同,则将这个Tagged帧的Tag进行剥离,然后将得到的Untagged帧从链路上发送出去;

  • 如果不同,则直接丢弃这个Tagged帧。


4.2 Trunk接口

Trunk接口允许多个VLAN的数据帧通过,这些数据帧通过802.1Q Tag实现区分。Trunk接口常用于交换机之间的互联,也用于连接路由器、防火墙等设备的子接口。


image-20220901131453972


Trunk接口特点:

  • Trunk接口仅允许VLAN ID在允许通过列表中的数据帧通过。

  • Trunk接口可以允许多个VLAN的帧带Tag通过,但只允许一个VLAN的帧从该类接口上发出时不带Tag(即剥除Tag)。


Trunk接口接收数据帧:

  • 当Trunk接口从链路上收到一个Untagged帧,交换机会在这个帧中添加上VID为PVID的Tag,然后查看PVID是否在允许通过的VLAN ID列表中。如果在,则对得到的Tagged帧进行转发操作;如果不在,则直接丢弃得到的Tagged帧。

  • 当Trunk接口从链路上收到一个Tagged帧,交换机会检查这个帧的Tag中的VID是否在允许通过的VLAN ID列表中。如果在,则对这个Tagged帧进行转发操作;如果不在,则直接丢弃这个Tagged帧。


Trunk接口发送数据帧:

  • 当一个Tagged帧从本交换机的其他接口到达一个Trunk接口后,如果这个帧的Tag中的VID不在允许通过的VLAN ID列表中,则该Tagged帧会被直接丢弃。
  • 当一个Tagged帧从本交换机的其他接口到达一个Trunk接口后,如果这个帧的Tag中的VID在允许通过的VLAN ID列表中,则会比较该Tag中的VID是否与接口的PVID相同:
    • 如果相同,则交换机会对这个Tagged帧的Tag进行剥离,然后将得到的Untagged帧从链路上发送出去;
    • 如果不同,则交换机不会对这个Tagged帧的Tag进行剥离,而是直接将它从链路上发送出去。

4.3 Hybrid接口

Hybrid接口与Trunk接口类似,也允许多个VLAN的数据帧通过,这些数据帧通过802.1Q Tag实现区分。用户可以灵活指定Hybrid接口在发送某个(或某些)VLAN的数据帧时是否携带Tag。


image-20220901140008427


Hybrid接口特点:

  • Hybrid接口仅允许VLAN ID在允许通过列表中的数据帧通过。

  • Hybrid接口可以允许多个VLAN的帧带Tag通过,且允许从该类接口发出的帧根据需要配置某些VLAN的帧带Tag、某些VLAN的帧不带Tag。

  • 与Trunk最主要的区别就是,能够支持多个VLAN的数据帧,不带标签通过。


Hybrid接口接收数据帧:

  • 当Hybrid接口从链路上收到一个Untagged帧,交换机会在这个帧中添加上VID为PVID的Tag,然后查看PVID是否在Untagged或Tagged VLAN ID列表中。如果在,则对得到的Tagged帧进行转发操作;如果不在,则直接丢弃得到的Tagged帧。

  • 当Hybrid接口从链路上收到一个Tagged帧,交换机会检查这个帧的Tag中的VID是否在Untagged或Tagged VLAN ID列表中。如果在,则对这个Tagged帧进行转发操作;如果不在,则直接丢弃这个Tagged帧。


Hybrid接口发送数据帧:

  • 当一个Tagged帧从本交换机的其他接口到达一个Hybrid接口后,如果这个帧的Tag中的VID既不在Untagged VLAN ID列表中,也不在Tagged VLAN ID列表中,则该Tagged帧会被直接丢弃。

  • 当一个Tagged帧从本交换机的其他接口到达一个Hybrid接口后,如果这个帧的Tag中的VID在Untagged VLAN ID列表中,则交换机会对这个Tagged帧的Tag进行剥离,然后将得到的Untagged帧从链路上发送出去。

  • 当一个Tagged帧从本交换机的其他接口到达一个Hybrid接口后,如果这个帧的Tag中的VID在Tagged VLAN ID列表中,则交换机不会对这个Tagged帧的Tag进行剥离,而是直接将它从链路上发送出去。


4.5 小结

image-20220901143826797


5. STP生成树

5.1 STP技术为何出现

image-20220901210643154

  • 随着局域网规模的不断扩大,越来越多的交换机被用来实现主机之间的互连。如图,接入层交换机单链路上联,则存在单链路故障,也就是如果这根上联链路发生故障,交换机下联用户就断网了。另一个问题的单点故障,也就是交换机如果宕机,交换机下联用户也就断网了。

  • 为了解决此类问题,交换机在互连时一般都会使用冗余链路来实现备份。冗余链路虽然增强了网络的可靠性,但是也会产生环路,而环路会带来一系列的问题,继而导致通信质量下降和通信业务中断等问题。


或者是以下人为去操作的二层环路

image-20220901212004761


5.2 二层环路带来的问题

image-20220901212144944

问题一:广播风暴

根据交换机的转发原则,如果交换机从一个端口上接收到的是一个广播帧,或者是一个目的MAC地址未知的单播帧,则会将这个帧向除源端口之外的所有其他端口转发。如果交换网络中有环路,则这个帧会被无限转发,此时便会形成广播风暴,网络中也会充斥着重复的数据帧。

本例中,SW3收到了一个广播帧将其进行泛洪,SW1和SW2也会将此帧转发到除了接收此帧的其他所有端口,结果此帧又会被再次转发给SW3,这种循环会一直持续,于是便产生了广播风暴。交换机性能会因此急速下降,并会导致业务中断。


问题二:MAC地址表漂移

交换机是根据所接收到的数据帧的源地址和接收端口生成MAC地址表项的。

本例中,SW3收到一个广播帧泛洪,SW1从GE0/0/1接口接收到广播帧后学习且泛洪,形成MAC地址5489-98EE-788A与GE0/0/1的映射;SW2收到广播帧后学习且泛洪,SW1再次从GE0/0/2收到源MAC地址为5489-98EE-788A的广播帧并进行学习,5489-98EE-788A会不断地在GE0/0/1与GE0/0/2接口之间来回切换,这被称为MAC地址漂移现象。


5.3 STP生成树协议的实现

在网络中部署生成树后,交换机之间会进行生成树协议报文的交互并进行无环拓扑计算,最终将网络中的某个(或某些)接口进行阻塞(Block),从而打破环路。

image-20220901212556586


交换机上运行的生成树协议会持续监控网络的拓扑结构,当网络拓扑结构发生变化时,生成树能感知到这些变化,并且自动做出调整。因此,生成树既能解决二层环路问题,也能为网络的冗余性提供一种方案。

image-20220901212724120


5.4 二层环路及三层环路

image-20220901212856789

常见环路主要分为二层环路和三层环路。

  • 二层环路主要因为网络中部署了二层冗余环境,或人为的误接线缆导致,可以通过借助特定的协议或机制实现二层防环;

  • 三层环路主要因为路由环路,可以通过动态路由协议防环和IP报文头部中的TTL字段用于防止报文被无止尽地转发。


5.5 STP的基本概念

5.5.1 根桥

image-20220901223038141

对于一个STP网络,根桥在全网中只有一个,它是整个网络的逻辑中心,但不一定是物理中心。根桥会根据网络拓扑的变化而动态变化。

网络收敛后,根桥会按照一定的时间间隔产生并向外发送配置BPDU,其他设备仅对该报文进行处理,传达拓扑变化记录,从而保证拓扑的稳定。


5.5.2 桥ID

image-20220901222809843

在STP中,每一台交换机都有一个标示符,叫做Bridge ID或者桥ID,桥ID由16位的桥优先级(Bridge Priority)和48位的MAC地址构成。

在STP网络中,桥优先级是可以配置的,取值范围是0~65535,默认值为32768,可以修改但是修改值必须为1024的倍数。优先级最高的设备(数值越小越优先)会被选举为根桥。如果优先级相同,则会比较MAC地址,MAC地址越小则越优先。


5.5.3 开销Cost

image-20220901224721522

交换机的每个端口都有一个端口开销(Port Cost)参数,此参数表示该端口在STP中的开销值。默认情况下端口的开销和端口的带宽有关,带宽越高,开销越小。


5.5.4 根路径开销RPC

image-20220901225207932

从一个非根桥到达根桥的路径可能有多条,每一条路径都有一个总的开销值,此开销值是该路径上所有接收BPDU端口的端口开销总和(即BPDU的入方向端口),称为路径开销。非根桥通过对比多条路径的路径开销,选出到达根桥的最短路径,这条最短路径的路径开销被称为RPC,并生成无环树状网络。根桥的根路径开销是0。


5.5.5 Port ID

image-20220901225441918

运行STP交换机的每个端口都有一个端口ID,端口ID由端口优先级和端口号构成。端口优先级取值范围是0到240,步长为16,即取值必须为16的整数倍。缺省情况下,端口优先级是128。端口ID可以用来确定端口角色。


5.5.6 BPDU

image-20220901225749617

为了计算生成树,交换机之间需要交换相关的信息和参数,这些信息和参数被封装在BPDU中。


BPDU有两种类型:配置BPDU和TCN BPDU。

配置BPDU包含了桥ID、路径开销和端口ID等参数。STP协议通过在交换机之间传递配置BPDU来选举根交换机,以及确定每个交换机端口的角色和状态。在初始化过程中,每个桥都主动发送配置BPDU。在网络拓扑稳定以后,只有根桥主动发送配置BPDU,其他交换机在收到上游传来的配置BPDU后,才会发送自己的配置BPDU。

TCN BPDU是指下游交换机感知到拓扑发生变化时向上游发送的拓扑变化通知。


5.5.7 配置BPDU的报文格式

image-20220901230007134


5.5.8 配置BPDU的比较原则

image-20220901230941698


5.5.9 STP的三种角色

STP中定义了三种端口角色:指定端口,根端口和预备端口。

  1. 指定端口是交换机向所连网段转发配置BPDU的端口,每个网段有且只能有一个指定端口。一般情况下,根桥的每个端口总是指定端口(DP)

  2. 根端口(RP)是非根交换机去往根桥路径最优的端口。在一个运行STP协议的交换机上最多只有一个根端口,但根桥上没有根端口。

  3. 如果一个端口既不是指定端口也不是根端口,则此端口为预备端口。预备端口将被阻塞


5.5.10 STP的操作
  1. 在交换网络中选举一个根桥(Root Bridge,简称RB);
  2. 在每个非根桥上选举一个根端口(Root Port,简称RP);
  3. 在每个段中选举一个指定端口(Designated Port,简称DP);
  4. 阻塞非指定端口(Non-Designated Port,简称NDP)。

5.5.11 STP的计算过程
一、在交换网络中选举一个根桥

image-20220902101617087

  1. STP交换机初始启动之后,都会认为自己是根桥,并在发送给其他交换机的BPDU中宣告自己为根桥。因此,此时BPDU中的根桥ID为各自设备的网桥ID。

  2. 当交换机收到网络中其他设备发送来的BPDU后,会比较BPDU中的根桥ID和自己的BID。

  3. 交换机不断交互BPDU,同时对BID进行比较,最终选举一台BID最小的交换机作为根桥,其他的则为非根桥。


二、在每台非根桥上选举一个根接口

image-20220902110523653

  1. 一个非根桥设备上会有多个端口与网络相连,为了保证从某台非根桥设备到根桥设备的工作路径是最优且唯一的,就必须从该非根桥设备的端口中确定出一个被称为“根端口”的端口,由根端口来作为该非根桥设备与根桥设备之间进行报文交互的端口。

  2. 在选举出根桥后,根桥仍然持续发送BPDU,而非根桥将持续不断的收到根桥发送的BPDU。因此,在所有非根桥上选举一个距离根桥“最近”的端口(根端口),在网络收敛后,根端口将不断的收到来自根桥的BPDU。


选举原则

  1. 交换机有多个端口接入网络,各个端口都会收到BPDU报文,报文中会携带“RootID、RPC、BID、PID”等关键字段,端口会针对这些字段进行PK。

  2. 首先比较根路径开销(RPC),STP协议把根路径开销作为确定根端口的重要依据。RPC值越小,越优选,因此交换机会选RPC最小的端口作为根端口。

  3. 当RPC相同时,比较上行交换机的BID,即比较交换机各个端口收到的BPDU中的BID,值越小,越优选,因此交换机会选上行设备BID最小的端口作为根端口。

  4. 当上行交换机BID相同时,比较上行交换机的PID,即比较交换机各个端口收到的BPDU中的PID,值越小,越优先,因此交换机会选上行设备PID最小的端口作为根端口。

  5. 当上行交换机的PID相同时,则比较本地交换机的PID,即比较本端交换机各个端口各自的PID,值越小,越优先,因此交换机会选端口PID最小的端口作为根端口。


三、在每条链路上选举一个指定接口

image-20220902152034808

  1. 网络中的每个链路与根桥之间的工作路径必须是唯一的且最优的。当一个链路有两条及以上的路径通往根桥时(该链路连接了不同的交换机,或者该链路连接了同一台交换机的不同端口),与该链路相连的交换机(可能不止一台)就必须确定出一个唯一的指定端口。

  2. 因此,每个链路(Link)选举一个指定端口,用于向这个链路发送BPDU。


选举原则

指定端口也是通过比较RPC来确定的,选择RPC最小的作为指定端口,如果RPC相同,则比较BID和PID。

  1. 首先比较根路径开销(RPC),值越小,越优选,因此交换机会选RPC最小的端口作为指定端口。

  2. 若RPC相等,则比较链路两端交换机的BID,值越小,越优选,因此交换机会选BID最小的交换机的端口作为指定端口。

  3. 若BID相等,则比较链路两端端口的PID,值越小,越优选,因此交换机会选PID最小的交换机的端口作为指定端口。


四、非指定接口被阻塞

image-20220902152413373

在确定了根端口和指定端口之后,STP会对这些非指定端口进行逻辑阻塞,即这些端口不能转发由终端计算机产生并发送的帧(用户数据帧)。一旦非指定端口被逻辑阻塞后,STP树(无环路工作拓扑)就生成了。

非指定端口可以接收并处理BPDU,根端口和指定端口既可以接收和发送BPDU,也可以转发用户数据帧。


5.5.12 STP的接口状态

STP接口状态迁移

image-20220902210604771

Disabled:禁用状态。端口既不处理和转发BPDU报文,也不转发用户流量。

Blocking:阻塞状态。端口仅仅能接收并处理BPDU,不能转发BPDU,也不能转发用户流量。此状态是预备端口的最终状态。

Listening:侦听状态。端口可以转发BPDU报文,但不能转发用户流量。

Learning:学习状态。端口可根据收到的用户流量构建MAC地址表,但不转发用户流量。增加Learning状态是为了防止临时环路。

Forwarding:转发状态。端口既可转发用户流量也可转发BPDU报文,只有根端口或指定端口才能进Forwarding状态。


5.5.13 拓扑变化—根桥故障

image-20220902214243342

  1. 在稳定的STP网络,非根桥会定期收到来自根桥的BPDU报文。

  2. 如果根桥发生了故障,停止发送BPDU,下游交换机就无法收到来自根桥的BPDU报文。

  3. 如果下游交换机一直收不到BPDU报文,Max Age计时器(缺省: 20s)就会超时,从而导致已经收到的BPDU报文失效,此时,非根桥会互相发送配置BPDU,重新选举新的根桥。


端口状态

SW3的预备端口,20s后会从Blocking状态进入到Listening状态,再进入Learning状态,最终进入到Forwarding状态,进行用户流量的转发。

根桥故障会导致50s左右的恢复时间,等于Max Age加上2倍的Forward Delay收敛时间。


5.5.14 拓扑变化—非直连链路故障

image-20220902214907717

  1. 在稳定的STP网络,非根桥会定期收到来自根桥的BPDU报文。

  2. 若SW1与SW2之间的链路发生了某种故障(非物理故障),因此SW2一直收不到来自根桥SW1的BPDU报文,Max Age计时器(缺省: 20 s)就会超时,从而导致已经收到的BPDU报文失效。

  3. 此时,非根桥SW2会认为根桥失效,并且认为自己是根桥,从而发送自己的配置BPDU给SW3,通知SW3自己是新的根桥。

  4. 在此期间,SW3的预备端口一直收不到包含根桥ID的BPDU,Max Age计时器超时后,端口进入到Listening状态,开始向SW2“转发”从上游发来的包含根桥ID的BPDU。

  5. 因此,Max Age定时器超时后,SW2和SW3几乎同时收到对方发来的BPDU,再进行STP重新计算,SW2发现SW3发来的BPDU更优,就放弃宣称自己是根桥并重新确定端口角色。


端口状态

SW3预备端口20s后会从Blocking状态进入到Listening状态,再进入Learning状态,最终进入到Forwarding状态,进行用户流量的转发。

非直连故障会导致50s左右的恢复时间,等于Max Age加上2倍的Forward Delay收敛时间。


5.5.15 拓扑改变导致MAC地址表错误

image-20220902215223843

拓扑变化过程中,根桥通过TCN BPDU报文获知生成树拓扑里发生了故障。根桥生成TC用来通知其他交换机加速老化现有的MAC地址表项。


拓扑变更以及MAC地址表项更新的具体过程如下:

  1. SW3感知到网络拓扑发生变化后,会不间断地向SWB发送TCN BPDU报文。

  2. SW2收到SW3发来的TCN BPDU报文后,会把配置BPDU报文中的Flags的TCA位设置1,然后发送给SW3,告知SW3停止发送TCN BPDU报文。

  3. SW2向根桥转发TCN BPDU报文。

  4. SW1把配置BPDU报文中的Flags的TC位设置为1后发送,通知下游设备把MAC地址表项的老化时间由默认的300 s修改为Forward Delay的时间(默认为15 s)。

  5. 最多等待15 s之后,SW2中的错误MAC地址表项会被自动清除。此后,SW2就能重新开始MAC表项的学习及转发操作。


posted @ 2023-09-17 11:04  YinJayChen  阅读(166)  评论(0编辑  收藏  举报