MPLS原理与配置

news2025/1/12 1:07:17
1.MPLS概述
(1)传统IP路由转发

(2)MPLS基本概念

⦁    MPLS起源于IPv4(Internet Protocol version 4),其核心技术可扩展到多种网络协议,包括IPv6(Internet Protocol version 6)、IPX(Internet Packet Exchange)、Appletalk、DECnet、CLNP(Connectionless Network Protocol)等。MPLS中的“Multiprotocol”指的就是支持多种网络协议。
⦁    MPLS以标签交换替代IP转发。标签是一个短而定长的、只具有本地意义的标识符。

2.MPLS术语
(1)MPLS术语介绍-LSR与MPLS域

(2)MPLS术语介绍-LSR分类

(3)MPLS术语介绍-FEC

⦁    在传统的采用最长匹配算法的IP转发中,匹配到同一条路由的所有报文就是一个转发等价类。
⦁    在MPLS中,关于FEC最常见的例子是:目的IP地址匹配同一条IP路由的报文被认为属于同一个FEC。

(4)MPLS术语介绍-LSP

⦁    一条LSP包含一台入站LSR、一台出站LSR以及数量可变的中转LSR,因此LSP也可以看做是这些LSR的有序集合。
⦁    LSP需要在数据转发开始前建立完成,只有这样报文才能顺利穿越MPLS域。
⦁    LSP可通过静态和动态两种方式建立。
⦁    需要注意的是,LSP是一个从“起点”到“终点”的单向路径,若需要双向数据互通,则需要在双方之间建立双向的LSP。

3.MPLS标签
(1)MPLS标签

⦁    EXP字段在早期的MPLS标准中被定义,意为试验性的字段,但实际上该字段主要被用于CoS。为了避免歧义,RFC5462重新定义了该字段,命名为流分类(Traffic Class)。

(2)MPLS标签栈

当上层为MPLS标签栈时,以太网头部中的Type字段为0x8847,PPP头部中的Protocol字段为0x8281

(3)MPLS标签的处理

只具有本地意义说明每一台LSR之间的标签空间是相互独立的,即每台路由器都可以使用完整的标签空间。

(4)MPLS标签的处理

4.MPLS转发
(1)MPLS转发概述

⦁    同一个FEC,若进入MPLS域的Ingress LSR(入站LSR)不同,转发时的LSP也不相同。
⦁    同一个FEC,LSR的处理方式相同,不论这个FEC来自哪里(进入设备的接口)。
⦁    LSR的转发动作决定了LSP,而标签转发表确定转发动作,所以建立标签转发表也可以理解为建立LSP。
⦁    如图所示,因为有着相同的目的地,所以这三份数据属于同一个转发等价类FEC1。同时由于入站LSR不同,这些数据将分别在LSP1、LSP2和LSP3上被转发。因为标签仅具有本地意义,所以每台LSR上给同一FEC分配的标签,可以相同,也可以不同。

(2)MPLS体系结构

⦁    控制平面:
⦁    控制平面是无连接的,主要功能是负责产生和维护路由信息以及标签信息。
⦁    控制平面包括:
⦁    路由信息表RIB(Routing Information Base):由IP路由协议(IP Routing Protocol)、静态路由和直连路由共同生成,用于选择路由。
⦁    标签信息表LIB(Label Information Base):用于管理标签信息,LIB中的表项可由标签交换协议(LDP、RSVP等协议)或静态配置生成。
⦁    转发平面:
⦁    转发平面也称为数据平面,是面向连接的, 主要功能是负责普通IP报文的转发以及带MPLS标签报文的转发。
⦁    转发平面包括:
⦁    转发信息表FIB(Forwarding Information Base):从RIB提取必要的路由信息生成,负责普通IP报文的转发。
⦁    标签转发信息表LFIB(Label Forwarding Information Base):简称标签转发表,负责带MPLS标签报文的转发。

(3)控制平面与转发平面

(4)LSP建立原则

(5)LSP建立方式

⦁    静态LSP:
⦁    由于静态LSP各节点上不能相互感知到整个LSP的情况,因此静态LSP是一个本地的概念。
⦁    动态LSP:
⦁    其他标签分布协议:
⦁    RSVP-TE:Resource Reservation Protocol Traffic Engineering,它是对RSVP的扩展,用于建立基于约束的LSP。它拥有普通LDP LSP没有的功能,如发布带宽预留请求、带宽约束、链路颜色和显式路径等。
⦁    MP-BGP:Multiprotocol Border Gateway Protocol,MP-BGP是在BGP协议基础上扩展的协议。MP-BGP支持为MPLS VPN业务中私网路由和跨域VPN的标签路由分配标签。

(6)MPLS标签转发

⦁    Tunnel ID:为了给使用隧道的上层应用(如VPN、路由管理)提供统一的接口,系统自动为隧道分配了一个ID,也称为Tunnel ID。该Tunnel ID的长度为32比特,只是本地有效。在MPLS转发过程中,FIB、ILM和NHLFE表项是通过Tunnel ID关联的。

(7)Ingress LSR的处理

⦁    在Ingress LSR,通过查询FIB表(得到FTN信息)和NHLFE表指导报文的转发。
⦁    当IP报文进入MPLS域时,首先查看FIB表,检查目的IP地址对应的Tunnel ID值是否为0x0。
⦁    如果Tunnel ID值为0x0,则进入正常的IP转发流程。
⦁    如果Tunnel ID值不为0x0,则进入MPLS转发流程。

(8)Transit LSR的处理

⦁    在Transit LSR,通过查询ILM表和NHLFE表指导MPLS报文的转发。

(9)Egress LSR的处理

⦁    在Egress LSR,通过查询ILM表指导MPLS报文的转发。

(10)MPLS详细转发过程

5.静态LSP配置
(1)MPLS基本配置命令

(2)静态LSP配置命令(1)

⦁    out-label占用的是下游LSR的标签空间,而下游空间采用的标签分发方式不确定,所以out-label的标签空间为16~1048575。
⦁    in-label占用的是当前LSR的标签空间,采用静态LSP时,标签空间为16~1023。

(3)静态LSP配置命令(2)

(4)案例

案例介绍:R1、R2和R3 R4之间已经部署了IGP协议,故1.1.1.0/24与4.4.4.0/24网络之间已经能够互访。现要求通过配置静态LSP,使得这两个网络之间能基于MPLS进行互访,标签分配如图。
配置思路:在设备和接口上使能MPLS功能按照规划配置静态LSP

配置如下:

[czyAR1]mpls lsr-id 1.1.1.1
[czyAR1]inter g0/0/0
[czyAR1-GigabitEthernet0/0/0]mpls
[czyAR1]static-lsp ingress 1to4 destination 4.4.4.0 24 nexthop 10.0.12.2 out-lab
el 200

[czyAR2]mpls lsr-id 2.2.2.2
[czyAR2]mpls
[czyAR2]inter g0/0/0
[czyAR2-GigabitEthernet0/[czyAR3]mpls lsr-id 3.3.3.3


[czyAR3]mpls
[czyAR3]inter g0/0/0
[czyAR3-GigabitEthernet0/0/0]mpls
[czyAR2]static-lsp transit 1to4 incoming-interface g0/0/0 in-label 200 nexthop 1
0.0.23.3 out-label 300


[czyAR4]mpls lsr-id 4.4.4.4
[czyAR4]mpls
[czyAR4]inter g0/0/0
[czyAR4-GigabitEthernet0/0/0]mpls
[czyAR4]static-lsp egress 1to4 incoming-interface g0/0/0 in-label 400

查看配置

此时可以发现我们的AR1的链路状态是down的

当我们去traffic的时候显示我们的lsp不存在

那么是什么原因导致的呢?

因为OSPF协议默认会把环回口looback地址认为是主机地址/32,本质是因为默认情况下OSPF中loopback的OSPF网络类型为P2P,默认只为非物理接口主机路由建立LSP,确定loopback接口地址是否为32位。

你说是24位的但是我学到的是32位的,路由器认为这是不正常的所以down了

那么该如何解决呢

1.可以将ospf network-type改为broadcast

2.looback的地址改为32位的

以AR1为例子,其他路由器类似

[czyAR1]inter LoopBack 1
[czyAR1-LoopBack1]ospf network-type broadcast

改完之后立马发现状态为up

进行tracert测试

经过测试,1.1.1.0/24网段的主机到3.3.3.0/24主机的ping测试没有问题。

仅配置了1.1.1.0/24到3.3.3.0/24的单向静态LSP,为何可以实现双向通信呢

因为1.1.1.0/24网段的主机到3.3.3.0/24主机的报文基于MPLS标签转发。

3.3.3.0/24网段的主机到1.1.1.0/24主机的报文基于IP包头转发。

双向都通过MPLS标签进行通信

[czyAR1]static-lsp egress 4to1 incoming-interface g0/0/0 in-label 700

[czyAR2]static-lsp transit 4to1 incoming-interface g0/0/1 in-label 600 nexthop 1
0.0.12.1 out-label 700

[czyAR3]static-lsp transit 4to1 incoming-interface g0/0/1 in-label 500 nexthop 1
0.0.23.3 out-label 600

[czyAR4]static-lsp ingress 4to1 destination 1.1.1.0 24 nexthop 10.0.34.4 out-lab
el 500

 

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

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

相关文章

WPF中CommandParameter用法

1. 界面样式 2. XAML中代码部分 <ButtonGrid.Row"0"Grid.Column"1"Command"{Binding BtnClick_Number}"CommandParameter"7"Content"7"Style"{StaticResource BtnStyle_Num}" /> <ButtonGrid.Row"…

我的第一个JAVA程序IDEA版

目录 第一步 新建一个空项目第二步 新建模块第三步 新建包第四步 新建类第五步 新建main方法 第一步 新建一个空项目 第二步 新建模块 第三步 新建包 第四步 新建类 然后在包文件夹下新建类 第五步 新建main方法

xlrd.biffh.XLRDError: Excel xlsx file; not supported报错原因

xlrd库读取xlsx文件时报错 xlrd.biffh.XLRDError: Excel xlsx file; not supported报错原因&#xff1a; xlrd版本为2.1版本&#xff0c;需要读取xlsx文件需要安装xlrd低一些版本1.2.0版本&#xff0c;重新安装重试即可 更换xlrd版本 重新运行

如何使用ffmpeg 实现10种特效

相关特效的名字 特效id 特效名 1 向上移动 2 向左移动 3 向下移动 4 颤抖 5 摇摆 6 雨刷 7 弹入 8 弹簧 9 轻微跳动 10 跳动 特效展示(同时汇总相关命令) pad背景显示 pad背景透明 相关命令(一会再讲这些命令&#xff0c;先往下看) # 合成特效语音 ffmpeg -y -loglevel erro…

【Linux】Linux信号产生,接受与处理机制

理解Linux信号产生&#xff0c;接受与处理机制 信号是Linux操作系统中一种用于进程间通信和异步事件处理的机制。在本文中&#xff0c;我们将结合Linux的源码&#xff0c;深入分析信号的产生、发送、接收和处理的底层原理。 文章目录 理解Linux信号产生&#xff0c;接受与处理…

Elasticsearch集群和Logstash、Kibana部署

1、 Elasticsearch集群部署 服务器 安装软件主机名IP地址系统版本配置ElasticsearchElk10.3.145.14centos7.5.18042核4GElasticsearchEs110.3.145.56centos7.5.18042核3GElasticsearchEs210.3.145.57centos7.5.18042核3G 软件版本&#xff1a;elasticsearch-7.13.2.tar.gz 示…

asp.net core接入prometheus

安装prometheus和Grafana 参考之前的文章->安装prometheus和Grafana教程 源代码 dotnet源代码 新建.net core7 web项目 修改Program.cs using Prometheus;namespace PrometheusStu01;public class Program {public static void Main(string[] args){var builder We…

Linux中ftp配置

一、ftp协议 1、端口 ftp默认使用20、21端口 20端口用于建立数据连接 21端口用于建立控制连接 2、ftp数据连接模式 主动模式&#xff1a;服务器主动发起数据连接 被动模式&#xff1a;服务器被动等待数据连接 二、ftp安装 yum install -y vsftpd #---下…

4. Java多线程面试题汇总

Java全栈面试题汇总目录-CSDN博客 1. 为什么要使用并发编程 充分利用多核CPU的计算能力&#xff1a;通过并发编程的形式可以将多核CPU的计算能力发挥到极致&#xff0c;性能得到提升方便进行业务拆分&#xff0c;提升系统并发能力和性能&#xff1a;在特殊的业务场景下&#…

cnpm 安装失败

安装淘宝镜像 //旧 证书已过期 npm config set registry https://registry.npm.taobao.org/ //运行这个会报错 //npm ERR! code CERT_HAS_EXPIRED //npm ERR! errno CERT_HAS_EXPIRED //用下边最新的安装 //新 npm config set registry https://registry.npmmirror.com这里安装…

SSE 与 SASE哪个云原生安全框架更加适合

近年来&#xff0c;随着云计算和网络技术的不断发展&#xff0c;出现了一种新的网络安全解决方案——SASE&#xff08;安全访问服务边缘&#xff09;。SASE是一种将网络和安全功能融合到单个基于云的服务中的框架&#xff0c;旨在提供更加安全、高效和便捷的网络访问体验。SASE…

【机器学习与实现】支持向量机SVM

目录 一、SVM (Support Vector Machine) 概述&#xff08;一&#xff09;支持向量机SVM的主要特点&#xff08;二&#xff09;支持向量与间隔最大化&#xff08;三&#xff09;线性可分/不可分&#xff08;四&#xff09;软间隔 (soft margin) 与核技巧 (kernel trick)&#xf…

web前端学习笔记11

11. CSS3高级特效 11.1 CSS3变形 CSS3变形是一些效果的集合, 如平移、旋转、缩放、倾斜效果 每个效果都可以称为变形(transform),它们可以分别操控元素发生平移、旋转、缩放、倾斜等变化 语法 transform:[transform-function] ; /* 设置变形函数,可以是一个,也可以是多…

vscode插件-07Java

文章目录 Extension Pack for JavaSpring Initializr Java SupportCodeSwingJdk下载JDK安装jdkWindows安装jdkLinux安装jdk&#xff08;以Ubuntu为例&#xff09; jdk环境变量在VScode中配置Windows系统中配置Linux系统中配置&#xff08;以Ubuntu为例&#xff09; Extension P…

arcgis 10.6 工具栏操作error 001143 后台服务器抛出异常

arcgis 10.6 工具栏操作error 001143 后台服务器抛出异常 环境 win10arcgis 10.6 问题 执行定义投影要素转线出现 Error: 001143:后台服务器抛出异常&#xff08;差点重装10.6&#xff09; 如下图所示&#xff1a; 解决方法 通过在菜单工具条上单击地理处理 > 地理处…

Linux进程相关查询

1、Linux下查看某些进程的启动时间和运行时长 比如查看java进程的启动时间和运行时长 # ps -ef|grep -v grep|grep -w java|awk {print $2} # ps -eo pid,lstart,etime | grep 1973 其中&#xff1a; Mon Jun 24 09:25:41 2019 为java进程的启动时间 4-00:16:55 …

LeetCode-Pow(x, n)【递归 数学】

[TOC](LeetCode-Pow(x, n)【递归 数学】) 题目描述&#xff1a; 实现 pow(x, n) &#xff0c;即计算 x 的整数 n 次幂函数&#xff08;即&#xff0c;xn &#xff09;。 示例 1&#xff1a; 输入&#xff1a;x 2.00000, n 10 输出&#xff1a;1024.00000 示例 2&#xf…

【Linux】套接字的理解 基于TCP协议的套接字编程(单/多进程 / 线程池|英汉互译 / C++)

文章目录 1. 前言1.1 网络方面的预备知识&#x1f447;1.2 了解TCP协议 2. 关于套接字编程2.1 什么是套接字 Socket2.2 socket 的接口函数2.3 Udp套接字编程的步骤2.4 sockaddr 结构 3. 代码实现3.1 makefile3.2 log.hpp3.3 tcp_server.hpp① 框架② service() 通信服务③ init…

HTML静态网页成品作业(HTML+CSS)——利物浦足球俱乐部介绍网页设计制作(5个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;共有5个页面。 二、作品演示 三、代码目录 四、网站代码 HTML部分代…

【webrtc】内置opus解码器的移植

m98 ,不知道是什么版本的opus,之前的交叉编译构建: 【mia】ffmpeg + opus 交叉编译 【mia】ubuntu22.04 : mingw:编译ffmpeg支持opus编解码 看起来是opus是1.3.1 只需要移植libopus和opus的webrtc解码部分即可。 linux构建的windows可运行的opus库 G:\NDDEV\aliply-0.4\C…