前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >图解网络:什么是虚拟路由器冗余协议 VRRP?

图解网络:什么是虚拟路由器冗余协议 VRRP?

原创
作者头像
网络技术联盟站
发布于 2022-07-02 15:50:02
发布于 2022-07-02 15:50:02
1.6K0
举报

你好,这里是网络技术联盟站。

VRRP是一种比较常用容错协议,可以提高网络的可靠性,今天瑞哥和大家详细的介绍一下VRRP协议。

让我们直接开始!

什么是VRRP?

  • 英文全称:Virtual Router Redundancy Protocol
  • 中文名称:虚拟路由器冗余协议
  • 协议:IETF – RFC 3768
  • 组播地址:224.0.0.18
  • 网络层协议
  • 协议号:112

VRRP术语

  • VRRP 路由:运行 VRRP 的路由器,可能属于一个或多个虚拟路由器。
  • 虚拟 IP 地址:IP 地址被分配为来自本地子网的虚拟 IP 地址。
  • 虚拟MAC地址:以十六进制的最后8个字节作为VRRP组号,自动生成一个虚拟MAC地址。
  • 主路由器:主路由器是根据优先级选出的,如果 VRRP 组的某个组成员的优先级高于其他组成员,则它将被选为主路由器。
  • 备份路由器: VRRP 组成员中只有一个成为主路由器,其他成员将成为备份路由器,如果主路由器发生故障,则其中一个备用路由器将成为主路由器。

VRRP工作原理

VRRP使用虚拟路由器来控制将哪些物理路由器分配给接入网络,一个 VRRP 组由一个路由器和一个或多个共享虚拟 IP 地址的备份路由器组成,如果主路由器出现故障,VRRP 会自动分配其中一台备用路由器,而不会影响网络流量。当故障路由器再次运行时,它将再次成为主路由器。VRRP 无需用户干预或对网络上的任何设备进行额外配置即可提供这种冗余。

VRRP 主路由器向备份路由器发送 VRRP 通告消息,当 VRRP 主路由器发送通告消息失败时,优先级最高的备份路由器接替成为主路由器。

VRRP正常工作场景
VRRP正常工作场景

如下图所示,有两台虚拟设备,上面的是主路由器,下面的是备份路由器,现在流量正常情况下都是走主路由器:

VRRP正常工作流量流向
VRRP正常工作流量流向

当主路由器发生故障down机的时候:

VRRP主备切换工作场景
VRRP主备切换工作场景

这个时候原来的备份路由迅速成为主路由器,并且流量也切换到备份路由器了,这就是VRRP的强大之处!

VRRP三种状态

VRRP一共有如下三种状态:

Initialize 初始状态

  • Initialize状态代表VRRP 不可用,处于 Initialize 状态的设备无法处理 VRRP 通告报文。
  • 当 VRRP 进程启动时或者设备处于主备状态并检测到故障时,进入初始化状态。

Master 活动状态

  • 路由器获取到虚拟地址。
  • 承担流量转发。

Backup 备份状态

  • 路由器正在启动或准备好获取虚拟地址,以防主设备出现故障。
  • 不会承担流量转发。

VRRP选举机制

如图,再难的技术,只要图一画,就非常清晰明了了!

主要就是要注意下根据优先级选择主路由器:优先级高的路由器被选择为主路由器。

如果两台路由器的优先级相同,则比较接口IP地址,具有较大接口 IP 地址的路由器将被选为主路由器。

其他路由器作为备份路由器,随时监控Master路由器的状态。

如果组内的备份路由器在Master_Down_Interval 时间内没有收到Master 路由器的报文,则切换到主路由器,在有多个备份路由器的VRRP组中,可能会在短时间内产生多个Master路由器,然后将接收到的VRRP报文中的优先级与本地优先级进行比较,选择优先级最高的路由器作为Master路由器。

案例

虚拟路由器组网环境案例——主路由器选举
虚拟路由器组网环境案例——主路由器选举

如图,路由器R1、R2、R3构成一个虚拟路由器VRRP,VRRP的虚拟IP地址为192.168.1.1,由于R1的优先级为100,高于R2的80和R3的60,所以R1为Master路由器,即主路由器,IP地址为为192.168.1.11,R2和R3作为备用路由器,其 IP 地址分别为 192.168.1.12 和 192.168.1.13。

局域网内主机PC1、PC2、PC3的默认网关设置为VRRP虚拟IP地址192.168.1.1,正常情况下,R1作为主路由器,负责将局域网内的报文转发到外网,当路由器A关闭或出现故障时,路由器B或路由器C(根据优先级)作为Backup路由器将成为主路由器,将局域网的报文转发到外部网络,从而维持局域网与外部网络的通信,提高网络可靠性。

现在有几种情况:

R1故障,R2、R3优先级不同
R1故障,R2、R3优先级不同
R1故障,R2、R3优先级不同

如图,由于R1故障,其链路已经置灰,这个时候由于R2的优先级为80,高于R3的60,所以R2为主路由器,R3还是备份路由器。

R1故障,R2、R3优先级相同
R1故障,R2、R3优先级相同
R1故障,R2、R3优先级相同

如图,R2和R3的优先级都为80,这个时候比较的是IP地址的大小,由于R3的Ip地址为192.168.1.13高于Ip地址为192.168.1.12的R2,因此R3为主路由器,R2为备份路由器。

注意:VRRP 在以下任何一种情况下都会拒绝数据包: 1. 路由器和传入数据包的身份验证方案不同。 2. 路由器和传入数据包的 MD5 摘要不同。 3. 路由器和传入数据包上的验证字符不同。

VRRP其他小点

VRRP抢占

VRRP 抢占在默认情况下处于启用状态,这会启用更高优先级的虚拟路由器备份,该备份可以从被选为虚拟路由器主控的虚拟路由器备份中接管,如果禁用抢占,则被选为虚拟路由器主控的虚拟路由器备份保持主控状态,直到原来的虚拟路由器主控恢复并再次成为主控。

VRRP 版本

VRRP有两个版本:版本2、版本3.

其中版本2被广泛使用。

  • VRRPv2:支持 IPv4
  • VRRPv3:支持 IPv4 和 IPv6
VRRP抓包——版本信息
VRRP抓包——版本信息

VRRP认证

VRRP 提供了许多身份验证来确保运行 VRRP 的基础设施免受恶意攻击,一般身份验证有两种:

VRRP认证
VRRP认证

默认情况下不开启认证。

VRRP认证抓包
VRRP认证抓包

如图抓包展示,未开启认证。

VRRP优点

  • VRRP 在网络网关处提供故障转移/冗余。
  • 没有单点故障,因为备用设备配置为在主设备发生故障时接管。
  • 故障转移发生得很快(通常在几秒钟内)。
  • VRRP 用于主动-被动(主-备份)配置,也可以配置为具有负载平衡的 Active-Active 配置。
  • VRRP 是 IETF 开放标准协议,因此,多个供应商/多种类型的设备可以成为 VRRP 组的一部分。
  • 主网关设备可以有多个备用设备。

总结

虚拟路由器冗余协议 (VRRP) 为一组路由器提供一个虚拟 IP 地址,VRRP 可以与不同厂商的路由器一起使用,并且 VRRP 支持消息摘要 5 (MD5) 身份验证。

VRRP 是一种开放标准的 IEEE 协议,它使一组路由器能够形成单个虚拟路由器,使用 VRRP,几个路由器被组合在一起,看起来就像网络的一个默认网关。在网络中提供冗余,消除了静态默认路由环境固有的单点故障。

VRRP是一种网络层协议,协议号为 112,组中的路由器数量充当虚拟逻辑路由器,充当所有本地主机的默认网关,如果任何路由器出现故障,其他组成员可以承担转发流量的责任。

本文瑞哥主要介绍了:

  • 什么是VRRP?
  • VRRP术语
  • VRRP工作原理
  • VRRP三种状态
    • Initialize 初始状态
    • Master 活动状态
    • Backup 备份状态
  • VRRP选举机制
    • 案例
  • VRRP其他小点
    • VRRP抢占
    • VRRP 版本
    • VRRP认证
  • VRRP优点

感谢您的阅读,有任何问题,欢迎在下方评论区与我讨论!!!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
基础算法---滑动窗口
滑动窗口(Sliding Window)是一种在计算机科学中用于解决各种子数组或子字符串问题的技术。滑动窗口技术通过维护一个固定大小的窗口在数组或字符串上移动,从而使得可以在较短的时间内解决一些复杂的问题。这种方法在处理一系列数据时特别高效。滑动窗口(Sliding Window)是一种在计算机科学中用于解决各种子数组或子字符串问题的技术。滑动窗口技术通过维护一个固定大小的窗口在数组或字符串上移动,从而使得可以在较短的时间内解决一些复杂的问题。这种方法在处理一系列数据时特别高效。
用户11305458
2024/10/09
7990
基础算法---滑动窗口
深入理解滑动窗口算法及其经典应用
滑动窗口技术通常用于解决子数组或子串相关的问题。其主要思想是在数组或字符串上维持一个固定的窗口大小,或在特定条件下调整窗口大小,从而在窗口内进行高效的计算。滑动窗口技术可以帮助我们在O(n)的时间复杂度内解决一些需要遍历整个数组或字符串的问题。 滑动窗口的基本步骤包括:
DevKevin
2024/08/29
3960
有点难度,几道和「滑动窗口」有关的算法面试题
滑动问题包含一个滑动窗口,它是一个运行在一个大数组上的子列表,该数组是一个底层元素集合。
五分钟学算法
2019/05/06
9640
有点难度,几道和「滑动窗口」有关的算法面试题
[享学Netflix] 二十一、Hystrix指标数据收集(预热):滑动窗口算法(附代码示例)
代码下载地址:https://github.com/f641385712/netflix-learning
YourBatman
2020/03/19
1.4K0
[享学Netflix] 二十一、Hystrix指标数据收集(预热):滑动窗口算法(附代码示例)
【优选算法篇】一文读懂滑动窗口:动态调整范围的算法利器(上篇)
滑动窗口(Sliding Window)是一种高效的算法思想,广泛应用于数组和字符串问题,特别是涉及子数组、子字符串、窗口内统计等场景。它的重要性在于:
熬夜学编程的小王
2024/12/24
1.5K0
【优选算法篇】一文读懂滑动窗口:动态调整范围的算法利器(上篇)
【优选算法】Sliding-Chakra:滑动窗口的算法流(上)
把一个较长的序列(比如数组、字符串等),划分成一个个固定长度或者动态长度的 “子序列”,这个子序列就被称作窗口 。好比通过一个固定大小的窗框在一幅长画卷上逐步移动,每次窗框圈定的部分就是一个窗口内容,窗口会按照特定的规则在序列上 “滑动”,常见的是每次移动一个元素的位置,新元素进入窗口,同时最靠前的旧元素移出窗口,借此不断更新窗口内的数据集合
DARLING Zero two
2024/12/28
1660
【优选算法】Sliding-Chakra:滑动窗口的算法流(上)
滑动窗口算法通用思想
本文详解「滑动窗口」这种高级双指针技巧的算法框架,带你秒杀几道难度较大的子字符串匹配问题:
全栈程序员站长
2022/11/16
4600
初识算法 · 滑动窗口(1)
本文开始,介绍的是滑动窗口算法类型的题目,滑动窗口本质上其实也是双指针,但是呢,前文介绍的双指针是二者相向移动的:
_lazy
2024/10/16
1140
初识算法 · 滑动窗口(1)
我写了套框架,把滑动窗口算法变成了默写题
东哥带你手把手撕力扣~ 作者:labuladong 公众号:labuladong 若已授权白名单也必须保留以上来源信息 我有预感本文要火,所以先罗列一下我们号的所有算法套路集锦文章: 数据结构和算法学习指南 动态规划框架套路详解 回溯算法框架套路详解 BFS算法框架套路详解 二分搜索框架套路详解 双指针技巧套路汇总 滑动窗口框架套路详解(本文) 目前来说,以上几篇文章属于我们的镇号之宝,一直被其他人模仿,然而从未被超越。🤔 言归正传,鉴于前文 我作了首诗,保你闭着眼睛也能写对二分查找 的那
labuladong
2021/09/23
5500
JavaScript刷LeetCode拿offer-滑动窗口
《JavaScript刷LeetCode拿offer-双指针技巧》中,简单地介绍了双指针技巧相比较单指针的优点,以及结合 Easy 难度的题目带大家进一步了解双指针的应用。
hellocoder2028
2022/11/01
3120
leetcode 1208. 尽可能使字符串相等-----滑动窗口篇五,前缀和篇一,二分篇一
枚举 s 的所有子串,判断当前和 t 中的子串的「汉明距离」总和是否不大于 maxCost ,更新最大长度即可。
大忽悠爱学习
2021/11/15
6940
精读《算法 - 滑动窗口》
滑动窗口算法是较为入门题目的算法,一般是一些有规律数组问题的最优解,也就是说,如果一个数组问题可以用动态规划解,但又可以使用滑动窗口解决,那么往往滑动窗口的效率更高。
黄子毅
2022/03/15
6470
精读《算法 - 滑动窗口》
leetcode必备算法:聊聊滑动窗口
我们刷leetcode的时候,经常会遇到滑动窗口类型题目。滑动窗口问题非常经典,也很有技巧性,一般大厂也喜欢问。今天跟大家一起来学习滑动窗口的套路,文章如果有不正确的地方,欢迎大家指出哈,感谢感谢~
捡田螺的小男孩
2021/11/15
1.7K0
leetcode必备算法:聊聊滑动窗口
【优选算法篇】滑动窗口的艺术:如何动态调整子区间解决复杂问题(中篇)
接上篇:【优选算法篇】一文读懂滑动窗口:动态调整范围的算法利器(上篇)-CSDN博客
熬夜学编程的小王
2024/12/24
2080
【优选算法篇】滑动窗口的艺术:如何动态调整子区间解决复杂问题(中篇)
【刷题】滑动窗口入门
滑动窗口算法的基本思想是使用双指针(有时也可能使用更多指针)来表示窗口的边界。在每一步中,我们可以根据特定条件来移动窗口的边界,并更新所需的统计信息。
叫我龙翔
2024/03/20
1600
【刷题】滑动窗口入门
滑动窗口算法学习
给一组大小为n的整数数组,计算长度为k的子数组的最大值 比如:数组{1,2,3,4,5,7,6,1,8},k=2,那么最终结果应该是7+6=13最大。 最简单的是使用两层遍历,通过所有情况找出最大的一个子数组,时间复杂度O(N^2) 使用滑动窗口,从[0,k-1]的一个窗口,记录其总和,然后窗口向右移动到[1,k],再到[2,k+1],直到数组的最尾端,找出里面总和最大的一个窗口,这样的解法就是滑动窗口算法。
全栈程序员站长
2022/11/01
2610
滑动窗口算法的基本思想、应用场景、实现方法、时间复杂度和常见问题
滑动窗口算法(Sliding Window)是一种常用的双指针算法,被广泛应用于字符串和数组等数据结构中的子串或子数组问题,例如字符串匹配、最长子串、最小覆盖子串等问题。滑动窗口算法可以优化暴力枚举的时间复杂度,使得算法的执行效率更高。
网络技术联盟站
2023/06/04
3.3K0
【c++算法篇】滑动窗口
滑动窗口是一种常用的算法技术,它适用于需要检查序列(如数组或字符串)中的一系列连续元素的问题。通过维护序列中的一段特定大小的连续元素集,滑动窗口减少了不必要的重复计算,从而优化了性能。这种技术经常用于求解最大或者最小总和、长度满足特定条件的子串或子数组的问题。
用户11029103
2024/05/24
2650
【c++算法篇】滑动窗口
【算法专题】滑动窗口
找出该数组中满足其和 ≥ target 的长度最小的 连续子数组[numsl, numsl + 1, …, numsr - 1, numsr] ,并返回其长度。 如果不存在符合条件的子数组,返回 0 。
YoungMLet
2024/03/01
1510
2023-04-03:如何使用滑动窗口算法和回溯算法解决亚马逊面试题——最长连续相同元素子序列问题?
比如数组arr = { 3, -2, 3, 3, 5, 6, 3, -2 }, k = 3
福大大架构师每日一题
2023/04/03
3000
2023-04-03:如何使用滑动窗口算法和回溯算法解决亚马逊面试题——最长连续相同元素子序列问题?
推荐阅读
相关推荐
基础算法---滑动窗口
更多 >
LV.1
这个人很懒,什么都没有留下~
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档