1 MPLS概述
1.1 IP路由回顾
交换方式:
1、 进程交换:使用系统缓存,整个过程CPU全程参与每一个数据包,CPU负担非常大
2、 快速交换:路由缓存,第一个包使用进程交换,然后放入缓存。
3、思科CEF交换,基于硬件平台,全部预存
1.2 MPLS介绍
MPLS基于2.5层,在IP头前面加标签头,转发交换依据标签头。
跑MPLS之前,先运行动态路由协议学路由。而且需要CEF支持。
1.2.1 MPLS初体验
1.2.1.1 第1步:运行IGP协议,维护RIB和CEF表
此处体验用IGP的OSPF讲解。
运行OSPF后,路由器之间彼此学习路由,放入RIB表。此时转发IP报文是可以的。
1.2.1.2 第2步:运行LDP,维护LIB表
路由器需要能支持MPLS,且能运行标签分发协议,主要为LDP、TDP、RSVP、MP-BGP等。
激活MPLS,运行标签分发协议LDP后:为路由表路由前缀捆绑标签,维护LDP邻居关系,同时将捆绑的标签通告为LDP邻居。
分发完后,形成新的LIB表项(本地捆绑的标签是给邻居用的)。此处没有全部标注,R1从邻居R2学标签200,R2也会从R1学标签100。
1.2.1.3 第3步:更新CEF表,维护LFIB表
标签包查的就是LFIB表,IP包查的是FIB表(CEF表),先查LFIB表,查入栈->出栈标签及出栈接口。
PC通过R1给30.0网段发数据流程:
PC发出IP包,R1收到IP包后,由于是IP包,所以查CEF表,即FIB表;如果收到的是标签包,则查LFIB表;
R1查询FIB表,找到30.0信息,下一跳为R2,需要压入标签,标签值为200;
R2收到R1发过来的标签包后,发现是标签包,则查LFIB表,显示入栈为200,对应出栈是300,出接口为S0/1。
则R2把标签200替换为300后,把新的标签包从出栈口转发出去。(R2同时能学到R1R3的标签,为什么不替换为R1的100,而是R3的300,这时借助于RIB表)
R3收到后,查LFIB表,入栈300对应的出栈动作为POP,移除标签值。通过查FIB表对IP包进行路由,转发出去。
信息最终存储在LFIB表中,LFIB表的构建基于LIB、RIB、CEF表构建的。
1.2.2 小结
直接根据标签值进行交换,不需要查询IP内容。
1.3 MPLS架构
1.3.1 控制层面
IGP:负责路由器交互路由信息,通过IGP,路由器能学到整个MPLS网络中的路由信息,填充RIB表;
标签交换协议:为路由表中所有路由条目前缀在本地分配路由标签,放入LIB表中;邻居之间相互发标签和路由条目的映射关系,并保存在各自的LIB表中。
首先运行ROUTING PROTOCOLS,负责和其他路由器交换路由信息,学到后,放入RIB表。RIB表的变化会直接影响FIB表的变化。
1.3.2 数据层面
基于标签的数据转发,主要就是一些表
路由器收到IP包,则查FIB表(CEF表),包含包目的地址对应路由前缀条目,指示是直接转给下一跳,还是压上标签头再转出去。所以有可能是IP包进来,IP包出去,也可以压上标签头后发出去。
如果收到的是标签包,则查询LFIB表,根据标签找到入栈出栈及出接口,将标签转出去,也有可能出栈是POP操作,则弹出标签头后,变成普通IP包再路由。
1.4 MPLS概念
1.4.1 LSR标签交换路由器
LSR:支持且激活了MPLS的路由器;
角色1:边界LSR,即LER,同时处理IP和标签报文。
图中左边路由器为入栈LSR
图中右边路由器为出栈LSR
图中中间路由器为中间LST
1.4.2 FEC转发等价类
1.4.3 LSP即LSR序列
LSP为单向路径
1.5 MPLS标签
1.5.1 标签结构:2.5层协议
在IP头前面插入标签字段4B。即在帧头和IP头之间。(二层帧头中有字段指示帧内容是什么类型的包)
如PING包,ICMP中,在IP头和HDLS头之间夹着MPLS头,常说的2.5层协议就是这么来的。
标签头包括了标签值,QOS等值。
1.5.2 多标签
二三层之间可以压入多个标签头,标签栈,BOS标记是否是栈底。
1.5.3 标签处理动作
入栈(标签压入),交换(标签置换),移除(标签弹出)
交换、入栈只针对栈顶操作
出栈也是,只弹出顶层标签
去除标签:不论多少个标签,一下移除栈中所有标签
1.5.4 带标签的报文
二层帧头类型,不同类型下,后续跟MPLS标签时的类型
如MPLS包,8847
普通的IPV4的PING报,转载的是0800
1.5.5 标签查找
IP包直接在CEF中查找,查找完后,出去可能是IP包,也可能是标签包
标签包直接在LFIB中查找,查找完后,出去的可能是IP包,也可能是标签包
有LABEL,说明转发前会压入标签