MPLS-多协议标签技术

MPLS(Multi-Protocol Label Switching多协议标签交换)

  • ISP使用
  • 包交换:依赖报文中的IP地址进行数据转发
  • 标签交换:基于2.5层的标签号进行数据转发;
  • 无论网络层运行何种协议,2.5层均可运行标签交换;

解决问题:

  1. 解决BGP的路由黑洞问题
  2. MPLS VPN
  3. MPLS TE(流量工程)

包交换的技术

  1. 原始的路由:流量进入路由器后,路由器基于目标IP地址查询路由表,再基于目标ip或下一跳ip查询ARP来获取对端mac
  2. natflow:一次路由多次交换-----传统的路由;当流量进入路由器后查询完路由表及ARP后,生成cache;再之后相同IP间的互访仅基于cache查询;
  3. CEF(思科快速交换):无需路由直接交换,将路由器表和ARP表转换为FIB(路由表)和ADJ(ARP)表,FIB和ADJ均为际二进制表,实使用时被结合,cisco私有
    FIB(转发信息数据库):-----目标ip地址及出接口—解决递归
    ADJ(邻居表):-----源目MAC

为什么使用MPLS的前提是设备基于CEF工作:

  1. 启动CEF后,表格可以被ASIC(硬件芯片)直接调用
  2. CEF解决了递归的问题,便于MPLS生成标签转发表格
  3. CEF工作后生成FIB表,只有FIB可以存储标签表;

控制层面和数据层面

  • 控制层面:交互路由信息;进行标签号的分发;
  • 数据层面:根据路由表转发用户数据报文;基于标签号进行数据转发;

控制层面:

通过IGP或EGP交互路由条目,生成路由表和FIB表;

MPLS使用TDP/LDP基于FIB表中的每一条信息(本地所有的路由条目)生成一个标签号,然后告知所有邻居;

该工作完成后路由器上生成:

  • 路由表
  • FIB表:转信息数据库
  • LIB表:标签信息数据库(本地和邻居关于所有学习到的路由条目生成的标签号)
  • LFIB表:标签转发信息数据库----将FIB表和LIB进行结合

数据层面:

普通的数据包将基于FIB表转发;若数据包中存在标签号基于LFIB进行转发;

MPLS的数据封装于2层和3层间,故称为2.5层

MPLS-多协议标签技术_第1张图片


MPLS的数据包格式

在这里插入图片描述
前20位为标签号:存在2^20个号码,其中0-15号保留;

21-23位为8个优先级,用于QOS;

第24位为栈底位:为1标示本信息为最后一层标签信息;最多可以存在3层标签;

25-32位TTL:当标签号被压入时,将复制3层报头的TTL值,然后每经过一个路由器减1,当标签号弹出时,复制回IP报头中;


多层MPLS标签

在这里插入图片描述
一层标签为普通MPLS,主要用于解决BGP的路由黑洞;

二层标签为MPLS VPN使用;

三层标签为MPLS TE使用;

使用MPLS后,二层若依然为以太网封装,那么类型号将变化:

  • 0x8847 MPLS 单播
  • 0x8848 MPLS 多播

名词注解

  1. MPLS domain:MPLS工作的范围
  2. LSR(P路由器):标签交换路由器 查看数据包中的标签号然后基于LFIB表进行转发
  3. Edge LSR(PE路由器):边界标签路由器;在数据层面时,MPLS 域的第一跳路由器负责标签的压入,最后一跳负载弹出;
  4. CE 客户端路由器,不工作于MPLS域,使用FIB表转发流量;

MPLS的工作过程

当控制层面使用路由协议传递路由条目后,路由器上使用TDP/LDP为FIB表中每一条存在的路由条目均分配一个标签号,装载于LIB表中,同时传递给邻居,LIB中还记录邻居传递到本地标签号;

之后路由器基于本地的FIB和LIB表生成LFIB(标签转发表):标签号的最佳路径对应;

数据层面工作时,第一跳路由器负责标签的压入,中间路由器基于标签号转发流量,最后一跳路由器负责标签的弹出;

注:入标签号为本地分配的标号,出标签为下一跳(下游)分配的标签号;
存在上下游路由器概念,基于数据层面定义;


MPLS的优化

PHP次末跳弹出(默认执行)

PHP次末跳 :倒数第二跳

最后一跳路由器在默认情况下需要查看LFIB表后再查看FIB表,然后转发数据;

PHP可以使倒数第二跳在已知出接口、下一跳等信息时便将标签号弹出,然后基于出接口转发流量,导致最后一跳路由器仅查看FIB表;

最后一跳路由器,将本地直连路由传递给邻居时使用标号3来告知对方为倒数第二跳;

非直连路由正常分配标签号;

MPLS-多协议标签技术_第2张图片

MPLS-多协议标签技术_第3张图片

注:pop标签仅弹出最上层标签:仅仅只是倒数第二跳;
untagged弹出所有标签:意味了离开MPLS domain;


配置

  1. 启动单播路由协议
  2. 开启CEF
  3. 开启MPLS(在标签号需要经过的所有接口上)
  4. 修改MTU值,链路两端一致;(可选,建议配置)
  • 普通MPLS:1504
  • MPLS VPN:1508
  • MPLS TE:1512
r1(config)#interface s1/1
r1(config-if)#mtu ?
  <64-17940> MTU size in bytes 修改接口MTU值
r2(config)#interface s1/1
r2(config-if)#mpls ip 开启某个接口的MPLS协议

MPLS封装

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;

r2(config)#mpls label protocol ? 修改封装协议
  ldp Use LDP
  tdp Use TDP (default)

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

r2#show mpls ldp neighbor    存在RID,RID的选举规则同OSPF一致

注:RID同时作为了建立TCP会话的源目ip地址;
若存在环回,那么默认使用环回作为RID,此时就必须将环回宣告到路由协议中(必须可达);

r2(config)#mpls ldp router-id serial 1/1 ? 修改RID为S1/1口的地址
  force Forcibly change the LDP router id 立即生效
   重启设备后生效

当邻居关系建立后,邻居间会将基于FIB表生成的标签号传递给邻居,保存于LIB表中:

r2#show ip cef detail 查看FIB表
r2#show mpls ldp bindings 查看LIB表

之后将LIB表和FIB表进行结合,生成LFIB表,基于该表格进行标签流量转发;

r2#show mpls forwarding-table 

解决BGP的路由黑洞问题:

MPLS将为FIB表中的路由条目分配标签号;
但通过BGP学习的条目不分配;
而是在访问BGP目标时,压入到达下一跳地址的标签号,来通过中间未运行BGP协议的网络到达下一跳处;


MPLS VPN:

  • VPN:虚拟专用网络
  • MPLS VPN:ISP配置,客户端透明;通过公网来传递私网路由和信息;

  1. CE端和PE端传递路由

  2. 如何区分不同CE端相同的路由条目:依赖RD值
    RD:路由区分器,一个64位的16进制数,
    格式:X:X ,一个CE端一个RD值对应一个接口

  3. ISP路由器不能将CE端的路由条目装载到本地普通路由表中,存储于VRF空间内
    VRF:虚拟路由转发 基于每个RD和接口一个空间

  4. VRF空间内的路由不是普通的路由条目,必须使用MP-BGP路由协议来传递
    普通的路由协议负责传递公网路由表中条目
    VRF内的路由被称为 VPNV4路由==IPV4路由+RD值+RT值*

  5. RT值,用于区分不同目标接收者;RT值和RD值的编写格式一致;
    RD值仅仅是一个参数,
    RT值是BGP的一种社团属性;

  6. 使用MPLS可以解决BGP的路由黑洞问题;
    CE1端将流量传递给PE1端口,PE1通过查看该CE1所绑定的VRF空间内路由条目将流量转发到PE2,PE2直连CE2,
    但PE2可能同时连接其他CE端,那么将出现无法定义该查看那张VRF空间路由表;
    故PE1在将流量传递给PE2时,封装两层标签,外标签用于穿越P路由器;内层标签用于告知PE2所查询的VRP表格;


配置:

1. ISP的部分

2. 单播路由表

3. CEF

4. MPLS

建议同时修改MTU

5. VRF配置

定义VRF空间,同时关联所连接的CE端接口,再同时定义RD/RT值

r2(config)#ip vrf xian 创建空间,名为xian
r2(config-vrf)#rd 1:1 RD值
r2(config-vrf)#route-target 1:1 RT值
r2(config-vrf)#exit
r2(config)#interface s1/0 进入关联接口
r2(config-if)#no ip address 默认该接口ip地址所在直连路由处于普通路由表中,现需转移到
                       VRF空间内,故先将地址清洗
r2(config-if)#ip vrf forwarding xian 关联空间
r2(config-if)#ip address 12.1.1.2 255.255.255.0 重新定义地址
注:此时普通路由表中将不再存在该接口的直连路由,而是装载到了绑定的VRF空间内
r2#show ip route vrf xian
默认ping时,使用普通路由表,若需要基于VRF空间内的条目通讯
r2# ping vrf xian 12.1.1.1

6. MP-BGP

在两个PE端配置

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 先建立IPV4邻居关系  
r2(config-router)#address-family v4 进入MP-BGP家族模式
r2(config-router-af)#neighbor 4.4.4.4 activate 建立MP-BGP邻居关系
r2(config-router-af)#neighbor 4.4.4.4 send-community 必须开启社团属性的传递性;

7. CE端将私网路由传递到PE端


静态

CE端,正常配置静态路由皆可
PE端配置到CE私网的静态路由,必须配置到VRF空间内

r2(config)#ip route vrf xian 192.168.1.0 255.255.255.0 serial 1/0 12.1.1.1 

出接口下一跳必须同时编写

r2(config)#router bgp 1 
r2(config-router)#address-family ipv4 vrf xian 将该空间的静态、直连路由重发布到BGP中
r2(config-router-af)#redistribute static 
r2(config-router-af)#redistribute connected 
r2#show ip bgp v4 vrf xian
BGP table version is 9, local router ID is 2.2.2.2
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete


   Network Next Hop Metric LocPrf Weight Path
Route Distinguisher: 1:1 (default for vrf xian)
*> 12.1.1.0/24 0.0.0.0 0 32768 ?
*>i45.1.1.0/24 4.4.4.4 0 100 0 ?
*> 192.168.1.0 12.1.1.1 0 32768 ?
*>i192.168.2.0 4.4.4.4 0 100 0 ?

RIP

CE端正常启动和宣告RIP协议即可
PE端配置:启动后进行双向重发布即可

r2(config)#router rip
r2(config-router)#version 2
r2(config-router)#no auto-summary 
r2(config-router)#address-family ipv4 vrf xian
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 xian
r2(config-router-af)#redistribute rip 

EIGRP

CE端正常启动和宣告即可
PE端配置:启动后进行双向重发布即可

r4(config)#router eigrp 1 启动时必须配置该设备所在真实的AS号
r4(config-router)#no auto-summary 
r4(config-router)#address-family ipv4 vrf beijin
r4(config-router-af)#autonomous-system 90 申明邻居使用的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 beijin
r4(config-router-af)#redistribute eigrp 90 重发布时,使用私有的AS号

OSPF

CE端正常配置即可
PE端配置

r2(config)#router ospf 1 vrf xian
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 bgp 1 
r2(config-router)#address-family ipv4 vrf xian
r2(config-router-af)#redistribute ospf 1

你可能感兴趣的:(MPLS-多协议标签技术)