华为NP课程笔记16-MPLS1

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/nplbnb12/article/details/89841272

1 MPLS

1.1传统IP转发存在的问题

(1)传统IP转发,一台路由器收到数据帧后,分析报文头,根据具体类型,上传到网络层处理,网络层读取路由信息,进行相应的处理,或者直接上传到传输层继续处理,或者按照路由表打包封装进行转发,数据经过每一个路由器,都要进行这些操作,导致整个转发速率和处理速率较慢,而且每台路由器都要有全局的路由条目或者一条缺省路由条目

(2)传统IP转发时面向无连接的,无法保障QoS服务质量。在传统IP转发中,仅根据转发路径根据IGP开销来的,会导致最优路径的拥塞和次优路径的空载状态。

 

1.2MPLS是基于标签进行转发的。

在数据转发层面,MPLS是面向连接的,会在数据转发前,源和目的间建立一条转发通路,所以在MPLS域内节点,路由器不需要查看每个IP报文的IP地址,只需要根据报文头部的标签进行标签转发即可,这样大大提高了转发速率。

 

1.3MPLS网络基本结构

(1)LSP(label switched path):标签交换路径,即到达同一目的地址的报文在MPLS网络中经过的路径。

(2)FEC(Forwarding Equivalent Class)转发等价类:MPLS作为一种分类转发技术,将具有相同转发处理方式的报文分为一类,称该类报文为一个FEC。在MPLS网络中,到达同一目的地址的所有报文就是一个FEC。FEC的划分方式非常灵活,可以是以源地址、目的地址、源端口、目的端口、协议类型或VPN等为划分依据的任意组合。

(3)在MPLS网络中,路由器的角色分为两种:

LER(label edg router):在MPLS网络中,用于标签的压入或弹出,如上图中的RTB、RTD。

LSR(label switched router):在MPLS网络中,用于标签的交换,如图中的RTC。

(4)根据数据流的方向,LSP的入口LER被称为节点(Ingress);位于LSP中间的LSR被称为中间节点(Transit);LSP的出口LER被称为出节点(Egress)。MPLS报文由Ingress发往Transit,则Ingress是Transit的上游节点,Transit是Ingress的下游节点;同理,Transit是Egress的上游节点,Egress是Transit的下游节点。

(5)NHLFE:NEXT HOP label forwarding entry(下一跳标签转发表项)

MPLS体系结构

(1)控制平面:负责产生和维护路由信息以及标签信息。

路由信息表RIB(Routing Informaition Base):由IP路由协议生成,用于选择路由

标签分发协议LDP(Lable Distribution Protocol):负责标签的分配、标签转发信息表的建立、标签交换路径的建立、拆除等工作。

标签信息表LIB(Label information base):由标签分发协议生成,用于管理标签信息。

(2)转发平面:即数据平面(data plane),负责普通IP报文的转发以及带MPLS标签报文的转发。

转发信息表FIB(Forwarding information base):从RIB提取必要的路由信息生成,负载普通IP报文的转发。

标签转发信息表(label forwarding information base):简称标签转发表,由标签分发协议建立LFIB,负载带MPLS标签报文 的转发。

(3)MPLS路由器上,报文的转发过程:

当收到普通IP报文时,查找FIB表,如果Tunnel ID为0x0,则进行普通IP转发;如果查找FIB表,Tunnel ID为非0x0,则进行MPLS转发。当收到带标签的报文时,查找LFIB表,如果对应的出标签是普通标签,则进行MPLS转发;查找LFIB表,如果对应的出标签是特殊标签,如标签3,则将报文的标签去掉,进行IP转发。

 

1.4MPLS数据报文结构

 

MPLS分为帧模式和信源模式,AT网络使用信源模式,以太网和帧中继使用帧模式,在帧模式中,MPLS会在报文2层头和IP头间增加MPLS头部,总长度4bytes(32bits)

(1)标签(label)是一个短而定长的、只有本地意义的标识,用于唯一标识去往同一目的地址的报文分组。

(2)MPLS标签封装在链路层和网络层之间,可以支持任意的链路层协议。

(3)MPLS标签的长度为4个字节,共分为4个字段:

label:20bit,标签值域;

EXP:3bit,用于扩展。现在通常用作CoS(class of service),当设备发生阻塞时,优先发送优先级高的报文;

S:1bit,栈底标识。MPLS支持多层标签,即标签嵌套。S值为1时表明为最底层标签;

 

TTL:8bit,和IP报文中的TTL意义相同;

(4)标签空间是指标签的取值范围。标签空间划分如下:

0~15:特殊标签。如标签3,称为隐式空标签,用于倒数第二跳弹出;

16~1023:静态LSP和静态CR-LSP(constraint-based routed label switched path)共享的标签空间;

1024及以上:LDP、RSVP-TE(Resource reservation protocol-traffic engineering)、MP-BGP(Multiprotocol border gateway protocol)等动态信令协议的标签空间。

LSP建立方式

建立LSP的方式有两种:

静态LSP:用户通过手工方式为各个转发等价分类标签建立转发隧道;

动态LSP:通过标签发布协议动态建立转发隧道

 

 

1.5LDP邻居

LDP邻居发现

LDP发现机制分为两类 :

LDP基本发现机制:发现直连在同一链路上的LSR邻居,hello地址为组播224.0.0.2

LDP扩展发现机制:发现非直连的LSR邻居,hello地址为特定单播地址

 

MPLS路由器通过周期性地发送LDP链路Hello消息(LDP Link Hello),实现LDP邻居的发现,并建立本地LDP会话:

为了能使开启LDP协议的设备快速发现邻居,LDP的Hello消息使用UDP封装。UDP是无连接的协议,为了保证邻居的有效性和可靠性,Hello消息周期发送,发送周期为5s,使用组播224.0.0.2作为目的的IP地址,意思是“发送给网络中的所有路由器”。

LDP的Hello消息中,携带有Transport address字段,该字段与设备配置的LSR ID一致,表明与对端建立邻居关系时所使用的IP地址。如果该字段IP地址是直连接口IP地址,则直接建立邻居关系;如果该字段地址是Loopback接口IP地址,保证该接口IP地址路由可达,才能建立邻居关系。

 

LDP邻居建立

 

 

1)LDP协议主要使用四类消息:

发现消息(discovery):用于通告和维护网络中邻居的存在,如hello消息

会话消息(session):用于建立、维护和终止LDP对等体之间的会话,如initalizationn、keepalive消息

通告消息(advertisement):用于创建、改变和删除FEC的标签映射,如Address消息,label mapping消息。

通知消息(notification):用于提供建议性的消息和差错通知。

 

 

2)LDP邻居建立过程

 

LDP邻居建立过程如上图所示:

   两个LSR之间互相发送hello消息,hello消息中携带传输地址,双方使用传输地址建立LDP会话。

   传输地址较大的一方作为主动方,发起TCP连接,如图所示,RTB作为主动方发起TCP连接,RTA作为被动方等待对方发起连接

   TCP连接建立成功后,主动方RTB发送初始化消息,协商建立LDP会话的相关参数。

   被动方RTA收到初始化消息后,如果RTA接受相关参数 ,则发送初始化消息,同时发送keepalive消息给主动方RTB,如果被动方RTA不接受相关参数,则发送Notification消息中止LDP会话的建立。

    主动方RTB收到初始化消息后,接受相关参数 ,则发送keepalive消息给被动方RTA,如果主动方RTB不接受相关参数,则发送Notification消息给RTA,中止LDP会话的建立。

    当双方都接收到对端的Keepalive消息后,LDP会话建立成功。LDP会话建立成功后,进行FEC的创建于标签的分发。

  

 

1.6静态LSP

静态LSP特点

不使用标签发布协议,不需要交互控制报文,资源消耗比较小;

通过静态方式建立的LSP不能根据网络拓扑变化动态调整,需要管理员干预。

静态LSP适用于拓扑结构简单并且稳定的网络。

配置静态LSP

配置静态LSP时,管理员需要为各路由器手工分配标签,需要遵循的原则是:前一节点出标签的值等于下一个节点入标签的值。

如上图所示,MPLS网络中有一个100.1.1.1/32的用户,静态为该路由建立一条LSP,配置过程如下:

1)配置LSR ID用来在网络中唯一标识一个MPLS路由器。缺省没有配置LSR ID,推荐手工配置loopback接口地址作为LSR ID,配置命令:

mpls lsr-id 1.1.1.1

2)在MPLS域的所有节点与相应的接口上开启MPLS协议。

配置命令:

sys

  mpls

  int g0/0/1

   mpls

 

3)

在Ingress进行一下配置:

static-lsp ingress lsp-name destination ip-address {mask-length|mask} {nexthop next-hop-address|outgoing-interface interface-type interface-number} * out-lable out-label

 

在Transit进行一下配置:

static-lsp transit lsp-name [ incoming-interface interface-type interface-number ] in-label in-label {nexthop next-hop-address|outgoing-interface interface-type interface-number} * out-lable out-label

 

在Egress进行一下配置:

static-lsp egress lsp-name [incoming-interface interface-type interface-number} * in-lable  in-label [lsrid ingress-lsr-id tunnel-id tunnel-id]

 

完成上述配置后,只是完成了RTA到RTD的单挑LSP,RTD返回RTA的LSP路径也需要配置才能实现RTA正常访问RTD 100.1.1.1/32的路由。

 

具体配置命令如下:

RTA:

int lo0

static-lsp ingress huawei destination 100.1.1.1 32 outgoing-interface g0/0/0 out-label 100

static-lsp egress huawei2 incoming-interface g0/0/0 in-label 100

 

 

RTB:

static-lsp transit huawei incoming-interface g0/0/0 in-label 100 outgoing-interface g0/0/1 out-label 200

static-lsp transit huawei2 incoming-interface g0/0/1 in-label 200 outgoing-interface g0/0/0 out-label 100

 

RTC:

 

static-lsp transit huawei incoming-interface g0/0/1 in-label 200 outgoing-interface g0/0/0 out-label 300

static-lsp transit huawei2 incoming-interface g0/0/0 in-label 300 outgoing-interface g0/0/1 out-label 200

 

RTD:

 

static-lsp egress huawei incoming-interface g0/0/0 in-label 300

static-lsp ingress huawei2 destination 100.1.1.2 32 outgoing-interface g0/0/0 out-label 300

 

1.7动态LSP

动态LSP的特点

组网配置简单,易于管理和维护;

支持基于路由动态建立LSP,网络拓扑发生变化时,能及时反映网络状况。

如上图所示拓扑:

Egress路由器RTD为本地存在的路由器分配标签,并将路由和标签的绑定关系主动发送给上游邻居路由器RTC;

路由器RTC收到下游邻居路由器RTD的路由和标签的绑定关系后,将其记录到LIB中,并将自己分配的标签和路由的绑定关系发送给上游邻居路由器RTB;

RTB执行相同的动作将标签和路由的绑定关系发送给上游邻居路由器RTA,RTA为Ingress路由器,没有上游邻居,动态LSP完成建立

配置举例

内部路由要使用IGP协议,保证路由间可达

mpls lsr-id 1.1.1.1    //配置lsr-id

mpls               //进入mpls

  mpls ldp           //配置ldp模式

int g0/0/0

  mpls              //在端口开启mpls

  mpls ldp           //配置为ldp模式

  mpls ldp transport-address g0/0/0    //配置使用接口地址建立TCP连接,默认是使用lsr-id,可选配置项

dis mpls ldp peer        //查看ldp邻居信息

dis mpls ldp session     //查看mpls会话建立情况

dis mpls ldp session verbose   //查看会话详细情况

 

对于远端LDP进行如下额外配置:

mpls ldp remote-peer test 

    remote-ip 3.3.3.3             //指定远端LDP地址

 

 

 

1.8标签

 

标签的发布方式

标签的发布方式:

DU(downstream unsolicited,下游自主方式):对于一个到达同一目的地址报文的分组,LSR无需从上游获得标签请求消息即可进行标签分配与分发。

 

DoD(Downstream on demand,下游按需方式):对于一个到达同一目的地址报文的分组,LSR获得标签请求消息后才进行标签分配与分发。

int g0/0/0

  mpls ldp advertisement dod

mpls

 lsp-trigger host

 

 

如图所示拓扑:

采用DU方式分发标签,对于目的地址为100.1.1.1/32的分组,下游RTD通过标签映射消息主动向上游RTC通告自己主机路由100.1.1.1/32的标签。

采用DoD方式分发标签,对于目的地址为100.1.1.1/32的分组,上游RTC向下游发送标签请求消息,下游RTD收到标签请求消息后,才会向上游发送标签映射消息。

 

华为设备默认采用DU的方式发布标签。DU无需等待上游的请求信息,可以直接向邻居分配标签。在网络拓扑发生变化时,采用DU方式可以快速反应为新的拓扑分发标签,收敛时间相对于DoD方式较短。

 

标签的分配控制方式

Independent(独立标签分配控制方式):本地LSR可以自主地分配一个标签 绑定到某个IP分组,并通告给上游LSR,而无需等待下游的标签。

mpls

   lsp-trigger all

   mpls ldp

     label-distribution  independent

 

Ordered(有序标签分配控制方式):只有当该LSR已经具有此IP分组的下一跳的标签,或者该LSR就是该IP分组的出节点时,该LSR才可以向上游发送IP分组的标签。

 

mpls

   lsp-trigger all

   mpls ldp

     label-distribution ordered

如图所示拓扑:

采用Independent方式:

    如果标签发布方式为DU,则RTC无需等待下游RTD的标签,就会直接向上游RTB分发标签。

    如果标签发布方式为DoD,则发送标签请求的RTB的直连下游RTC会直接回应标签,而不必等待来自下游RTD的标签。

 

采用Ordered方式:

    如果标签发布方式为DU,则RTC只有收到下游RTD的标签,才会向上游RTB发布标签。

    如果标签发布方式为DoD,则发送标签请求的RTB的直连下游RTC只有收到下游RTD的表情,才会向上游RTB分发标签。

华为设备默认采用Ordered的方式分配标签。采用Ordered方式,只有当该LSR已经具有此IP分组的下一跳的标签时,才能向上游分发标签,这样是为了避免下游IP分组的标签未分配或收敛时间较长,上游的标签已分配,数据开始转发造成的数据丢失。

 

 

标签的保持方式 

路由表中,RTB通过RTD到达100.1.1.1/32的路径最优,RTB从RTC收到分配给100.1.1.1/32的标签处理方式有以下两种:

一是RTB保留从RTC收到的标签信息,二是RTB不保留从RTC收到的标签信息,前者称为Liberal方式,后者称为Conservative方式。

标签的保持方式:

    liberal(自由标签保持方式):对于从邻居LSR收到的标签映射,无论邻居LSR是不是自己的下一跳都保留。华为设备默认采用自由标签保持方式保存标签。

 

    conservative(保守标签保持方式):对于从邻居LSR收到的标签映射,只有当邻居LSR是自己的下一跳时才保留。

mpls ldp

   label-retention conservative

  

 

当网络拓扑变化引起下一跳邻居改变时:

    使用自由标签保持方式,LSR可以直接利用原来非下一跳邻居发来的标签,迅速重建LSP,但需要更多的内存和标签空间。

    使用保守标签保持方式,LSR只保留来自下一跳邻居的标签,节省了内存和标签空间,但LSP的重建会比较慢

    

 

1.9LDP建立LSP过程

IGP协议负责实现MPLS网络内路由可达,为FEC的分组提供路由;

LDP协议负责实现对FEC的分类、标签的分配以及LSP的建立和维护等操作。

如图所示拓扑,LDP动态建立LSP的过程如下:

   RTD上存在100.1.1.1/32的主机路由,因为RTD是Egress节点,所以直接向自己上游邻居RTC发布100.1.1.1/32与标签的绑定关系;

   RTC收到下游邻居RTD分配的主机路由与标签绑定关系后,将标签记录在自己的LIB表中,并向上游RTB发布这一绑定关系,同时RTC查看自己IP路由表中到达100.1.1.1/32的下一跳是否为RTD,如果IP路由表中的下一跳为RTD,则RTC使用RTD分配的标签封装到达100.1.1.1/32的数据;如果IP路由表中的下一跳不是RTD,则RTC保留RTD分配的标签作为备用标签;

    RTB收到下游RTC的绑定关系后,执行与RTC相同的动作;

    RTA收到下游RTB的绑定关系后,查看自己IP路由表到达100.1.1.1/32的下一跳是否为RTB,如果IP路由表中的下一跳为RTB,则RTA使用RTB分配的标签封装到达100.1.1.1/32的数据;如果IP路由表中的下一跳不是RTB,则RTA保留RTB分配的标签作为备用。因为RTA为Ingress,最终到达100.1.1.1/32的LSP完成建立。

     LDP的基本配置命令如下:

mpls lsr-id 1.1.1.1    //配置本节点的LSR ID,一般使用回环口地址

mpls               //全局使能mpls,并进入MPLS视图

int g0/0/1

    mpls       //使能接口的MPLS能力

    mpls ldp     //使能接口的MPLS LDP能力

 

1.10MPLS数据转发过程

在MPLS网络中,数据包在每台路由器上根据已分配的标签进行标签的封装和转发;

上图所示,MPLS数据转发过程如下:

RTA上收到访问100.1.1.1/32的数据包,如果数据包为普通的IP报文,则查找FIB表,因为Tunnel ID为非0x0,封装已分配的标签1027进行MPLS转发;如果数据包为带标签的报文,查找LFIB表,封装已分配的标签1027进行MPLS转发;

RTB收到RTA发送的带标签1027的报文,查找LFIB表,封装已分配的出标签1026进行MPLS转发给RTC;

RTC收到RTB发送的带标签1026的报文,查找LFIB表,封装已分配的出标签1025进行MPLS转发给RTD;

RTD收到RTC发送的带标签1025的报文,查找LFIB表,出标签为Null,表明数据包已经到达Egress节点,所以路由器将数据包的标签信息去掉,并对数据包进行三次处理,查找IP路由表发现100.1.1.1/32的路由为自己本地的路由,根据IP路由表中的出接口进行IP数据的封装并转发。

  如果MPLS网络中的业务量很大,则每次数据包在Egress节点都要进行两次处理才能进行正确的路由转发,这样会导致Egress节点的处理压力增加,为了解决这个问题,提出了PHP技术,让Egress节点只处理一次技能将数据包正确转发。

 

1.11 Penultimate hop popping

PHP,倒数第二跳弹出:

RTC收到RTB发送的带标签1026的报文,查找LFIB表,发现分配的出标签为隐式空标签3,于是执行弹出标签的动作,并将IP数据包转发给下游路由器RTD;

RTD收到RTC发送的IP报文,直接查找自己的FIB表,根据FIB表中的出接口进行IP数据的封装并转发。

mpls

   label advertise implicit-null     //表示隐式空标签,标签值为3,是默认参数;参数为explicit-null时,标签值为0;参数为non-null时,标签为正常值,即关闭php。

 

 

 

2 MPLS环路检测

2.1MPLS环路检测包含内容

(1)IGP环路检测机制

(2)TTL环路检测:帧模式的MPLS中使用TTL,信元模式的MPLS中无TTL

(3)LDP环路检测机制:距离向量法;最大跳数法

MPLS对TTL的处理

MPLS收到正常IP报文后,会在IP TTL前面加入Label TTL,Label TTL可以直接拷贝IP TTL,或者两者被同时重置为255。对于前一种方式,在MPLS域中传递时,只是处理Label TTL,IP TTL保持不变,在倒数第二跳弹出标签时,IP TTL会拷贝回 Label TTL。这个是默认处理方式。

 

对于后一种方式,IP TTL在MPLS传递过程中保持不变,最后弹出标签时,IP TTL还是保持不变。配置命令:

mpls

   undo ttl propagate public

 

在MPLS域中,当Label TTL减到0时,报文就会被丢弃。

 

2.2 LDP环路检测

路径向量法

Label Request信息中加入lsr-id相关字段和一个length计数,途径的lsr-id都会被记录并且length值加1,当一个lsr收到一个label request中包含自己的lsr-id或者length值超过预设值,则说明存在环路,lsr就会发出通知消息,拒绝LSP的建立。

 

最大跳数法:

 

Label Request的hops-count字段在传递过程中不断增加,增加到配置数值,判定环路,LER会丢弃该报文。

 

mpls ldp

    loop-detect     //配置环路检测,要在端口使能mpls前配置,否则会报错

    hops-count 32   //配置最大跳数

    path-vectors 32   //配置路径向量法中的跳数

 

3 MPLS实验分析

3.1拓扑图

 

3.2、配置R1、R2、R3、R4互联互通具体配置过程省略,配置完成后,PC1、PC2实现互通。

 

3.3、为各个路由器配置lsr-id,在各接口上使能MPLS,配置命令:

sys

mpls

mpls lsr-id 1.1.1.1

int g0/0/1

  mpls

3.4、静态LSP配置示例

R1:

static-lsp ingress huawei destination 100.1.1.1 32 outgoing-interface GigabitEthernet0/0/0 out-label 100

static-lsp egress huawei2 incoming-interface GigabitEthernet0/0/0 in-label 100

 

R2:

static-lsp transit huawei incoming-interface GigabitEthernet0/0/0 in-label 100 outgoing-interface GigabitEthernet0/0/1 out-label 200

static-lsp transit huawei2 incoming-interface GigabitEthernet0/0/1 in-label 200  outgoing-interface GigabitEthernet0/0/0 out-label 100

 

 

R3:

static-lsp transit huawei incoming-interface GigabitEthernet0/0/1 in-label 200 outgoing-interface GigabitEthernet0/0/0 out-label 300

static-lsp transit huawei2 incoming-interface GigabitEthernet0/0/0 in-label 300  outgoing-interface GigabitEthernet0/0/1 out-label 200

 

 

R4:

static-lsp egress huawei incoming-interface GigabitEthernet0/0/0 in-label 300

static-lsp ingress huawei2 destination 192.168.1.1 32 outgoing-interface GigabitEthernet0/0/0 out-label 300

 

 

配置完成后,查看各个路由器静态lsp:

 

 

3.5、动态LSP示例

AR1:

mpls

   mpls ldp

int g0/0/0

   mpls

   mpls ldp

dis mpls ldp peer

dis mpls ldp session

 

dis mpls ldp session verbose

 

 

 

dis mpls ldp lsp

 

 

4 MPLS VPN访问公网

4.1通过外部ISP访问公网

在CEA上配置一条默认路由指向FireWall,该路由指导所有公网流量的转发;然后在PEA的VPNA instance视图中,添加默认路由指向CEA;最后通过MP-BGP,将PEA的VPNA中的这条默认路由传递给PEB;PEB的这条缺省路由通过EBGP发布给CEB,最终CEB连接的用户可以经CEA通过FireWall访问公网。

相关配置命令:

CEA:

ip route-static 0.0.0.0 0.0.0.0 10.1.1.6

 

PEA:

ip route-static vpn-instance vpna 0.0.0.0.0 10.1.1.2

bgp 100

   ipv4-family vpn-instance vpna

      default-route imported   //引入缺省路由

      import-route static       //引入静态路由

 

FireWall需要配置NAT,RTA需要配置回城路由

 

 

4.2通过MLPLS VPN骨干网访问公网

PEA上通过静态缺省路由或者动态路由协议引入RTA上的公网路由

PEA:

ip route-staic vpn-instance vpna 0.0.0.0 0.0.0.0 100.100.100.2 public

bgp 100

   ipv4-family vpn-instance vpna

     default-route  imported

     import-route static

CEA上要配置NAT转换,将私网地址转换为公网地址,假设地址池为:

nat address pool 111.3.1.1-111.3.1.10

 

PEA:

ip route-static 111.3.1.0 24 Serial 2  //回城路由,用于指导回来的流量

bgp 100

   network 111.3.1.0 255.255.255.0

 

 

PEA和RTA之间,通过静态路由回指或者通过动态路由协议和路由策略互相引入。

 

 

4.3通过PE-CE间不同的接口访问公网

思路类似于通过MLPLS VPN骨干网访问公网

 

 

 

猜你喜欢

转载自blog.csdn.net/nplbnb12/article/details/89841272