多点双向重发布:在两种路由协议或同一协议的两个进程间,使用多台ASBR来进行重发布,实现链路备份,提高网络稳定性和效率;
在多点双向重发布中,第一台ASBR重发布完成后,可能重发布到B协议的路由条目,会影响到其他的ABSR,刷新它们的路由表;导致路由条目从A协议发布到B协议后,再重新回到A协议----路由回馈 --- 导致严重的选路不佳;
解决方案:在cisco体系中的eigrp协议,默认与其他协议进行多点双向重发布时,不会出现路由回馈--- cisco 体系中 rip 优先级120 ospf 110 eigrp 90 但重发布进入到eigrp部分的路由其优先级为170;
因为优先级不同,使得第一台ASBR在重发布后,影响不了另一台ASBR的路由表,故不出现路由回馈;
在华为体系中,由于没有eigrp,故华为在ospf协议中,也使用了双优先级的做法;
ospf正常产生的路由优先级为10,重发布进入的5/7类LSA,生成的路由为150;
注:在ospf协议中,环回默认工作方式基于32位的主机路由进行传递;因此在多点双向重发布中,ASBR上属于ospf协议的环回接口进行重发布时,ospf按32位传递,其他协议会按照该接口的实际掩码来进行共享; 若掩码不一致,将导致选路问题,配置环回接口为32位主机路由,或修改环回接口在ospf协议中的工作方式均可
在rip协议中由于接口水平分割,在重发布路由和本地正常学习路由出现相同度量时,将负载均衡,最终导致路由不能正常收发,错误选路---路由策略
由于重发布协议,在重发布路由条目的过程中,将清除原有的度量值,添加新的起始度量值;故多点双向重发布中,A协议路由发布到B协议后,B协议到达A协议的选路可能不佳-----路由策略;
路由策略:
名词:
控制层面:动态路由协议传递路由协议信息的流量,方向为控制层面流量方向
数据层面:路由器使用已经生成的路由表,转发的用户数据流量;方向与控制层面相反
路由策略:在控制层面流量入或出路由器接口时,抓取流量;对内容进行修改或丢弃,最终影响到路由表的生成,干涉到了路由器的选路;
ACL设计时是为了处理数据层面流量的限制;也可以用于抓取控制层面的流量;
但由于ACL的设计是基于数据层面流量,故不关注数据包中的子网掩码;使得在抓取控制层面流量时,可能无法精确匹配;
[r1]ip ip-prefix aa permit 1.1.1.0 25
定制一张名为aa的列表,抓取1.1.1.0/25网络号流量;
默认序列号的步调为10,便于插入
[r1]ip ip-prefix aa index 13 permit 3.3.3.0 24
[r1]ip ip-prefix aa permit 4.4.4.0 24 less-equal 26 掩码长度24到26
[r1]ip ip-prefix aa permit 5.5.5.0 24 greater-equal 30 掩码长度30到32
[r1]ip ip-prefix aa permit 5.5.5.0 24 greater-equal 26 less-equal 30 26到30
length<=ge<=le.
匹配规则:至上而下逐一匹配;上条匹配按上条执行,不再查看下条;默认隐含拒绝所有;
[r1]ip ip-prefix aa permit 0.0.0.0 0 less-equal 32 允许所有
[r1]ip ip-prefix aa permit 2.2.2.0 24 使用前缀列表抓取;ACL也可
[r1]interface GigabitEthernet 0/0/1 控制层面流量传输的接口
[r1-GigabitEthernet0/0/1]rip metricin ip-prefix aa 2 流量入,匹配前缀列表aa,度量加2
metricout 2000 2 流量出,匹配acl 2000,度量加2
该策略为逐跳行为,效果可以叠加操作;整段路径中流量经过的多个接口均配置了度量增加,最终为总增加度量;
2)cisco下的分发列表; 华为为过滤策略;
先使用ACL或前缀列表,匹配流量;然后在控制层面流量的入或出接口上限制路由条目的传递;
[r2]ip ip-prefix qq deny 2.2.2.0 24
[r2]ip ip-prefix qq permit 0.0.0.0 0 less-equal 32
[r2]rip 1
[r2-rip-1]filter-policy ip-prefix qq ?
export Specify an export policy 出方向
import Specify an import policy 入方向
[r2-rip-1]filter-policy ip-prefix qq export GigabitEthernet 0/0/0
切记:若使用ACL定义流量,正常华为acl末尾允许所有,但在过滤策略中一定手工配置允许所有命令;
注:OSPF协议中正常无法在出方向调用,因为ospf使用的拓扑更新,在同一个区域内不可以限制拓扑的传递;正常只能在入向调用,并不影响数据库的同步,仅仅是不将该LSA计算所得的路由加载到路由表;
若想出口调用,可以在ABR/ASBR上针对3/4/5/7类lsa进行;
3)cisco的route-map 华为路由策略
1、抓流量—acl和前缀列表均可
[r2-acl-basic-2000]rule 1 permit source 1.1.1.0 0.0.0.0
[r2-acl-basic-2000]q
[r2]acl 2001
[r2-acl-basic-2001]rule permit source 1.1.2.0 0.0.0.0
[r2-acl-basic-2001]q
[r2]ip ip-prefix a permit 1.1.3.0 24
[r2]ip ip-prefix b permit 1.1.4.0 24
2、路由策略
[r2]route-policy huawei deny node 10 创建名为huawei的路由策略,大动作为拒绝,序号为10
[r2-route-policy]if-match acl 2000 匹配一张ACL
[r2-route-policy]q
[r2]route-policy huawei permit node 20 列表huawei序号20,大动作为允许
[r2-route-policy]if-match acl 2001 匹配一张ACL
[r2-route-policy]apply cost-type type-1 定义小动作为修改度量类型,为类型1;
[r2-route-policy]q
[r2]route-policy huawei permit node 30
[r2-route-policy]if-match ip-prefix a 匹配前缀列表
[r2-route-policy]apply cost 7
[r2-route-policy]q
[r2]route-policy huawei permit node 40
[r2-route-policy]if-match ip-prefix b
[r2-route-policy]apply cost-type type-1
[r2-route-policy]apply cost 8
[r2-route-policy]q
[r2]route-policy huawei permit node 50 空表,允许所有;
[r2-route-policy]q
3、重发布时调用
[r2]ospf 1
[r2-ospf-1]import-route rip 1 route-policy Huawei
配置指南:
因此大动作为允许的空表代表允许所有;
或关系为每个站点(每个序号)间为或关系;
序号10没匹配到流量,再序号20;
[r3]ip ip-prefix a permit 1.1.1.0 24
[r3]acl 2000
[r3-acl-basic-2000]rule permit sou 12.1.1.2 0.0.0.0
route-policy huawei permit node 10
if-match ip-prefix a
if-match ip next-hop acl 2000 与关系—被匹配流量必须同时满足这两个条件;
apply cost 10
apply cost-type type-1 与关系,同时执行两种操作
以上为路由条目目标网络号1.1.1.0/24 同时该条目的下一跳为12.1.1.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
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个字符串为所有资源设置默认格式,每行不带“默认值”散列?谢谢。
我正在使用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但它没用请随时给我上课:)
尝试从我的AngularJS端将数据发布到Rails服务器时出现问题。服务器错误:ActionController::RoutingError(Noroutematches[OPTIONS]"/users"):actionpack(4.1.9)lib/action_dispatch/middleware/debug_exceptions.rb:21:in`call'actionpack(4.1.9)lib/action_dispatch/middleware/show_exceptions.rb:30:in`call'railties(4.1.9)lib/rails/rack/logg
我正在尝试根据RyanBatesscreencastonsubdomains在Rails3中设置子域.但是它对我不起作用。我有以下设置:#routes.rbconstraints(Subdomain)doget'devices'=>'devices#all'end#lib/subdomain.rbclassSubdomaindefself.matches?(request)#binding.pryrequest.subdomain.present?&&request.subdomain=="admin"endend加载urladmin.localhost:3000/devices应该将