MPLS 原理及配置思路

发布时间:2020-08-01 07:15:10 作者:506cisco
来源:网络 阅读:2448

摒弃了繁琐的路由查找,改为简单快速的标签交换

将具有全局意义的路由表改为只有本地意义的标签表


MPLS包头:通常有32bit

20bit用作标签

3个bit的exp,协议中没有明确,通常用作COS

1个bit的S,用于标识是否是栈低,表明MPLS的标签可以嵌套

8个bit的TTL


3bit的exp通常对应于ip协议的tos

S位置一:标识后面接的是IP头部。



标签label:

是一个比较短的,定长的只具有局部意义。

转发等价类FEC:

是在转发过程中以等价的方式处理的一组数据分组。处理动作相同的话就可以理解是相同FEC(一条路由对应一个FEC)

标签交换通道LSP:

一个FEC的数据流,在不同的节点被赋予确定的标签,数据转发按照这些标签进行。数据流所走的路径就是LSP

MPLS的网络的核心交换机LSR:

提供标签交换和标签分发功能

MPLS的网络的边界交换机LER:

在MPLS的网络边缘,进入到MPLS网络的流量由LER分为不同的FEC,并为这些FEC请求相应的标签。它提供流量分类和标签的映射、标签的移除功能




打标签PUSH、弹出标签POP

MPLS的标签转发,通过事先分配好的标签,为报文建立了一个标签转发通道LSP,在通道经过的每一台设备处,只需要经过一次查找即可

FEC的精妙之处:

不同目的地址(属于相同网段)的IP报文,在ingress处被划分为相同的FEC,具有相同的标签,这样在LSR处,只需根据标签做快速的交换即可。cache功能开启的话,标签对应的是FEC,可能是网段,可以做到很少的条目匹配大量的报文

FEC的致命缺陷:

对于一条FEC来说,沿途所有的设备都必须具有相同的路由(前缀和掩码必须完全相同)才可以建成一条LSP。使用MPLS转发的所有沿途设备上,对于要使用标签转发的路由,不能做聚合操作



靠近二层头的label为栈顶label,靠近ip报文的label为栈低label,lsr执行label交换时总是基于栈顶label。




以太网中:0X8847(单播)和0X8848(组播)来标识承载的是MPLS报文。

PPP中:0X8281来标识承载的是MPLSCP





标签生成器LDP(label distribution protocol)。跟RIP十分相似.BGP和RSVP也可以分发标签

几大要素:

1,报文(消息)

2,邻居的自动发现和维护机制

3,一套算法,用来根据搜集到的信息计算最终结果



LDP消息:

发现消息DISCOVERY:用于通告和维护网络中LSR的存在

会话消息SESSION:用于建立、维护和结束LDP对等体之间的会话连接

通告消息ADVERTISEMENT:用于创建、改变和删除特定FEC-标签绑定

通知消息NOTIFICATION消息:用于提供消息通告和差错通知




邻居发现:互发hello报文(UDP:PORT646/IP:224.0.0.2)

建立TCP连接:由地址大的一方主动发起(TCP:PORT646)(transport address大)

会话初始化:由MASTER发出初始化消息,并携带协商参数

由SLAVE检查参数能否接受,如果能则发送初始化消息,并携带协商参数。并随后发送keepalive消息

master检查参数能否接受,如果能则发送keepalive消息

相互收到keepalive消息,会话建立

期间收到任何差错消息,均关闭会话,断开TCP连接





LDP会话建立的状态迁移图:

NON EXISTENT:会话还没建立状态。相互发送hello消息,在此阶段协商主动方和被动方。收到tcp连接建立成功事件的触发后变为initialized状态

INITIALIZED:会话连接建立成功。主动方发送initialization报文,转向opensent状态,等待被动方的initialization消息

OPENSENT:主动方发送init消息,进入opensent状态

OPENREC :接收到可接受的init消息后进入openrec状态

OPERATIONAL:都接收到keepalive消息后进入operational状态






标记分发方式:

DOD:下游按需标记分发

DU:下游自主标记分发

标记控制方式:

有序方式标记控制

独立方式标记控制

标签保留方式:

保守方式

自由方式


上游和下游:在一条LSP上,沿数据包传送的方向,相邻的LSR分别叫上游LSR和下游LSR。下游是路由的始发者(宣告者)



DU方式:

下游主动向上游发出标记映射消息。标签分配方式中同样存在水平分割。

标签是设备随机自动生成的,16以下为系统保留

DOD方式的使用较少:

上游向下游发标签映射请求消息,下游收到消息后,根据请求的FEC,从标签资源池里面分配标签资源



自由方式:

保留来自邻居的所有发送来的标签

优点:当IP路由收敛、下一跳改变时减少了lsp收敛时间

缺点:需要更多的内存和标签空间


保守方式:

只保留来自下一跳邻居的标签,丢弃所有非下一跳邻居发来的标签

优点:节省内存和标签空间

缺点:当IP路由收敛、下一跳改变时lsp收敛慢

自由方式使用的更多



有序方式:除非LSR是路由的始发节点,否则LSR必须等收到下一跳的标记映射才能向上游发出标记映射


独立方式:LSR可以向上游发出标记映射,而不必等待来自LSR下一跳的标记映射消息

比较流行的是有序方式





DU+自由+有序方式:

1,发现自己有直连接口路由时会发送标签

2,收到下游到某条路由的标签并且该路由生效(也就是说,在本地已经存在该条路由,并且路由的下一跳和标签的下一跳相同)时会发送标签

3,标签表中会存在大量的非选中的标签

只会对运行MPLS的设备的直连路由生成标签,对于其他设备(IP域)始发的路由则不会生成标签。




帧模式:独立控制+自主分发DOD+自由保留


信元模式:有序控制+按需分发DU+保守保留





标签拆除方式:

标签释放:

上游主动发送标签释放消息通知下游释放某一个标签,以后不再使用该标签发送数据,标签释放消息不需要确认消息


标签撤销:

下游向上游发送标签撤退消息通知上游停止使用某个标签时,需要上游路由器发送标签释放消息确认




标签转发表中的IN和OUT,是相对于标签转发而言,不是相对于标签分配的IN和OUT

心法口诀:入标签是我分给别人的,出标签是别人发给我的

我分配的标签是给别人用的,我不会添加到报文中

in标签不可以重复,out标签可以重复


全局标签空间:

所有的入标签一定不同

对于相同的路由(下一跳相同),出标签一定相同

对于不同的路由(下一跳相同),出标签一定不同

对于不同的路由(下一跳也不同),出标签可能相同

对于同一条路由,入标签和出标签可能相同

接口标签空间:



倒数第二跳弹出PHP:

在倒数第一跳为其分配标签时做一下特殊说明即可(分配一个特殊的标签3)

当egress lsr接收到倒数第二跳发来的MPLS标签时,直接进行IP路由转发。倒数第二跳弹出所有标签


显示空0标签:用于QOS

路由器报警1标签:软件转发



路由环路的预防:

LSP的建立是依赖于IP路由的。环路的预防是交给IP来做。

标签只会由下游设备发送给上游设备

路由环路的检测:

每经过一次MPLS转发,TTL减一


在标签转发过程中,MPLS报文头中的TTL减一,IP报文中的TTL就不会减一了。因为在转发过程中,不会涉及到三层解封装了




TDP:TAG DISTRIBUTION PROTOCOL。Cisco专有标准

发现邻居:源目端口号都为UDP:711

建立邻居:目标端口为TCP:711,源端口随机

后面都是TCP。

LDP和TDP一样,知识端口换成646即可



MPLS必须先启用CEF,因为只有在cef的fib表中才能插入标签




用户的边界网关通常标注为CE

SP的边界网关通常标注为PE,内部的路由器标注为P



边界路由器对每一个ICG路由条目都会分配一个标签,但对BGP路由条目不会这样。对BGP条目统一用其更新源的标签



LIB:路由条目和所分配标签的对应表

FLIB:每一个标签和下一跳以及下一个标签的对应表,是标签的转换表 show mpls ip binding

LFIB:标签的转换表 show mpls forwarding-table

路由器会把别人给的标签也放入LIB表









LDP PDU头部:

版本号:16bit,目前版本号始终为1

PDU长度:16bit,值为LDP PDU头部以后的数据部分的长度,不包括LDP PDU头部

LDP ID:48bit,前32bit为LSR-ID,后16bit为标记空间标志,全局空间为0,局部接口空间为1


LDP消息格式:

U:这一位总是为0,代表可识别的消息。为1代表不可识别的消息

类型域:协议根据这个域识别不同的消息

长度域:指示出长度域之后的数据部分的长度

消息ID:用来唯一的标识这个消息。


消息种类:

邻居发现消息:在启用LDP协议的接口上周期性发送该消息

hello消息

会话建立和维护消息:用来建立和维护LDP会话

initialization消息

keepalive消息

标签分发消息:用来请求、通告及撤销标签绑定

address message

address withdraw message

label request message

label mapping message 分发标签

label withdraw message

label release message

label abort request message

错误通知消息:用来提示LDP对等体在会话过程中的重要事件

notification消息


建立邻居:hello时间和保持时间分别是5秒和15秒,hello包不能跨网段

LDP会话:hello和保持时间分别是60秒和180秒

修改发现邻居hello时间:mpls ldp discovery hello interval 3

修改会话hold时间:mpls ldp hold time 150



数据流向下游,向上游分发label







MPLS PING/TRACEROUTE使用IPV4/IPV6的UDP协议来实现。LSP PING/TRACEROUTE的基本思路是使用特定FEC转发类的分组来验证对应该FEC的LSP的完整性

echo request的udp端口为3503





路由条目标签的限制:

可以收到6.6.6.6的标签

access-list 6 permit 6.6.6.6

mpls ldp neighbor 12.12.12.2 labels accept 6


控制具体的路由器发送标签限制:

控制R3只把6.6.6.6标签发给R2

access-list 2 permit 2.2.2.2(此地址必须为对方的RID)

access-list 6 permit 6.6.6.6(此为具体的路由条目)

no mpls ldp advertise-labels

mpls ldp advertise-labels for 6 to 2


LDP的认证:

mpls ldp neighbor 12.12.12.2 password 0 cisco





LDP直连邻居,那么这个会话就叫做LDP sessions

LDP远程邻居,那么这个会话就叫做targeted session,hello包称为LDP Targeted hello

一般在备用链路上配置远程会话,以防止主链路断了导致会话失败


LDP会话保护:两台直连LSR之间的双联路备份

mpls ldp session protection 两边都要做,或者使用下面命令

mpls ldp neighbor 1.1.1.1 targeted ldp 不指定ldp,默认为tdp


也可以通过acl指定邻居和时间:

access 1 per 1.1.1.1

mpls ldp session protection for 1 duration 90s


手工配置远程会话:

1,mpls ldp neighbor 2.2.2.2 targeted ldp



ICG和LDP同步:只有当IGP和LDP都认为某条链路UP后,才可以转发流量。在某些情况下,当LDP邻居还没有建立或者邻居丢失而没有为路由发送标签时,如果这时IGP邻居已经建立并学到路由条目后,就会开始IP交换,那么后来当LDP正常以后,可能会出现丢包的情况

目前只能和OSPF同步,并且只有在接口下配置mpls ip时才可以使用。ospf等待ldp邻居建立的最大时间为holddown


router ospf 12

mpls ldp sync 开启同步


mpls ldp igp sync holddown 1000 设置holddown时间
























推荐阅读:
  1. MPLS MTU
  2. MPLS基本知识

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

配置 mpls 原理

上一篇:Dubbo还有这样的bug,你能忍?

下一篇:MySQL单实例重置密码的两种方法

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》