MPLS的基本原理
(1)路由传递是下游往上游的方向,那么数据流传递过程就是上游往下游的方向
(2)MPLS域以外的所有数据包都会去掉标签
(3)a、在路由100.1.1.1传递到R3的过程中(下游传递上游),每个LSR(标签转发路由器)都会为路由100.1.1.1添加标签
R1添加标签10(in),R2添加标签20(in),R3添加标签30(in)
b、MPLS域内的每个LSR都会学习直连邻居产生的标签,贴上out,最后形成LIB(标签信息库)
c、R3学习到100.1.1.1的路由后,数据包从R3传递到R1时(上游传递上游),数据包会添加下一条LSR的标签
2、LSP:标签转发路径
LSR :标签转发路由器(MPLS域中的路由器)
ABR:边界路由器(ISP和外部企业网络之间的路由器)
3、MPLS的应用:
VPN(虚拟专用网络)
TE(流量工程,用于不等开销负载均衡,又叫不等价)
4、MPLS包被封装的位置位于数据链路帧和ip数据包之间,又被称作2.5层
5、MPLS包头的格式:
LABEL标签字节:20个bit,2的20次方个数值
EXP优先级:3个bit,8个数值,0~7个级别,一般情况6和7是保留级别,只用0~5,5为最高。
s占比位:1个bit,2个数值,0和1,数据包中有多个标签时,最内侧的s位是1,其他是0。用于在弹出标签的过程中,在弹到s占比位是1的标签时,后面就是ip数据包了。
TTL:time to live(存货时间),系统自带,一般是255
6、MPLS的架构
(1)控制平面contol plent
第一步:先形成底层的路由协议,如:ospf,bgp,rip等
第二部:LDP协议/MP-BGP
第一个作用:为每一个LSR分发标签
第二个作用:建立LDP邻居,直连邻居间互相传递标签信息,打上out
第三个作用:最后形成LIB(标签信息库)
(2)转发平面 data plent
LFIB标签转发信息库,控制平面就是为了形成LFIB的,在数据包传递过程中用来查询。
7、MPLS的标签实际传输
如果路由条目是MPLS的边界路由器的直连地址,那么会在边界路由器的前一跳进行对标签进行弹出。如上图:1.1.1.1为R1的直连地址,1.1.1.1的路由条目在R1\R2\R3上会分别贴上标签:空/20/30,从R3的数据包到达1.1.1.1时,会在R2上将标签弹出,到达R1时已经是一个纯IP数据包
8、LDP协议的工作过程
前提是建立了IGP路由协议
(1)手动选举ldp的route-id
mpls lsr-id
(2)使用route-id建立直连LSR路由器之间的LDP邻居
(3)LSR通过igp路由协议学习到路由后,LSR路由器为每一个路由条目本地分配以个标签
(4)直连LSR路由器之间通过LDP协议互相传递标签,行程LIB
9、LDP建立邻居的过程
MPLS域里面的路由器只会为IGP协议的路由和直连路由(标签为3,即是空)分配标签,不会为BGP协议的路由分配标签。
(1)互相发送hello包
UDP协议:源端口和目的端口都为646。
ip协议:源ip为物理接口地址,目的ip为组播地址224.0.0.2
(2)协商参数
协商RID信息大小,以RID大的为主。
(3)建立邻居关系
TCP协议:tcp三次握手,RID大的LSR路由器先发送第一次握手。源端口随机,目的端口为646。
ip协议:使用彼此的RID地址建立邻居关系
10、MPLS命令:
(1)mpls配置命令(先全局配置,然后在物理接口下配置)
R1:
[]mpls lsr-id 1.1.1.1
[]mpls
[R1-mpls]mpls ldp
int s2/0/0
[int-s2/0/0]mpls
[int-s2/0/0-mpls]mpls ldp
(2)查询命令:
dis mpls ldp peer/ssention (查看mpls邻居)
dis mpls lsp (查看mpls下的标签)
tracert -v ip地址(查看路由跟踪携带的标签信息)
12、MPLS-VPN
MPLS-VPN的构成
(1)控制平面
1、ISP内部运行的IGP路由协议
作用:一般使用ospf、isis、bgp协议保证isp内部互通
2、ISP内部运行MPLS的LDP协议
作用:ISP内部全部运行MPLS,减小p路由器的路由条目
3、PE和CE之间运行路由协议(主要使用ospf协议)
作用:保证ISP和企业之间互联,并使PE能学习到企业的路由条目
4、ISP内部PE之间的路由协议(MP-BGP)
作用:(1)使用MP-BGP进行互联,因为涉及到96位的ip地址传输(64位RD+32位ip地址),因此IPV4-BGP无法使用。
(2)添加标签,在ISP内部PE和PE之间传输有两层标签,分别是LDP标签和MP-BGP标签
(3) 传输中使用excommunity团体属性。(RD和RT)
5、VRF虚拟路由转发
作用:在一个PE上建立多个虚拟路由器,用于隔离不同企业
详解: PE路由器上每个接口相当于一台虚拟的路由器,
虚拟路由器和真实路由器路由表相互独立,每一个虚拟路由器单独有一个自己的路由表,并且虚拟路由器中的路由条目不会出现在真实路由器中的全局路由表中。
6、RD路由区分符(因为有时不同企业内部的ip地址会有冲突)
用于解决企业ip地址冲突;用于相同IP路由从CE到PE的不同VRF之间的区分。(防止不同企业的相同IP路由地址)
RD只在本地有效即可。
一个VRF代表一个客户,一个VRF配置一个RD。
vpnv4地址(新的地址族96位):RD(64位)+ip地址(32位)
7、RT路由目标
用于解决PE和对端PE的VRF之间的路由选择和区分。
(1)入方向值(import)
(2)出方向值(export)
8、外层标签和内层标签
外层标签:LDP协议(在配置MPLS时分配)分配给目标路的下一跳路由的标签。
内层标签:MP-BGP协议(在引入外部路由进入BGP里面时分配)分配给用于区分数据包寻找正确的VRF路由器。(与RT功能相同。不过,RT是路由寻找正确VRF,而MP-BGP是数据转发包寻找正确VRF。)
总结:RD和RT是用来在路由传递过程中寻找正确的VRF路由器
内层标签(MP-BGP标签)和外层标签(LDP标签)是用来在数据包传递过程中寻找正确的虚拟路由和真实路由。在isp内部是使用LDP寻找出口边界路由器,到达出口边界路由器后使用MP-BGP标签寻找虚拟路由器,然后正确转发。
配置:
第一步:建立VRF和RD
R1(PE路由器):
[R1]ip vpn-instance yinhang(建立VRF)
[R1-vpn-instance]route-distinguisher 1:1(建立RD)
[R1]ip vpn-instance chaoshi
[R1-vpn-instance]route-distinguisher 2:2
此时R1路由器上有3个路由表,分别是R1/yinhang/chaoshi
虚拟路由器路由表查询:dis ip routing-table vpn-instingusher yinhang/chaoshi
第二步:将接口绑定到虚拟路由器上
[R1]int s0/0/0(PE路由器上连接CE的接口)
[R1-s0/0/0]ip binding vpn-instingusher yihang
[R1]int s0/0/1(PE路由器上连接CE 的接口)
[R1-s0/0/1]ip binding vpn-instingusher chaoshi
优先配置VRF、RD和接口绑定 ,之后再配置绑定VRF的接口ip地址,否则在接口绑定后,之前配置的接口ip地址会被自动删除,需要重新配置。
13、MPLS-VPN相关查询命令
dis ip routing-table vpn-instance A //查看虚拟路由A的路由表
dis bgp vpnv4 all peer //查看MP-BGP的所有邻居
dis bgp vpnv4 all routing-table //查看MP-BGP路由表项
dis bgp vpnv4 all routing-table label //查看MP-BGP产生的标签
dis bgp vpnv4 vpn-instance A routing-table //查看虚拟路由器A中的MP-BGP路由表项
ping – vpn-instance A ip地址 //ping虚拟路由器A中的ip地址(因为虚拟路由器中的地址不会进入全局路由器中)