HCIE 面试资料-MPLS

MPLS

MPLS介绍
多协议标签交换(英语:Multi-Protocol Label Switching,缩写为MPLS)是一种在开放的通信网上利用标签引导数据高速、高效传输的新技术。多协议的含义是指MPLS不但可以支持多种网络层层面上的协议,还可以兼容第二层的多种数据链路层技术。

MPLS角色
LER(Label Edge Router): 边缘路由器,在MPLS网络中,用于标签的压入或弹出,入口的LER称为入节点(ingress),出口的LER称为出节点(egress)。
LSR(Label Switched Router):核心路由器,在MPLS网络中,用于标签的交换,在LSP的中间被称为中间节点(transit)。

网络结构
LSP(Label Switched Path):标签交换路径,即到达同一目的地址的报文在MPLS网络中经过的路径。
FEC(Forwarding Equivalent Class):转发等价类,一般指具有相同转发处理方式的报文。在MPLS网络中,到达同一目的地址的所有报文就是一个FEC。

MPLS的体系架构
控制层面:
路由信息表RIB 由协议生成,用于选择路由
标签分发协议LDP 负责标签的分配、标签转发信息表的建立、标签交换路径的建立、拆除
标签信息表LIB 由标签分发协议生成,用于管理标签信息

转发层面:
转发信息表FIB 从RIB提取必要的路由信息生成,负责普通IP报文的转发
标签转发信息表LFIB 简称标签转发表,由标签分发协议建立LFIB,负责带MPLS标签报文的转发

MPLS的报文
MPLS是在二层(网络层)和三层(传输层)中间的
MPLS的标签长度为4个字节,分为:
Lable:20bit,标签值域,用于标识去往同一目的地址的报文分组
Exp:3bit,用于拓展,MPLS支持多层标签,服务基于MPLS的QOS
S:1bit,栈底标识,当为1时,表示自己在最底层
TTL:8bit,和IP报文中的TTL值相同,最大生命周期,当为0时丢弃

标签的表示范围:
0——15:特殊标签,如果为3则为隐士标签,用于倒数第二条标签弹出
16——1023:静态LSP和静态CR-LSP共享的标签空间
1024以上:LDP、MP-BGP、RSVP等动态协议的标签空间

MPLS的特殊标签
0是IPv4的空标签(显式标签,最后第二跳路由器将0标签压入最顶层发给最后一跳,最后一跳收到后直接将标签弹出,进行IP转发)(由倒数第二条出节点是0,然后保留exp等字段发给最后一跳)
1是路由器报警标签(该标签是可以在任何位置,作用是向LSR发出警告说该报文需要特别注意,标签1被移除后,执行后面的标签操作,在转发出去的时候再打上标签1)
2是IPv6的空标签(显式标签)
3是隐式标签,当收到3号标签时将标签弹出进行IP转发,一般是为了最后一跳路由器减轻负担(但是会导致Exp字段无法处理),(PHP,倒数第二条弹出)

MPLS的防环
控制层面用IGP防环
转发层面用TTL防环

MPLS建立方式
静态LSP:用户通过手工方式为LSP上每个路由器分配标签建立转发隧道(mpls lsr-id id值)
需要在全局模式和接口中开始mpls
前一节点出标签的值要等于下一节点入标签的值
消耗资源比较小,适用于拓扑结构简单并且稳定的小型网络

动态LSP:通过标签发布协议动态建立转发隧道
使用(LDP、RSVP、MP-BGP)协议来对标签的分发和LSP的建立以及维护

MPLS转发过程
Tunnel ID:每个隧道都会有一个ID
NHILFE:下一跳标签转发表项,指导MPLS报文的转发(Tunnel ID、出接口、下一跳、出标签、标签操作类型)
ILM:入标签映射表,将标签和NHLFE绑定(Tunnel ID、入标签、入接口、标签操作类型)
FIB:转发信息表,负责普通IP报文的转发,可以根据IP地址找到Tunnel ID
LFIB:标签转发信息表,负责带MPLS标签报文的转发

ingress入节点转发:
1、将接受的IP报文,使用IP地址通过转发信息表,可以得到Tunnel ID
2、就可以用Tunnel ID和下一条标签转发表进行关联
3、就可以得到下一跳地址,出接口,出标签,标签动作
4、在IP报文中压入标签,处理TTL值,从下一条转发MPLS报文

transit中间节点转发:
1、查看MPLS标签,通过入标签映射表可以得到Tunnel ID
2、使用Tunnel ID查询下一跳标签转发表
3、通过下一跳标签转发表可以得到下一跳地址,出接口,出标签,标签动作
4、处理方式通过标签值进行处理
(标签值>=16就会用新的标签替换旧的标签,然后处理TTL值,然后发给下一跳地址
如果标签值为3则剥离标签,然后处理TTL值,使用IP地址转发表进行下一条转发或者进行下一层标签转发)

egress出节点:
1、如果收到IP报文,就直接使用IP表进行IP转发
2、如果收到的是MPLS报文,就查看入标签映射表里的栈底表示,如果栈底标识是1就进行IP转发,如果是0就进行下一层标签转发

转发方式
1、当收到IP报文的时候会查找转发信息表,如果Tunnel ID为0x0,就进行普通IP转发,如果Tunnel ID不是0x0,就进行MPLS转发
2、当收到带有标签的报文时,查找LFIB表,如果对应的出标签是普通标签,就进行MPLS转发,如果对应的出标签是特殊的标签比如标签为3就将报文丢弃,进行IP转发

标签压入:当IP报文进入MPLS域时,入节点会在报文二层首部和IP首部之间插入一个新标签
标签弹出:当报文离开MPLS域时,将MPLS报文的标签剥掉

MPLS的静态LSP配置
在系统视图下 mpls lsr-id 2.2.2.2 配置LSR-ID
在系统视图下和接口视图 mpls 开启mpls视图(静态标签地址空间为16~1023)
在系统视图下 static-lsp ingress name destination 1.1.1.1 24 nexthop 10.10.10.10 out-label 16 设置入节点、配置目的地址、设置下一跳、出标签
在系统视图下 static-lsp transit name incoming-interface G0/0/1 in-label 16 nexthop 10.10.11.10 out-label 17 设置中间节点、设置入接口、入标签值、下一跳地址、出标签
在系统视图下 static-lsp egress name incoming-interface g0/0/1 in-label 17 设置出节点、设置入接口、入标签值

MPLS的TTL
TTL用于防环和Tracert连通性检测
处理模式:Uniform和Pipe,缺省Uniform
Uniform:在入节点将收到的IP报文的TTL-1映射到MPLS的TTL字段,在出节点将MPLS的TTL字段-1映射到IP报文的TTL
Pipe:MPLS域内的TTL值是固定的,IP报文经过MPLS域只减少1的TTL(隐藏骨干网络的结构)

ICMP响应报文
在MPLS网络中,当LSR收到TTL值为1的MPLS报文,会生成ICMP超时报文
1、如果LSR的路由表上有去往路由发布者的路由,就直接通过IP路由向发布者发送TTL超时报文
2、如果LSR的路由表上没有去往路由发布者的路由,就会将TTL超时报文通过LSP继续传递,到达出节点后由出节点发给发布者

MPLS连通性检测
MPLS PING:
1、入节点检查是否有标签转发路径(lsp)存在,如果不存在则返回错误信息,停止ping
2、如果存在LSP会构建MPLS echo request,目的地址为127.0.0.1/8(本机环回地址),将要ping的地址填入目的FEC,找到对应的LSP压入LSP发送
3、当MPLS转发时发现转发失败,就携带有错误码的MPLS Echo Reply报文返回入节点
4、当MPLS转发正常,就由出节点携带正确的MPLS Echo Reply报文返回入节点

MPLS TRACERT:
1、入节点检查是否有标签转发路径(lsp)存在,如果不存在则返回错误信息,停止tracert
2、如果存在LSP会构建MPLS echo request,目的地址为127.0.0.1/8(本机环回地址),将要ping的地址填入目的FEC并且将下一跳地址、出标签填入,找到对应的LSP压入LSP发送,但是TTL设置为1
3、下游设备收到后发现TTL变为0,然后检测下一跳地址和出标签是否正常,FEC目的地址是否为自己,如果正常但不是自己则向入节点发送携带自身下一跳和出标签的正确的MPLS Echo Reply,如果错误就返回错误信息的MPLS Echo Reply
4、入节点收到后重新发送MPLS Echo request,但是将收到的MPLS Echo Reply的下一跳和出标签填入,并且TTL+1
5、一直到下一跳地址和出标签正常并且FEC目的地址为自己,返回不带下一跳地址和出标签的正确MPLS Echo Reply报文给入节点

MPLS LDP

LDP标签分发协议

LDP基本概念
LDP会话:用于LSR之间交换标签映射、释放等消息。只有存在对等体才能建立LDP会话(本地会话必须是直连的,远端会话可以是直连,也可以是非直连)

邻接体:当LSR收到对端发来的Hello消息后建立LDP邻居体(本地邻接体:以组播形式发送Hello消息发现的邻接体,远端邻接体:以单播形式发送Hello消息发现的邻接体),LDP通过邻接体来维护对等体的存在,可以通过多个邻接体维护

对等体:相互之间存在LDP会话、使用LDP来交换标签消息的LSR

通过LDP,LSR可以把网络层的路由信息映射到数据链路层的交换路径上,进而建立起LSP。

LDP的消息状态
发现(Discovery)消息:用于通告和维护网络中LSR的存在,如Hello消息。
会话(Session)消息:用于建立、维护和终止LDP对等体之间的会话,如Initialization消息、Keepalive消息。
通告(Advertisement)消息:用于创建、改变和删除FEC的标签映射。
通知(Notification)消息:用于提供建议性的消息和差错通知。

除了发现使用UDP,其他的都是要TCP,为了保证消息的可靠性

LDP的消息类型
Hello:LDP发现机制中用于宣告本LSR和发现LSR
Initialization:在LDP session建立过程协商
Keepalive:监控LDP session的TCP连接的完整性
Address:宣告接口地址
Address Withdraw:撤销接口地址
Lable Mapping:宣告FEC/Lable映射信息
Lable Request:请求FEC的标签映射
Lable Abort Request:终止未完成的标签请求消息
Lable Withdraw:撤销FEC/Lable映射信息
Lable Release:释放标签
Notification:通知LDP Peer错误信息

LDP发现机制
LDP的发现机制分为基本发现机制和扩展发现机制
基本发现机制:用于发现链路上的直连的LSR(周期性每隔5s的向224.0.0.2发送UPD报文的hello信息)
扩展发现机制:用于发现链路上的非直连的LSR(周期性的每隔5s向指定IP发送UPD报文的hello信息)

LDP会话建立过程
1、两个LSR之间互相发送Hello消息,Hello消息中携带传输地址(即设备的IP地址),双方使用传输地址建立LDP会话
2、IP地址大的一方作为主动端,发起TCP连接
3、TCP建立成功后,由主动端发送初始化消息,协商建立LDP会话的相关参数(LDP协议版本、标签分发方式、Keepalive保持定时器的值、最大PDU长度和标签空间)
4、被动方如果接受传来的初始化消息,就发送初始化消息和Keepalive消息给主动方,如果不接受就发送Notification消息
5、主动方收到初始化消息后,如果接受相关参数,就回复Keepalive消息,如果不接受就回复Notification消息

当双方都接收Keepalive报文则算LDP会话建立成功

LDP LSP的标签的发布和管理

  • 标签发布方式:
    1、下游自主方式(DU):对于特定的FEC无需从上游获得标签请求消息就进行标签的分配和分发(默认)
    2、下游按需方式(DoD):对于特定的FEC要等到上游的标签请求消息才进行标签的分配和分发

  • 标签分配控制方式:
    1、独立标签分配控制(Independent):本地LSR可以自主地分配一个标签绑定到某个FEC,并向上游发送此FEC的标签映射,不需要下游的标签隐射消息。
    2、有序标签分配控制(Ordered):本地LSR只有当已经有下游的标签映射消息、或者该LSR就是此FEC的出节点时才可以将标签绑定到FEC上,向上游发送此FEC的标签映射。(默认)

  • 标签保持方式:
    1、自由标签保持方式:从邻居收到的标签映射,无论邻居LSP是否是自己的下一跳都保留(默认)
    2、保守标签保持方式:从邻居收到的标签映射,只保留下一跳是自己的

从下往上是分发,从上往下是分配
对特定的FEC分配完标签后,向上游分发标签的映射关系

目前设备支持
下游自主方式+ 有序标签分配控制方式+ 自由标签保持方式,缺省方式。
下游按需方式+ 有序标签分配控制方式+ 保守标签保持方式。

LDP LSP的建立过程
1、网络的路由改变时,egress发现自己的路由表里出现了新的主机路由,并且这一路由不属于任何现有的FEC,则边缘节点会为这一路由创建新的FEC
2、如果MPLS网络的出节点有可分配的标签,就为FEC分配标签,并向上游发出标签映射信息(信息包含要分配的标签值和FEC)
3、当出节点的上游收到标签映射信息,判断标签映射的发送者(出节点)是否为FEC的下一跳,如果是就在标签转发表中增加相应的条目,然后主动向上游发送标签映射信息
4、当入节点收到标签映射信息,判断标签映射的发送者(出节点)是否为FEC的下一跳,如果是就在标签转发表中增加相应的条目

这时,就完成了LSP的建立,接下来就可以对该FEC对应的数据报文进行标签转发。

Proxy Egress
在倒数第二跳代理出节点

LDP工作过程
LSR发现LDP对等体——LDP会话的建立——每隔5s发送hello确认邻居——每隔15s发送keepalive确认LDP会话——LDP LSP的建立

LDP的安全机制
三种保护机制:LDP MD5认证、LDP Keychain认证和LDP GTSM。

通用TTL安全保护机制GTSM(Generalized TTL Security Mechanism)是一种通过检查IP报文头中的TTL值是否在一个预先定义好的范围内来实现对IP业务进行保护的机制

LDP笔记
DP用UDP(协议ID=17)发现邻居,用TCP(协议ID=6)建立邻接(LDP协议的目的端口号:646)
LDP协议将hello报文发往224.0.0.2(所有开启组播功能的路由器)的组播组,用于发现直连链路上的LDP邻居。
LDP的hello报文发送间隔是5s,hold time是3倍的hello时间15s。
LDP的keepalive报文的发送间隔是15s,old timer是3倍的keepalive时间45s。

LDP与IGP联动会有什么问题
LDP 与 IGP 联动通过抑制 IGP 发布正常路由,来保证 LDP 与 IGP 联动完成收敛
由于 LDP 的收敛速度依赖于 IGP 路由的收敛,即 LDP 的收敛速度比 IGP 的收敛速度慢
因此在存在主备链路的 MPLS 网络中有如下问题:

  • 当主链路发生故障时,IGP 路由和 LSP 均切换到备份链路上(常通过 LDP FRR 实现)。但当主链路从故障中恢复时,由于 IGP 路由比 LDP 收敛速度快,IGP 会先于 LDP 切换回主链路,因此造成 LSP 流量丢失。
  • 当主链路正常,但主链路节点间的 LDP 会话发生故障时,IGP 路由仍然使用主链路,而主链路的 LSP 被删除。同时,由于备份链路不存在 IGP 路由,故 LSP 无法在备份链路建立,导致 LSP 流量丢失。
  • 当某节点发生主备倒换时,LDP 会话的建立可能晚于 IGP 的 GR 结束,从而 IGP 发布链路的最大开销值,导致路由振荡。MPLS 提供了 LDP 与 IGP 联动机制来避免上述问题的发生

LDP 与 IGP 联动包括三个定时器:

  • Hold-down timer:用于抑制 IGP 邻居建立的时长。(链路故障,抑制IGP邻居,流量会按照原来的LSP转发,恢复故障发现LDP邻居建立会话)
  • Hold-max-cost timer:用于控制通告接口链路的最大 cost 值的时长。(IGP正常,LDP故障,增大主链路开销,让流量走备链路)
  • Delay timer:用以控制等待 LSP 建立的时间。(主备切换时,让GR持续到LSP建立完成)

OSPF的GR用了9类LSA

猜你喜欢

转载自blog.csdn.net/PanJWei/article/details/114368516