CCIE SP—MPLS Basic 1

传统的IP转发的缺点:

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

MPLS的标签转发的优点:

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

上游和下游的概念:

在MPLS中,上游和下游的概念非常重要,所以要分清
上游:数据转发的起始方向。
下游:路由分发的起始方向,也是标签分发的起始方向。

MPLS的包格式:

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

TDP与LDP

1、不同之处主要在于TCP的端口,TDP是基于TCP 711,而LDP基于TCP 646。
2、两者不能兼容。
3、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种原因:
1、下游不能分配标签,没有启用MPLS
2、下游分了标签但传不出来,是因为LDP Neighbor没有建立
3、分配标签错误,这种情况仅出现在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:

1、当一个数据包进入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

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

0
你可以留言,或者trackback 从你的网站

2 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