MPLS LDP概述

一、概述

LDP是MPLS的一种控制协议,相当于传统网络中的信令协议,负责FEC的分类、标签的分配以及LSP的建立和维护等操作。LDP规定了标签分发过程中的各种消息以及相关处理过程。

1、基本概念

LDP对等体是指相互之间存在直接的LDP会话、可直接使用LDP来 交换标签消息(包括标签请求消息和标签映射消息)的两个 LSR。比 如,BGP 路由协议和 IKE(因特网密钥交换)中的对等体,其实它们 的基本设计思想是一样的,尽管它们所实现的功能不一样。在LDP对等 体中,通过它们之间的LDP会话可获得下游对等体为某FEC分配的MPLS 入标签,以此作为本端对应FEC的出标签。LDP对等体之间可以是直连的,也可以是非直连的,这点与IBGP中的对等体类似(MP-EBGP中的 对等体也可以是非直连的)。

如图1-1所示,LSR_1下面连接了一台二层交换机SW,然后在这台 二层交换机下又连接多个LSR路由器,LSR_1与LSR_2、LSR_3和LSR_4 之间则可以看成是直连的对等体关系;同理,LSR_5与LSR_2、LSR_3 和LSR_4之间也是直连对等体关系,但LSR_1与LSR_5之间也可以建立 对等体关系,它们之间是非直连对等体关系。

图1-1 LSR对等体示例

2.LDP邻接体

当一台LSR接收到对端发送的Hello消息后,两端之间就建立了LDP 邻接体关系(也就是邻居关系),这种LDP邻接体存在两种类型。

本地邻接体(Local Adjacency):通过组播形式(目的IP地址为 224.0.0.2,代表本地子网中的所有路由器)发送Hello消息(称为"链路 Hello消息")发现的邻接体叫作本地邻接体。

当一个源路由器通过一接口以组播方式发送一条 Hello 消息后,则 在这条链路下的所有直连路由器都会收到,然后这些路由器就是这个 源路由器的本地邻接体。如图 1-1中的LSR_1以组播方式发送一条Hello 消息,则LSR_2、LSR_3和LSR_4都可以收到,它们都是LSR_1的本地 邻接体。

远端邻接体(Remote Adjacency):以单播形式发送 Hello 消息 (称之为"目标Hello消息")发现的邻接体叫作远端邻接体。

远端邻接体通常被认为是非直连的,但也可以是直连的。如图 1-1 中的 LSR_1 向LSR_5以单播方式发送一条Hello消息,则LSR_5就是 LSR_1的远端邻接体。

LDP 通过邻接体来维护对等体的存在,对等体的类型取决于维护 它的邻接体的类型。一个对等体可以由多个邻接体来维护,如果同时 包括本地邻接体和远端邻接体,则该对等体类型为本远共存对等体。

二、LDP会话

LSR之间交互标签绑定消息之前必须建立LDP会话。LDP会话可以分为:

  • 本地LDP会话(Local LDP Session):建立会话的两个LSR之间是直连的;
  • 远程LDP会话(Remote LDP Session):建立会话的两个LSR之间可以是直连的,也可以是非直连的。

两台LSR之间交互Hello消息之后,即建立起邻接体(Adjacency)关系;

在建立邻接体关系的基础上,两台LSR之间交互LDP会话消息,建立起LDP会话,两台设备之间形成LDP对等体关系;

三、LSR ID与LDP ID

每一台运行了LDP的LSR除了必须配置LSR ID,还必须拥有LDP ID。

  • LDP ID的长度为48bit,由32bit的LSR ID与16bit的标签空间标识符(Label Space ID)构成。
  • LDP ID以"LSR ID : 标签空间标识"的形式呈现。例如2.2.2.2:0。

标签空间标识一般存在两种形态:

  • 值为0:表示基于设备(或基于平台)的标签空间;基于平台的方式分配标签的时候是全局一致的,同一条路由分配给不同的设备的标签都是一致的。
  • 值非0:表示基于接口的标签空间:基于接口的标签分配方式的话,可以为不同的路由分配相同的标签,那么如果收到的是同一条路由怎么去分配标签呢?那么就看是从哪个接口收到的路由假如是从1号接口发出1.1.1.1的路由就分配1029的标签,如果是从2号接口发出1.1.1.1的路由就分配1030标签。

四、LDP消息类型

运行LDP协议的LSR之间通过交换LDP消息来实现邻居发现、会话建立与维护以及标签管理等功能。

1、Hello报文:仅仅用来发现邻居的,不用来建立邻居,组播报文目的地址为:224.0.0.2(所有路由器都会监听并接收的地址),使用的是UDP协议端口号为646,该报文中有一个重要的内容---用来建立LDP会话的地址transport地址 。此外该报文中还有一个关键内容:LSR-ID, 有点类似于OSPF中的Router-id,而我们前面介绍的transport地址就默认等于LSR-ID ,双方都拿到了对方的地址了之后,就会建立TCP会话,在LDP会话、通告和通知消息中,主动方(对等体间IP地址大的一 方)发送的消息中的源端口为任意TCP端口,目的端口为 TCP 646(LDP协议端口号),被动方发送的消息中的源端口为TCP 646端口,目的端口为任意TCP端口 。,建立完成了之后就会开始发送我们的会话消息session其中有两个报文分别为init报文以及keepalive报文。

注意:既然需要建立TCP的会话,那么就必须保证双方的LSR-ID的路由可达。

举个例子:比如以下两台路由器相互发送了Hello报文,那么双方就知道了对方的地址,此时就可以去建立TCP会话了

2、init报文:用来协商参数,例如:标签的分发方式等。假如双方的分发方式不一致则无法正常建立LDP会话。

3、KeepAlive报文:用来维护LDP的会话,此时我们的LDP会话就建立完成了。

4、Advertisement消息:用于创建、改变和删除特定的FEC-标签绑定。

5、label mapping报文:为非物理接口的32位主机路由分配标签(为环回口分配标签)

6、notification消息:

五、LDP报文封装

LDP协议报文包括了LDP头部和LDP消息两部分。

  • LDP头部中携带了LDP版本、报文长度等信息;
  • LDP消息中携带了消息类型、消息长度等信息。

以上就是本章的全部内容了,文章若有错误或疑问可联系博主删除更改,感谢大家的浏览观看!

相关推荐
keep__go21 小时前
postgresql9.2.4 跨版本升级14.6
linux·运维·数据库·postgresql
Doris_LMS21 小时前
Git的强软硬回退(三)
运维·服务器·数据库·git·idea
(Charon)21 小时前
基于 epoll 的高并发服务器原理与实现(对比 select 和 poll)
运维·服务器
Jtti21 小时前
在 Debian 系统上清理缓存的方式和具体操作方法
运维·缓存·debian
伐尘1 天前
【mac】如何在 macOS 终端中高效查找文件:五种实用方法
运维·macos
迈威通信1 天前
迈威通信从送快递角度教你分清网络二层和三层
网络·网络协议·智能路由器·信息与通信
杰克逊的日记1 天前
如何将两个网段互相打通
网络·智能路由器
zzu123zsw1 天前
第15章 Jenkins最佳实践
运维·jenkins
万物得其道者成1 天前
Cursor + 云效 DevOps MCP
运维·devops
wanhengidc1 天前
云手机运行是否消耗自身流量?
运维·科技·安全·游戏·智能手机