1 拓扑与说明
某公司的网络架构,这样的架构在目前的网络中是在常见的,假设您接收一个这样的网络,应该如何部署,该实战系列,就是一步一步讲解,如何规划、设计、部署这样一个环境,这里会针对不同的情况给出不同的讲解,比如拓扑中有2个ISP,假设客户需求是,想实现主备的效果,又或者是想负载分担。DHCP部署在防火墙上面或者是单独的服务器上面又该如何配置部署。
作者:网络之路一天 首发公众号:网络之路博客(ID:NetworkBlog)
2 分析说明
5.1分析说明
5.1.1 MSTP技术实现的效果
STP可以有三种,一种为最先的STP、后续增强的RSTP,以及目前主流的MSTP,不使用STP与RSTP的原因其实很简单,因为它只能做到单一链路传输,而不能实现跟MSTP以实例的方式实现负载负担。
以访客厅为例,该交换机下面有VLAN 1与VLAN 19的流量,如果我们部署的是STP或者RSTP的话,则我们VLAN 1与VLAN 19的流量,要么从左边的链路传递给核心交换机转发,要么从右边的网络传递给核心交换机转发,这样的话,白白的浪费了一条链路带宽,如果VLAN流量比较多的话,则造成的情况是,一条链路拥塞,另外一条链路则没有任何流量经过。而MSTP实现的是,以多个VLAN为一个实例,不同的实例可以实现不同的链路转发,假设访客厅有20个VLAN,则可以实现10个VLAN走左边链路,而另外10个VLAN走右边链路,这样充分的利用了链路的带宽,也减少出现拥塞的几率。
5.1.2 链路聚合实现的效果
在这个案例中,部署了链路聚合的链路就是在两台核心交换机之间部署了,核心交换机之间加入这条线路的作用是,后续的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,这样中间转发又延迟了,也增加了设备的处理负担。
3 具体配置
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分担会更加有效率。
4 MSTP配置
分析:之前已经分析过MSTP与VRRP配合的时候要主备统一,而在规划的时候已经规划好了对应的VLAN IP谁为主,谁为备用,所以我们这里根据VRRP的定义来定义MSTP即可。
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相反。
5 访客厅、高层人员、财务 服务器集群、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计算出错。
6 结果验证【以高层人员、Core-A为例】
高层人员上面可以看到实例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这条链路,实现复杂分担。
Core-A上面接口比较多,但是不会出现阻塞的效果,因为它在实例1与实例2中,不是主就是备,所以不会出现阻塞的接口,阻塞接口只会出现在接入层,比如高层人员的设备上面,看到的上联接口有一个是阻塞的。
7 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地址即可。
8 结果验证
可以看到所有的状态都是正常的,跟PC测试,在后续的DHCP分配后,可以测试使用。
9 存在一个大问题(容易被忽略)
分析:这里VRRP配置了,正常情况下是没任何问题的,就算中间和下面的链路断了,是不会出现什么问题的,VRRP不会有影响,但是如果上面的链路端了,也就是连接防火墙的,那么则会出现一个问题,就是次优路径。
上面配置可以得到 VLAN1的默认网关在A上面,而B则是备用,当A的上行链路出现故障后,VRRP是不会感知到的,所以还是会正常转发数据,但是上联链路已经失效了,这时候当一个数据包过来需要A进行转发给出口防火墙的时候,由于上行链路出现故障,那么这时候则只能通过A与B之间的链路传递给B,B这时候只做一个透传的作用,然后传给防火墙,防火墙在转发给外网,外网回包后,防火墙这时候需要回应数据包了,它回应给的是网关地址,也就是VLAN 100做的VRRP网关,正常情况下是直接转发给A的,但是这时候与A的链路断了,只能通过转发给B,然后由B在转发给A进行处理,所以这时候,数据包的路径并不是最优的,这样造成的后果就是,加重B设备的处理能力,与B与A之间的链路带宽【这里有链路聚合,带宽还不会被阻塞】。
(PS:后续会涉及到防火墙的知识点,这边属于华为防火墙学习最好的,不管是理论点、实验、还是排错都分析的很好)
10 解决办法
在VRRP中有一个track功能,默认情况下 VRRP是不监控上行链路的,但是通过track功能后,是可以直接监控上行链路,这样可以避免上面的情况出现。
前提:但是track技术部署的前提就是不能使用接口地址作为VRRP的地址,也就是VRRP的虚拟地址与接口地址不能是同一个,所以这个环境如果要部署track的话,则需要改变下IP地址。这里只是特备作为提醒存在,因为在实际部署中非常容易忽略这个细节。,所以这里并没有在一开始就这样规划,而是用一个分析进行讲解。
这里以VLAN 1举例说明下,track的作用,实际工作中根据需求是否需要部署 来决定,另外还可以关联BFD,NQA等技术关联。
作用的命令是,当G0/0/22(上联接口)出现故障后,自动减低优先级10,也就是变为95,这样的话 B自然抢占为主了。
可以看到现在还是为Master
当我手动把22号接口关闭后,可以看到VLAN1由 Master变为Backup了,也就是变成了备用。
这时候,B成为了Master。
说明:track技术只需要在VLAN部署VRRP为主的情况下调用,备用则不需要。因为主监控上行链路失效后,自然会减低优先级,备用就成为主用了,当主用的链路恢复后,又恢复优先级,则又成为主用。
建议,在工作中可以使用track技术的话,就使用,可以减少很多情况发生,案例也已经改为部署了track方案的,之前没部署,主要是想说明下为什么需要部署track。
修改后的配置
说明:可以看到之前的Core-A与B的主地址为254的,现在都改为252了,主要是不与VRRP地址是同一个,这样就可以调用track技术了。
说明:上面的为Core-A的,下面的为Core-B的,可以看到调用了track的都是为Master的,备用不需要调用。
作者:网络之路一天 首发公众号:网络之路博客(ID:NetworkBlog)
标签:华三,Core,region,VLAN,MSTP,VRRP,链路 From: https://blog.51cto.com/ccieh3c/11930443