6.1.0 MPLS LDP动态分配

手动写静态MPLS的转发路径,不仅不方便管理,同时配置量也非常多,每台设备都需要去做配置。为了方便管理且去除繁琐的配置,就需要使用到LDP动态标签分发协议了。

标签分发协议LDP(Label Distribution Protocol)是MPLS的一种控制协议,相当于传统网络中的信令协议,负责FEC的分类标签的分配以及LSP的建立和维护等操作。

LDP工作过程

分为两个大步骤:LDP会话建立LDP LSP建立

LDP协议主要使用四类消息

  • 发现(Discovery)消息:用于通告和维护网络中LSR的存在,如Hello消息。
  • 会话(Session)消息:用于建立、维护和终止LDP对等体之间的会话,如Initialization消息、Keepalive消息。
  • 通告(Advertisement)消息:用于创建、改变和删除FEC的标签映射。
  • 通知(Notification)消息:用于提供建议性的消息和差错通知。

为保证LDP消息的可靠发送,除了Discovery消息使用UDP(UDP 646)传输外,LDP的Session消息、Advertisement消息和Notification消息都使用TCP(TCP 646)传输。

在这里插入图片描述

如何知道哪些内容是属于哪些消息类型呢?

在这里插入图片描述

一、LDP会话建立

1、会话类型

LDP会话用于LSR之间交换标签映射、释放等消息。

只有存在对等体才能建立LDP会话,LDP会话分为两种类型:

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

本地LDP会话和远端LDP会话可以共存。

与BFD的本地与远端类似。

在这里插入图片描述

2、LDP发现机制

LDP发现机制用于LSR发现潜在的LDP对等体,它有两种发现机制:

  • 基本发现机制:用于发现链路上直连的LSR。

    LSR通过周期性地发送LDP 链路Hello消息LDP Link Hello),实现LDP基本发现机制,建立本地LDP会话。

    LDP链路Hello消息使用UDP报文,目的地址是组播地址224.0.0.2

    如果LSR在特定接口接收到LDP链路Hello消息,表明该接口存在LDP对等体。

  • 扩展发现机制:用于发现链路上非直连LSR。

    LSR周期性地发送LDP 目标Hello消息LDP Targeted Hello)到指定IP地址,实现LDP扩展发现机制,建立远端LDP会话。

    LDP目标Hello消息使用UDP报文,目的地址是指定IP地址。如果LSR接收到LDP目标Hello消息,表明该LSR存在LDP对等体。

    只要是通过扩展发现机制找到的LDP对等体,与其建立的会话称为远端LDP会话(哪怕对方与自己直连)。

3、LDP会话建立过程

LDP发现阶段
  • 全局启用MPLS LDP功能后,特定接口也启用MPLS LDP功能后:
  • 特定接口会周期性地发送UDP 646LDP链路Hello报,目的地址是组播地址224.0.0.2
    • 缺省情况下,链路Hello发送定时器的值是链路Hello保持定时器值的1/3,即5秒
    • 缺省情况下,链路Hello保持定时器的值是15秒
  • 当在特定接口接收到LDP链路Hello报文,表明该接口存在LDP邻居。
TCP建立阶段
  • Hello报文中携带传输地址,双方后续将使用传输地址建立LDP会话。
    在这里插入图片描述

  • 传输地址较大的一方作为主动方,主动发起建立TCP连接。

  • 经过TCP三次握手之后,两者建立起TCP连接,即LDP会话建立完成。
    在这里插入图片描述

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

在这里插入图片描述

4、LDP邻居状态与会话状态

在这里插入图片描述

# 查看邻居状态
<R1>display mpls ldp peer

关于PeerID,它指的是LDP的标识符。

LDP ID的长度为48bit,由32位的LSR ID与16位的标签空间标识符构成:

  • 1.1.1.1:0LSRID:标签空间

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

  • 值为0:基于设备的标签空间。
  • 值非0:基于接口的标签空间

在这里插入图片描述

# 查看会话状态
<R1>display mpls ldp session

在这里插入图片描述

  • LDP会话的状态:
    • NonExistent:表示LDP会话的最初状态。在此状态双方互相发送Hello消息,在收到TCP连接建立成功事件的触发后变为Initialized状态。
    • Initialized:表示LDP会话处于初始化状态。
    • Open Sent:表示LDP会话进入初始化状态后,主动方给被动方发送了Initialized消息,并等待对方的回应。
    • Open Recv:表示LDP会话进入初始化状态后,当双方都收到了对方发送的Keepalive消息后,LDP会话进入Operational状态。
    • Operational:表示LDP会话建立成功。

如果LDP会话状态卡在NonExistent说明双方已经发送了Hello消息,但可能因为某些因素造成无法与对端建立TCP连接,从而一直停留在该阶段。

如:设备之间没有学习到对端的传输地址路由,因网络问题从而无法建立想TCP连接。

二、LDP LSP建立

LDP通过发送标签请求标签映射消息,在LDP对等体之间通告FEC和标签的绑定关系来建立LSP(标签转发路径),而标签的发布和管理标签发布方式标签分配控制方式标签保持方式来决定。

在这里插入图片描述

1、标签发布方式

指LDP LSP建立过程中,LSR设备分配标签的方式是怎样的?由谁发布,如何发布?

  • 下游自主 DU
    • 下游Egress设备不管上游是否需要该路由标签,都主动向上游分配标签。
    • 疑问:如何知道自己是下游设备呢?
      • LDP会根据路由表中的路由下一跳判断自身是否为最后一跳设备从而知晓自己是否为下游设备(Egress LSR)
      • 可通过定义入口点(Ingress设备)、出口点(Egress设备)来快速定位设备是否为下游设备;当设备处于转发路径的末端(Egress),是数据包最终离开网络的地方则该设备为下游设备。
  • 下游按需 DOD
    • 下游Egress设备不主动向上游分配标签,当上游需要的时候再向目标下游设备发送请求标签。

在这里插入图片描述

2、标签分配控制方式

指LDP LSP的建立过程中,LSR分配标签时采用的处理方式。已经知道了谁来发,怎么发,但标签值该如何分配呢?

标签分配控制方式有两种方式

  • 独立标签分配控制方式(Independent):本地LSR可以自主地分配一个标签绑定到某个FEC,并通告给上游LSR,而无需等待下游的标签。
    • 简称:设备自己分配个标签给某个已知的FEC,然后通告给上游。
  • 有序标签分配控制方式(Ordered):对于LSR上某个FEC的标签映射,只有当该LSR已经具有此FEC下一跳的标签映射消息、或者该LSR就是此FEC的出节点时,该LSR才可以向上游发送此FEC的标签映射。
    • 简称:要给FEC分配标签,要么自己是FEC最后下一跳,要么就是知道该FEC的下一跳如何走,且该下一跳已经分配有标签。

标签发布&标签分配控制组合

标签分配控制方式下游自主方式DU(Downstream Unsolicited)下游按需方式DoD(Downstream on Demand)
独立标签分配控制方式(Independent)DU + Independent:LSR(Transit)无需等待下游(Egress)的标签,就会直接向上游(Ingress)分发标签。DoD + Independent:发送标签请求的LSR(Ingress)的直连下游(Transit)会直接回应标签,而不必等待来自最终下游(Egress)的标签。
有序标签分配控制方式(Ordered)DU + Ordered:LSR(Transit)只有收到下游(Egress)的标签映射消息,才会向上游(Ingress)分发标签。DoD + Ordered:发送标签请求的LSR(Ingress)的直连下游(Transit)只有收到最终下游(Egress)的标签映射消息,才会向上游(Ingress)分发标签。

在这里插入图片描述
在这里插入图片描述

3、标签保持方式

指LSR对收到的、但目前暂时不需要的标签映射的处理方式。

LSR收到的标签映射可能来自下一跳,也可能来自非下一跳。

两种标签保持方式

  • 自由标签保持方式(Liberal)
    • 从邻居LSR收到的标签映射,无论邻居LSR是不是自己的下一跳都保留。
  • 保守标签保持方式(Conservative)
    • 只有当邻居LSR是自己的下一跳时才保留。

两者的优势与劣势

当网络拓扑变化引起下一跳邻居改变时:

  • 使用自由标签保持方式,LSR直接利用原来非下一跳邻居发来的标签,迅速重建LSP,但需要占用更多内存和标签空间
  • 使用保守标签保持方式,LSR只保留来自下一跳邻居的标签,节省内存和标签空间,但LSP的重建会比较慢

保守标签保持方式通常与DoD(下游按需)方式一起,用于标签空间有限的LSR。

4、LDP LSP的建立过程

下游自主发布方式有序标签分配方式自由标签保持方式为例:

  1. 缺省情况下,网络的路由改变时,如果有一个边缘节点(Egress)发现自己的路由表中出现了新的主机路由,并且这一路由不属于任何现有的FEC,则该边缘节点需要为这一路由建立一个新的FEC
  2. 如果MPLS网络的Egress有可供分配的标签,则为FEC分配标签,并主动向上游发出标签映射消息,中包含分配的标签和绑定的FEC等信息。
  3. Transit收到标签映射消息后,判断标签映射的发送者(Egress)是否为该FEC的下一跳。若是,则在其标签转发表中增加相应的条目,然后主动向上游LSR发送对于指定FEC的标签映射消息。
  4. Ingress收到标签映射消息后,判断标签映射的发送者(Transit)是否为该FEC的下一跳。若是,则在标签转发表中增加相应的条目。这时,就完成了LSP的建立,接下来就可以对该FEC对应的数据报文进行标签转发。

在这里插入图片描述

5、标签方式配置命令

标签分布方式(接口视图)

int g0/0/0
mpls ldp advertisement dod/du

标签分配方式(MPLS-LDP视图)

mpls ldp
label distribution control-mode ordered/independent

标签保持方式(暂无单独修改命令)

Huawei AR100, AR120, AR150, AR160, AR200, AR300, AR1200, AR2200, AR3200, AR3600 产品文档

如果标签分配方式为DU,则标签保持模式为Liberal。
如果标签分配方式为DOD,则标签保持模式为Conservative。

查看配置结果

# 查看标签分配方式与保持方式
[Huawei]dis mpls ldp verbose LDP Global Information------------------------------------------------------------------------------Protocol Version        : V1            Neighbor Liveness    : 600 SecGraceful Restart        : Off           FT Reconnect Timer   : 0 SecMTU Signaling           : On            Recovery Timer       : 300 SecCapability-Announcement : Off           Longest-match        : OffP2MP Capability         : Off                                       LDP Instance Information------------------------------------------------------------------------------Instance ID             : 0             VPN-Instance         :Instance Status         : Active        LSR ID               : 1.1.1.1Loop Detection          : Off           Path Vector Limit    : 32* Label Distribution Mode : Ordered       Label Retention Mode : LiberalInstance Deleting State : No            Instance Reseting State : NoGraceful-Delete         : Off           Graceful-Delete Timer : 5 Sec------------------------------------------------------------------------------
# 查看接口标签分配方式
[Huaweidis mpls ldp interface g0/0/0LDP Interface Information---------------------------------------------------------------Interface Name : GigabitEthernet0/0/0LDP ID         : 1.1.1.1:0             Transport Address : 1.1.1.1 Entity Status  : Inactive              Effective MTU     : 1500Configured Hello Hold Timer     : 15 SecNegotiated Hello Hold Timer     : 15 SecConfigured Hello Send Timer     : ---Configured Keepalive Hold Timer : 45 SecConfigured Keepalive Send Timer : ---Configured Delay Timer          : 10 Sec
* Label Advertisement Mode        : Downstream UnsolicitedHello Message Sent/Rcvd         : 0/0 (Message Count)Entity Deletion Status          : No---------------------------------------------------------------

查看缺省MPLS-LDP配置参数

display default-parameter mpls ldpLDP Default Values:----------------------------------------------------------Protocol version               : V1Graceful restart               : OffNeighbor liveness(sec)       : 600FT reconnect timer(sec)      : 0Recovery timer(sec)          : 300MTU signaling                  : OnLabel retention mode           : LiberalLabel distribution mode        : OrderedLabel advertisement            : DULocal hello-hold timer(sec)    : 15Remote hello-hold timer(sec)   : 45Keepalive-hold timer(sec)      : 45Backoff timer init(sec)        : 15Backoff timer max(sec)         : 120IGP-Sync delay timer(sec)      : 10Graceful delete                : OffGraceful delete timer(sec)   : 5Capability-announcement        : Off----------------------------------------------------------

三、关于LDP的一些特性

PHP 次末跳弹出特性

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

在这里插入图片描述

隐式空标签与显式空标签

  • 隐式空标签的缺点:会丢失原先对MPLS所设置的QOS信息。

在这里插入图片描述

  • 显式空标签的优点:不仅保留了QOS且不会增加路由负担。

在这里插入图片描述

  • 默认情况下,Egress设备分配的是隐式空标签3。
# 可在MPLS视图下,执行命令进行修改
[AR1] mpls# 显式空标签
[AR1-mpls] label advertise explicit-null # 隐式空标签
[AR1-mpls] label advertise implicit-null# 正常分配标签,即分配的标签值不小于16
[AR1-mpls] label advertise non-null

汇总于:HCIA~HCIE个人笔记索引

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/689712.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

迈向AI时代:掌握Python编程与ChatGPT的强强联手

文章目录 一、ChatGPT与Python编程的结合二、利用ChatGPT学习Python编程的优势三、如何使用ChatGPT学习Python编程四、学习技巧与建议《码上行动&#xff1a;用ChatGPT学会Python编程》特色内容简介作者简介目录获取方式 随着人工智能技术的飞速发展&#xff0c;编程已经成为了…

【漏洞复现-通达OA】通达OA report_bi存在前台SQL注入漏洞

一、漏洞简介 通达OA(Office Anywhere网络智能办公系统)是由北京通达信科科技有限公司自主研发的协同办公自动化软件,是与中国企业管理实践相结合形成的综合管理办公平台。通达OA为各行业不同规模的众多用户提供信息化管理能力,包括流程审批、行政办公、日常事务、数据统计…

Unity3D Shader 素描风格渲染管线实现详解

前言 在游戏开发中&#xff0c;渲染效果是非常重要的一部分&#xff0c;它可以直接影响游戏的视觉效果和玩家的体验。而素描风格的渲染效果是一种非常独特和有趣的风格&#xff0c;可以为游戏增添一种艺术氛围。在Unity3D中&#xff0c;可以通过编写Shader来实现素描风格的渲染…

java面试

一、java基础篇 1.接口和抽象类的区别 相似点&#xff1a; &#xff08;1&#xff09;接口和抽象类都不能被实例化 &#xff08;2&#xff09;实现接口或继承抽象类的普通子类都必须实现这些抽象方法 不同点&#xff1a; &#xff08;1&#xff09;抽象类可以包含普通方法…

YOLOv8 | 代码逐行解析(二) | 从yaml文件到模型定义(代码逐行注释,小白必看)

👑欢迎大家订阅我的专栏一起学习YOLO👑 一、本文介绍 本文给大家带来的是YOLOv8项目的解读,之前给大家分析了YOLOv8的项目文件分析,这一篇文章给大家带来的是模型训练从我们的yaml文件定义到模型的定义部分的讲解,我们一般只知道如何去训练模型,和配置yaml文件,但是…

STM32 学习2 库函数控制GPIO输出

STM32 学习2 库函数控制GPIO输出 一、GPIO寄存器介绍1. GPIO简介2. GPIO功能&#xff08;1&#xff09;模式分类&#xff08;2&#xff09;模式设置方法MODE[1:0]&#xff1a;模式控制&#xff0c;用于配置端口引脚的模式&#xff1a;CNF[1:0]&#xff1a;配置引脚输出速度&…

【vue+leaflet】vue项目中使用leaflet绘制室内平面图、leaflet.pm在平面图中绘制点、线、面图层(一)

效果图: 一,插件安装 npm i leaflet --save // 我的版本^1.9.4 npm i leaflet.pm --save // 我的版本^2.2.0附官网链接: leaflet官网: https://leafletjs.com/index.html leaflet.pm官网: https://www.npmjs.com/package/leaflet.pm?activeTabreadme 二,模块引入 因为我…

Android MMKV 接入+ 替换原生 SP + 原生 SP 数据迁移

背景:项目中一直使用的是原生 SP,众所周知,使用原生 SP 存在卡顿性能问题。公司的性能监控平台抓到不少原生 SP 导致的 ANR 问题: java.io.FileDescriptor.sync (FileDescriptor.java) android.os.FileUtils.sync (FileUtils.java:256) android.app.SharedPreferencesImpl.…

CentOS7.6安装RocksDB

一、简介 RocksDB是使用C编写的嵌入式kv存储引擎&#xff0c;其键值均允许使用二进制流。由Facebook基于levelDB开发&#xff0c; 提供向后兼容的levelDB API。 RocksDB针对Flash存储进行优化&#xff0c;延迟极小。RocksDB使用LSM存储引擎&#xff0c;纯C编写。Java版本Rock…

使用傅里叶实现100倍的压缩效果(附Python源码)

傅里叶变换&#xff08;Fourier Transform&#xff09;是一种将一个函数&#xff08;在时间或空间域&#xff09;转换为另一个函数&#xff08;在频率域&#xff09;的数学变换方法。它在信号处理、图像处理、通信等领域有广泛应用。 实现过程 将傅里叶系数核心的1%保留&…

使用阿里云发送短信

使用阿里云短信服务有两种方式 API 发送和 控制台发送&#xff0c;控制台发送到话有太多限制&#xff0c;这里我们使用API 通过 调用服务端代码进行发送。 整体结构如下&#xff1a; 导入依赖 <!--阿里云短信发送--><dependency><groupId>com.aliyun<…

iOS如何一键清除剪贴板中的所有内容

参考:https://www.jb51.net/shouji/746688.html 1.打开“快捷指令”应用&#xff0c;前往“快捷指令中心”&#xff0c;下拉找到“巧用剪贴板”并点击“查看全部”。 2.下拉到底部&#xff0c;点击“清除剪贴板中的所有内容”&#xff0c;然后选择“添加快捷指令”&#xff1a…

Java学习--黑马SpringBoot3课程个人总结-2024-02-12

1.环境准备 出现报错 Vue 引入路径正确的&#xff0c;但一直报错&#xff1a; Already included file name ‘‘ differs from file name ‘‘ only in casing. 解决方案来自此链接 2.注册界面的搭建 代码如下 <script setup> import { User, Lock } from element-plus/…

信钰证券:a股可以t+0吗?怎么间接实现t+0?

a股不能够t0&#xff0c;它是实施t1的买卖方式&#xff0c;即当天买入的个股&#xff0c;当天不能够卖出&#xff0c;需求比及下一个买卖日才能够卖出&#xff0c;但是&#xff0c;投资者能够通过以下方法直接地完成t0&#xff1a; 1、融券操作 通过融资融券中的融券直接地做…

多元统计分析课程论文-聚类效果评价

数据集来源&#xff1a;Unsupervised Learning on Country Data (kaggle.com) 代码参考&#xff1a;Clustering: PCA| K-Means - DBSCAN - Hierarchical | | Kaggle 基于特征合成降维和主成分分析法降维的国家数据集聚类效果评价 目录 1.特征合成降维 2.PCA降维 3.K-Mean…

Docker部署开源白板工具Excalidraw并结合内网穿透远程访问

最近&#xff0c;我发现了一个超级强大的人工智能学习网站。它以通俗易懂的方式呈现复杂的概念&#xff0c;而且内容风趣幽默。我觉得它对大家可能会有所帮助&#xff0c;所以我在此分享。点击这里跳转到网站。 文章目录 1. 安装Docker2. 使用Docker拉取Excalidraw镜像3. 创建…

基于ORB-SLAM2与YOLOv8剔除动态特征点

基于ORB-SLAM2与YOLOv8剔除动态特征点 以下方法以https://cvg.cit.tum.de/data/datasets/rgbd-dataset/download#freiburg3_walking_xyz数据集进行实验测试APE 首先在不剔除动态特征点的情况下进行测试&#xff1a; 方法1:segment坐标点集合逐一排查剔除 利用YOLOv8的segm…

容性负载箱有哪些主要功能?

容性负载箱是一种用于模拟电网中感性负载的设备&#xff0c;其主要功能包括以下几点&#xff1a; 补偿无功功率&#xff1a;在电力系统中&#xff0c;感性负载会产生无功功率&#xff0c;导致电网电压降低、功率因数下降。容性负载箱可以产生与感性负载相反的无功功率&#xff…

快速排序(2)——快速排序的优化

因为Hoare的快速排序写起来容易出错&#xff0c;并且有很多地方不太合适&#xff0c;于是&#xff0c;就有了一下几种优化。 基准值的优化 如果我们一直选取一组数据的第一个数据为基准值&#xff0c;如果遇到重复少的值的化&#xff0c;没什么问题。但是如果重复的值比较多的…

【PyQt】11-QTextEdit、QPushButton

文章目录 前言一、文本输入-QTextEdit1.1 代码1.2 运行结果 二、QPushButton2.1.1 按钮上添加文本2.1.2 按键的弹跳效果2.1.3 两个信号可以绑定一个槽。2.1.4 带图标的按键运行结果 2.1.5 按键不可用以及回车默认完整代码2.2 单选按键控件运行结果 2.3 复选框&#xff08;多选框…