一、拓扑图: 二、网络环境描述: 1.所有路由器运行OSPF,同属Area 0,在各自的物理直连接口和LoopBack 0接口激活OSPF,网段10.1.1.1/32、10.2.2.2/32不宣告入OSPF; 2.只有R1、R4运行BGP(AS=100),使用各自的LoopBack 0接口建立邻居,并使用Import-route direct方式分别将各自后方网络10.1.1.1/32和10.2.2.2/32引入到BGP中,R1的BGP 100可以获得10.2.2.2/32路由信息,R2的BGP 100可以获得10.1.1.1/32路由信息。
三、问题: 在R1上使用ping命令测试到目的网段10.2.2.2/32不通,经分析R2没有去往10.2.2.2/32的路由信息,无法转发来自R1的ping包,该情况属于路由黑洞问题。
四、解决方法: 本案例采用MPLS方式解决路由黑洞问题。具体思路如下: 1.在所有路由器及其物理互连接口上激活MPLS,MPLS采用LDP动态建立对等体。 2.完成1.配置后,各路由器的LDP会话建立成功,各自生成其内的各FEC(路由前缀)对应的Label,并相互交换到上游设备,形成各FEC的Label映射信息表。 3.在R1上新建ip-prefix 1,允许10.2.2.2/32,并执行route recursive-lookup tunnel调用该ip-prefix;R4上同理。
注: recursive-lookup tunnel命令是用来使能迭代(递归)隧道功能。由于当R1发往10.2.2.2/32时,根据下一跳是4.4.4.4,默认情况下会递归查询4.4.4.4的路由(即使配置了MPLS LDP但依旧会采用IP路由方式进行转发),即匹配到OSPF学习到的4.4.4.4/32路由并转发给R2,路由黑洞依然没有解决(因为R2不运行BGP,不存在10.2.2.2/32路由信息)。因此使用route recursive-lookup tunnel命令(调用ip-prefix筛选出10.2.2.2/32网段)使查询转发10.2.2.2/32网段(该网段称为非标签公网BGP路由)时优先递归查询MPLS LSP而不是IP路由信息(利用与4.4.4.4/32的Tunnel ID建立对应关系),实现去往10.2.2.2/32网段的数据包使用MPLS LSP Tunnel进行传递,解决了路由黑洞问题。
|