MPLS(多协议标签交换)是一种用于快速数据包交换和路由的体系,它为将 IP地址映射为简单的具有固定长度的标签,当打有标签 的IP包到达路由器时,路由器不再根据目的地址查找路由表了,而是根据标签查找标签转发表。它最重要的优点就是使核心路由器脱离BGP的束缚。从而降低SP网络核心路由器的负载,无需处理大量前缀,降低内存占用,增强扩展性。所以MPLS所做一切都是围绕着标签来进行的。
开启MPLS功能很简单:
1.在接口下MPLS ip来开启
2.在OSPF进程下MPLS ldp autoconfig来在所有OSPF接口开启MPLS,因为CEF交换是唯一可以与MPLS相结合的IP转发模式,所以开启MPLS前一定要输入IP CEF。
验证命令:
    show MPLS ldp neighbor
    show MPLS ldp neighbor password
    show MPLS forwarding-table
注:在MPLS域里所有路由器必须有相同的路由表,否则标签绑定将会不匹配。所以不能在MPLS域里进行路由汇总
 
一、术语
   1.   标签格式
CCIE之MPLS帧格式
          图(一)MPLS数据帧格式
    Label:标签值,长度为20bit,标签值是标签转发表的关键索引
    CoS区域(3位),用于QOS在分组通过网络时施加在分组上的排队和丢弃算法;
    S:栈底标志,长度为1BIT,如果有多个label时,在栈底的label的S位置“1”,
   其它为”0“,只有一个label时S位置”1“
    TTL(8位):存活时间,8与IP报文中的TTL值相似,这个值从IP报文头的TTL域 拷贝过来,每进行一次label交换时,外层label的ttl值就减1
    注:标签被插入到2层包头和3层包头之间,一个MPLS报文可以有多个Label,靠近二层头的label为栈顶label,靠近IP报文的label为栈底label,lsr执行label交换时总是基于栈顶Label。
   有多个label时,每个label都包括以上完整的32bit,并不是其它的Labelkw包括20bit的label值
2.LSP:标签交换路径,使用MPLS协议建立起来的分组转发路径,类似ATM中的虚电路。
3.LER:标签边缘路由器。第一台LER负责向数据包中插入初始标签,最后一台LER负责弹出标签然后用传统方式交换。
4.lSR:标签交换路由器. 只要运行了MPLS协议的路由器,都叫做LSR。它负责替换数据包中的标签以及交换数据包
5.EFC: 转发等价类。MPLS体系结构实际上是一种分类转发技术,属于相同转发等价类的分组在MPLS体系结构网络中将获得完全相同的处理。
FEC判断标签是否同一类的标准是:
1、相同的目的
2、组播协议
3、优先级字段
4、VC虚链路来源判断
5、下一跳是否相同
6.PUSH:加标签。在第一跳ingress ler上在报文的二层头和三层头之间插入label,或中间Lsr在MPLS报文的标签栈顶增加新的label
7.POP:弹出标签。在最后一跳egress ler上将报文中的label全部去掉,还原成Ip报文,或中间Lsr去掉栈顶标签减少标签栈层次
8.SWAP:交换标签。在转发的过程中根据标签转发表中的lsp替换报文中栈顶label的过程
 
二、标签的操作
 
1、 标签分发
标签分发是为某FEC建立相应标签交换路径LSP的过程。在MPLS体系中,将特定标签分配给特定FEC(即标签绑定)的决定由下游LSR作出,下游LSR随后通知上游LSR。即标签由下游指定,分配的标签按照从下游到上游的方向分发。
MPLS中使用的标签分发方式有两种,对于一个特定的FEC:下游自主标签分配: LSR无须从上游获得标签请求消息即进行标签分配与分发的方式下游按需标签分配: LSR获得标签请求消息之后才进行标签分配与分发的方式,具有标签分发邻接关系的上游LSR和下游LSR之间,必须对使用哪种标签分发方式达成一致。上游和下游是相对的,对于报文转发来说,发送方的路由器是上游LSR,接收方是下游LSR。LSR将标签分发给其对等体时,可以采用LDP消息进行传送,也可以将标签搭~载在其他路由协议消息上。
2、标签分配
标签分配控制方式分为两种:
独立标签分配控制方式:每个LSR可以在任意时间向和它连接的LSR通告标签映射。
有序标签分配控制方式:只有当LSR收到某一特定FEC下一跳的特定标签映射消息或者LSR是LSP的出口节点时,LSR才可以向上游发送标签映射消息。
3、标签保持方式:
标签保持方式分为两种:自由标签保持方式和保守标签保持方式。
假设两台路由器Ru,Rd,对于特定的一个FEC,如果LSR Ru 收到了来自LSR Rd的标签绑定,当Rd 不是Ru 的下一跳时:
如果Ru 保存该绑定,则称Ru 使用的是自由标签保持方式。
如果Ru 丢弃该绑定,则称Ru 使用的是保守标签保持方式。
当要求LSR 能够迅速适应路由变化时,可使用自由标签保持方式;当要求LSR 中保存较少的标签数量时,可使用保守标签保持方式。
 
三、标签分发协议
 
分发协议有很多,现在主要使用LDP(Label Distribution Protocol)标签分发协议。ldp的协议报文除hello报文基于UDP外,其它报文都是在TCP之上,端口号为646。CISCO LDP标签分发原则:下游自主分发+独立控制+自由保留
开启命令:MPLS label protocol ldp
一般我们用LDP设备最高环回口IP地址做LDP的router-id
可如下配置修改:
    MPLS ldp router-id <interface> force
如果环回可能出现不可达问题,如果要在直接接口上建立TCP连接,则如下配置:
    MPLS ldp discovery transport-address interface
LDP的操作主要包括以下四个阶段:
1. 发现阶段
希望建立会话的LSR向相邻LSR周期性地发送Hello消息,通知相邻节点自己的存在。通过这一过程,LSR可以自动发现它的LDP对等体,而无需进行手工配置。
LDP有两种发现机制:
(1)基本发现机制
基本发现机制用于发现本地的LDP对等体,即通过链路层直接相连的LSR,并在LDP对等体之间建立LDP会话。这种方式下,LSR周期性以UDP报文形式从接口发送LDP链路Hello消息(LDP Link Hello)。链路Hello消息的目的地址为组播地址224.0.0.2。LDP链路Hello消息带有LSR的LDP标识符及其他相关信息,如果LSR在某个接口收到了LDP链路Hello消息,则表明在该接口(链路层)存在LDP对等体。
(2)扩展发现机制
扩展发现机制用于发现远端的LDP对等体,即不通过链路层直接相连的LSR,并在LDP对等体之间建立LDP会话。这种方式下,LSR周期性以UDP报文形式向指定的IP地址发送LDP目标Hello消息(LDP Targeted Hello)。LDP目标Hello消息带有LSR的LDP标识符及其他相关信息,如果LSR收到LDP目标Hello消息,则表明在网络层存在LDP对等体。
2. 会话建立与维护
发现邻居之后,LSR开始建立会话。这一过程又可分为两步:
(1) 建立传输层连接,即在LSR之间建立TCP连接;
    此连接可以使用TCP的MD5选项进行认证,哈希密钥会基于每个接口进行配置:
    MPLS ldp neighbor <IP> password <password>
    IP为对方的Router-id
为了使密钥强制起作用,可如下配置:
全局下MPLS ldp password required
(2) 随后对LSR之间的会话进行初始化,协商会话中涉及的各种参数,如LDP版本、标签发布方式、Keepalive定时器值、接收路由器的LDP标识符等。会话建立后,LDP对等体之间通过不断地发送Hello消息和Keepalive消息来维护这个会话。
3. LSP建立与维护,LDP通过发送标签请求和标签映射消息,在LDP对等体之间通告FEC和标签的绑定关系,并加入LFIB从而建立LSP。
(1) 网络的路由改变时,边缘节点(LSR )发现自己的路由转发表中出现了新的目的地址,并且这一地址不属于任何现有的FEC,则LSR 为这一目的地址建立一个新的FEC。
(2) 如果LSR 尚有可供分配的标签,则为FEC分配标签,并向上游LSR 通告标签映射。
(3) LSR 收到标签映射后,判断标签映射的发送者(LSR )是否为该FEC的下一跳。若是,则在其标签转发表中增加相应的条目,为FEC分配标签,并继续向上游LSR 通告标签映射。
(4) 同样地,LSR 收到标签映射后,判断标签映射的发送者(LSR )是否为该FEC的下一跳。若是,则在其标签转发表中增加相应的条目,为FEC分配标签,并继续向上游LSR A通告标签映射。
(5) 入口LSR(LSR )收到标签映射后,判断标签映射的发送者(LSR B)是否为该FEC的下一跳。若是,则在其标签转发表中增加相应的条目。
注:在MPLS域里所有路由器必须有相同的路由表,否则标签绑定将会不匹配。所以不能在MPLS域里进行路由汇总。
4. 会话撤销
在以下情况下,LSR将撤销LDP会话:
      LSR通过周期性发送Hello消息表明自己希望与邻居LSR继续维持这种邻接关系。如果Hello保持定时器超时仍没有收到新的Hello消息,则删除Hello邻接关系。一个LDP会话上可能存在多个Hello邻接关系。当LDP会话上的最后一个Hello邻接关系被删除后,LSR将发送Notification消息,结束该LDP会话。
     LSR通过LDP会话上传送的LDP PDU(LDP PDU中携带一个或多个LDP消息)来判断LDP会话的连通性。如果会话保持定时器(Keepalive定时器)超时仍没有收到任何LDP PDU,LSR将关闭TCP连接,结束LDP会话。如果在Keepalive定时器超时前,LDP对等体之间没有需要交互的信息,LSR将发送Keepalive消息给LDP对等体,以便维持LDP会话。
    LSR还可以发送Shutdown消息,通知它的LDP对等体结束LDP会话。
Ldp还可以进行环路检测,方法有两种:
    1. 最大跳数
在传递标签绑定的消息中包含跳数信息,每经过一跳该值就加一。当该值超过规定的最大值时认为出现环路,终止lsp的建立过程。
    2. 路径向量
    在传递标签绑定的消息中记录路径信息,每经过一跳,相应的lsr就检查自己的id是否在此记录中。如果没有,将自己的id添加到该记录中;如果有,说明出现了环路,终止lsp的建立过程。
MPLS还支持基于约束路由的ldp机制(cr-ldp,constrain-based routing ldp)。所谓cr-ldp,就是入口节点在发起建立lsp时,在标签请求消息中对lsp路由附加了一定的约束信息。这些约束信息可以是对沿途lsr的精确指定,即逐一指定lsp上的lsr,此时叫严格的显式路由;也可以是对选择下游lsr的模糊限制,即只指定lsp上的个别lsr,此时叫松散的显式路由。
  四、典型的MPLS转发过程
 
1.所有lsr启用传统路由协议(ospf,is-is),在lsr中建立IP路由表
2.在ldp结合IP路由表来建立 LSP
3.Ingress ler接收IP包,分析IP包并对应到fec,然后给IP包加上标记,根据标签转发表中的lsr将已标记的报文送到相应的接口
4.LSR收到带有标记的报文,将只分析标记头,不关注标记头上这上的部分,根据label头查找lsp,替换label,送到相应的出接口
5.中途转发过程与4类似
6.Step n-1:倒数第二跳lsr收到带有标记的报文,查找标记转发表,发现对应的出中标签为隐匿标签或显示空标签,弹出标签,发送IP报文到最后一跳LSR
7.Step n :在最后一跳egress ler上执行三层路由功能 ,根据报文的目的IP地址转发。
 
五、MPLS要点
 
1.  特殊标签
MPLS 标签范围中,并不是所有的标签都是可以随便用的,有些是保留的,范围是0-15,有特殊作用,0是显式空(null),3是隐式空,1是路由器报警标签,14是OAM报警,其它未保留的都可以用,20个bit是16-1048575,IOS默认是16-100000,都是可用的。
(1)隐式空3标签
MPLS中最后一跳路由器是不使用标签交换,而是使用IP交换的,所以可以让倒数第二跳路由器不要为数据打标签而直接改成IP数据包,方法就是告诉其隐式空(标签号为3)标签。收到标签为3的LSR,就不会在数据包发给下一跳时打上标签。
这种终点使用隐式空标签来告诉上一跳不要打标签的行为叫倒数第二跳移除(PHP)行为,所以一台收到隐式空标签的LSR,相应出口就不再是一个远程标签,而应该在outgoing显示为pop。这种上一跳标签移除称为标签弹出。
注:在IOS中,PHP这种行为是默认的,但只会为直连路由和聚合路由通告隐式空3,但3不会明写。
(2)显示空标签
显示空的功能是在隐式空的基础上的,IPv4标签号为0,IPv6为2。因为标签中EXP用于QOS,前一跳移除后,这些信息也没了,可能希望保留,所以是上一跳将标签变为0,来告诉终点不用为0查找LFIB,只看EXP,所以只关心QOS效果。
2. MPLS的TTL处理:
(1)       IP TTL
根据RFC 3031中的描述,LER节点在对分组压入标签时,需要将原IP分组或下层标签中的TTL值拷贝到新增加的标签的TTL域。LSR在转发标签分组时,对栈顶标签的TTL值做减1操作。标签弹出时,再将栈顶的TTL值拷贝回IP分组或下层标签中。
TTL除了用于防止产生路由环路外,也用于实现tracert功能:
① 如果在Ingress节点使用IP TTL复制功能,报文在LSP中经过的每一跳都体现为IP TTL逐跳递减,tracert的结果将反映报文实际经过的路径;
② 如果不在Ingress节点使用IP TTL复制功能,则报文在LSP中经过的跳数不会导致IP TTL递减,tracert的结果不包括MPLS骨干网络中每一跳,就好像Ingress路由器与Egress路由器是直连的。
注:当需要隐藏MPLS骨干网络的结构时, Ingress节点上不能使用TTL的复制功能。
(2)ICMP响应报文
对于仅有一层标签的MPLS报文,当TTL超时时,直接使用IP路由返回ICMP响应报文。对于多层标签的,当MPLS报文的TTL超时时,ICMP响应报文将按照LSP继续传送,到达LSP终点路由器后,再根据IP路由转发ICMP响应报文。
2.  MPLS LDP-IGP同步
在某些情况下,当 LDP邻居还没有建立或者邻居丢失而没有为路由发送标签时,如果这时IGP邻居已经建立并学到路由条目后,就会开始IP交换,那么后来当LDP正常以后,可能会出现丢包的情况。
可以指定只有在IGP和LDP都认可的某条链路为待转发报文的出站链路的时候才能够转发报文。这种技术就称为同步。
注意:唯一支持IGP和LDP同步的协议是OSPF.
当配置好同步以后,相应的接口下,OSPF邻居在LDP邻居还没有建立之前,自己是不会建立邻居关系的,但是可以配置一个最大等待时候,称为 holddown 时候,默认是没有配的,如果OSPF在这个holddown时间过后,LDP邻居还没有建立起来,那么自己还是会建立邻居关系,但是,当OSPF在LDP没有建立邻居关系时,自己从邻居收到的路由条目将会被打上Metric 65536即无限大不可达。
同步的配置:
1、全局同步MPLS ldp sync
2、关系接口同步no MPLS ldp igp sync
3、设置计时器 MPLS ldp igp sync holddown
3.检查命令:
    show MPLS ldp neighbor
    show MPLS ldp neighbor password
    show MPLS forwarding-table
 
 
 本文来源落语吧( http://www.luoyu8.com/ ),原文地址: http://www.luoyu8.com/news/route/1360.html