ROS VRRP软路由双线组网方式

虚拟路由冗余协议 Virtual Router Redundancy Protocol (VRRP),MikroTik RouteROS

VRRP 协议遵循 RFC 2338

VRRP 协议是保证访问一些资源不会中断,即通过多台路由器组成一个网关集合,如果其中一台路由器出现故障,会自动启用另外一台。两个或多个路由器建立起一个动态的虚拟集合,每一个路由器都可以参与处理数据,这个集合最大不能超过255 个虚拟路由器(可参考虚拟路由协议)。一般现在的路由器都支持该协议。

许多 VRRP 路由器可用组成一个虚拟路由器集合。在一个网络中最大可用支持相同VRID(虚拟路由 ID)255 个。

每个路由器都必须设置一个优先参数,每个 VRRP 配置通一个虚拟的网卡绑定在一个真实的网卡上。VRRP 地址放入虚拟的 VRRP 网卡上。VRRP Master 状态显示为 running 标志,虚拟网卡上的地址被激活,其他属于 backup(即优先级低的 VRRP 路由)停止运行

虚拟路由冗余协议是一种为路由提供高效率的路由选择协议。一个或多个 IP 地址可以

分配到一个虚拟路由上,一个虚拟路由节点应该具备以下状态:

  • MASTER 状态

一个节点回答所有的请求给相应请求的 IP 地址。仅只有一个MASTER 路由器在虚拟路由中。每隔一段时间这个主节点发出 VRRP 广播包给所有backup 路由器。

  • BACKUP 状态

VRRP 路由器监视 Master 路由器的状态。它不会回答任何来至相应 IP 地址的请求,当 MASTER 路由器无法工作时(假设至少三次 VRRP 数据连接丢失),选择过程发生,新的 MASTER 会根据优先级产生。

注:VRRP 不能运行在 VLAN 接口上,VLAN 的接口 MAC 地址于与运行在物理网卡 MAC 地址是不同的 。

以上是关于 VRRP 协议的简介,这里我们利用 VRRP 协议组成双线接入的网络,原理如下:

ROS 允许多个路由器加入一个 VRRP 组,其中 master 路由器负责转发数据,backup路由器处于闲置状态,这样会造成资源浪费。

同时,ROS 允许一个路由器加入多个 VRRP组,故可设置多个备份组来实现负载均衡和冗余。例:


由上图可以看出, ROS1 路由器在组 1 中是 master ,在组 2 中是 backup , ROS2 同理。
一部分计算机网关指向组 1 ,一部分计算机网关指向组 2 ,两台路由器互为备份,在两台正
常时,各自负担一部分流量,当一台出现问题时,另一台会自动补上,数据传输不受影响。
经过以上原理的整理,现在组网实验如下:

电信联通pppoe双线接入,ROS1 ROS2互为备份,网段172.16.1.10-172.16.1.100接入ROS1,

网段 172.16.1.101-172.16.1.201 接入 ROS2。设置如下:先各自配置能正常上网然后进行下面

步骤

ROS 1:
第一步 :interface----vrrp,设置 name,interface,priority(默认 100,设置 110 是为了将这

个路由器设为主路由器),preemption mode 为抢占模式。


继续添加第二个 vrrp :设置 name , interface=lan1 , priority=100 (使其变为组 2 的备份路由
器),其他不变

第二步:设置 IP 地址


ROS 2
第一步、第二步仿照 ROS1 的设置。
只是在设置 vrrp1 的时候 priority=100 , vrrp2 的 priority=110 , 这样,vrrp1 组中 ROS1 是 master 路由器, ROS2 是 backup 路由器, vrrp2 中 ROS1 是 backup 路由器,ROS2 是 master 路由器。
通过以上步骤的设置, ROS1 和 ROS2 就互为备份,负载均衡。
上面的设置是当 lan 和 lan1 出问题的时候,ROS1 和 ROS2 可以平稳的过度,实现内外网互通,
但是当连接外网的网卡出问题时,这个备份方式将出问题,因为拿 ROS1 来说,lan 没问题,
但 wan 口掉线了,vrrp1 建立在 lan 口上,priority 还是 110,这意味着在 vrrp1组中 ROS1 还是
主路由器,这样以 172.16.1.3 为网关的一部分机器将不能上网。为了解决这个问题,我们要建立
wan 口监控,设置方式如下:


因为是通过 pppoe 拨号上网方式,host 的值会经常变,所以还要添加一条计划
任务 system -->scheduler,add name=vrrp1_netwatch,interval 设 1 分钟,
onevent 脚本如下:

vbscript 复制代码
:global new 
:global status 
:set status [/interface get [/interface find name="adsl" ] running] 
:if ($status=true) do={ 
:set new [/ip address get [/ip address find dynamic=yes interface="adsl"] 
address] 
:set new [:pick $new 0 ([:len $new] -3)] 
 /tool netwatch set [/tool netwatch find comment="vrrp1_netwatch"] 
host=$new 
}

Vrrp1 中 ROS1 是主路由器,故在 ROS1 中设置以上内容。
Vrrp2 中 ROS2 是主路由器,仿照以上内容修改一下即可。

好了,今天的教程至此为此。

相关推荐
小小小汐-几秒前
【linux】高级IO
linux·网络
Peter_chq1 小时前
【计算机网络】HTTP协议
linux·c语言·开发语言·网络·c++·后端·网络协议
德希智慧水利水务1 小时前
河道水位流量一体化自动监测系统:航运安全的护航使者
网络·人工智能·算法·信息可视化
小屁孩大帅-杨一凡2 小时前
python获取本地电脑的ip和mac地址
java·服务器·网络·python·tcp/ip
琢瑜2 小时前
TCP 三次握手和四次挥手
网络·网络协议·tcp/ip·linux网络编程
hgdlip2 小时前
如何判断一个ip是多播地址
服务器·网络·tcp/ip·多播ip地址
斯普信专业组2 小时前
RabbitMQ实战启程:从配置到故障排查的实战处理(下)
网络·分布式·rabbitmq
yaoxin5211232 小时前
第二十六章 TCP 客户端 服务器通信 - $ZB 和 READ 命令
服务器·网络·tcp/ip
晚渔声3 小时前
【网络】网络抓包与协议分析
开发语言·网络·wireshark
架构师Wu老七3 小时前
【软考】系统架构设计师-信息安全技术基础
网络·安全·web安全·软考·系统架构设计师