MPLS原理及配置思路
摒弃了繁琐的路由查找,改为简单快速的标签交换
创新互联建站是一家专注于成都网站设计、成都网站建设、外贸网站建设与策划设计,博山网站建设哪家好?创新互联建站做网站,专注于网站建设十年,网设计领域的专业建站公司;建站业务涵盖:博山等地区。博山做网站价格咨询:18980820575
将具有全局意义的路由表改为只有本地意义的标签表
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时间
新闻名称:MPLS原理及配置思路
标题来源:http://ybzwz.com/article/iiogoh.html