常规的MPLS BGP VPN的PE设备需要学习所创建的VRF的所有私网路由,如果PE设备为低端设备,私网路由表过大会对设备造成压力过大。
中国电信IPRAN为MixVPN(L2+L3)方案:A(UPE)->B(SPE)->ER->EPC-CE(NPE),A和B设备之间运行二层VPN,B设备和EPC-CE设备之间运行三层VPN。分层可以减少各层设备的上路由表,减少设备运行压力。
另外,如果不分层,对于EPCCE而言,普通L3VPN需要维护大量的VPNV4邻居,接入环路由或邻居关系变化会影响EPCCE。
部署HoVPN以后,SPE设备不再需要向UPE设备通告明细路由,从而减少UPE的路由表大小,EPCCE的邻居关系也大大减少。
会。因为经过了2对不同的MPBGP邻居,每对会产生独立的标签。
分层的VPLS。普通的VPLS要求所有PE设备之间建立全连接的隧道LSP。
HVPLS是通过把网络分级,每一级网络形成全连接,分级间的设备通过PW来连接,分级UPE和SPE之间的设备的数据转发不遵守水平分割原则,而是可以相互转发。
只需要在SPE之间建立全连接(PW全连接),UPE和SPE之间不需要全连接。
如果问:隧道建立建立不成功,请分析原因。从以下前三步骤考虑:
TE的四大组件
->信息发布(isis进程下 traffic-eng level-2):链路状态信息、带宽信息、优先级信息等
->路径计算(在mpls视图下配置CSPF)
->路径建立(在mpls视图和接口下配置RSVP-TE)
->数据转发(在配置shortcut或者advertise):静态路径、转发捷径(只有首节点感知该路径)/转发邻接、策略路由显式路径、隧道策略
可以,在隧道策略配置负载分担条数。load-balance-number 2
也可以在TE和LDP之间混合使用,使用mixed关键字。
业务标签由MP-BGP产生。业务必须被隧道所迭代。
去使能rt过滤。对VPN RT值进行过滤,如果PE上没有配置VPN实例,必须配置该命令,否则该PE无法接收任何VPNV4路由。
两个策略,本端ASBR发本AS的PE带标签的路由给对端ASBR,对端ASBR再通过策略产生新标签发给对端AS内的PE。
打开传递带标签IPv4路由的能力,peer XXX label-route-capability。
反之亦然。
用于解决全网部署TE需要全互联的问题,同时又能在网络核心层发挥部署TE的优势。
TE可以被当做ISISI链路来看待,于是就有了LDP over TE。
TE特点:TE保护手段丰富,TE FRR、TE热备实现TE快速倒换,借助TE的显式路径、带宽约束,实现流量的精确管理。可以结合带宽、优先级,支持的特性更多。但是TE配置复杂,必须配置为全互联(端到端,必须指明源和目的),导致隧道数量成指数级增长,所以一般在核心层部署TE发挥TE的优势。
LDP优势:配置简单,不需要建全互联的隧道,但依赖于IGP。
检查LDP配置:检查LDP会话是否正常operational、分段查LSP。
检查TE配置:tunnel接口是否UP,如果没有UP,检查tunnel检查的四步骤;转发邻接/转发捷径的配置是否正确,CSPF、MPLS TE/RSVP等配置是否正确。
转发邻接会发布到整个路由域内,其他节点能感知到。
转发捷径只有隧道的首节点才能感知到。
严格下一跳:严格约束每一跳,逐跳约束,两个节点之间必须用直接相连的物理接口,不能约束环回口。
松散下一跳:两个节点之间可以存在其他路由器。可以约束一个或者若干个想约束的节点。
CE-PE之间路由信息的传递是否正常;
PE之间的MP-BGP邻居是否正常;
VPN实例的RT值是否匹配;
PE到PE路由信息的传递;
BGP下一跳是否可达;
业务迭代的隧道是否UP。
RD值唯一,RT值可以配置多个。
有没有办法跳过CSV文件的第一行,让第二行作为标题?我有一个CSV文件,第一行是日期,第二行是标题,所以我需要能够在遍历它时跳过第一行。我尝试使用slice但它会将CSV转换为数组,我真的很想将其读取为CSV,以便我可以利用header。 最佳答案 根据您的数据,您可以使用另一种方法和skip_lines-option此示例跳过所有以#开头的行require'csv'CSV.parse(DATA.read,:col_sep=>';',:headers=>true,:skip_lines=>/^#/#Markcomments!)do|
我想使用部分字符串搜索数组,然后获取找到该字符串的索引。例如:a=["Thisisline1","Wehaveline2here","andfinallyline3","potato"]a.index("potato")#thisreturns3a.index("Wehave")#thisreturnsnil使用a.grep将返回完整的字符串,使用a.any?将返回正确的true/false语句,但都不会返回匹配的索引找到了,或者至少我不知道该怎么做。我正在编写一段代码,该代码读取文件、查找特定header,然后返回该header的索引,以便它可以将其用作future搜索的偏移量。如果
K伙计们,所以我创建了这个赞成/反对的投票脚本(基本上就像stackoverflow上的那个),我试图向其中添加一些Ajax,这样页面就不会在您每次投票时都重新加载。我有两个Controller,一个叫grinder,一个叫votes。(磨床基本都是帖子)所以这是所有研磨机的索引(看起来像这样)这是该页面的代码。Listinggrinders"grinders/grinders")%>这就是我在views/grinders/_grinders.erb中的内容true)do|u|%>grinder.id%>"up"%>'create')%>true)do|d|%>grinder.id%>
我将restclient用于多部分表单,以将数据发送到restfulweb服务(它是Panda视频编码服务)。不过,诀窍在于我传递给restclient(Technoweenie分支)的文件来自用户提交的我自己的表单。那么,让我们来看看这个。用户将文件发布到我的Rails应用程序。在我的Controller中,它从params[:file]接收文件。然后我想使用RestClient将params[:file]传递给Panda。我在Panda服务器上遇到的错误如下。我注意到堆栈跟踪中的文件参数也在一个字符串中(我假设Panda将其转换为字符串以获得更好的堆栈跟踪)。~Startedreq
使用method_missing时在Ruby中,它是almostalwaysagoodidea定义respond_to_missing?respond_to_missing?接受两个参数;我们正在检查的方法的名称(symbol),以及一个指示我们是否应该在检查中包含私有(private)方法的bool值(include_all)。现在我感到困惑的是:method_missing不接受任何可能指示它是否应该调用私有(private)方法的参数,如respond_to_missing?做。此外,method_missing无论原始方法调用是在公共(public)上下文还是私有(privat
我在标准rails2.1项目中使用Test/Unit。我希望能够独立于任何特定的Controller/操作来测试分部View。好像ZenTest'sTest::Rails::ViewTestCase会有所帮助,但我无法让它工作,与view_testhttp://www.continuousthinking.com/tags/view_test类似Google出现的大部分内容似乎都已经过时了,所以我猜它并不真正适用于Rails2.1非常感谢任何帮助。谢谢,罗兰 最佳答案 我们正在使用RSpec在我们的Rails2.1项目中,我们可以做
我需要一些在ruby(1.8.6或1.8.7而不是1.9)中实现curry函数的示例。 最佳答案 下面是如何用block而不是方法来柯里化(Currying):defcurry(&block)arity=(block.arity>=0)?block.arity:-(block.arity+1)#returnanimmediatevalueiftheblockhasonereturnblock[]ifarity==0#otherwise,curryitargumentbyargumentargs=[]innermost=lambd
我正在对用户的提要进行分页,并想模拟我正在使用的API的响应。API可以返回奇怪的结果,所以我想确保如果API返回我已经看到的项目,请停止分页。我使用minitest在第一次调用方法get_next_page时stub,但我想在第二次和第三次用不同的值调用它时stub。我应该只使用rSpec吗?ruby新手...这是片段test"crawlerdoesnotpaginateifnonewitemsinnextpage"do#1:A,B#2:B,D=>D#3:A=>stopcrawler=CrawlJob.newfirst_page=[{"id"=>"item-A"},{"id"=>"i
我似乎找不到一种优雅的方式来做到这一点......给定一个日期,我如何找到下一个星期二,即日历月的第2个或第4个星期二?例如:给定2012-10-19然后返回2012-10-23或给定2012-10-31然后返回2012-11-13OctoberNovemberSuMoTuWeThFrSaSuMoTuWeThFrSa12345612378910111213456789101415161718192011121314151617212223242526271819202122232428293031252627282930 最佳答案
以下代码使用了触发器运算符。(1..10).each{|x|print"#{x},"ifx==3..x==5}为什么结果是3,4,5?我觉得应该是3,4。如教程中所述,此表达式在x==3时为真,并一直为真,直到x==5。如果“5”的计算结果为false,如何打印它?谁能为我澄清一下? 最佳答案 来自“TheRubyProgrammingLanguage”的重要链接是:4.6.9.1Booleanflip-flopsWhenthe..and...operatorsareusedinaconditional,suchasanifstat