MPLS
基本概念
MPLS位于TCP/IP协议栈中的数据链路层和网络层之间,可以向所有网络层提供服务,通过在数据链路层和网络层之间增加额外的MPLS头部,基于MPLS头部实现数据快速转发
MPLS域:一系列MPLS路由器组成的集合。
LSR:标签交换路由器,即运行MPLS的路由器 边缘MPLS路由器被称为LER
-
入站LSR(Ingress LSR):通常是向IP报文中压入MPLS头部并生成MPLS报文的LSR。
-
中转LSR(Transit LSR):通常是将MPLS报文进行例如标签置换操作,并将报文继续在MPLS域中转发的LSR。
-
出站LSR(Egress LSR):通常是将MPLS报文中MPLS头部移除,还原为IP报文的LSR。
LSP:标签交换路径 是标签报文穿越MPLS网络到达目的地所走的路径
- 一条LSP包含一台入站LSR、一台出站LSR以及数量可变的中转LSR,因此LSP也可以看做是这些LSR的有序集合。
- LSP需要在数据转发开始前建立完成,只有这样报文才能顺利穿越MPLS域。
- LSP可通过静态和动态两种方式建立。
- 需要注意的是,LSP是一个从“起点”到“终点”的单向路径,若需要双向数据互通,则需要在双方之间建立双向的LSP。
数据属于哪一个LSP,由数据进入MPLS域时的Ingress LSR(入栈LSR)决定
FEC: 转发等价类 类似于目的地址 对于相同的转发等价类在转发过程中被网络节点以相同方式处理
FEC可以通过多种方式划分,例如基于目的IP地址及网络掩码、DSCP等特征来划分
-
在传统的采用最长匹配算法的IP转发中,匹配到同一条路由的所有报文就是一个转发等价类。
-
在MPLS中,关于FEC最常见的例子是:目的IP地址匹配同一条IP路由的报文被认为属于同一个FEC。
标签
标签 :IP报文进入MPLS域之前,会被入站LSR压入MPLS头部(又叫MPLS标签),形成一个MPLS标签报文。一个标签报文可以包含一个或多个MPLS标签。
最靠近二层头部的标签是栈顶标签,标签中的S字段为0。
最靠近IP头部的标签是栈底标签,标签中的S字段为1
标签空间:标签是一个短而定长的、只具有本地意义的标识符
标签值 | 描述 |
---|---|
0~15 | 特殊标签值。例如0被定义为IPv4显式空标签(IPv4 Explicit NULL Label),标签值3被定义为隐式空标签(Implicit NULL Label)。 |
16~1023 | 用于静态LSP、静态CR-LSP的共享标签空间。 |
1024~1048575 | LDP、RSVP-TE、MP-BGP等动态信令协议的标签空间;
动态信令协议的标签空间不是共享的,而是独立且连续的,互不影响。 |
标签行为
转发
MPLS转发的本质就是将数据归到对应的FEC并按照提前建立好的LSP进行转发
LSP建立
当网络层协议为IP协议时,FEC所对应的路由必须存在于LSR的IP路由表中
LSR用标签标识指定FEC,所以该FEC的数据被发送至LSR时,必须携带正确的标签,才能被LSR正确的处理
LSP转发
Tunnel ID:为了给使用隧道的上层应用(如VPN、路由管理)提供统一的接口,系统自动为隧道分配了一个ID,也称为Tunnel ID。该Tunnel ID的长度为32比特,只是本地有效。在MPLS转发过程中,FIB、ILM和NHLFE表项是通过Tunnel ID关联的
即 在ingress上先查看FTN(FIB表)如果 tunnel ID不为0x0 则查找NHLFE 来进行转发
在Transit LSR上 查找ILM表然后查找NHLFE表项 查看动作 进行标签交换和转发
如果为Egress LSR路由器 查找ILM表发现行为pop直接剥离标签
静态配置
基础配置
首先配置IGP互通
# AR1
interface GigabitEthernet0/0/0
ip address 10.0.12.1 255.255.255.0
ospf 1
area 0.0.0.0
network 10.0.12.0 0.0.0.255
# AR2
interface GigabitEthernet0/0/0
ip address 10.0.12.2 255.255.255.0
interface GigabitEthernet0/0/1
ip address 10.0.23.2 255.255.255.0
ospf 1
area 0.0.0.0
network 10.0.12.0 0.0.0.255
network 10.0.23.0 0.0.0.255
# AR3
interface GigabitEthernet0/0/0
ip address 10.0.34.3 255.255.255.0
interface GigabitEthernet0/0/1
ip address 10.0.23.3 255.255.255.0
ospf 1
area 0.0.0.0
network 10.0.23.0 0.0.0.255
network 10.0.34.0 0.0.0.255
# AR4
interface GigabitEthernet0/0/0
ip address 10.0.34.4 255.255.255.0
interface GigabitEthernet0/0/1
ip address 10.0.45.4 255.255.255.0
ospf 1
area 0.0.0.0
network 10.0.34.0 0.0.0.255
network 10.0.45.0 0.0.0.255
# AR5
interface GigabitEthernet0/0/1
ip address 10.0.45.5 255.255.255.0
ospf 1
area 0.0.0.0
network 10.0.45.0 0.0.0.255
MPLS配置
- 指明mpls LSR-id
- 在MPLS域内所有路由器开启MPLS
- 标签交换的接口也开启mpls
# AR2
mpls lsr-id 2.2.2.2
mpls
interface GigabitEthernet0/0/1
mpls
# Ar3
mpls lsr-id 3.3.3.3
mpls
interface GigabitEthernet0/0/0
mpls
interface GigabitEthernet0/0/1
mpls
# AR4
mpls lsr-id 4.4.4.4
mpls
interface GigabitEthernet0/0/0
mpls
- 配置静态LSR
# Ar2
static-lsp ingress 1to5 destination 10.0.45.0 24 nexthop 10.0.23.3 out-label 23
# Ar3
static-lsp transit 1to5 incoming-interface GigabitEthernet0/0/1 in-label 23 next
hop 10.0.34.4 out-label 34
# Ar4
static-lsp egress 1to5 incoming-interface GigabitEthernet0/0/0 in-label 34
只配置单向 此时icmp请求request带有标签报文
回程时无匹配lsr走ip路由通信
MPLS LDP原理
LSR之间可以运行LDP来告知其他LSR本设备上的标签绑定信息,从而实现标签报文的正确转发
LDP是MPLS的一种控制协议,相当于传统网络中的信令协议,负责FEC的分类、标签的分配以及LSP的建立和维护等操作
LDP的工作过程主要分为两部分:
-
LSR之间建立LDP会话。
-
LSR之间基于LDP会话动态交换标签与FEC的映射信息,并根据标签信息建立LSP。
建立会话
LDP会话可以分为:
本地LDP会话(Local LDP Session):建立会话的两个LSR之间是直连的;
远程LDP会话(Remote LDP Session):建立会话的两个LSR之间可以是直连的,也可以是非直连的
两台LSR之间交互Hello消息之后,即建立起邻接体(Adjacency)关系;在建立邻接体关系的基础上,两台LSR之间交互LDP会话消息,建立起LDP会话,两台设备之间形成LDP对等体关系。
每一台运行了LDP的LSR除了必须配置LSR ID,还必须拥有LDP ID。LDP ID以“LSR ID : 标签空间标识”的形式呈现。例如2.2.2.2:0
标签空间标识一般存在两种形态:
值为0:表示基于设备(或基于平台)的标签空间;
值非0:表示基于接口的标签空间。
LDP协议报文包括了LDP头部和LDP消息两部分。
LDP头部中携带了LDP版本、报文长度等信息;
LDP消息中携带了消息类型、消息长度等信息
发现LDP邻接体 hello(UDP) ----Non-Existent
TCP邻接 ---Initialized
参数协商 Initialization/Keepalive(TCP) ---OpenSent/OpenRec/Operational
标签分发
上游与下游
MPLS根据数据的转发方向确定上、下游关系 。标签报文从上游LSR发出,被下游LSR接收并处理 即数据传输方向源为上游
标签发布方式
DU 下游自主方式 (默认)
- LSR从本地标签空间中取出一个标签与FEC绑定
- LSR将标签与FEC的绑定关系通知给上游LSR
标签发布方式为DU时,系统默认支持LDP为所有对等体分标签,即每个节点都可以向所有的对等体发布标签映射关系,不再区分上下游关系
DOD 下游按需方式
只有上游邻居向自己请求标签映射时,LSR才会通告标签映射给该邻居。
标签分配控制方式
标签分配控制方式需要与标签发布方式结合使用
Independent 独立模式(默认)
Ordered 有序模式
标签保留
Liberal 自由模式(默认)
Conservative 保守模式
Conservative方式的优点在于只需保留和维护用于转发数据的标签,以达到节约标签的目的
•当网络拓扑变化引起下一跳邻居改变时:
▫使用自由标签保持方式,LSR可以直接利用原来非下一跳邻居发来的标签,迅速重建LSP,但需要更多的内存和标签空间。
▫使用保守标签保持方式,LSR只保留来自下一跳邻居的标签,节省了内存和标签空间,但LSP的重建会比较慢。
▫保守标签保持方式通常与DoD方式一起,用于标签空间有限的LSR。
PHP
隐式空标签
PHP(Penultimate Hop Popping,次末跳弹出),如果激活了PHP特性,那么egress节点在为本地路由分配标签的时候,会分配一个特殊标签(3),该标签被称为隐式空标签(Implicit NULL Label)。
当LSR转发一个标签报文时,如果发现对应的出标签值为3,则LSR会将栈顶标签弹出,并将里面所封装的数据转发给下游LSR。
显示空标签
LDP工作原理
缺省情况下,根据32位的主机IP路由触发LDP建立LSP。可以通过手工配置触发非32位路由的LSP建立。
- Egress LSR将主动为到达该网段的路由分配标签,如1041,并主动通过LDP协议报文将标签映射通告给LDP对等体。
- Transit LSR当它从Egress LSR收到关于目的网络的标签映射通告时,由于该通告来自下游LDP邻居,因此这将触发它自己为该路由分配标签1021,并将标签映射通告给LDP邻居。
- Ingress LSR收到LDP邻居过来的路由的标签映射后将这两个标签都存储起来。然后根据单播路由表使用最优标签来到达目的网络
当Ingress LSR收到发往目的网络的IP报文时,首先在其FIB表中查询该目的IP地址,它发现所匹配的表项的Tunnel ID为非0,因此继续在NHLFE中查询该Tunnel ID,然后意识到需要将对该IP报文压入标签并进行标签转发
Comments NOTHING