目录
一 HSRP协议
二 HSRP的工作原理
三 HSRP的概念
四 配置HSRP
五 HSRP的状态
六 HSRP的用途
HSRP简介:
HSRP:热备份路由器协议(HSRP:Hot Standby Router Protocol),是cisco平台一种特有的技术,是cisco的私有协议。
该协议中含有多台路由器,对应一个HSRP组。该组中只有一个路由器承担转发用户流量的职责,这就是活动路由器。当活动路由器失效后,备份路由器将承担该职责,成为新的活动路由器。这就是热备份的原理。
实现HSRP的条件是系统中有多台路由器,它们组成一个"热备份组",这个组形成一个虚拟路由器。在任一时刻,一个组内只有一个路由器是活动的,并由它来转发数据包,如果活动路由器发生了故障,将选择一个备份路由器来替代活动路由器,但是在本网络内的主机看来,虚拟路由器没有改变。所以主机仍然保持连接,没有受到故障的影响,这样就较好地解决了路由器切换的问题。
为了减少网络的数据流量,在设置完活动路由器和备份路由器之后,只有活动路由器和备份路由器定时发送HSRP报文。如果活动路由器失效,备份路由器将接管成为活动路由器。如果备份路由器失效或者变成了活跃路由器,将由另外的路由器被选为备份路由器。
在实际的一个特定的局域网中,可能有多个热备份组并存或重叠。每个热备份组模仿一个虚拟路由器工作,它有一个Well-known-MAC地址和一个IP地址。该IP地址、组内路由器的接口地址、主机在同一个子网内,但是不能一样。当在一个局域网上有多个热备份组存在时,把主机分布到不同的热备份组,可以使负载得到分担。
一 HSRP协议
热备份路由器协议(HSRP)的设计目标是支持特定情况下 IP 流量失败转移不会引起混乱、并允许主机使用单路由器,以及即使在实际第一跳路由器使用失败的情形下仍能维护路由器间的连通性。实现HSRP的条件是系统中有多台路由器,它们组成一个"热备份组",这个组形成一个虚拟路由器。换句话说,当源主机不能动态知道第一跳路由器的 IP地址时,HSRP 协议能够保护第一跳路由器不出故障。
二 HSRP的工作原理
当采用 HSRP, 用户看到的是一台虚拟路由器,该虚拟路由器有自己的虚拟 IP 地址和虚拟 MAC 地址,
该虚拟路由器是由一组路由器组成的,这组路由器称为备份组。备份组内由一台活动路由器、一台备份路
由器,以及群众路由器构成。一般情况下,一旦活动路由器坏掉,该备份路由器成为活动路由器,然后备
份组内选举组内的另一台路由器为备份路由器。 组内路由器通过接受来自活动路由器的周期性 Hello 报
文来判断活动路由器是否工作正常。如果组内备份路由器 R 在一定时间间隔未收到活动路由器 Hello 报
文,就认为活动路由器坏掉了,优先级高的备份路由器最终成为活动路由器。备份路由器也是通过类似过
程产生的。这样总能保证备份组中有一台活动路由器,一台备份路由器。
三 HSRP的概念
HSRP 是 Hot Standby Routing Protocol(热备份路由协议)的缩写。它的作用是能够把一台或多台路由器用来做备份,所谓热备份是指当使用的路由器不能正常工作时,候补的路由器能够实现平滑的替换,尽量不被察觉。 通常,我们的网络上主机设置一条缺省路由,指向主机所在网段内的一个路由器 R,这样,主机发出的目的地址不在本网段的报文将被通过缺省路由发往路由器 R,从而实现了主机与外部网络的通信。在这种情况下,当路由器 R 坏掉时,本网段内所有以路由器 R 为缺省路由下一跳的主机将断掉与外部的通信。HSRP 实现容错备份功能,可以有效解决上述可靠性问题。
HSRP 解决的问题
主机 Pat 设置缺省网关 Router A,这样访问主机 Marceau 需要通过 Router A 来进行。一旦 Router A 出现故障,主机 Pat 将失去与主机 Marceau 的联系,除非主机 Pat 重新指定其它的缺省网关,如 Router B。
四 配置HSRP
配置虚拟ip
switch(config-if) standby 热备组组号 ip 虚拟网关地址
配置 HSRP 优先级
switch(config-if)standby 热备组组号 priority 优先级
配置占先权
switch(config-if)standby 热备组组号 preempt
占先权的必要性: 让我们配置优先级高的路由器立即成为活跃路由器
配置HSRP 的端口跟踪
switch(config-if)#standby 热备组组号 track 端口号 端口失效的优先级降低数值
五 HSRP的状态
备份组内的路由器处于各自的状态,根据相互间发送 HSRP 报文来调整新的状态。 HSRP 状态:
(1)init:所有备份组内组员的初始状态为 INIT,当组员配置属性或端口 UP 时,进入 INIT 状态。
(2)learn:该组员未设定虚拟 IP 地址,并等待从本组活动路由器发出的认证的 Hello 报文中学习得到自己的虚拟 IP 地址。
(3)listen :该组员已得知或设置了虚拟 IP 地址,通过监听 Hello 报文监视活动/备份路由器,一旦发现活动/备份路由器长时间未发送 Hello 报文,则进入 SPEAK 状态,开始竞选。
(4)speak: 参加竞选活动/备份路由器的组员所处的状态,通过发送 Hello 报文使竞选者间相互比较、竞争。
(5)standby: 组内备份路由器所处的状态,备份组员监视活动路由器,准备随时在活动路由器坏掉时接替活动路由器。备份路由器也周期性发送 Hello 报文告诉其他组员自己没有坏掉。
(6)ACTIVE:组内活动路由器即负责虚拟路由器实际路由工作的组员所处的状态。活动路由器周期性发送 Hello 报文告诉其他组员自己没有坏掉。
六 HSRP的用途
HSRP 用于广播或多播局域网上的路由器热备份,并适于静态的路由配置,实际上 HSRP 正是解决设备不
能动态适应路由改变的问题。 HSRP 主要用途: 1、主机设置缺省网关 假设主机 A 是局域网中一台需要
访问远程数据的服务器,要求远程访问能力可靠。由于主机 A 中静态设置缺省网关,一旦想更换网关,
必须在主机中重新配置。 通过使用 HSRP,主机中设置虚拟路由器为缺省网关,具体由虚拟路由器中的哪
台路由器完成网关的实际工作,主机并不关心,这就为应用提供了较好的可靠性和灵活性。 2、设置静态
Rails2.3可以选择随时使用RouteSet#add_configuration_file添加更多路由。是否可以在Rails3项目中做同样的事情? 最佳答案 在config/application.rb中:config.paths.config.routes在Rails3.2(也可能是Rails3.1)中,使用:config.paths["config/routes"] 关于ruby-on-rails-Rails3中的多个路由文件,我们在StackOverflow上找到一个类似的问题
我没有找到太多关于如何执行此操作的信息,尽管有很多关于如何使用像这样的redirect_to将参数传递给重定向的建议:action=>'something',:controller=>'something'在我的应用程序中,我在路由文件中有以下内容match'profile'=>'User#show'我的表演Action是这样的defshow@user=User.find(params[:user])@title=@user.first_nameend重定向发生在同一个用户Controller中,就像这样defregister@title="Registration"@user=Use
我真的为这个而疯狂。我一直在搜索答案并尝试我找到的所有内容,包括相关问题和stackoverflow上的答案,但仍然无法正常工作。我正在使用嵌套资源,但无法使表单正常工作。我总是遇到错误,例如没有路线匹配[PUT]"/galleries/1/photos"表格在这里:/galleries/1/photos/1/edit路线.rbresources:galleriesdoresources:photosendresources:galleriesresources:photos照片Controller.rbdefnew@gallery=Gallery.find(params[:galle
最近在学习CAN,记录一下,也供大家参考交流。推荐几个我觉得很好的CAN学习,本文也是在看了他们的好文之后做的笔记首先是瑞萨的CAN入门,真的通透;秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4CAN!原文链接:https://blog.csdn.net/XiaoXiaoPengBo/article/details/116206252CAN详解(小白教程)原文链接:https://blog.csdn.net/xwwwj/article/details/105372234一篇易懂的CAN通讯协议指南1一篇易懂的CAN通讯协议指南1-知乎(zhihu.com)视频推荐CAN总线个人知识总
Rails中有没有一种方法可以提取与路由关联的HTTP动词?例如,给定这样的路线:将“users”匹配到:“users#show”,通过:[:get,:post]我能实现这样的目标吗?users_path.respond_to?(:get)(显然#respond_to不是正确的方法)我最接近的是通过执行以下操作,但它似乎并不令人满意。Rails.application.routes.routes.named_routes["users"].constraints[:request_method]#=>/^GET$/对于上下文,我有一个设置cookie然后执行redirect_to:ba
路由有如下代码:resources:orders,only:[:create],defaults:{format:'json'}resources:users,only:[:create,:update],defaults:{format:'json'}resources:delivery_types,only:[:index],defaults:{format:'json'}resources:time_corrections,only:[:index],defaults:{format:'json'}是否可以使用1个字符串为所有资源设置默认格式,每行不带“默认值”散列?谢谢。
我有两个文本文件,master.txt和926.txt。如果926.txt中有一行不在master.txt中,我想写入一个新文件notinbook.txt。我写了我能想到的最好的东西,但考虑到我是一个糟糕的/新手程序员,它失败了。这是我的东西g=File.new("notinbook.txt","w")File.open("926.txt","r")do|f|while(line=f.gets)x=line.chompifFile.open("master.txt","w")do|h|endwhile(line=h.gets)ifline.chomp!=xputslineendende
我正在使用rails3和cucumber,除了这个小问题,一切都很顺利GivenIamonthe"editautomobile"pageNoroutematches{:controller=>"automobiles",:action=>"edit"}(ActionController::RoutingError)现在路径在paths.rb中设置为edit_automobile_path在routes.rb中我有汽车作为资源,我搭建了它所以请告诉我我遗漏了什么,清楚地定义了路线并且匹配,因为我运行了rake路线并看到了路线。请指出正确的方向 最佳答案
有什么方法可以为url/path助手提供默认值吗?我有一个可选范围环绕我的所有路线:#config/routes.rbFoo::Application.routes.drawdoscope"(:current_brand)",:constraints=>{:current_brand=>/(foo)|(bar)/}do#...allotherroutesgohereendend我希望用户能够使用这些URL访问网站:/foo/some-place/bar/some-place/some-place为了方便起见,我在我的ApplicationController中设置了一个@current
我如何将像“root_path”这样的Rails路由助手作为类方法添加到像my_model.rb这样的类中?所以我的课是这样的:ClassMyModeldefself.fooreturnself.root_pathendendMyModel.foo以上不起作用,因为ClassMyModel不响应root_path这是我所知道的:我可以使用includeRails.application.routes.url_helpers,但这只会将模块的方法添加为实例方法我试过扩展Rails.application.routes.url_helpers但它没用请随时给我上课:)