梅利333

从无到有,自有至精

导航

MPLS-2 框架

初识MPLS

 

 

 

 想要运行MPLS ,必须完成以后三步走

第1 基于IGP协议

路由器运行IGP协议,维护RIB表以及CEF表(FIB表) forwarding information base

 这个不用多说,只要是支持CEF的表设备,有RIB就肯定会有CEF

 

 

 

 运行完IGP协议后,会学习路由条目,

 

第2运行LDP 协议

MPLS 标签模式

LDP 公有标准

TDP 思科私有协议

如果两端所使用的协议不同,则LDP 的邻居无法建立

 

 

 

 (标签分发协议)维护LIB表(label information base)

首先要确保该设备支持MPLS ,并且可以支持LDP协议。才可以

(LDP公有 TDP cisco私有)

 

 

 

 

LDP最重要的两个功能

 1捆绑标签

在本地为所有的路由前缀捆绑标签,

比如R3为30.0的条目,在本地捆绑300

     R2为30.0的条目,在本地捆绑200

 2 通告标签

然后将这个标签通行给我的LDP邻居

然后维护自己的LIB表,(label information base)

 

 

 

 LIB表最终形态就是这样的

本地捆绑的标签是给我的LDP邻居用的。当然,R1也会把30.0的条目标签发送给R2,但是R2并没有最终走它,为什么?因为会考虑IGP协议的下一跳设备。

 

第3 更新FIB、LFIB

路由器更新CEF表,同时维护自己的LFIB表(label forwarding information base)

 

 

 

 此时,就出现了4个表,

RIB  routing information base

FIB  cef表 forwarding information base

LIB  label information base

LFIB  label forwarding information base

可以理解为LFIB表是由LIB 和FIB表共同建立的。

 

MPLS 基础配置

那它们都是什么样的呢?

别急,咱们来完成一个MPLS的基础配置看一下

 

拓扑如下

 

 

 

1 三台设备运行IGP协议(这里选择的是OSPF,就不再赘述了)

2 启用LDP标签分发协议,并且手动指定标签范围

3 启用MPLS协议

 

命令如下

R1

R1(config)#ip cef                   ////设备一定要支持CEF才可以,并且要确保开启
R1(config)#mpls ldp router-id lo 1     //指定LDP的RID为loopback接口
R1(config)#mpls label range 100 199   //指定标签分发的范围
R1(config)#inter f0/0       //进入相应的接口下
R1(config-if)#mpls ip       //开启MPLS

这里需要注意的是,在LDP的协议中,这个RID和OSPF里的定义是一样的

就是用于标识设备的,另外,-它同样和OSPF一样,支持选举,

可以指定loop back 接口,也可以让它自己来选定

 

R2

R2(config)#ip cef
R2(config)#mpls ldp rou lo 1
R2(config)#mpls lab range 200 299
R2(config)#inter range f0/0 - 1
R2(config-if-range)#mpls ip

R3

R3(config)#ip cef
R3(config)#mpls ldp rou lo 1
R3(config)#mpls lab range 300 399
R3(config)#inter f0/0
R3(config-if)#mpls ip

如果说LDP的Neigbor能够起来的话,系统会有相应的提示

 

 

 

 先来看看刚才提到的那些表项如何查看吧

 

查看表项

1 FIB(CEF)

Show ip cef

R3#show ip cef
Prefix              Next Hop             Interface
0.0.0.0/0           drop                 Null0 (default route handler entry)
0.0.0.0/32          receive
1.1.1.1/32          23.0.0.2             FastEthernet0/0
2.2.2.2/32          23.0.0.2             FastEthernet0/0
3.3.3.3/32          receive
12.0.0.0/24         23.0.0.2             FastEthernet0/0
23.0.0.0/24         attached             FastEthernet0/0
23.0.0.0/32         receive
23.0.0.2/32         23.0.0.2             FastEthernet0/0
23.0.0.3/32         receive
23.0.0.255/32       receive
224.0.0.0/4         drop
224.0.0.0/24        receive
255.255.255.255/32  receive

CEF表,只要是设备支持,就一定可以查看的,其实在路由设备进行转发数据的时候,最终查询的还是CEF表,而不是RIB表。使用CEF表可以有效的降低数据转发过程中的递归查询,从而实现所谓的“思科特快转发”

 当然,你也可以直接但看CEF时,查看具体的一个前缀,如下:

 Show ip cef x.x.x.x

R3#show ip cef 1.1.1.1
1.1.1.1/32, version 8, epoch 0, cached adjacency 23.0.0.2
0 packets, 0 bytes
  tag information set
    local tag: 300     //本地标签
    fast tag rewrite with Fa0/0, 23.0.0.2, tags imposed: {200}  //强行压入的标签
  via 23.0.0.2, FastEthernet0/0, 0 dependencies
    next hop 23.0.0.2, FastEthernet0/0  //下一跳地址以及出接口
    valid cached adjacency
tag rewrite with Fa0/0, 23.0.0.2, tags imposed: {200}  //{所压入的标签}

 

2 LIB

Show mpls ldp bindings

R3#show mpls ldp bindings
  tib entry: 1.1.1.1/32, rev 2
         local binding:  tag: 300  //本地对该条前缀标记的标签
         remote binding: tsr: 2.2.2.2:0, tag: 200  //来自于neighbor2.2.2.2来的标签
 
(对于ldp的标签而言,始终记住一句话,我自己为本地压入的标签是给我的邻居用的)

  tib entry: 2.2.2.2/32, rev 4
         local binding:  tag: 301
         remote binding: tsr: 2.2.2.2:0, tag: imp-null
  tib entry: 3.3.3.3/32, rev 6
         local binding:  tag: imp-null
         remote binding: tsr: 2.2.2.2:0, tag: 201
  tib entry: 12.0.0.0/24, rev 10
         local binding:  tag: 302
         remote binding: tsr: 2.2.2.2:0, tag: imp-null
  tib entry: 23.0.0.0/24, rev 8
         local binding:  tag: imp-null
         remote binding: tsr: 2.2.2.2:0, tag: imp-null
R3#

 

3 LFIB

有了LIB表,有了FIB表,二者共同构建了LFIB表(label information forwarding base)

Show mpls forwarding-tables

R3#show mpls forwarding-table
Local  Outgoing    Prefix            Bytes tag  Outgoing   Next Hop   
tag    tag or VC   or Tunnel Id      switched   interface             
300    200         1.1.1.1/32        0          Fa0/0      23.0.0.2    
301    Pop tag     2.2.2.2/32        0          Fa0/0      23.0.0.2    
302    Pop tag     12.0.0.0/24       0          Fa0/0      23.0.0.2    
R3#

解读

1 local tag 本地标签    //prefix中所标记前缀在本地压入的标签

2 Outgoing tag or VC    //出去的动作

3 prefix or tunnel ID    //前缀或者是tunnel id

4 outgoing interface    //出接口

5 next hop           ///下一跳地址

 

查看LDP邻居列表

Show mpls ldp neighbor

 

 

 Peer ldp ident 1.1.1.1:0; local ldp ident 2.2.2.2:0

邻居的LDP标识为:  本地LDP标识为:

Tcp connection:1.1.1.1:646 – 2.2.2.2.36511

Tcp连接的地址及端口号,646 对随机

  

查看邻居发送接收状态

Show mpls ldp discovery

 

 

 Local ldp identifier 本地LDP 标识

3.3.3.3

Interface 本端接口

Xmit/recv  //发送和接收,如果都有则显示LDP的邻居且标签分发过程正常

Ldp id : 对端的LDP ID(也是我们前面提到的tracport address,和对端设备建立LDP的三次握手,必须保证这个地址是能够通信的,这一点和OSPF的RID是有所不同的,OSPF的RID,就是一个虚构的,可以不互通,仅做标识使用。需要注意)

 

关于outgoing tag

1 移除 POP

也可以叫做弹出,同样的,只会弹出报文中最前端(顶层)的标签

 

 

 2 交换 swap  

会显示为 Local --- outgoing的标签转换,但是只会交换最前面的(顶层)

 

 

 3 添加 push

 会在原有标签的基础之上再加上一个新的标签

 

 

 

4 未标记/无标签

5 聚合

 

Untagged(在部份IOS中,会显示为no label)

(移除所有标签),不管你有多少层标签,只要是标记为Untagged的话,那么将会由一个标签包直接 转换成IP包

 

 

看到这里你是否会有一个疑惑?

什么疑惑呢?

就是LDP的邻居是如何建立的?

是像IGP协议那样?还是像BGP协议那样呢?

 咱们下节笔记详见......

 

 

 

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

CCIE成长之路  --- 梅利

posted on 2020-09-24 08:21  梅利333  阅读(369)  评论(0编辑  收藏  举报