冗余

对于一个企业来说,网络的可靠性是至关重要的,因为网络一旦出现问题会给企业的生产经营带来非常大的损失,想要保证网络的可靠性,要么就是靠冗余设备,要么就是冗余链路,所以一定会提到冗余这个词,因为任何一台设备你都不能保证它可以一直正常工作,它总有宕机的一个时间,所以就需要冗余化的一个设计来保证网络的可靠性。

冗余.png

以上图为例,这一种方案就是没有冗余设计的,一旦两台交换机间的线路断开,PCA和PCB就无法通信了。

为了提高这种网络的可靠性就需要冗余设备或者冗余链路的方案来解决这个问题了。

广播风暴:

我们可以在添加一台交换机C,一旦i骄傲还击A和交换机B的链路断开了,还可以通过交换机C来进行通信,以下图为例。

冗余1.png

但是这一种设计要考虑环路问题,这一种设计已经形成了交换环路,也就是物理环路。

交换环路会带来广播风暴这一问题,广播风暴指的是在整个网络当中不断转发广播信息,使交换机处于极度忙碌的章台,主机也被迫接收广播帧,会出现网络速度慢甚至死机的现象。

广播风暴的产生及危害:

广播风暴的产生除了个别网卡故障一直在发送广播帧以外,环路问题也是一个最大的原因。

冗余1.png

以上图为例,PCA肯定会有一个IP地址,例如192.168.1.2,PCB肯定也会有一个IP地址,例如192.168.1.3,现在PCA和PCB进行通信,例如PCA去pingPCB,在整个局域网内部寻址的话,是要找到PCB所对应的MAC地址,用MAC地址来封装IP数据包,MAC地址在PCA主机里面会有一个ARP表,如果表里面没有PCB对应的MAC地址的话,那么PCA会发一个在正常不过的广播消息,就是ARP广播,ARP广播是很正常的广播,这个ARP广播到达交换机A之后,A会转发这一个广播消息,会往交换机B和交换机C转发,交换机C收到之后又往交换机B和交换机A转发,同理,交换机B收到之后又向交换机A和交换机C转发,主机也不断的接收到广播帧,这就形成了广播风暴,并且会形成双相的广播风暴,处于广播风暴后,交换机也会一直不断的转发广播帧,正常用户通信会被阻塞,PCB也是被迫的不断处理广播帧,导致它的网络速度非常慢甚至死机,这是第一个危害。

第二个危害是帧复制,第三个危害是MAC地址表不稳定。

因为交换机在寻址的时候靠的是MAC地址和端口的映射表,MAC地址和端口的映射表是通过读取帧的源MAC地址和进入端口来学习的,例如交换机A首先获取的MAC地址和端口是PCA的,这一个帧交换机A转发给交换机B,交换机B转发给交换机C,交换机C在转发给交换机A,实际上是同一个帧,它的源MAC还是PCA的,但是帧进入的端口不同了,原来的MAC表的条目会被替换掉。

而且这是两个方向的广播帧,交换机A转发给交换机C,交换机C在转发给交换机B,交换机B又转发给交换机A,那这个时候帧进入的端口又不一样了,映射表又变了,这样的话这MAC映射表条目会一直被替换,MAC映射表不稳定,正常用户的数据帧是无法进行转发的。

这样设计看起来是提高了网络的冗余度,但是实际上是有问题的,不仅没有实现网络可靠性,还会给网络带来广播风暴。

生成树协议-STP

想要解决交换机环路产生广播风暴这个问题就需要用到了生成树协议-STP。

STP协议功能:

STP——Spanning Tree Protool(生成树协议)

逻辑上断开环路,防止广播风暴的产生,这俄格逻辑上的计算是根据交换机和交换机之间传递的桥数据单元来进行生成树协议它的一个计算,通过计算之后它会断开某一条链路,避免环路的存在,防止广播风暴的产生。

当链路出现故障,断开的接口激活,恢复通信,起备份线路的作用。

STP.png

例如仙子啊PCA要和PCB通信,正常情况是交换机C直接转发给交换机A,交换机B是冗余设备。

首先三台交换机开启生成树协议,进行桥数据单元的信息交换,进行生成树协议的信息计算,计算完成后假设断开的是C交换机和B交换机相连的这一条链路,这种情况下,PCA和PCB通信就会通过交换机B转发,实现网络可靠性方面的一个保证,又不会造成交换环路。

STP协议算法:

生成树协议是断开交换机B上面的交换机B和交换机C相连的端口。

STP将一个环形网络生成无环形网络,它的步骤分为三步。

1、选择根网桥(Root Bridge):生成树协议诞生的较早,在网桥时代,网桥就是交换机的前生,由于STP是在网桥的基础上开发的,因此现在在交换机的网络中仍然沿用网桥这一术语。第一步选择根网桥其实就是选择根交换机;

2、选择根端口(Root Ports);

3、选择指定端口(Designated Ports):有些端口不是根端口,就要把它处于阻塞状态;

选择根网桥:

把环形拓扑变成无环拓扑,首先要选出根网桥,根网桥是根据网桥ID来选择的,网桥ID是唯一的,交换机之间传递BPDU,然后选择BID(网桥ID)值最小的交换机作为网络中的根网桥。

网桥ID又两个字段所构成,一个是网桥优先级,另一个是网桥MAC地址。

网桥ID.png

首先参看的是优先级,然后再看MAC地址。

从市面上买回来的交换机,如果没有修改过优先级的话,那么优先级的默认值为32768,如果想要人为指定那一台交换机为根网桥,那么需要相关的命令去修改网桥优先级,把值调低,值越低代表优先级越高,这一个值变低是以4096的倍数去变动的。

选择根网桥.png

三台交换机形成了交换环路,首先找出根网桥,根网桥是根据网桥的ID值进行选择的,ID是有两个字段构成,一个是优先级,另一个是MAC地址。

交换机B和交换机C优先级都是32768,没有更改过,交换机A的优先级修改成了4096,这个值变小了,就表示交换机A的这个ID要小一些,那这三台交换机中,交换机A的ID最小,那它就是根交换机。

如果这三台交换机的优先级都是没有修改的,都是默认的32768,那么根网桥其实也还是交换机A,因为这三台交换机中交换机A的MAC地址最小,也就意味这三台交换机中交换机A的ID值最小,所以还是交换机A是根网桥。

选择根端口:

本端口到根网桥路径成本最低,也就是再非根网桥上去找根端口,条件是网桥路径陈本最低。

直连的网桥ID最小的

直连的端口ID最小的

本端口到根网桥路径成本最低:

路径成本和端口所连接的带宽有关系的,一个基本的原则就是带宽越大,根路径成本越低,也就是根路径的开销越低。

根据IEEE802.1d-1998的标准,这个生成树协议最早的1998标准,它定义了带宽的对应根路径成本。

带宽 根路径成本
10Mbps 100
100Mbps 19
1000Mbps 4
10000Mbps 2

首选会根据这一个原则来选根端口。

根端口.png

首先已经知道了交换机A是根网桥,那么接下来就是选择根端口,按照根端口的选择原则的第一条,到达根网桥的根路径成本最低的为根端口,按照IEEE802.1d-1998的标准,交换机A到交换机B是100Mbps的带宽,成本是19,而交换机C到交换机B再到交换机A,它是两端100Mbps的链路,每一段链路的成本都是19,加起来就是38,19比38小,所以交换机C和交换机A直连的交换机C端口为根端口。

同理,再交换机B中也要选出一个根端口,按照刚刚的方法,很显然交换机B的根端口是交换机B和交换机A相连的那个端口。

直连的网桥ID最小的

再有的网络中,根据第一条原则是比较不出来根端口的,那么就需要进行第二步的比较。

根端口2.png

四台交换机连成一条环路,其中A交换机为根交换机,每一段链路都是100Mbps,现在需要算出D交换机的根端口。

如果使用第一条原则来计算的话根本算不出来的,因为每一段链路都是100Mbps的带宽,上下两条链路都是的根路径成本都是一样的。

这时候就需要比较第二步,直连的网桥ID最小,指的是交换机D连的直连网桥B和交换机D的另一个端口连的直连网桥C,其实就是比较交换机B和交换机的ID和交换机C的ID,看这两个ID那个小,ID是不可能一样的,因为MAC地址必然不一样,如果交换机B的ID要小一些,,那么交换机D连接交换机C的端口就是根端口。

直连端口ID最小:

有的拓扑图第一步和第二步都比较不出来,这时候就用到了第三步,直连的端口ID最小的。

直连端口ID最小的.png

首先定义交换机A为根网桥,链路都是100Mbps,现在需要算出B的根端口。

这时候第一步比较是比较不出来的,因为链路都是100Mbps,路径成本都是19,第二步比较也是比较不出来的,因为交换机B的两个端口都是直连的交换机A的。

这就需要进行第三步比较了,直连的端口ID最小的,这个比较是A交换机的1号端口ID值和A交换机的2号端口ID值,因为这两个端口是B交换机的1号端口和2号端口的连接端口。

端口ID是由端口优先级和端口编号所组成的。

端口ID.png

如果没有修改过端口优先级的话,默认的端口优先级为128,如果想要人为让端口优先级变高的话需要把端口优先级的值改小,并且是以16的倍数进行修改的。

以上图为例,假设端口的优先级没有动过,交换机A的1号端口ID为[128,1],交换机A的2号端口ID为[128,2],那么1号端口的ID值明显小于2号端口,所以B交换机的1号端口是根端口。

如果想要交换机B的2号端口为根端口,那么需要把交换机A的二号端口的优先级的值改得比1号端口的优先级的值小,那么B交换机的2号端口就可以是根端口了。

选择指定端口:

根网桥上的端口全是指定端口

非根网桥上的指定端口:

1、本端口所在网桥到根网桥路径成本最低的

2、本端口所在的网桥ID值较小

3、本端口ID值较小

指定端口.png

以上图为例,已经知道根网桥和根端口,现在需要算出指定端口。

指定端口是再每一个物理段上选择,每一个物理段仅有一个指定端口,A交换机和B交换机的指定端口是A交换机的2号端口,A交换机和C交换机的指定端口是A交换机的1号端口,因为A交换机是根网桥,根网桥上的端口全是指定端口。

现在要选出B交换机和C交换机相连的这一段的指定端口,现在先看第一步,本端口所在网桥到根网桥成本最低的,B交换机到A交换机带宽是100Mbps,C交换机到A交换机带宽也是100Mbps,成本都是19,比较不出来。

那么看第二步,本端口所在的网桥ID值较小的,B交换机的ID为[32768,000d2800b101],C交换机的ID为[32768,000d2800b102],很明显B交换机的ID值要比C交换机的ID值要小,所以指定端口是B交换机的2号端口。

有的拓扑图第二步还是比较不出来就直接比较两个端口的ID值。

阻塞端口:

指定端口.png

以上图为例,根网桥为交换机A,根端口分别为交换机B的1号端口、交换机C的1号端口,指定端口分别为交换机A的1号端口、交换机A的2号端口、交换机B的2号端口,现在只有交换机C的2号端口既不是根端口也不是指定端口,所以把交换机B的2号端口阻塞起来,那么交换机B和交换机C相连的链路既是备份链路,整个网络结构就变成了以下这一种。

阻塞端口.png

就把一个环形拓扑变成了一个无环的树形拓扑结构。

端口状态

转发(Forwarding)

学习(Learning)

侦听(Listening)

阻塞(Blocking)

禁用(Disabled)

禁用是网络管理员物理管理,把端口关闭。

阻塞是逻辑上让端口不转发数据帧,转发BPUD。

所有的交换机再启动的时候所有端口都为阻塞状态,这一时间会有20秒,这是为了一启动该就会形成交换环路,20秒之后进入侦听状态,侦听状态指的是交换机和交换机之间相互传递BPUD,准备进行生成树协议的计算,这个时间要持续15秒,15秒之后进入学习状态,学习状态指的是交换机根据BPUD进行生成树协议的计算,计算完成后开始学习MAC和端口映射表,这个状态完毕之后所有该进行转发的端口就进入转发状态,该阻塞的端口阻塞起来。

端口状态.png

也就是说交换机从开始启动到正式进入转发状态需要50秒的时间,如果其中一台宕机了要启用备用链路的时候需要30秒的时间。

快速生成树协议-RSTP

Rapid Spanning Tree Protocl,RSTP(快速生成树协议)

IEEE802.1w——IEEE802.1D-2004

快速生成树协议一开始标准是IEEE802.1w,后面并入IEEE802.1D-2004。

RSTP端口角色:

根端口、指定端口、替代端口、备用端口

快速生成树协议它的对应的角色也发生了变化,端口角色除了保留了根端口和指定端口以外,还新增了替代端口和备用端口。

实际上替代端口和备用端口是从普通生成树协议中的阻塞端口演化而来。

RSTP加快收敛机制:

1、边缘端口机制

2、根端口快速切换机制

3、指定端口快速切换机制

边缘端口:

边缘端口指的是连接主机的端口,它不用参与生成树协议的计算,可以直接进入转发状态,因为这种端口是不可能造成网络环路的,定义边缘化端口一般情况下是需要网络管理员手动配置的,交换机无法识别端口连接的是终端你还是交换机,所以只能由管理员定义,注意的是把连接终端的端口定义为边缘端口,千万不要把与交换机相连的端口定义为边缘端口。

Alternate端口:

Alternate端口(替代端口)指的是根端口的替代端口,就是一台交换机到达网桥由两个路径,这两个路径相连的不同一台交换机,既然B交换机的上面端口为指定端口,那么下面那个端口即为替代端口。

快速生成树协议.png

Backup端口:

Backup端口(备份端口)指的是指定端口的备份,生成树协议指所以可以加快收敛的速度,是因为在生成树协议的时候已经给根端口和指定端口找好了替身,一旦根端口或者是指定端口出现问题,它们的替身马上可以顶替工作。

多生成树协议-MSTP

MSTP(多生成树协议)

基于实例计算除多颗生成树,实例间实现负载分担。

生成树协议诞生早于VLAN的IEEE802.1Q,这就会出现不管是生成树协议还是快速生成树协议他都是不考虑VLAN的。

多生成树协议.png

也就是所有的VLAN都是共享一颗生成树,VLAN1的主机通信的话阻塞的是交换机C和交换机B连接的这条链路,VLAN2通信阻塞的也是交换机C和交换机B连接的这条链路,交换机C和交换机B相连的这一条链路不承载任何数据流量,这就不能实现负载均衡和会造成带宽的浪费,后面思科就有了PVST这一个协议,这一个协议非常极端,他是一个VLAN一个生成树,这就非常消耗交换机资源,后来IEEE就有了多生成树这一协议。

这一协议的原理是,例如现在有30个VLAN,分别是VLAN1到VLAN30,以上图台交换机为例子,首先选出两个根交换机,生成两颗树,那么肯定没课树阻塞的端口都不一样,每颗树里面有一个实例,把这30个VLAN分别加载到这两个实例中,也就是一个实例加载了15个VLAN,以此来实现负载均衡。


二维码

发表评论