CCIE SP—MPLS Basic 1

传统的IP转发的缺点

  • 路由表比较大,占用存放空间
  • 寻址比较慢,所以转发自然也慢

MPLS的标签转发的优点

  • 只有边缘执行路由的查找
  • 核心路由器只需查找标签就可以进行转发了。

上游和下游的概念

在MPLS中,上游和下游的概念非常重要,所以要分清:

  • 上游:数据转发的起始方向;
  • 下游:路由分发的起始方向,也是标签分发的起始方向;

MPLS的包格式

通常,MPLS包头有32Bit,其中有:

  • 20Bit用作标签(Label)
  • 3个Bit的EXP, 协议中没有明确,通常用作COS
  • 1个Bit的S,用于标识是否是栈底,表明MPLS的标签可以嵌套,S=1时是底层标签
  • 8个Bit的TTL,类似IP包头,用于防止环路
  • 理论上标记栈可以无限嵌套,从而提供无限的业务支持能力。这是MPLS技术最大的魅力所在

TDP与LDP

  • 不同之处主要在于TCP的端口,TDP是基于TCP 711,而LDP基于TCP 646
  • 两者不能兼容
  • TDP LABEL分配是16 – 100,000,LDP LABEL分配是10 – 100,000

MPLS的机制

  1. 数据包本身就是带LABEL,所以直接通过LFIB进行转发。
  2. 标签被弹出,并进行FIB查找并转发,在MPLS VPN中会有,针对Aggregate。
  3. 当一个IP报文进入后,查看是否压入标签,压入标签的前提是是否收到下游分配的标签。如果收到,压入标签并进行LFIB查找并转发。
  4. 如上所述,如果收不到下游分配的标签,就直接进行FIB查找并进行转发。
  5. 弹出所有标签,不用查找FIB,直接根据下一跳转发,这种情况一般是Untag或是PoP。

PoP、Untag和Aggregate的区别

  • Aggregate:
    • 直连路由,弹出Label时,因没有关联接口与下一跳,所以需要进行3层查找。
  • PoP:
    • 收到了下游发来的空标签,也就是label=3,这个空标签也是标签,所以他会弹出顶层标签,进行转发,因为MPLS是基于下一跳转发查找,所以没必要查找FIB表。
  • Untag:
    • 专指学到路由,弹出所有标签,随后根据下一跳转发。出现untag有以下3种原因:
      • 下游不能分配标签,没有启用MPLS
      • 下游分了标签但传不出来,是因为LDP Neighbor没有建立
      • 分配标签错误,这种情况仅出现在IGP是OSPF的情况下,因为如果用环回口作为ldp的router-id,并且不是32位的,OSPF会自动以32位的环回地址发布,这样会导致标签就分配错误,下面是从试验中摘要的信息:
R2#show mpls ldp bind
...lib entry: 11.11.11.0/24, rev 11   <这个表项是通过LDP分发得到的>
..........remote binding: lsr: 11.11.11.11:0, label: imp-null
...lib entry: 11.11.11.11/32, rev 6   <这个表项是根据CEF分配的>
..........local binding:  label: 100
..........remote binding: lsr: 33.33.33.33:0, label: 201
 
R2#sh mpls for
Local  Outgoing      Prefix            Bytes Label   Outgoing   Next Hop
Label  Label or VC   or Tunnel Id      Switched      interface
100    No Label      11.11.11.11/32    0             Se1/0      point2point
101    Pop Label     33.33.33.33/32    0             Se1/1      point2point

上面的拓扑是R1 <—>R2<—>R3

R1通过OSPF发布一个24位的环回路由11.11.11.11,在R2上收到一个来自R1分发的24位路由bind,标签为imp-null,如上所示。

但由于R2收到的路由为32位(OSPF环回口特性),所以它又产生了一个32位的路由bind,并且从R3上收到标签201,R2和R3都是对32位的路由分发标签,而R1只对24位的路由分发了标签,显然对于R2、R3来说,收不到R1针对32位路由的标签,因此是No label(Untag)。以下是R1的信息:

R1#sh ip cef
Prefix                  Next Hop      Interface
0.0.0.0/32              receive
11.11.11.0/24           attached      Loopback0  <LDP只对attached打imp-null标签>
11.11.11.0/32           receive
11.11.11.11/32          receive
11.11.11.255/32         receive

R1#sh mpls ldp bin
...lib entry: 11.11.11.0/24, rev 12
..........local binding:  label: imp-null
...lib entry: 11.11.11.11/32, rev 13(no route)
..........remote binding: lsr: 22.22.22.22:0, label: 100  <可以看到收到了R2发来的标签100,但它在CEF不是直连,所以没有给它分配imp-null标签>

Q&A

  • 当一个数据包进入PE后,是查路由表(FIB)还是查标签表(LFIB)?
    • 具体查哪个表,主要取决于包的本身 – 类型长度值:
    • Type:0x8847(单播)承载的是MPLS,查找LFIB
    • Type:0x8848(组播)承载的是MPLS,查找LFIB
    • Type:0x0800 IP报文,查找FIB

2015-2-17 更新
事实上,更准确的说,一个数据包到底如何转发,主要看CEF的信息,很简单的例子:

R1—–PE—P—PE—–R2

PE间只起MPLS(无VPN),R1 正常IPv4,R1发过来的数据包type是0x0800,那在PE上会怎么转发呢?会根据CEF打上标签发给P,直接走标签,而不是IPv4

  • 在初始路由器上,是查找FIB还是LFIB呢?
    • 这要取决于CEF表,用“show ip cef <ip address> detail”命令,可以从输出中看到对于此路由是否压入标签,分配标签是根据CEF表中的前缀来分配的。因此如果满足以下2个条件,那么就会打上标签并查找LFIB,如果不是,就查找FIB
      • 设备上启动CEF,为每条路由产生CEF前缀
      • 启动tag ip
本文出自 Frank's Blog

版权声明:


本文链接:CCIE SP—MPLS Basic 1
版权声明:本文为原创文章,仅代表个人观点,版权归 Frank Zhao 所有,转载时请注明本文出处及文章链接
你可以留言,或者trackback 从你的网站

No Responses to “CCIE SP—MPLS Basic 1”

  1. GKliu说道:

    文章对俺帮助很大!

    Aggregate:直连路由,弹出Label时,因没有关联接口与下一跳,所以需要进行3层查找。

    个人觉得PE-CE这段,从PE上sh mpls for de看到的aggregate 转发是有outgoing接口的(与untag的对比)

    个人觉得agg是不用三层查找的,而untag是三层查找的。。。。

  2. GKliu说道:

    刚才做了一下试验,果然说反了,>_<

    帮我删了吧,555555

留言哦

blonde teen swallows load.xxx videos