草庐IT

数通运营商方向常见面试问题(第二部分)

若时光安好 2023-12-24 原文
  • HoVPN应用在上面场景?工作机制是什么?
  1. HoVPN是分层的VPN(L3+L3方案),现网主要应用在IPRAN场景。
  2. 比较普通L3 MPLS VPN和HVPN的区别:

常规的MPLS BGP VPN的PE设备需要学习所创建的VRF的所有私网路由,如果PE设备为低端设备,私网路由表过大会对设备造成压力过大。

中国电信IPRAN为MixVPN(L2+L3)方案:A(UPE)->B(SPE)->ER->EPC-CE(NPEA和B设备之间运行二层VPNB设备和EPC-CE设备之间运行三层VPN。分层可以减少各层设备的上路由表,减少设备运行压力。

另外,如果不分层,对于EPCCE而言,普通L3VPN需要维护大量的VPNV4邻居,接入环路由或邻居关系变化会影响EPCCE。

部署HoVPN以后,SPE设备不再需要向UPE设备通告明细路由,从而减少UPE的路由表大小,EPCCE的邻居关系也大大减少。

  • HoVPN在SPE上,报文的内层标签是否会做替换?

。因为经过了2对不同的MPBGP邻居,每对会产生独立的标签。

  • 什么是HVPLS?

分层的VPLS。普通的VPLS要求所有PE设备之间建立全连接的隧道LSP。

HVPLS是通过把网络分级,每一级网络形成全连接,分级间的设备通过PW来连接,分级UPE和SPE之间的设备的数据转发不遵守水平分割原则,而是可以相互转发。

只需要在SPE之间建立全连接(PW全连接),UPE和SPE之间不需要全连接

  • MPLS BGP VPN的网络中,PE上查看某个VRF的BGP路由表,发现学习到了对端PE通告的BGP私网路由,但显示为无效(没有“*”),可能的原因是什么?
  1. 没有到达下一跳的隧道,隧道没有建立成功,缺少MPLS LDP/SR配置。
  2. 下一跳不可达
  • 查看LDP LSP时,无法看到对端PE的LSP,给出排障思路。
  1. 检查IGP路由是否正常。LDP依赖于IGP
  2. 检查lsr-id配置是否正确、全局/接口MPLS LDP是否使能。
  3. 检查LDP session是否正常。
  4. 检查是否配置lsp-trigger(缺省触发32位的主机路由),是不是配置了none或者错误的ip-prefix列表。
  • MPLS BGP VPN网络中使用TE作为隧道协议,且到达下一跳的TE隧道正常。但BGP VPNV4表私网路由无效可能的原因是什么?
  1. 隧道策略配置错误。
  2. 隧道策略没有绑定到VPNTE隧道必须绑定隧道策略到VPN,而LDP不需要

如果问:隧道建立建立不成功,请分析原因。从以下前三步骤考虑:

TE的四大组件

->信息发布(isis进程下 traffic-eng level-2):链路状态信息、带宽信息、优先级信息等

->路径计算(在mpls视图下配置CSPF

->路径建立(在mpls视图和接口下配置RSVP-TE

->数据转发(在配置shortcut或者advertise):静态路径、转发捷径(只有首节点感知该路径)/转发邻接、策略路由显式路径、隧道策略

  • 若达到目的PE有多条TE隧道,一个VPN可以在多条隧道上负载分担?需要哪些配置?

可以,在隧道策略配置负载分担条数。load-balance-number 2

也可以在TE和LDP之间混合使用,使用mixed关键字。

  • 介绍跨域VPN的几种方案。

业务标签由MP-BGP产生。业务必须被隧道所迭代。

  1. Option A:域间的ASBR互为PE和CE,他们之间跑的是IPv4路由,需要在ASBR上创建VPN实例,建一个子接口绑定VPN实例。优点:简单。缺点:扩展性比较差,每新增一个VPN都需要新建一个子接口。
  2. Option B三次MP-BGP的VPNV4路由传递;ASBR之间跑的是VPNV4路由;ASBR下要配置undo policy vpn-target去RT过滤使能(一般在反射器和ASBR上要配置)。
  3. Option C:ASBR之间不需要起VPN实例;两个策略,本端ASBR发本AS的PE带标签的路由给对端ASBR,对端ASBR再通过策略产生新标签发给对端AS内的PE。反之亦然。
  • undo policy vpn-target的作用是什么?

去使能rt过滤。对VPN RT值进行过滤,如果PE上没有配置VPN实例,必须配置该命令,否则该PE无法接收任何VPNV4路由

  • Option C方案中,BGP LSP是如何建立的?

两个策略,本端ASBR发本AS的PE带标签的路由给对端ASBR对端ASBR再通过策略产生新标签发给对端AS内的PE

打开传递带标签IPv4路由的能力,peer XXX label-route-capability。

反之亦然。

  • LDP over TE用于什么场景?

   用于解决全网部署TE需要全互联的问题,同时又能在网络核心层发挥部署TE的优势。

   TE可以被当做ISISI链路来看待,于是就有了LDP over TE。

TE特点:TE保护手段丰富,TE FRR、TE热备实现TE快速倒换,借助TE的显式路径、带宽约束,实现流量的精确管理。可以结合带宽、优先级,支持的特性更多。但是TE配置复杂,必须配置为全互联端到端,必须指明源和目的),导致隧道数量成指数级增长,所以一般在核心层部署TE发挥TE的优势。

LDP优势:配置简单,不需要建全互联的隧道,但依赖于IGP。

  • 如果在部署了LDP over TE的网络中,一侧PE上学习不到对端PE的loopback的LSP,请描述故障排查思路。

检查LDP配置:检查LDP会话是否正常operational、分段查LSP。

检查TE配置:tunnel接口是否UP,如果没有UP,检查tunnel检查的四步骤;转发邻接/转发捷径的配置是否正确,CSPF、MPLS TE/RSVP等配置是否正确。

转发邻接会发布到整个路由域内,其他节点能感知到。

转发捷径只有隧道的首节点才能感知到。

  • 严格的显示路径和松散的显示路径有什么区别?

   严格下一跳:严格约束每一跳,逐跳约束,两个节点之间必须用直接相连的物理接口,不能约束环回口。

   松散下一跳:两个节点之间可以存在其他路由器。可以约束一个或者若干个想约束的节点。

  • 单域的MPLS BGP VPN两侧CE设备学习不到对端发来的路由,请介绍故障排查的思路。

CE-PE之间路由信息的传递是否正常;

PE之间的MP-BGP邻居是否正常;

VPN实例的RT值是否匹配

PE到PE路由信息的传递;

BGP下一跳是否可达;

业务迭代的隧道是否UP。

  • 介绍RT的工作机制。BGP反射器上没有RT,如何让反射器学些到私网路由?
  1. 发送路由带上出RT,接收路由根据入RT来匹配。交叉匹配
  2. 反射器上配置undo policy vpn-target

    RD值唯一,RT值可以配置多个。

  • 在跨域OptionB方案中,两台ASBR时间是否需要启用MPLS?ASBR上是否需要配置next-hop-local ?
  1. 需要。OptionB和OptionC均需要,OptionA不需要启用MPLS。
  2. 不需要next-hop-local,VPNV4路由会自动变更下一跳。  因为该特性,所以OptionC中的R10 、R7和R8上的VPNV4路由要配置next-hop-invariable。

有关数通运营商方向常见面试问题(第二部分)的更多相关文章

  1. ruby - 如何跳过 CSV 文件的第一行并将第二行作为标题 - 2

    有没有办法跳过CSV文件的第一行,让第二行作为标题?我有一个CSV文件,第一行是日期,第二行是标题,所以我需要能够在遍历它时跳过第一行。我尝试使用slice但它会将CSV转换为数组,我真的很想将其读取为CSV,以便我可以利用header。 最佳答案 根据您的数据,您可以使用另一种方法和skip_lines-option此示例跳过所有以#开头的行require'csv'CSV.parse(DATA.read,:col_sep=>';',:headers=>true,:skip_lines=>/^#/#Markcomments!)do|

  2. ruby - 如何使用部分字符串搜索数组并返回索引? - 2

    我想使用部分字符串搜索数组,然后获取找到该字符串的索引。例如:a=["Thisisline1","Wehaveline2here","andfinallyline3","potato"]a.index("potato")#thisreturns3a.index("Wehave")#thisreturnsnil使用a.grep将返回完整的字符串,使用a.any?将返回正确的true/false语句,但都不会返回匹配的索引找到了,或者至少我不知道该怎么做。我正在编写一段代码,该代码读取文件、查找特定header,然后返回该header的索引,以便它可以将其用作future搜索的偏移量。如果

  3. ruby-on-rails - 如何将数据传递给部分? - 2

    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%>

  4. ruby-on-rails - 将 restclient 与多部分帖子一起使用 - 2

    我将restclient用于多部分表单,以将数据发送到restfulweb服务(它是Panda视频编码服务)。不过,诀窍在于我传递给restclient(Technoweenie分支)的文件来自用户提交的我自己的表单。那么,让我们来看看这个。用户将文件发布到我的Rails应用程序。在我的Controller中,它从params[:file]接收文件。然后我想使用RestClient将params[:file]传递给Panda。我在Panda服务器上遇到的错误如下。我注意到堆栈跟踪中的文件参数也在一个字符串中(我假设Panda将其转换为字符串以获得更好的堆栈跟踪)。~Startedreq

  5. ruby - `respond_to_missing?` 的第二个参数有什么用吗? - 2

    使用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

  6. ruby-on-rails - 独立测试 Rails 部分 View - 2

    我在标准rails2.1项目中使用Test/Unit。我希望能够独立于任何特定的Controller/操作来测试分部View。好像ZenTest'sTest::Rails::ViewTestCase会有所帮助,但我无法让它工作,与view_testhttp://www.continuousthinking.com/tags/view_test类似Google出现的大部分内容似乎都已经过时了,所以我猜它并不真正适用于Rails2.1非常感谢任何帮助。谢谢,罗兰 最佳答案 我们正在使用RSpec在我们的Rails2.1项目中,我们可以做

  7. ruby - 如何在 ruby​​ 中实现 curry(部分函数) - 2

    我需要一些在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

  8. ruby - stub 实例方法在使用 minitest 的第二次调用时返回值不同 - 2

    我正在对用户的提要进行分页,并想模拟我正在使用的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

  9. ruby-on-rails - Ruby:给定日期找到下一个第二或第四个星期二 - 2

    我似乎找不到一种优雅的方式来做到这一点......给定一个日期,我如何找到下一个星期二,即日历月的第2个或第4个星期二?例如:给定2012-10-19然后返回2012-10-23或给定2012-10-31然后返回2012-11-13OctoberNovemberSuMoTuWeThFrSaSuMoTuWeThFrSa12345612378910111213456789101415161718192011121314151617212223242526271819202122232428293031252627282930 最佳答案

  10. ruby - 为什么触发器运算符包含第二个条件? - 2

    以下代码使用了触发器运算符。(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

随机推荐