MPLS经典问题利用MPLS解决和避免bgp路由黑洞问题

R1---(R2---R3---R4)--R5
|__EBGP__|_____IBGP______|__EBGP_|
 12.0/24          23.0/24      34.0/24   45.0/24

R2-R4是MPLS域
在R2和R4上重分布直连面向EBGP邻居的接口
使用R1和R5上的loopback1做为internet路由

r1#sh ip b
BGP table version is 7, local router ID is 1.1.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure
Origin codes: i - IGP, e - EGP, ? - incomplete

Network          Next Hop            Metric LocPrf Weight Path
*> 11.11.11.11/32   0.0.0.0                  0         32768 i
*> 55.55.55.55/32   192.168.12.2                           0 1 3 i
*> 192.168.12.0     192.168.12.2             0             0 1 ?
*> 192.168.45.0     192.168.12.2                           0 1 ?

r5#sh ip b
BGP table version is 7, local router ID is 5.5.5.5
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure
Origin codes: i - IGP, e - EGP, ? - incomplete

Network          Next Hop            Metric LocPrf Weight Path
*> 11.11.11.11/32   192.168.45.4                           0 1 2 i
*> 55.55.55.55/32   0.0.0.0                  0         32768 i
*> 192.168.12.0     192.168.45.4                           0 1 ?
*> 192.168.45.0     192.168.45.4             0             0 1 ?
-------------------------------
r2#  sh ip b
BGP table version is 5, local router ID is 2.2.2.2
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure
Origin codes: i - IGP, e - EGP, ? - incomplete

Network          Next Hop            Metric LocPrf Weight Path
*> 11.11.11.11/32   192.168.12.1             0             0 2 i
*>i55.55.55.55/32   192.168.45.5             0    100      0 3 i
*> 192.168.12.0     0.0.0.0                  0         32768 ?
*>i192.168.45.0    4.4.4.4                  0    100      0 ?

r2#sh ip route
     4.0.0.0/32 is subnetted, 1 subnets
O       4.4.4.4 [110/129] via 192.168.23.3, 01:26:32, Serial2/0

r2查找路由表,发现i55.55.55.55/32是一条bgp路由,而mpls不会为从bgp收到的路由分配标签,它再次查找,发现 i55.55.55.55/32的下一跳地址是192.168.45.5,同理,再次查找路由表,终于发现4.4.4.4是一条IGP路由,正好R3给4.4.4.4分配了一个301的标签给R2,这时候,最无耻的事情发生了,R2将这个标签copy到CEF表里面关于到55.55.55.55和192.168.45.0/24,的压入标签里面,也就是所有从192.168.45.5收到的bgp路由都有这种行为,如下所示:

r2#show ip cef detail

4.4.4.4/32, version 10, epoch 0, cached adjacency to Serial2/0
0 packets, 0 bytes
  tag informationset, shared
    local tag: 201
    fast tag rewrite with Se2/0, point2point, tags imposed: {301}
  via 192.168.23.3, Serial2/0, 1 dependency
    next hop 192.168.23.3, Serial2/0
    valid cached adjacency
    tag rewrite with Se2/0, point2point, tags imposed: {301}

55.55.55.55/32, version 19, epoch 0, cached adjacency to Serial2/0
0 packets, 0 bytes
  tag information from 4.4.4.4/32, shared
    local tag: 201
    fast tag rewrite with Se2/0, point2point, tags imposed: {301}
  via 192.168.45.5, 0 dependencies, recursive
    next hop 192.168.23.3, Serial2/0 via 192.168.45.0/24
    valid cached adjacency
    tag rewrite with Se2/0, point2point, tags imposed: {301}

192.168.45.0/24, version 18, epoch 0, cached adjacency to Serial2/0
0 packets, 0 bytes
  tag information from 4.4.4.4/32, shared
    local tag: 201
    fast tag rewrite with Se2/0, point2point, tags imposed: {301}
  via 4.4.4.4, 1 dependency, recursive
    next hop 192.168.23.3, Serial2/0 via 4.4.4.4/32
    valid cached adjacency
    tag rewrite with Se2/0, point2point, tags imposed: {301}

------------------------------------

路由器不会对从bgp收到的路由分配标签,所以在这里看不到55.55.55.55/32的标签绑定
r2#sho tag tdp bind     
  tib entry: 2.2.2.2/32, rev 4
        local binding:  tag: imp-null
        remote binding: tsr: 3.3.3.3:0, tag: 300
  tib entry: 3.3.3.3/32, rev 6
        local binding:  tag: 200
        remote binding: tsr: 3.3.3.3:0, tag: imp-null
  tib entry: 4.4.4.4/32, rev 8
        local binding:  tag: 201
        remote binding: tsr: 3.3.3.3:0, tag: 301
  tib entry: 192.168.12.0/24, rev 2
        local binding:  tag: imp-null
  tib entry: 192.168.23.0/24, rev 10
        local binding:  tag: imp-null
        remote binding: tsr: 3.3.3.3:0, tag: imp-null
  tib entry: 192.168.34.0/24, rev 12
        local binding:  tag: 202
        remote binding: tsr: 3.3.3.3:0, tag: imp-null

当R3收到带有301标签的mpls packet的时候,根据自己的标签转发表,进行次末跳弹出,下一跳是4.4.4.4/32,而4.4.4.4/32已经具有internet路由,所以它可以正常转发

r3#show tag-switching forwarding-table
Local  Outgoing    Prefix            Bytes tag  Outgoing   Next Hop   
tag    tag or VC   or Tunnel Id      switched   interface             
300    Pop tag     2.2.2.2/32        4061       Se2/0      point2point 
301    Pop tag     4.4.4.4/32        4457       Se1/0      point2point

而这时候,在R3上不存在55.55.55.55/32路由
r3#sh ip rou
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
       * - candidate default, U - per-user static route, o - ODR
       P - periodic downloaded static route

Gateway of last resort is not set

2.0.0.0/32 is subnetted, 1 subnets
O       2.2.2.2 [110/65] via 192.168.23.2, 00:28:23, Serial2/0
     3.0.0.0/32 is subnetted, 1 subnets
C       3.3.3.3 is directly connected, Loopback0
     4.0.0.0/32 is subnetted, 1 subnets
O       4.4.4.4 [110/65] via 192.168.34.4, 00:28:23, Serial1/0
C    192.168.23.0/24 is directly connected, Serial2/0
C    192.168.34.0/24 is directly connected, Serial1/0

这就是利用mpls来避免bgp的路由黑洞问题,应该是说清楚了吧?^_^

文章录入:csh    责任编辑:csh

(0)

相关推荐

  • MPLS经典问题利用MPLS解决和避免bgp路由黑洞问题

    R1---(R2---R3---R4)--R5|__EBGP__|_____IBGP______|__EBGP_| 12.0/24          23.0/24      34.0/24   45.0/24 R2-R4是MPLS域在R2和R4上重分布直连面向EBGP邻居的接口使用R1和R5上的loopback1做为internet路由 r1#sh ip bBGP table version is 7, local router ID is 1.1.1.1Status codes: s sup

  • Python利用神经网络解决非线性回归问题实例详解

    本文实例讲述了Python利用神经网络解决非线性回归问题.分享给大家供大家参考,具体如下: 问题描述 现在我们通常使用神经网络进行分类,但是有时我们也会进行回归分析. 如本文的问题: 我们知道一个生物体内的原始有毒物质的量,然后对这个生物体进行治疗,向其体内注射一个物质,过一段时间后重新测量这个生物体内有毒物质量的多少. 因此,问题中有两个输入,都是标量数据,分别为有毒物质的量和注射物质的量,一个输出,也就是注射治疗物质后一段时间生物体的有毒物质的量. 数据如下图: 其中Dose of Myco

  • C#利用递归算法解决汉诺塔问题

    目录 一.什么是递归 二.汉诺塔问题 1.汉诺塔的故事 2.解决思路 3.怎么解决汉诺塔问题 4.具体代码实现 三.完整代码 一.什么是递归 方法调用自己的行为就是递归,递归必须要有终止条件,不然它会无限递归. 1.先来看一下一个递归的例子 此程序的Fact方法从大到小地一级一级地调用自己,直到参数为1,然后就开始返回一级一级的从小到大地累乘,然后就计算出number的阶乘了. static int Fact(int num) { if (num <= 1) { return num; } el

  • JS利用循环解决的一些常见问题总结

    目录 1. 打印0-100中3的倍数 2. 在页面中写入 1000-2000年中的闰年 3. 打印100以内所有偶数的和 4.求出1-1/2+1/3-1/4……1/100的和 5. 打印三角形 5.1 普通三角形 5.2 倒三角 5.3 等腰三角形 6.等腰梯形 7.输出100-200之间所有的质数 9. 有一个棋盘,有64个方格,在第一个方格里面放1粒芝麻重量是0.00001kg,第二个里面放2粒,第三个里面放4,棋盘上放的所有芝麻的重量 10.在页面上完成以一个九九乘法表 11.打印一个3行

  • Java利用Optional解决空指针异常

    目录 背景介绍 案例 基本用法解析 转换与过滤 案例优化 源码解析 总结 背景介绍 Java 8 引入了一个十分实用的 Optional 类,它主要是为了解决空指针异常(NullPointerException).当我们对对象的属性进行检查,判断它的值是否为期望的格式,最终却发现我们查看的并不是一个对象,而是一个空指针,它会立即抛出一个让人厌烦的 NullPointerException 异常. 本质上,Optional 类是一个包含有可选值的包装类,这意味着 Optional 类既可以含有对象

  • JS利用Intl解决前端日期和时间的格式化详解

    目录 简介 构造 locales 参数 options 参数 Intl.NumberFormat Intl.DateTimeFormat 简介 Intl 是一个全局对象,它的主要用途就是展示国际化信息,可以将字符串,数字和日期和时间转换为指定地区的格式. 在前端开发中,我们通常会使用第三方库来处理日期和数字的格式化,比如 numeral.dayjs.date-fns 等库,这些库包含了许多的功能,如果我们在项目中仅仅只使用了格式化的功能的话其实是可以不用引入这些库的,JavaScript 自带的

  • 解决使用vue.js路由后失效的问题

    新学了vue.js中的路由 在之前写的vue的demo上加上了简单的路由例子(来自vue-router 2),但是加上点击后只有地址栏变化,内容并不变.且之前用jquery写的一些效果也失效了.最后找到原因是因为同一个id被启动了两次(第一次是之前使用vue组件时启动的,另外一个是路由时启动的) 附上部分代码 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <!-- 引入样式

  • 解决vue单页路由跳转后scrollTop的问题

    作为vue的初级使用者,在开发过程中遇到的坑太多了.在看页面的时候发现了页面滚动的问题,当一个页面滚动了,点击页面上的路由调到下一个页面时,跳转后的页面也是滚动的,滚动条并不是在页面的顶部. 最开始我使用了一个很笨的方法,每个页面上都加上window.scrollTop(0,0);来解决问题,但是这个太繁琐了.最后和小伙伴们商量了一下,在main.js页面上加了这么一段代码 router.afterEach(function (to) { window.scrollTo(0, 0) }) 路由跳

  • 解决vue-router在同一个路由下切换,取不到变化的路由参数问题

    最近用vue写项目的时候碰到一个问题,在同一个页面下跳转,路由地址不变,路由参数有变化,一开始只是在data里取路由的参数,发现根本取不到变化的路由参数. 在网上查找了一番后发现可以这样写: watch: { '$route' (to, from) { //这样就可以获取到变化的参数了,然后执行参数变化后相应的逻辑就行了 console.log(this.$route.query) } } 以上这篇解决vue-router在同一个路由下切换,取不到变化的路由参数问题就是小编分享给大家的全部内容了

  • 解决vue多个路由共用一个页面的问题

    在日常的vue开发中我们可能会遇见多个路由需要共用一个页面的需求,特别是当路由是通过动态添加的,不同的路由展示的东西只是数据不同其他没有变化.例如: let routes = [ {path:"/zhanshan", components:Person, }, {path:"/lisi", components:Person, }, {path:"/wangwu", components:Person, } ] 这种情况的时候,我们发现,其实我们

随机推荐