MPLS VPN 故障排查详解—Yeslab 彭Sir笔记

Technorati 标签: CCIE,MPLS VPN,故障排查,troubleshooting,MPLS

Troubleshooting主要从两个层面来进行:

1, 控制层面---路由(和LDP,CEF没有关系)

控制平面主要管的事情是CE之间能通过MPLS VPN相互能学习到路由.

No.1 : CE和CE之间,检查路由相互之间是否学习到。

在图中是R10和R2.

如果R10上面没有通过R8学习到对端R2的CE路由.

No.2 : 这个时候需要到R1的vrf路由表查询是否有学习到R2的路由.

因为路由是从R2往R10反方向传递的。所以本端CE没有路由,需要到对端的PE先进行查看. 在R1上面查看vrf Hank的路由表:

show ip route vrf Hank

如果,R1 vrf没有收到R2的路由,那么应该检查R1 vrf接口下面链接的CE,是否有进行网络的宣告.链路是否有问题等等。这个时候就是IGP的故障排查.R1到R2之间.

如果, R1的vrf学习到了R2宣告过来的路由.那么,

No.3 : 这个时候应该检查R1的MP-BGP中的vpnv4路由表中,是否有R2宣告的路由.

show ip bgp vpnv4 all

如果没有,那说明可能问题存在于:在bgp中的address-family ipv4 vrf xxx中是否没有重分布vrf的IGP路由协议.导致vpnv4本地没有CE的路由.

那么对于IGP OSPF来说,重分布进入BGP的地址族vrf中,缺省是只重分布Internal的路由.

如果要重分布所有的。应该这样写:

router bgp xxx

address-family ipv4 vrf xxx

redistribute ospf 22 match internal external nssa-external //如果不加,R2上面如果重分布一个外部路由到ospf中,通告到R1 vrf,因为重分布只重分布内部,所以这个时候在R1上面show ip bgp vpnv4 all 就绝对看不到那个外部路由.

exit

exit

如果R1上面show ip bgp vpnv4能看到相关CE R2宣告的路由,说明重分布是没有问题的.这个时候:

No.4 : R1会通过MP-IBGP将这些VPNV4路由传递给R8去.

在R8也是一样, show ip bgp vpnv4 all查看vpnv4路由是否送过来了.

如果这个时候在R8上面看不到路由前缀,可能有下面问题存在:

1)R1和R8的IBGP没有建立邻居. 因为使用的是MP-BGP作为承载协议。

所以使用命令:show ip bgp vpnv4 all summary

来查看vpnv4邻居是否UP起来. 如果没有UP起来,那么就用普通的BGP故障排查来进行查看。

--本端PE的/32环回要ping到对端PE的/32环回口.

--update-source 需要使用loopback x

--在address-family vpnv4中,是否有把neighbor acitve.

2)如果邻居起来了,可是依然没有vpnv4的路由信息在R8上面.

这个时候有可能的原因是:

---RT的EXPORT和IMPORT有问题. export和import不匹配.

           show ip vrf detail

在显示信息中,RT的export和import都有明确的说明.

如果两边的PE彼此RT的export和import都相互匹配,还是没有对端CE的路由信息.那么

---有可能R1根本就没有发送RT. RT是一个扩展的MP-BGP的团体属性.需要在R1上面检查,是否在address-family vpnv4中,neighbor x.x.x.x send community extend.该项默认加载,有可能被人为手工删除.攻击的时候可能会被删除掉.这个时候虽然两边RT相互匹配,但是因为MP-BGP的扩展属性没有发送,所以RT是不能携带到路由前缀中的.

---如果上面说的都有了,那么在R8上面, show ip bgp vpnv4 all应该是能看到R2宣告的CE的路由的.这个时候和重分布一点关系都没有.

No.5 : R8收到了VPNV4的路由,也正确的重分布了,但是R10收不到.

有可能的原因:

-----R8关掉基于RT值的过滤,这样的话即使RT不匹配,我这段也能收到相关的vpnv4路由,但是重分布的时候,即使做对了,也不能重分布进入.例如:

router bgp xxx

no bgp default route-target filter

exit

检查命令,在R8上面:

             show ip bgp vpnv4 all 22.1.1.1 //可以查看相关发送过来的RT export.

             show ip vrf detail //可以看到本端需要接收的RT import是多少.

------R8需要重分布bgp到vrf的IGP路由协议中.

否则的话, 在R8上面vpnv4的路由表有相关条目,但是show ip route vrf Hank中,是没有对端R2 CE宣告的路由的.

如果IGP是EIGRP的话,在做重分布的时候,需要将Metric的K1-5写进去,默认是无穷大.

router eigrp 99

!

address-family ipv4 vrf Hank autonomous-system 10

redistribute bgp 65000 metric 1000000 1 255 1 1500

network 17.1.1.1 0.0.0.0

exit-address-family

------如果R8 vrf有相关的CE2的路由,那R8到R10之间就用基本的IGP故障排查思路进行故障排查.

2, 数据平面---报文转发(LDP,CEF,label)

当控制层面工作正常以后,数据平面的作用是CE之间相互能传递数据报文.

测试拓扑图,R2--发送数据包--->R10:

当控制层面的问题解决完了,这个时候路由已经相互通告到对端的CE了.

现在是说R2 发送数据包,到R10,是否能正常转发的问题.

No.1 在R1上面看MPLS LDP label.

对于R1来说,标签有两层,

外层标签: LDP: 88.1.1.1

VPN标签:CE的路由(R10的环回口).由MP-BGP进行标签的分发.

所以,在R1上面,需要查询VRF HANK的cef表.

     show ip cef vrf Hank detail

外层标签,是为bgp路由的下一跳88.1.1.1分配的标签.

这里再说一下309这个公网标签是如何分配过来的.实际上是R3分配的标签通告给R1的.使用LDP协议分配的.为88.1.1.1(R8的环回口)分配的标签.通告给R1.

如果发现,R1只有vpnv标签(内层标签),没有外层的LDP标签,可能的问题有:

---LDP邻居是否有起来.在R1和R3上面show mpls ldp neighbor进行验证.

如果连LDP邻居都没有起来,可能的问题有:

----1)ISP域之间采用的标签协议不同导致. LDP && TDP,可能性比较小,攻击的时候不排除.

----2)LDP的transport地址相互不可达. (使能了LDP协议以后,默认的情况是会自动选举一个LDP router-id,默认用环回口,而transport IP默认也是环回口,如果transport IP不可达,LDP的邻居建立无法成功,因为是用transport IP TCP的方式来建立邻居.)------>检查路由器是否忘记宣告环回口进入IGP路由协议中.

R1和R8一般不容易出问题. 而R3很容易出该问题.

用扩展ping来检查即可在R1和R3上面.

如果LDP邻居R1和R3起来了,但是R1依然没有收到公网标签,原因如下:

1)是否有一些标签的控制机制在作怪.

R3通告标签的控制.

R1接收标签的控制.

               show run | in mpls //推荐使用,直接看有没有策略.

需要关注是否结果包含下面语句:

发送:

no mpls ldp advertise-labels //标签发送

mpls ldp advertise-labels for x to y //标签发送

标签接收:

mpls ldp neighbor 55.1.1.1 label accept 1 //仅仅接收LDP neighbor 55.1.1.1所定义的ACL1的允许的标签.

2)路由器没有启用CEF.

CEF是FIB表,如果没有cef,那么也就没有LFIB.所以对于cisco设备来说,CEF是一定要启用的.否则的话是全部的前缀状态都是no label.

3) 对于标签,不能只看其中的某个点,而是端到端一路从PE到对端PE看过去.每个设备上面都要有标签。其实简单的办法就是在R1 PE1上面,traceroute 88.1.1.1,看结果是否全部都有标签.能从R1到R8的环回口,那么外层标签是没有问题了.

因为数据到R5出口的时候,因为PHP倒数第二跳弹出机制,已经pop label了,那么最后在R8上面收到数据包的时候只有一个vpnv4的标签,是mp-bgp分配的,其中可以看到, local=811,而且后面是[V],说明是一个vpnv4的标签:

最后数通通讯成功:

label=112, 是vpnv4的内层标签,R1通过MP-BGP分配给22.1.1.1的vpnv4标签.

506和306都是P设备通过LDP向11.1.1.1(BGP的下一跳)分配的标签.

时间: 2024-10-10 04:37:04

MPLS VPN 故障排查详解—Yeslab 彭Sir笔记的相关文章

jQuery内核详解与实践读书笔记1:原型技术分解2

上一篇已经搭建了一个非常简陋的jQuery框架雏形,如没有阅读搭建过程,请先阅读<jQuery内核详解与实践读书笔记1:原型技术分解1>初始搭建过程.接下来,完成书中介绍的剩下三个步骤: 7. 延续--功能扩展 jQuery框架是通过extend()函数来扩展功能的,extend()函数的功能实现起来也很简单,它只是吧指定对象的方法复制给jQuery对象或jQuery.prototype对象,如下示例代码就为jQuery类和原型定义了一个扩展功能的函数extend(). 1 var $ = j

jQuery内核详解与实践读书笔记1:原型技术分解1

一直以来都有研究一下jQuery源代码的想法,但是每次看到jQuery几千行的代码,头就大了,没有一点头绪,也不知道从哪里开始.昨天去图书馆无意间发现了这本<jQuery内核详解和实践>,翻看了一下里面的内容,这正是我寻觅多时剖析jQuery源码的好书. 废话不多说,直入正题吧.第一章介绍了一下jQuery的起步和一些历史故事,没什么重要内容.这里直接进入第二章,jQuery技术解密,从这一章开始就全部是干货了.这一章主要分四部分:jQuery原型技术分解,破解jQuery选择器接口,解析jQ

SSH 远程连接原理及故障排错详解

1.SSH 远程连接介绍 最常用的 Linux 提供远程连接服务的工具就是 SSH 软件,SSH 分为 SSH 客户端和 SSH 服务端两部分.其中,SSH服务端包含的软件程序主要有 openssl 和 openssh,在 Linux 系统中可以按如下方法查询 SSH 服务端工具的安装情况. # rpm -qa openssl openssh 其中,openssh 是提供 SSH 服务的程序,openssl 是为 SSH 提供连接加密的程序. 2.SSH 服务端介绍 启动 Linux 系统时,默

IBM DS 5300存储硬盘故障数据恢复详解

亚数据恢复接到IBM DS 5300 存储数据恢复的案例: IBM DS5300全名(IBM System Storage DS5300)是IBM推出的中端存储系统,它有一个设计合理.功能强大的内部架构,大幅度提升了性能,但某些物理故障或其他操作都可能会对卷或存储造成破坏,因此对系列存储的数据恢复技术才有了用武之地.而发生这些故障之后只能找专业的数据恢复公司做数据挽救工作.作者最近就处理过一起IBM DS5300因磁盘故障导致存储不可用的案例,见下文. 故障描述: 某公安局的一台IBM DS53

引导过程常见故障排除详解

本篇博客将从理论到实验操作详细描述Liunx系统的完整引导过程,并解决三种影响正常开机的故障. 目录引导: 开机引导过程 修复MBR扇区故障引起的故障 修复GRUB菜单故障引起的故障 重置Centos7系统管理员(root)密码 一.完整的开机引导流程 开机自检:也称加电自检(POST,Power On Self Test). 指计算机系统,接通电源,(BIOS程序)的行为,包括对CPU.系统主板.基本内存.扩展内存.系统ROM BIOS等器件的测试.如发现错误,给操作者提示或警告.简化或加快该

《TCP/IP详解 卷一》读书笔记-----动态路由协议

1.以下条件只要有一个不满足,则需要使用动态路由协议:1)网络规模小,2)只有一个连接点用于连接其他网络,3)没有冗余的路由器(一般用作备份) 2.所谓动态路由就是各个路由器与自己相邻的路由器交换各自连接的网络的信息,从而使自身的路由表一直处于最新状态,而不同的交流更新方式,称为不同的动态路由协议 3.我们将整个互联网分为许多个自治系统(autonomous system,AS),每个自治系统里的路由器使用同一个动态路由协议,称为IGP(interior gateway protocol)而两个

《TCP/IP详解 卷一》读书笔记-----第三章 IP

1.Network byte order:数据在网络中的传输是按照大端模式来的,即如果需要传递一个四个字节的int变量,先传递最高的字节,然后依次类推.因此无论主机存储数据用的是大端模式还是小端模式,在传输之前都必须将其转换为大端. 2.IP数据报报头的检验和字段只对报头进行检验.因为通常IP数据报的数据字段中包含的TCP,UDP,ICMP,IGMP数据头部都包含对自身每个比特的校验,所以并不需要在IP数据报报头中进行重复校验. 3.IP路由:当IP层收到一个数据报之后,首先1)检验目的IP地址

《TCP/IP详解 卷一》读书笔记-----广播&amp;多播&amp;IGMP

1.广播和多播都只适用于UDP,因为TCP是面向连接的,需要将两台主机的两个进程绑定在一起,即IP地址和端口对 2.通常,网卡能看到网络中的每一个数据帧,但是往往它只接受目的地址与自己MAC地址相同的或者为广播地址的帧(现在有些也能接收多播地址),然后将它传输给设备驱动 3.广播的问题在于它给那些对广播数据不感兴趣的主机增加了处理负担(需要通过网卡,驱动,IP等一层层的判断),而多播的出现恰好解决了这些问题.通常一台主机会被指定加入一个或多个多播组,网卡也会被告知自己属于哪几个多播组,于是只有属

《TCP/IP详解 卷一》读书笔记-----TCP数据流

1.Delayed Acknowledgements:TCP通常不会在收到数据之后立即返回一个ACK,而是会有一个延时,希望能ACK报文段中带上一些数据,通常这个延时为200ms 2.Nagle Algorithm:在TCP连接中,只能有一个小的报文段未被确认.即TCP在发送了一个小的报文段之后,会将之后的小数据都收集起来,直到之前的小报文段得到确认,才将收集到的小数据打包成一个报文段发出.这样做的减少了网络中小报文段的数量,减轻了网络的阻塞,提高了传输的效率 3.当一个包到达以后,它首先被设备