热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【#9733;】交换层网关协议大总结!

网关冗余与负载分担读这篇文档之前,请读者先理清有关的专业术语和名词,尤其其中的同义词和并列词。还要知道,人们之所以把计算机中的一些非常简单

网关冗余与负载分担

读这篇文档之前,请读者先理清有关的专业术语和名词,尤其其中的同义词和并列词。

还要知道,人们之所以把计算机中的一些非常简单的逻辑复杂化,形成一个难以理解的协议,是由于“电脑实在没人脑聪明”,cpu对逻辑语言的计算能力实在有限,所以只能把一个简单逻辑拆分成更多更简单的逻辑让计算机识别。

网关的概念在企业网中有多种含义,本章主要探索交换层(本地接入网)的网关。

首跳冗余性协议FHRP(first hop redundancy protocols)包括:

1.热备份路由器协议HSRP(hot standby router protocol)。

2.虚拟路由冗余协议VRRP(virtual router redundancy protocol)

3.网关负载均衡协议GLBP(gateway load balancing protocol)。

它们是工作在接入层与汇聚层(交换与路由)之间的网关路由器或多层交换机上的网关协议。其中HSRPVRRP的功能机制基本相同但只能实现网关备份,GLBP既能备份网关又能均衡负载(充分利用资源)。

先给大家普及一下需要用到的底层知识:

一般来说,一个网段就是一个子网(即使某一主类网没划分子网,它也可以看成是一子网网段)。一般一个子网内有以下设备:若干个主机,若干个二层交换机,若干个网关(它们是分层的,即交换机连接主机和网关)。可以看出,一个子网网络属于交换层,在子网中流量是通过mac地址来“寻路”的(子网内的主机之间通讯前通过发送arp广播来获取对方mac),其中交换机帮助转发流量。当主机想要与子网外的PC或服务器通讯,它不需要知道对方的mac,只要知道该子网的网关mac(由arp获得)就行,将信息流量发给网关,剩下的事情交给网关解决就行(路由到其他子网)。所以一台主机刚开始需要知道自身ip地址,对方电脑ip地址以及网关ip地址这三个基本信息才能正常通讯。

然后暂且先附上一张关于三个协议的表格(方便之后返回查看):

HSRP

VRRP(模仿HSRP)

GLBP

思科私有RFC2281

IEEE标准RFC3768

思科私有

UDP1985

IP协议112(端口号)

UDP3222

224.0.0.2

224.0.0.18(通告地址)

224.0.0.102

每组通常2台网关

最多16个网关

最多4个网关

最多16组?

最多255组(每个路由器)

最多1024

0000.0c07.acXX

0000.5e00.01XX(虚拟mac)

0007.b4XX.XXYY

1个活跃和备份(其余候选)

1个主用,若干备用

1AVG若干AVF

一个ip一个mac

一个ip一个mac

一个ip多个mac

虚拟ip与接口ip不同

虚拟ip可与接口ip相同

虚拟ip与真接口ip不同

可追踪接口或对象

只可追踪对象

只可追踪对象

默认hello 3s,hold 10s

默认hello 1s,有skew时间

默认hello 3s,hold 10s

明文认证

/密文认证

明文认证

好了,先来聊聊HSRPVRRP。理想化的情况下子网中有一台路由器充当网关,它的一个接口的ip充当网关ip。为了防止单点故障,子网中又添加了几个备用网关(处于闲置状态)。为了使故障发生后其中一个备用网关能够自动切换成主用(活跃)网关,才诞生了这两个网关冗余协议。

因为站在子网内的主机的角度,子网内只能存在一个网关,不然流量就不知道该发向哪一个网关了(不知为什么,交换层不能自动负载均衡,必须选出唯一的路径,而路由表中只要ADmetric相同就会出现负载均衡)(优先级相同就比较接口ip)。所以这个冗余机制的基本思想是:将多个路由器组合成一个虚拟网关(一个备份组),它有一个虚拟ip和一个虚拟mac。子网内的主机们只知道有一个(虚拟)网关的存在,并不知情真实网关的情况。而所有通往子网外的流量只经过这个组中的某一个路由器(竞选选出)。其余备份网关处于不工作状态但一直监听active/master的工作状态,在必要时刻替代它的角色。

HSRPVRRP的三个重要区别:

一:HSRP组内通常只放2台网关,一台active一台standby,若不止两台,再添入的网关都保持在初始状态(可以给备份做备份,但客户难以接受);VRRP中却有一台master和若干个backup

二:备份组正常运行时activestandby之间默认间隔3秒相互发送hello包(包含:active信息,standby信息,自身信息,认证口令,时间参数等信息)(有点类似BPDU)(组播地址映射mac地址)以维护组内关系,而master默认间隔一秒向外发送hello包,backup只接收不发送。

三:standby的默认holdtime3*3+1=10秒(可手动改),backup的默认holdtime=3*1+(skew)秒,其中skew=(256-priority)/256(取值范围01,与优先级反比)。!!注意,此区别与前两个区别有重要联系,以为HSRP组中只有一台standby,holdtime到期后自觉上任,但VRRP组中有多个backup,holdtime到期后并不要竞选出某一个去上任,因为优先级最大的backupholdtime最小!

此外HSRP默认关闭抢占而VRRP默认开启,所谓的的抢占机制就是确保备份组中优先级最大的网关成为active/master(前提是网关连接子网的接口没有出错,即可以向其他网关发送hello包)。在非抢占情况下备份网关收到active/masterhello包中更大的优先级也不会去抢占它。给一副拓扑图:

【】交换层网关协议大总结!



该图也适用于glbp。接下来实现网关备份的具体过程:

若这些PCip都在同一个子网内,那给这个子网分配一个网关备份组(组编号)将若干路由器(不同协议有数量限制)加入到这个组中给这个组分配唯一的一个虚拟ip(即该子网内随便一个主机号),系统给这个组自动分配一个虚拟mac(注:虚拟ip可以与路由器接口真实ip在同一子网,也可以是接口真实ip所在子网下再划分的子网的主机号~)。将每台PC的网关ip都手动设置成这个虚拟ip(因为在交换层“寻路”都是通过mac地址,PC解析这个ip时,备份组回复给它虚拟mac值,同时备份组告诉交换机这个虚拟mac指向active/master)(!!!二层交换机“寻路”依靠mac地址表中的三个条目:PCmac,网关接口mac,邻居交换机接口mac),由此PC向外通讯都将数据帧中目的mac字段值写为该虚拟mac

    Active/master有两种情况被取代。第一种情况:因备份网关的holdtime到期后接任;第二种情况:Active/master所追踪的对象“挂了”导致自降优先级至小于某台开启了抢占的备份机,于是被抢占。

    当然,这幅物理拓扑图可以按组划分为多幅逻辑图,即有多个子网多个备份组,一台PC只能加入一个组但一个网关可以加入到多个组中。!注:若网关是多层交换机则可以使用SVI(switch virtual interface),为每个vlan安排一个备份组,在SVI下设置ip

!!补充实验:

问题描述:子网内只有一个多层交换机充当网关,要实现网关的链路冗余,即使用EC将连接多层交换机的两个接口捆绑在一起(路由器貌似做不到)。拓扑图:

【】交换层网关协议大总结!

这是用Packet Tracer模拟实验的截图,可以看出,子网中只有vlan1但出现了“环路”,其实是因为EC逃避了stp计算(注:EC只能在交换网中玩儿)。

GLBPGLBP除了提供冗余还可以让组中所有成员共同承担流量的转发。它的具体思想如下:

前期与HSRP一样,将多个物理网关加入到一个备份组中。组中的成员都叫AVF(active virtual forwarder)(顾名思义,所有AVF都负责转发数据),其中某一个AVF还叫做AVG(active virtual gateway)(竞选而来)。该组有一个虚拟ip但有多个虚拟mac地址:AVG给每个AVF分配一个虚拟mac。当备份组对应的子网内的某个PC解析虚拟ip时,AVG返回其中的一个虚拟mac

这里有一个简单易懂的循环负载分担算法:当收到一个个PC发来的arp时,AVG在自己的虚拟mac列表中按顺序循环的分发这些地址给PC,以保证每个AVF所负责的PC数量相同(或相差不超过一台)。

其实用HSRPVRRP也能实现负载分担,方法是:将多个物理网关共同加入到多个组,每个组虚拟ip都属于同一个子网,物理网关在不同组有不同角色,为每个PC分配不同的网关ip(其实一个子网可以有多个网关,关键看给PC设置的网关ip,但一个PC只能有一个对应网关)。但这个方法配置工作量很大,因此才出现了GLBP

!!!补充知识:

【1】      FHRP的配置都是在接口下(除了多层交换机的svi)。网关因此知道,这个接口连接的是该接口ip所在的子网。

【2】      FHRP的认证机制是为了防止恶意网关加入到某个备份组中。和动态路由协议的认证原理相同,都是相互hello时自动进行的。

【3】      当某vlan生成树的根桥与该vlan热备份组的active/master不是同一台多层交换机时,可能会产生次优路径(同理于没有备份组只有唯一网关的子网)。

【4】      数据流量从互联网回来的时候,可能从active/master走也可能从备份网关走(假如它们都将子网宣告进路由协议)。

    以上就是FHRP机制原理详解。若发现遗漏或错误之处,还请自行纠正。欲求更多信息请登录思科官网查询。(www.cisco.com)




推荐阅读
  • 服务器虚拟化存储设计,完美规划储存与资源,部署高性能虚拟化桌面
    规划部署虚拟桌面环境前,必须先估算目前所使用实体桌面环境的工作负载与IOPS性能,并慎选储存设备。唯有谨慎估算贴近实际的IOPS性能,才能 ... [详细]
  • 本文探讨了如何在PHP与MySQL环境中实现高效的分页查询,包括基本的分页实现、性能优化技巧以及高级的分页策略。 ... [详细]
  • 在Cisco IOS XR系统中,存在提供服务的服务器和使用这些服务的客户端。本文深入探讨了进程与线程状态转换机制,分析了其在系统性能优化中的关键作用,并提出了改进措施,以提高系统的响应速度和资源利用率。通过详细研究状态转换的各个环节,本文为开发人员和系统管理员提供了实用的指导,旨在提升整体系统效率和稳定性。 ... [详细]
  • 本文详细介绍了Oracle 11g中的创建表空间的方法,以及如何设置客户端和服务端的基本配置,包括用户管理、环境变量配置等。 ... [详细]
  • Irish budget airline Ryanair announced plans to significantly increase its route network from Frankfurt Airport, marking a direct challenge to Lufthansa, Germany's leading carrier. ... [详细]
  • CentOS下ProFTPD的安装与配置指南
    本文详细介绍在CentOS操作系统上安装和配置ProFTPD服务的方法,包括基本配置、安全设置及高级功能的启用。 ... [详细]
  • 本文详细介绍了如何在 Node.js 环境中利用 Nodemailer 库实现邮件发送功能,包括环境配置、代码实现及常见问题解决方法。 ... [详细]
  • 本文将深入探讨 Unreal Engine 4 (UE4) 中的距离场技术,包括其原理、实现细节以及在渲染中的应用。距离场技术在现代游戏引擎中用于提高光照和阴影的效果,尤其是在处理复杂几何形状时。文章将结合具体代码示例,帮助读者更好地理解和应用这一技术。 ... [详细]
  • JUC并发编程——线程的基本方法使用
    目录一、线程名称设置和获取二、线程的sleep()三、线程的interrupt四、join()五、yield()六、wait(),notify(),notifyAll( ... [详细]
  • 1、形成邻居条件:1)区域ID相同;2)hello,dead时间一致;3)认证&# ... [详细]
  • 本文介绍了两种有效的方法来解决DataSnap支持的Tcp长连接数受限的问题。方案一通过代理服务器实现负载均衡,方案二则利用多进程技术提升连接数。 ... [详细]
  • 本文详细介绍了如何在Linux系统中使用nslookup命令查询DNS服务器地址,这对于Linux服务器的运维管理是非常重要的基础知识。 ... [详细]
  • MOSS2007 中型服务场配置指南:网络负载均衡集群设置
    本文详细介绍了如何在MOSS2007环境中配置网络负载均衡集群,包括安装和配置网络负载均衡功能的具体步骤。通过本文,读者可以了解如何在多台Web服务器上安装并配置网络负载均衡,以实现高效的服务分发。 ... [详细]
  • 直播带货系统中的推流技术详解
    本文介绍了RTMP(实时消息传输协议)及其在直播带货系统中的应用,并详细探讨了带货直播系统的连麦方案,包括服务端合流和客户端合流的优势与劣势。 ... [详细]
  • 提升 Kubernetes 集群管理效率的七大专业工具
    Kubernetes 在云原生环境中的应用日益广泛,然而集群管理的复杂性也随之增加。为了提高管理效率,本文推荐了七款专业工具,这些工具不仅能够简化日常操作,还能提升系统的稳定性和安全性。从自动化部署到监控和故障排查,这些工具覆盖了集群管理的各个方面,帮助管理员更好地应对挑战。 ... [详细]
author-avatar
认知天下微博
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有