首页 > 其他分享 >MPLS LDP原理与配置

MPLS LDP原理与配置

时间:2025-01-19 23:28:29浏览次数:3  
标签:FEC 标签 报文 MPLS 会话 LDP LSR 原理

一.简介

  • MPLS,称之为多协议标签交换,在九十年代中期被提出来,用于解决传统IP报文依赖查表转发而产生的瓶颈,现多用于VPN技术,MPLS报头封装在数据链路层之上,网络层之下。
  • 本文为结合了华为技术和新华三技术的大成,即结合了HCIA,HCIP,HCIE Datacom和H3CNE-RS+,H3CSE-RS+,H3CIE-RS+。本文将主要介绍MPLS的基本概念,博主将会在MPLS专栏中持续更新关于MPLS的进阶内容。

二.前言

  • MPLS是一种根据报文中携带的标签来转发数据的技术。
  • MPLS的一个基本概念就是两台LSR必须对在它们之间转发的数据的标签使用上“达成共识”。LSR之间可以运行LDP(Label Distribution Protocol,标签分发协议)来告知其他LSR本设备上的标签绑定信息,从而实现标签报文的正确转发。
  • 本文章将介绍LDP基本工作原理与特性,以及LDP的基本配置。

三.LDP的基本概念

1.LDP协议概述

  • LDP是MPLS的一种控制协议,相当于传统网络中的信令协议,负责FEC的分类、标签的分配以及LSP的建立和维护等操作。LDP规定了标签分发过程中的各种消息以及相关处理过程。
  • LDP的工作过程主要分为两部分:
    • LSR之间建立LDP会话。
    • LSR之间基于LDP会话动态交换标签与FEC的映射信息,并根据标签信息建立LSP。

2.LDP会话、LDP邻接体、LDP对等体

  • LSR之间交互标签绑定消息之前必须建立LDP会话。LDP会话可以分为:
    • 本地LDP会话(Local LDP Session):建立会话的两个LSR之间是直连的;
    • 远程LDP会话(Remote LDP Session):建立会话的两个LSR之间可以是直连的,也可以是非直连的。
  • 两台LSR之间交互Hello消息之后,即建立起邻接体(Adjacency)关系;
  • 在建立邻接体关系的基础上,两台LSR之间交互LDP会话消息,建立起LDP会话,两台设备之间形成LDP对等体关系。

3.LSR ID与LDP ID

  • 每一台运行了LDP的LSR除了必须配置LSRID,还必须拥有LDP ID。
    • LDP ID的长度为48 bit,由32 bit的LSRID与16bit的标签空间标识符(Label Space lD)构成。
    • LDP ID以“LSRID:标签空间标识”的形式呈现。例如2.2.2.2:0。
  • 标签空间标识一般存在两种形态:
  • 值为0:表示基于设备(或基于平台)的标签空间;
  • 值非0:表示基于接口的标签空间。

4.LDP消息

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

  • 按照消息的功能,LDP消息一共可以分为四大类型:发现消息(DiscoveryMessage),会话消息(Session Message),通告消息(Advertisement Message和通知消息(Notification Message)
    • 发现消息:用来宣告和维护网络中一个LSR的        存在;用于通告和维护网络中LSR的存在,如Hello报文。
    • 会话消息:用于建立、维护和终止LDP对等体之间的会话,如Initialization报文Keepalive报文。
    • 通告消息:用来生成、改变和删除FEC的标签映射。0
    • 通知消息:用来宣告告警和错误信息。
  • LDP消息承载在UDP或TCP之上,端口号均为646。其中发现消息基于UDP传递;会话消息、通告消息、通知消息都基于TCP传递。

5.LDP报文封装

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

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

  • LDP头部长度为10 Byte,包括Version,PDU Length和LDP ldentifier三部分。
    • Version占用2 Byte,表示LDP版本号,当前版本号为1。
    • PDU Length占用2 Byte,以字节为单位表示除了Version和PDU Length以外的其他部分的总长度。
    • LDP ldentifier,即LDPID,长度6 Byte,其中前4 Byte用来唯一标识一个LSR后2 Byte用来表示LSR的标签空间。
  • LDP消息包含五个部分。
    • U占用1个 bit,为Unknown Message bit。如果对端收到的LDP消息中0“Message type”字段为未知的LDP消息类型,且“U”字段的值为“0”,则向源端发送通知消息;如果对端收到的LDP消息中“Message type”字段为未知的LDP消息类型,且“U”字段的值为“1”,则忽略该未知消息。
    • Message Length占用2 Bytes,以字节为单位表示MessagelD、MandatoryParameters和Optional Parameters的总长度。Message lD占用32 bit,用来标识一个消息。D
    • Mandatory Parameters和Optional Parameters分别为可变长的该消息的必须的参数和可选的参数。
    • Message Type表示具体的消息类型,目前LDP定义的常用的消息有Notification,Hello,initialization,Keepalive, Address, Address Withdraw, LabelMapping, Label Request, Label Abort Request, Label Withdraw, LabelRelease 。

四.LDP工作原理

1.LDP会话建立

(1)LDP会话状态机

LDP使用5种状态描述LDP会话状态机

(2)发现阶段与TCP连接建立

  • LDP的传输地址用于与邻居建立TCP连接。
    • 两台LSR之间在建立LDP会话之前,需要先建立TCP连接,以便进行LDP协议报文的交换。
    • 设备的传输地址被包含在LDP Hello报文中,LSR通过Hello报文知晓邻居的传输地址。
    • 在使用Hello报文发现邻居并且知道了对方的传输地址后,邻居之间就会开始尝试TCP三次握手(基于传输地址),并且交互LDP的初始化报文、标签映射报文等,这些报文都使用双方的传输地址作为源、目的IP地址。
    • LSR必须拥有到达邻居的传输地址的路由。

(3)会话建立与保持

  • TCP连接建立成功后,主动方R2(传输地址大的一方)发送LDP初始化报文,协商建立LDP会话的相关参数。
  • LDP会话的相关参数包括LDP协议版本、标签分发方式、Keepalive保持定时器的值、最大PDU长度和标签空间等。
  • 被动方R1收到初始化报文后,若接受R2的相关参数则回应Keepalive报文作为确认,为了提高发送效率同时发送自己的初始化报文。
  • R2收到R1的初始化报文后,若接受相关参数,则回复Keepalive报文给R1。
  • 双方都收到对端的Keepalive报文后,会话建立成功后续通过周期性发送的Keepalive报文保持会话。

(3)LDP邻居状态

(4)LDP会话状态

2.LDP标签分发

(1)标签的发布和管理

  • 在MPLS网络中,下游LSR决定标签和FEC的绑定关系,并将这种绑定关系发布给上游LSR。
  • LDP通过发送标签请求和标签映射消息,在LDP对等体之间通告FEC和标签的绑定关系来建立LSP。
  • 标签的发布和管理由标签发布方式、标签分配控制方式和标签保持方式来决定。

(2)上游与下游

  • MPLS根据数据的转发方向确定上、下游关系。标签报文从上游LSR发出,被下游LSR接收并处理。
  • 如图所示,对于到达192.168.3.0/24的LSP而言,R3是R2的下游LSR,R1是R2的上游LSR。

(3)标签发布方式:DU模式

  • DU模式
    • 对于一个特定的FEC,LSR无需从上游获得标签请求消息即进行标签分配与分发。
    • LSR会主动将自己为FEC捆绑的标签通告给上游邻居,无需邻居先发起请求再通告。

(4)标签发布方式:DoD模式

  • DoD模式
    • 对于一个特定的FEC,LSR获得标签请求消息之后才进行标签分配与分发。
    • 一般情况下,对特定FEC的访问需求会触发标签请求消息。
    • 只有上游邻居向自己请求标签映射时,LSR才会通告标签映射给该邻居。

(5)标签分配控制方式:独立模式

  • 独立(Independent)模式
    • 本地LSR可以自主地分配一个标签绑定到某个FEC,并通告给上游LSR,而无需等待下游的标签。

标签分配控制方式需要与标签发布方式结合使用:

  • 在使用DU作为标签分发方式的情况下,如图所示,R2和R3对192.168.4.0/24这条FEC,可以在上游LSR无请求,且自身没有收到下游LSR的标签绑定信息的情况下,主动向上游LSR通告标签绑定信息。
  • 采用DoD作为标签发布方式时,如图所示,R2和R3对192.168.4.0/24这条FEC,只要收到上游LSR的标签请求消息,可以在自身没有收到下游LSR的标签绑定信息的情况下,向上游LSR通告标签绑定信息。

(6)标签分配控制方式:有序模式

  • 有序(Ordered)模式
    • 对于LSR上某个FEC的标签映射,只有当该LSR已经具有此FEC下一跳的标签映射消息、或者该LSR就是此FEC的出节点时,该LSR才可以向上游发送此FEC的标签映射。

  • 当标签控制方式为Ordered,只有当LSR收到特定FEC下一跳发送的特定FEC标签映射消息或者LSR是LSP的出口节点时,LSR才可以向上游发送标签映射消息。
    • 当标签分发方式为DU时,如图所示,对于192.168.4.0/24这条FEC,不论上游LSR是否有请求,必须收到下游LSR对此FEC的标签绑定信息才向上游LSR发布标签绑定信息,所以必须由Egress LSR,也就是R4作为LSP建立的“起点”
    • 当标签发布方式采用DoD时,如图所示,对于192.168.4.0/24这条FEC,只有收到上游LSR请求的请求,且自身已经收到下游LSR的标签绑定信息的情况下,才向上游LSR通告标签绑定信息。因此,必须由Ingress LSR(R1)发起请求,逐跳请求到Egress LSR(R4),最终由R4开始,向上游建立LSP。

(7)标签保留:自由模式

  • 自由(Liberal)模式
    • LSR收到的标签映射可能来自下一跳,也可能来自非下一跳。
    • 对于从邻居LSR收到的标签映射,无论邻居LSR是不是自己的下一跳都保留。

  • 当基于IP网络部署MPLS时,LSR根据IP路由表判断接收到的标签映射是否来自下一跳。
  • Liberal方式的最大优点在于路由发生变化时能够快速建立新的LSP进行数据转发,因为Liberal方式保留了所有的标签。缺点是需要分发和维护不必要的标签映射。
    • DU标签分发方式下,如果采用Liberal保持方式,则R3保留所有LDP邻居 R2和0R5发来的关于192.168.1.0/24这个FEC的标签,无论该R2和R5是否是IP路由表中到达192.168.1.0/24的下一跳。
    • DoD标签分发方式下,如果采用Liberal保持方式,LSR会向所有LDP邻居请求标签。但通常来说,DoD分发方式都会和Conservative保持方式搭配使用。

(8)标签保留:保守模式

  • 保守模式
    • 对于从邻居LSR收到的标签映射,只有当邻居LSR是自己的下一跳时才保留。

  • Conservative方式的优点在于只需保留和维护用于转发数据的标签,以达到节约标签的目的。
    • 当使用DU标签分发方式时,LSR可能从多个LDP邻居收到到同一网段的标签映O射消息,如图中R3会分别从R2和R5收到网段192.168.1.0/24的标签映射消息。如果采用Conserative保持方式,则R3只保留下一跳R2发来的标签,丢弃非下一跳R5发来的标签,
    • 当使用DoD标签分发方式时,LSR根据路由信息只向它的下一跳请求标签。
  • 当网络拓扑变化引起下一跳邻居改变时:
    • 使用自由标签保持方式,LSR可以直接利用原来非下一跳邻居发来的标签,迅速重建LSP,但需要更多的内存和标签空间。
    • 使用保守标签保持方式,LSR只保留来自下一跳邻居的标签,节省了内存和标签空间,但LSP的重建会比较慢。
    • 保守标签保持方式通常与DoD方式一起,用于标签空间有限的LSR。

(8)PHP特性

PHP(Penultimate Hop Popping,次末跳弹出),如果激活了PHP特性,那么egress节点在为本地路由分配标签的时候,会分配一个特殊标签(3),该标签被称为隐式空标签(Implicit NULLLabel)。当LSR转发-个标签报文时,如果发现对应的出标签值为3,则LSR会将栈顶标签弹出,并将里面所封装的数据转发给下游LSR。

(9)隐式空标签与显式空标签1

  • 缺省情况下,Egress节点向倒数第二跳分配隐式空标签(implicit-null),即特殊标签3。
  • 但在部署QoS的场景下,标签被弹出后,其中的优先级也会一并丢失。

(10)隐式空标签与显式空标签2

  • 显式空标签机制,Egress节点向倒数第二跳分配特殊标签0。
  • R3在转发标签报文时,若出标签封装为0,则不会将标签头部弹出,标签头部中的QoS信息得以保存。R4在收到带0标签的报文时,直接弹出标签,不用去查找ILM表项。
  • 缺省情况下,Egress分配的是隐式空标签。

3.LDP工作过程详解

(1)组网介绍

  • 网络中已经部署OSPF路由协议且各设备之间能够正常学习到对方的路由信息。
  • 已在各设备及相应接口上激活MPLS及LDP,且在相邻的设备之间已正常建立本地LDP会话。
  • 所有LSR均采用DU +Independent +Liberal方式。

对于从R1进入,到达192.168.4.0/24的数据,R1为Ingress LSR,R4为Egress LSR

(2)标签分发:Egress LSR

  • R4直连网段192.168.4.0/24,R4将主动为到达该网段的路由分配标签,如1041,并主动通过LDP协议报文将标签映射通告给LDP对等体R2和R3。

(3)标签分发:Transit LSR

  • 以R2为例,在其路由表中,192.168.4.0/24路由的下一跳为R4,当它从R4收到关于192.168.4.0/24的标签映射通告时,由于该通告来自下游LDP邻居,因此这将触发它自己为该路由分配标签1021,并将标签映射通告给LDP邻居(如R1)。R3同理。

(4)标签分发:Ingress LSR

  • R1收到LDP邻居R2及R3通告过来的关于192.168.4.0/24路由的标签映射后,将这两个标签都存储起来,但是由于在自己的路由表中,到达192.168.4.0/24的下一跳是R2,因此当前它只会使用R2所通告的标签1021。

(5)标签转发:Ingress LSR

  • R1作为Ingress LSR,需要对接收的IP报文执行Push操作压入标签,并进行标签转发。

  • 当R1收到发往192.168.4.1的IP报文时,首先在其FIB表中查询该目的IP地址,它发现所匹配的表项的TunnellD为非0,因此继续在NHLFE中查询该TunnelID,然后意识到需要将对该IP报文压入标签并进行标签转发,出接口为GE0/0/0、下一跳为R2、出站标签为1021,于是为报文插入标签头部并转发出去。

(5)标签转发:Transit LSR

  • R2作为Transit LSR,需要对接收的IP报文执行Swap操作交换标签,并进行标签转发。

  • 当R2收到携带1021标签的标签报文时,查询ILM,根据ILM对应到NHLFE中的表项,于是,R2对该标签报文通过swap操作将标签更换为1041,并从相应的接口转发出去。

(6)标签转发:Egress

  • R4作为Egress LSR,需要对接收的IP报文执行Pop操作交换标签,并进行IP转发。

  • 当R4收到携带1041标签的标签报文时,查询IM,根据ILM查询到操作为Pop。于是R4对该标签报文通过Pop操作将最外层标签剥离,此时该报文已经变成了标准IP报文R4将对该IP报文执行标准的IP转发流程。

(6)在MPLS中,运行LDP协议的LSR的操作小结

  • LSR首先通过运行IGP协议(例如OSPF、IS-IS等)来构建路由表、FIB表;
  • LDP根据相应的模式,为路由表中的路由前缀(FEC)分配标签;
  • LDP根据相应的模式,将自己为路由前缀分配的标签,通过LDP标签映射报文通告给LDP邻居;
  • LSR将自己为路由前缀分配的标签,以及LDP邻居为该路由前缀通告的标签存储起来,并与出接口、下一跳地址等信息形成关联(标签转发表项);
  • 当LSR转发到达目的网络的标签报文时,所使用的出站标签总是下游LDP邻居所通告的标签,此处所指的下游邻居,是设备的路由表中到达该目的网络的下一跳设备。

五.LDP基础配置

1.基本配置命令

标签:FEC,标签,报文,MPLS,会话,LDP,LSR,原理
From: https://blog.csdn.net/Lxyand1/article/details/145246866

相关文章

  • MPLS 原理与配置
    一.简介MPLS,称之为多协议标签交换,在九十年代中期被提出来,用于解决传统IP报文依赖查表转发而产生的瓶颈,现多用于VPN技术,MPLS报头封装在数据链路层之上,网络层之下。本文为结合了华为技术和新华三技术的大成,即结合了HCIA,HCIP,HCIEDatacom和H3CNE-RS+,H3CSE-RS+,H3CIE-RS+。本文将主......
  • Kubeadm 启动原理之静态 Pod 技术
    Kubeadm启动原理之静态Pod技术1.作用静态Pod是一种特殊的KubernetesPod类型,允许你在不通过kubectl命令来创建Pod的情况下,通过直接将Pod资源清单放置在Kubelet可识别的目录中来创建Pod。Kubelet会定期检查该目录并自动管理这些Pod。对于kubeadm部署方式来......
  • docker在网桥模式下主机端口映射到容器端口的原理
    前置知识iptables:捕获并控制容器和主机之间的流量,可以通过iptables-tnat-nL命令查看iptables的(S/D)NAT规则docker0:虚拟交换机veth1b62ff4@if56:虚拟交换机的虚拟接口上下两个虚拟接口成对出现eth0@if57:容器的虚拟接口网络环境CentOS:ens33->192.168.40.180/24、docker......
  • Android系统开发(十):标准协议和通讯的桥梁:探索蓝牙、NFC、WLAN 的工作原理
    引言:现代社会已经是信息互联的世界,各种设备之间的互联互通已经成为了生活的一部分。而在这个过程中,Android设备与其他硬件之间的通信扮演着至关重要的角色。从蓝牙耳机到WiFi路由器,甚至与电话功能的互动,所有这些连接都依赖于标准Android连接协议的支持。本篇文章将带......
  • 大数据Hadoop中MapReduce的介绍包括编程模型、工作原理(MapReduce、MapTask、ReduceTas
    MapReduce概述MapReduce是Hadoop的核心项目之一,它是一个分布式计算框架,可用于大数据并行处理的计算模型、框架和平台,主要解决海量数据的计算,是大数据中较为熟知的分布式计算框架。MapReduce作为分布式计算框架,其底层思想采用的是“分而治之”,所谓的“分而治之”就是把一......
  • AdaBoost算法原理与实验分析
    AdaBoost算法原理与实验分析1.引言AdaBoost(AdaptiveBoosting,自适应增强)是一种重要的集成学习算法。它的核心思想是通过迭代训练一系列弱分类器(比如简单的决策树),并将它们组合成一个强分类器。AdaBoost的特别之处在于它能够自适应地调整样本的权重,重点关注那些难以分类的......
  • XGBoost分类算法原理与实验分析
    XGBoost分类算法原理与实验分析1.引言XGBoost(eXtremeGradientBoosting,极限梯度提升)是一种高效的梯度提升树算法。它通过优化正则化目标函数,集成多个CART树(分类与回归树)来构建强大的分类器或回归模型。XGBoost在传统梯度提升树(GBDT)的基础上进行了改进,加入了正则化项以防......
  • 保姆级解析雪花算法原理,看完必懂!
    引言最近发现项目里主键id生成算法很短小精悍,遂深入看了下,还蛮有意思,在此分享一下,源码如下。privatestaticSpinLockmLock=newSpinLock();privatestaticvolatileintrotateId=0;privatestaticvolatilelongtimeId=0;privatestaticintnodeI......
  • Mysql--实战篇--连接池(连接池原理,HikariCP、C3P0、Druid和DBCP等)
    连接池(ConnectionPool)是数据库应用程序中的一种优化技术,用于管理和复用数据库连接。通过连接池,应用程序可以避免频繁创建和销毁数据库连接的开销,从而提高性能和资源利用率。在Java应用程序中,常用的MySQL连接池实现包括HikariCP、C3P0、Druid和DBCP等。1、连接池的工作原理......
  • 极坐标与直角坐标之间变换的原理和应用示例
            极坐标变换的原理是将平面上的点从直角坐标系转换为极坐标系,或者从极坐标系转换为直角坐标系。以下是关于极坐标变换原理的详细解释:一、极坐标系的基本概念        在极坐标系中,一个点的位置由两个参数确定:径向距离(ρ)和极角(θ)。        (1)......