5、华为 华三中小型企业网络架构搭建 【MSTP、链路聚合、VRRP部署】

拓扑

实战

拓扑可以保存到本地,然后扩大查看,这样才能看的更清楚。(拖动到新窗口打开即可)

5.1分析说明

5.1分析说明
5.1.1 MSTP技术实现的效果
STP可以有三种,一种为最先的STP、后续增强的RSTP,以及目前主流的MSTP,不使用STP与RSTP的原因其实很简单,因为它只能做到单一链路传输,而不能实现跟MSTP以实例的方式实现负载负担。

shizhan

以访客厅为例,该交换机下面有VLAN 1与VLAN 19的流量,如果我们部署的是STP或者RSTP的话,则我们VLAN 1与VLAN 19的流量,要么从左边的链路传递给核心交换机转发,要么从右边的网络传递给核心交换机转发,这样的话,白白的浪费了一条链路带宽,如果VLAN流量比较多的话,则造成的情况是,一条链路拥塞,另外一条链路则没有任何流量经过。而MSTP实现的是,以多个VLAN为一个实例,不同的实例可以实现不同的链路转发,假设访客厅有20个VLAN,则可以实现10个VLAN走左边链路,而另外10个VLAN走右边链路,这样重分的利用了链路的带宽,也减少出现拥塞的几率。

5.1.2 链路聚合实现的效果

shizhan

在这个案例中,部署了链路聚合的链路就是在两台核心交换机之间部署了,核心交换机之间加入这条线路的作用是,后续的VRRP流量都通过这条线路传递,也有人也喜欢把这条线路叫心跳线,有链路聚合的存在,除了提高带宽以外,还增加了冗余性,这样不会出现当这条链路故障后,所有的VRRP流量都需要经过下面的接入层交换机来转发。另外就是下面VLAN流量访问服务器或者 不同VLAN间互访流量通过。

5.1.3 VRRP部署

VRRP的作用是充当网关的默认网关的,可以说PC定义的默认网关不生效的话,则整个网络都访问不了了,只能访问同一个VLAN内的,如果在没有部署VRRP之前,两台设备有2个IP地址,都可以充当PC的网关,而PC又没有任何的检测机制,来判断该网关是否出现了故障,而进行切换,所以如果没有VRRP之前,则只能通过人为修改,这个工作量肯定是巨大的,特别是中大型网络,而且非常不实际,不可能指望一个不懂技术的人去设置网关地址。 VRRP解决的问题就是,通过VRRP技术协商,虚拟一个IP地址出来(VRRP可以直接使用接口定义了的地址的),这样的好处是,下面PC只需要定义VRRP定义的那个地址作为网关即可,当主设备出现故障后,会自动切换到备用上面,从而对客户来说是透明的。


为什么需要负载分担:因为默认情况下,所有的数据包都是交给主处理的,只有当主出现故障的时候,备用才会处理数据报文,如果所有的主都定义在一台设备上面的话,就意味着所有的数据包默认情况下都是由该设备处理,而备用则被闲置了,浪费了资源不说,很可能导致主设备处理能力跟不上,导致网络延迟很大,所以我们需要规划的是,把下面网段的网关平均分配到两台设备上面,比如192.168.1.0/24网段定义A为主,B为备用,而192.168.2.0/24网段定义B为主,A为备用,这样实现负载分担,达到资源利用。

VRRP与MSTP配合:我们之前分析过MSTP是保证链路的有效分担利用的,可以把VLAN的流量分摊到不同链路上去,然后在上行设备上面定义不同实例的根,定义根的作用是,对应的实例内的VLAN会把流量引向根的方向,而根也分为主根与备份根,这个跟VRRP的主备相似,所以我们在定义VRRP与MSTP的时候,要保持主备统一,比如VLAN 10、20、30的根在A设备上面,那么对应的网关 VRRP,则A为主,B为备用,而VLAN 40 、50 、60的根在B设备上面,那么对应的网关VRRP,则B为主,A为备用。这样的话到达路劲最优,资源利用最大化,如果MSTP与VRRP的定义相反,那么就会造成,路径次优了,比如VLAN 10,20.30定义根是B设备,而对应的网关VRRP则为A,那么它们首先会把流量引向B设备,然后再由B设备交给A,这样中间转发又延迟了,也增加了设备的处理负担。


5.2 具体配置

 5.2.1 链路聚合配置
说明:这里必须先配置链路聚合,因为中间那条链路传递VRRP的流量,并且也传递STP的BPDU,所以先配置链路聚合是有必要的。
Core-A
[Core-A]interface Eth-Trunk 1
[Core-A-Eth-Trunk1]trunkport g0/0/18
[Core-A-Eth-Trunk1]trunkport g0/0/19
[Core-A-Eth-Trunk1]port link-type trunk
[Core-A-Eth-Trunk1]port trunk allow-pass vlan 19 to 23 88 100
[Core-A-Eth-Trunk1]load-balance src-dst-ip
说明:创建了一个链路聚合口,然后关联了G0/0/18与19,这2个口就是连接Core-B的,另外定义该类型为Trunk,允许了现在存有的VLAN流量通过,其余的则不允许。并且配置了负载均衡的方式为源目IP的,因为流量到达Core后,上面的都是走三层了,基于源目IP分担会更加有效率。

Core-B
[Core-B]interface Eth-Trunk 1
[Core-B-Eth-Trunk1]trunkport g0/0/18
[Core-B-Eth-Trunk1]trunkport g0/0/19
[Core-B-Eth-Trunk1]port link-type trunk
[Core-B-Eth-Trunk1]port trunk allow-pass vlan 19 to 23 88 100
[Core-B-Eth-Trunk1]load-balance src-dst-ip
说明:创建了一个链路聚合口,然后关联了G0/0/18与19,这2个口就是连接Core-A的,另外定义该类型为Trunk,允许了现在存有的VLAN流量通过,其余的则不允许。并且配置了负载均衡的方式为源目IP的,因为流量到达Core后,上面的都是走三层了,基于源目IP分担会更加有效率。

结果查看

shizhan

5.2.2 MSTP配置
分析:之前已经分析过MSTP与VRRP配合的时候要主备同一,而在规划的时候已经规划好了对应的VLAN IP谁为主,谁为备用,所以我们这里根据VRRP的定义来定义MSTP即可。

shizhan

254的定义则为PC网关,这是Core-A上面定义的,为254的VLAN 有 VLAN 1、19、21,则VLAN 1 、19、21 A为主根,对应的B为这些VLAN的备用根, 那么为253的地址则是充当备用的,也就是说 20、88、100这些VLAN,Core-A充当的是备用根,而Core-B是主根。

Core-A的MSTP配置
[Core-A]stp region-configuration
[Core-A-mst-region]region-name ccieh3c.taobao.com
[Core-A-mst-region]instance 1 vlan 1 19 21
[Core-A-mst-region]instance 2 vlan 20 88 100
[Core-A-mst-region]active region-configuration
[Core-A]stp instance 1 root primary
[Core-A]stp instance 2 root secondary
说明:这里进入了MSTP的配置域,定义了一个名字为ccieh3c.taobao.com(这个同一个MSTP域必须保持一致),然后定义了2个实例,就是刚刚分析的那2个,最终激活配置。
红色部门定义的是,Core-A为1的主根,为实例2的备份根。

Core-B MSTP配置
[Core-B]stp region-configuration
[Core-B-mst-region]region-name ccieh3c.taobao.com
[Core-B-mst-region]instance 1 vlan 1 19 21
[Core-B-mst-region]instance 2 vlan 20 88 100
[Core-B-mst-region]active region-configuration
[Core-B]stp instance 1 root secondary
[Core-B]stp instance 2 root primary
说明:这里进入了MSTP的配置域,定义了一个名字为ccieh3c.taobao.com(这个同一个MSTP域必须保持一致),然后定义了2个实例,就是刚刚分析的那2个,最终激活配置。
红色部门定义的是,Core-B为2的主根,为实例1的备份根。与A相反。

访客厅、高层人员、财务 服务器集群、AC的MSTP配置

[FKT]stp region-configuration
[FKT-mst-region]region-name ccieh3c.taobao.com
[FKT-mst-region]instance 1 vlan 1 19 21
[FKT-mst-region]instance 2 vlan 20 88 100
[FKT-mst-region]active region-configuration
说明:访客厅、高层人员、财务MSTP的配置是一样的,所以这里就给出一个访客厅的配置,其余的一样配置即可,这里需要说明的是,虽然访客厅只有 VLAN 1与19的流量,但是一样要定义对应的实例,因为同一个MSTP域检查的是一个hash值,只有配置定义一样,hash值才会相同,这样才会认为是同一个域的,否则不能进行协商,这样导致MSTP计算出错。

结果验证【以高层人员、Core-A为例】

shizhan

高层人员上面可以看到实例1与2,0可以不用管,是默认其余没有定义的VLAN规划存在的,我们这里主要看1与2。

1、实例1:G0/0/2上联接口为Root,而G0/0/1为阻塞,因为实例1的根为Core-A,而G0/0/2上联的接口就是Core-1,而G0/0/1则是Core-2.
2、实例2:实例2与实例1相反,因为实例2的根在Core-B上面,所以这里G0/0/1为Root,G0/0/2阻塞。
实现的效果:实例1的流量走G0/0/2这条链路,而实例2的流量则走G0/0/1这条链路,实现复杂分担。


shizhan

Core-A上面接口比较多,但是不会出现阻塞的效果,因为它在实例1与实例2中,不是主就是备,所以不会出现阻塞的接口,阻塞接口只会出现在接入层,比如高层人员的设备上面,看到的上联接口有一个是阻塞的。

5.2.3 VRRP配置

Core-A VRRP配置
[Core-A]int vlan 1
[Core-A-Vlanif1]vrrp vrid 1 virtual-ip 192.168.1.254
[Core-A-Vlanif1]vrrp vrid 1 priority 105

[Core-A]int vlan 19
[Core-A-Vlanif19]vrrp vrid 19 virtual-ip 192.168.19.254
[Core-A-Vlanif19]vrrp vrid 19 priority 105

[Core-A]int vlan 20
[Core-A-Vlanif20]vrrp vrid 20 virtual-ip 192.168.20.254

[Core-A]int vlan 21
[Core-A-Vlanif21]vrrp vrid 21 virtual-ip 192.168.21.254
[Core-A-Vlanif21]vrrp vrid 21 priority 105

[Core-A]int vlan 88
[Core-A-Vlanif88]vrrp vrid 88 virtual-ip 192.168.88.254

[Core-A]interface vlan 100
[Core-A-Vlanif100]vrrp vrid 100 virtual-ip 192.168.100.254
说明:之前分析了VLAN 1,19,21的VRRP 主为Core-A,所以这里除了定义一个地址外,还定义了一个优先级,这里建议定义为105,因为如果检测到链路出现故障,默认减低优先级为10,如果高了的话,就算减低优先级,还是为主用。另外为备用的地方只需要配置IP地址即可。

Core-B VRRP配置
[Core-B]int vlan 1
[Core-B-Vlanif1]vrrp vrid 1 virtual-ip 192.168.1.254

[Core-B]int vlan 19
[Core-B-Vlanif19]vrrp vrid 19 virtual-ip 192.168.19.254

[Core-B]int vlan 20
[Core-B-Vlanif20]vrrp vrid 20 virtual-ip 192.168.20.254
[Core-B-Vlanif20]vrrp vrid 20 priority 105

[Core-B]int vlan 21
[Core-B-Vlanif21]vrrp vrid 21 virtual-ip 192.168.21.254

[Core-B]int vlan 88
[Core-B-Vlanif88]vrrp vrid 88 virtual-ip 192.168.88.254
[Core-B-Vlanif88]vrrp vrid 88 priority 105

[Core-B]interface vlan 100
[Core-B-Vlanif100]vrrp vrid 100 virtual-ip 192.168.100.254
[Core-B-Vlanif100]vrrp vrid 100 priority 105
说明:之前分析了VLAN20、88、100 的VRRP 主为Core-B,所以这里除了定义一个地址外,还定义了一个优先级,这里建议定义为105,因为如果检测到链路出现故障,默认减低优先级为10,如果高了的话,就算减低优先级,还是为主用。另外为备用的地方只需要配置IP地址即可。

结果验证

shizhan
shizhan

可以看到所有的状态都是正常的,跟PC测试,在后续的DHCP分配后,可以测试使用。

存在一个大问题【容易被忽略的】

shizhan

分析:这里VRRP配置了,正常情况下是没任何问题的,就算中间和下面的链路断了,是不会出现什么问题的,VRRP不会有影响,但是如果上面的链路端了,也就是连接防火墙的,那么则会出现一个问题,就是次优路径。
上面配置可以得到 VLAN1的默认网关在A上面,而B则是备用,当A的上行链路出现故障后,VRRP是不会感知到的,所以还是会正常转发数据,但是上联链路已经失效了,这时候当一个数据包过来需要A进行转发给出口防火墙的时候,由于上行链路出现故障,那么这时候则只能通过A与B之间的链路传递给B,B这时候只做一个透传的作用,然后传给防火墙,防火墙在转发给外网,外网回包后,防火墙这时候需要回应数据包了,它回应给的是网关地址,也就是VLAN 100做的VRRP网关,正常情况下是直接转发给A的,但是这时候与A的链路断了,只能通过转发给B,然后由B在转发给A进行处理,所以这时候,数据包的路径并不是最优的,这样造成的后果就是,加重B设备的处理能力,与B与A之间的链路带宽【这里有链路聚合,带宽还不会被阻塞】。

解决办法

在VRRP中有一个track功能,默认情况下 VRRP是不监控上行链路的,但是通过track功能后,是可以直接监控上行链路,这样可以避免上面的情况出现。
前提:但是track技术部署的前提就是不能使用接口地址作为VRRP的地址,也就是VRRP的虚拟地址与接口地址不能是同一个,所以这个环境如果要部署track的话,则需要改变下IP地址。 这里只是特备作为提醒存在,因为在实际部署中非常容易忽略这个细节。,所以这里并没有在一开始就这样规划,而是用一个分析进行讲解。

shizhan

这里以VLAN 1举例说明下,track的作用,实际工作中根据需求是否需要部署 来决定,另外还可以关联BFD,NQA等技术关联。
作用的命令是,当G0/0/22(上联接口)出现故障后,自动减低优先级10,也就是变为95,这样的话 B自然抢占为主了。

shizhan

可以看到现在还是为Master

shizhan

当我手动把22号接口关闭后,可以看到VLAN1由 Master变为Backup了,也就是变成了备用。

shizhan

这时候,B成为了Master。
说明:track技术只需要在VLAN部署VRRP为主的情况下调用,备用则不需要。因为主监控上行链路失效后,自然会减低优先级,备用就成为主用了,当主用的链路恢复后,又恢复优先级,则又成为主用。

建议,在工作中可以使用track技术的话,就使用,可以减少很多情况发生,案例也已经改为部署了track方案的,之前没部署,主要是想说明下为什么需要部署track。


修改后的配置

shizhan
shizhan

说明:可以看到之前的Core-A与B的主地址为254的,现在都改为252了,主要是不与VRRP地址是同一个,这样就可以调用track技术了。

shizhan
shizhan

说明:上面的为Core-A的,下面的为Core-B的,可以看到调用了track的都是为Master的,备用不需要调用。


猜你喜欢

转载自blog.51cto.com/ccieh3c/2641288
今日推荐