CCNP 17 MPLS

MPLS:多协议标签交换

  • ISP应用
  • 包交换:基于数据包中的IP地址进行路由;
  • 标签交换:基于2.5层的标签进行数据转发;
  • 多协议:无论网络层运行什么协议;
  • 当下的主要应用:
  1. 解决BGP路由黑洞
  2. MPLS VPN
  3. MPLS TE(流量工程)
  • 使用MPLS首先需要开启CEF:
  1. 启动CEF可以被ASIC(硬件芯片)直接调用转发
  2. CEF解决了递归问题,对应MPLS的标签生成非常重要
  3. CEF生成FIB表,而TDP/LDP只能基于该表进行标签的分发;
  4. 普通的路由表中不允许存在其他协议的参数,只有CEF可以提供MPLS的标签保存
  • 控制层面:交换路由信息;标签的分发(MPLS不为BGP的路由进行标签分发)
    数据层面:根据路由转发用户数据;标签的压入和弹出,基于标签号进行数据的转发

控制层面:通过IGP或者EGP交互路由信息,在交互路由信息基础上,通过TDP/LDP为所学习到的路由条目生成标签号,同时将标签告知邻居;
该层面工作完成后------生成:
1、FIB转发信息数据库
2、LIB标签信息数据库(本地和邻居对各条路由条目生成的标签号)
3、LFIB标签信息转发数据库–将FIB表和LIB进行结合

数据层面:普通的IP数据包,基于FIB表转发;若存在标签号基于LFIB转发流量

  • MPLS的数据包封装于2层和3层之间,称为2.5层
    在这里插入图片描述
  • 标签数据格式:32位
    在这里插入图片描述
    前20位为标签号:存在2^20个号码,其中0-15号被保留;故正常分发第一个号码为16号
    20-22位:8个优先级,可用于进行QOS
    第23位:栈底位,为1,标示本层标签为最后一层;最多可以存在3层标签信息;
    TTL:当标签压入时,复制IP报头中的TTL值到标签中,当标签被弹出时复制TTL值到IP包头中;

在这里插入图片描述

  • 一层标签:普通的MPLS流量
    二层标签:MPLS VPN
    三层标签:MPLS TE
  • 使用MPLS后,二层若为以太网,其type 字段:
    0X8847 MPLS单播
    0X8848 MPLS 多播
名词注解:
  1. mpls domain -----MPLS工作的范围
  2. LSR(P路由器):标签交换路由器 查看数据包中的标签号基于LFIB进行数据转发
  3. Edge LSR(PE路由器):边界标签路由器;在数据层面工作时,第一跳路由器负责标签
    的压入,最后一跳路由器负责标签的弹出;
  4. CE 客户端路由器,不工作于MPLS域,使用FIB表转发流量
  5. 上游路由器,下游路由器 基于数据层面进行区分
MPLS工作原理
  • 在控制层面传递路由条目的同时,MPLS的TDP/LDP将基于每条条目进行标签号的分发,然后传递给邻居;上游设备传输流量时,压入下游设备分发的标签号;

MPLS的优化

  • PHP次末跳 倒数第二跳;默认执行
  • 最后一跳路由器在默认情况下需要查看LFIB后再查看FIB表,然后转发数据;PHP可以使倒数第二跳路由器在已知出接口等信息时,将标签弹出,就流量转发给最后一跳路由器;使最后一跳仅查看FIB表;
  • 最后一跳,到达某个目标为本地直连时,及视为本地是该目标的最后一跳路由器;基于该网段分配给上游路由器标签号3;来告知对端为倒数第二跳;
  • 注:PHP仅弹出最上层标签; pop 标示仅弹最上层标签Untagged MPLS域标记,弹出所有标签;

配置

  1. 单播路由
  2. CEF
  3. 开启MPLS
  4. (可选,建议配置) 修改MTU大小,因为标签的压入后将增大数据包,可能由于默认的MTU值,导致数据被重新分割,影响转发速度

r1(config)#int s1/1
r1(config-if)#mtu 1504 直连两端必须配置为一致
r1(config-if)#ip cef
r2(config)#interface s1/1
r2(config-if)#mpls ip 开启某个接口的MPLS

  • 分发的协议存在两种:
  1. TDP ------cisco私有 ------- TCP/UDP 711 -----hello包基于UDP传输,标签信息传输基于TCP
  2. LDP ------ 公有 -------------- TCP/UDP 646----- hello包基于UDP传输,标签信息传输基于TCP
  • Cisco ios版本12.4(3)以下设备默认使用TDP,以上默认LDP
  • 设置mpls标签范围

R2(config)#mpls label range 200 1044
r2(config)#mpls label protocol ? 修改工作协议
ldp ----Use LDP
tdp---- Use TDP (default)

  • 协议开启后,邻居间使用hello包建立邻居关系,生成邻居表

r2#show mpls ldp neighbor

  • 存在RID,RID的选举规则同OSPF一致;
  • 注:RID也是数据包发送的目标ip地址,故若RID不能被访 问到,那么邻居关系将不能建立;若配置了环回,那么环回需要宣告到单播路由协议中;
  • 也可以修改RID为本地物理接口;

r2(config)#mpls ldp router-id serial 1/1 ? 修改该接口ip地址为RID
force Forcibly change the LDP router id 即可生效
< cr> 重启后生效

  • 当邻居关系建立后,基于FIB表,生成LIB表
  • MPLS将基于本地所有学习到的路由条目分发一个标签号,FIB中基于本地和邻居分配给每条条目的所有编号;
  • 当LIB生成后,将LIB和FIB表进行结合,生成LFIB表来转发流量;

r2#show mpls forwarding-table
入标签为本地分配
出标签标签为下游分配

普通的MPLS解决BGP的路由黑洞问题:

  • MPLS将不为通过BGP学习到的路由条目分发标签号;但是在访问BGP学习的目标时,封装该目标BGP下一跳地址所在网段的标签号;使中间未运行BGP协议的路由器,基于标签号将流量转发到BGP的下一跳处,来避免路由黑洞;

MPLS VPN

  • 通过公网来传递私网的路由条目,由ISP负责
  1. CE端和PE端的路由传递
  2. 如何区分不同的CE传递过来的相同路由----RD
    RD—路由区分器----一个64位16进制的数值 X:X 1:1
  3. ISP路由器不能将CE端的路由装载到本地的普通路由表中,提供VRF空间
    VRF:虚拟路由转发----在PE上配置,基于不同的CE端生成各种的路由表
  4. VRF中的路由不是普通路由,普通路由协议不能将其进行传递,必须使用MP-BGP来传递
    VPNV4路由===IPV4路由+RD+RT值
  5. RT值,用于区分不同的目标接收者 RT值的格式同RD值,但RD为数值,RT为社团属性
  6. 使用MPLS可以解决路由黑洞,但当数据层面流量到达目标地址所在BGP路由器时,由于数据层面流量不能携带RD/RT值,故在弹出标签后,导致流量无法对应到不同CE端的VRF空间;因此,使用双重标签;外标签由于解决路由黑洞,将流量转发到CE端所连PE,内层标签用于对应不同的VRF空间;
配置
  • ISP的部分
  1. 单播路由
  2. CEF

r1(config-if)#ip cef
r2(config)#interface s1/1
r2(config-if)#mpls ip 开启某个接口的MPLS
PE所有接口都要开启

  1. MPLS
  2. 定义VRF空间,同时关联所连接的CE端接口,在同时定义RD/RT

r2(config)#ip vrf openlabxian 创建空间名为openlabxian
r2(config-vrf)#rd 1:1 RD值
Router(config-vrf)#route-target export 1:1 本地RT
Router(config-vrf)# route-target import 2:2 接受RT
Router(config-vrf)# route-target import 3:3 RT值
r2(config-vrf)#exit
r2(config)#interface s1/0 进入关联接口
r2(config-if)#no ip address 因为该接口将归属于VRF空间,故原IPV4地址需要排除
r2(config-if)#ip vrf forwarding openlabxian 关联空间
r2(config-if)#ip address 12.1.1.2 255.255.255.0 配置该接口ip地址,该接口所在路由将转移 到VRF空间内

r2#show ip route vrf openlabxian 查看该空间内的路由条目
r2#ping vrf openlabxian 12.1.1.1 使用该空间的路由来进行通信

注:当流量从某VRF空间所关联接口进入,那么将查询该VRF内的路由条目;
非VRF空间所关联接口进入,查看普通IPV4路由表

  1. MP-BGP—两个PE上配置
  • 使用MP-BGP来传递VRF空间内的路由条目
    先建立IPV4的BGP邻居关系,再建立MP-BPG关系

r2(config)#router bgp 1
r2(config-router)#b router-id 2.2.2.2
r2(config-router)#neighbor 4.4.4.4 remote-as 1
r2(config-router)#neighbor 4.4.4.4 update-source loopback 0
r2(config-router)#address-family vpnv4 进入家族模式
r2(config-router-af)#neighbor 4.4.4.4 activate 建立MP-BGP邻居关系
r2(config-router-af)#neighbor 4.4.4.4 send-community 开启社团属性传递性, 否则RT将不
能被传递

  • CE端将私网路由传递给PE端
    【1】静态
  1. CE端,配置缺省静态指向ISP即可
  2. PE端配置到CE端私网的静态路由

r2(config)#ip route vrf openlabxian 192.168.1.0 255.255.255.0 serial 1/0 12.1.1.1
出接口和下一跳必须同时存在;

r2(config)#router bgp 1 再将本地VRF空间内的直连和静态路由重发布到BGP协议中
r2(config-router)#address-family ipv4 vrf openlabxian
r2(config-router-af)#redistribute static
r2(config-router-af)#redistribute connected

r2#show ip bgp vpnv4 vrf openlabxian

  Network          Next Hop            Metric LocPrf Weight Path
Route Distinguisher: 1:1 (default for vrf openlabxian)
*> 12.1.1.0/24        0.0.0.0                  0         32768 ?
*> 192.168.1.0        12.1.1.1                 0         32768 ?

【2】RIPV2

  1. CE端正常启动和配置RIPV2
  2. PE端配置:

r2(config)#router rip
r2(config-router)#version 2
r2(config-router)#no auto-summary
r2(config-router)#address-family ipv4 vrf openlabxian
r2(config-router-af)#network 12.0.0.0
r2(config-router-af)#redistribute bgp 1 metric 1

r2(config)#router bgp 1
r2(config-router)#address-family ipv4 vrf openlabxian
r2(config-router-af)#redistribute rip

【3】EIGRP

  1. CE端正常配置EIGRP协议
  2. PE端配置:

r4(config)#router eigrp 1 启动时,需要使用本地真实的AS号
r4(config-router)#no auto-summary
r4(config-router)#address-family ipv4 vrf openlabwu
r4(config-router-af)#autonomous-system 90 在VRF内建邻时告知CE端所使用AS号
r4(config-router-af)#network 45.0.0.0
r4(config-router-af)#redistribute bgp 1 metric 1544 100 255 1 1500

r4(config)#router bgp 1
r4(config-router)#address-family ipv4 vrf openlabwu
r4(config-router-af)#redistribute eigrp 90 导入时使用私有AS号

【4】OSPF

  1. CE端正常配置
  2. PE端

r2(config)#router ospf 1 vrf openlabxian
r2(config-router)#router-id 2.2.2.2
r2(config-router)#network 12.1.1.2 0.0.0.0 a 0
r2(config-router)#redistribute bgp 1 subnets
r2(config-router)#exit

r2(config)#router bgp 1
r2(config-router)#address-family ipv4 vrf openlabxian
r2(config-router-af)#redistribute ospf 1

  • 注:若两端的PE上实施不同的OSPF虚拟进程号,那么路由条目显示5类学习;
    若两端均为OSPFI协议,且虚拟进程号相同,那么路由条目为1类、3类
    Show ip bgp vpnv4 all summaryv展示vpnv4的邻居先在全局下 MPLS label rang 100 199 控制标签范围

猜你喜欢

转载自blog.csdn.net/heibaikong6/article/details/87884451