MPLS——多协议标签交换

news2024/11/16 19:56:47

多协议:可以基于多种不同的2层协议和3层协议来生成2.5层的标签信息;

标签交换:

数据包在进入到的MPLS的域内后,将在第2层和3层中间压入标签号;使得域内的路由器在转发该数据包时,基于2.5层的标签号仅需要查询本地的一张LFIB表(标签转发信息数据库)

最初在包交换仅支持原始交换时,标签的意义在于更快的查询;但随着包交换的加速,使用标签交换失去了快速查表的优势;

包交换(路由数据)—包为网络层的PDU,故包交换是基于IP地址进行数据转发;就是路由器的路由行为;

升级包交换:

原始的包交换:数据包进入路由器后,路由器需要查询本地的路由表(RIB-路由信息数据库),再根据查询本地的ARP表获取下一跳或者目标ip的MAC地址,才能进行数据的转发;

快速的包交换:一次路由多次交换;每个数据流中的第一个包将被基于原始包交换规则转发;过程中生成缓存列表,记录包的源,目ip,进入的接口,转出的接口,转出时新的mac地址,该数据流的第二个包基于缓存转发即可

特快的包交换:无需路由,直接交换; CEF-cisco特快交换,为cisco私有技术;非cisco厂商设备均存在和cef转发机制相同的技术;直接将路由表——RIB转换成FIB(转发信息数据库)   ARP——ADJ   FIB+ADJ=CEF,基于该CEF表进行转发即可

FIB——转发信息数据库   纯二进制表格   提前完成递归

当下MPLS存在的意义:

1.MPLS VPN

2,解决BGP的路由黑洞最佳方案

3.MPLS  TE——流量工程

另外:随着包交换的加速,使得今天的MPLS技术也开始基于FIB表工作;来提高MPLS的工作效率

二,工作过程

控制层面:路由协议工作,生成RIB-FIB,流量的方向即为控制流量;

数据层面:设备基于路由表访问目标,产生数据流量;与控制层面方向相反;

控制层面:

1)在没有MPLS时控制层面仅生成RIB(路由表)和FIB(转发信息数据库);FIB是基于RIB生成;

2)MPLS协议会启动TDP(cisco私有)或LDP(公有),直连设备间将建立邻居关系;

LDP--  基于UDP和TCP的646端口工作;先使用udp发送组播hello包发现邻居,获取邻居ip地址,再和该直连邻居建立TCP的会话;邻居关系建立后;为了邻居关系间的稳定,一般使用设备的环回地址来建立tcp会话;建议设置环回地址为mpls协议的route-id,该id值将携带在组播收发的hello报文中,之后自动进行tcp会话建立;

总结:MPLS协议需要在直连邻居间使用router-id地址来进行TCP的会话;故前提条件为,route-id必须为设备真实使用的ip地址,建议为环回地址稳定;    组播hello包在直连的物理接口上收发,来获取对端的router-id,自然也要求router-id值间路由可达;

因此正常在建立LDP的邻居关系,路由协议已经收敛完成,RIB和FIB表已经生成;

3)MPLS在建立邻居关系后,生成邻居表;LDP协议再基于FIB表中学习到的路由条目生成标签号;

cisco设备默认基于FIB表中所有学习到的路由条目生成标签号,华为设备默认仅基于FIB表中32位掩码的主机路由生成标签号;原因在于正常32位主机路由为ospf学习的环回接口,正常工程中只有BGP和MPLS  VPN才会基于环回通讯,使用标签转发;其他普通流量还是基于特快包交换来进行;反观cisco在启动mpls以后,所有流量将基于标签转发,降低了转发效率(前提为默认)

4)标签号生成后,将存储于本地的LIB表-标签信息数据库;LIB表将在邻居间共享;

   LIB表中装载本地及邻居为每条路由分发的标签号;

5)运行MPLS协议的设备,将LIB和FIB进行结合,将标签号和最佳路径的关系映射生成LFIB表(标签转发信息数据库)

注:控制层面生成的表格

RIB—》FIB---》LIB---》LFIB   前两张表为路由协议工作后生成,后两张表为MPLS的LDP协议生成;

数据层面:

  1. 没有MPLS协议,基于FIB表正常转发即可
  2. 名词:MPLS domain – MPLS的工作半径    

          edge LSR(PE)--边界标签交换路由器  工作mpls域的边缘,连接域外设备

LSR (P) -- 标签交换路由器   整体工作MPLS域内  

  1. 当流量进入到第一台pe设备时, 在没有特快交换之前,路由器基于目标IP地址查询本地的RIB;

之后还要在LIB表中对应才能确定流量是否应该压入标签,需要两张表的查询;

在存在特快交换时,流量进入第一pe时,直接查询FIB表,表中关联标签号,将直接确定是否压入标签;

流量再到P路由器,接收到流量中若存在标签基于LFIB表转发,若没有标签基于FIB表即可;

流量从最后一台边界离开MPLS 域时将弹出标签;

存在标签号的流量,进入路由器时,入标签表应该为本地路由器分配的编号,出标签为本地的下游(下一跳)设备分配的标签号;  上下游的概念基于数据层面进行标定

  • 标签号

标签被压入在2层与3层之间,称为2.5层

标签的格式---32位,4个字节

 

前20位为标签号,2^20个标签号;其中1-15号保留,作为特殊编号;

第21-23位exp,3位8个数,为优先级,用于QOS策略使用;

第24位为栈底位,该位为1标识该标签为最后一层标签;MPLS最大可以在一个数据包中封装3次标签;

普通的MPLS 一层标签    MPLS  VPN  两层      MPLS  TE  3层

TTL  生存时间   在第一次压入标签时,将当前数据包中的3层TTL复制到标签中;之后查询一次标签TTL减一,在最后一跳设备弹出标签时将2.5层的TTL复制到3层报头中;

三,MPLS的次末跳 – 倒数第二跳  默认执行

边界LSR将本地的直连网段传递给MPLS域内邻居后,LDP分配标签号为3,告知倒数第二跳设备它的身份;导致倒数第二跳设备在查询LFIB表后,已知转发路径的前提下提前弹出标签,使得最后一跳路由器均只需要查询FIB表; 否则最后一跳路由器在查询LFIB表后,弹出标签还需要查询FIB;

四,MPLS的配置

1.IP可达--- 使用路由协议全网可达

2.配置MPLS – LDP

[r2]mpls lsr-id 2.2.2.2    必须先定义mpls的router-id,要为本地设备的真实ip地址且邻居可达,因为该地址将用于建立TCP会话,建议使用环回地址

[r2]mpls             再开启mpls协议

[r2-mpls]mpls ldp      再激活LDP协议

[r2-mpls-ldp]q

之后需要在所有标签经过的接口上开启协议

[r2]interface GigabitEthernet 0/0/1

[r2-GigabitEthernet0/0/1]mpls    先开启MPLS

[r2-GigabitEthernet0/0/1]mpls ldp   再激活LDP协议

当启动配置完成后,邻居间使用UDP报文组播收发hello包;之后基于hello包中的router-id地址进行TCP会话的建立;

[r3]display tcp status

TCPCB    Tid/Soid Local Add:port        Foreign Add:port      VPNID  State

b4cf3d64 167/6    3.3.3.3:646           4.4.4.4:50858         0      Established

b4cf3adc 167/3    3.3.3.3:50806         2.2.2.2:646           0      Established

当tcp会话建立后,邻居间基于TCP会话再建立邻居关系,生成邻居表

[r3]display  mpls ldp peer

再然后基于本地的FIB表,默认华为仅针对32位的主机路由生成标签号;存储于LIB表中,之后邻居间共享LIB表;

[r3]display  fib  查看FIB表

[r4]display  mpls ldp  lsp    查看LIB表,装载本地和邻居为各条路由分配的标签号

最后路由器将LIB和FIB集合,生成最佳路径的标签转发规则—LFIB

[r4]display mpls lsp  查看LFIB表

注:默认华为仅针对32位主机路由分配标签

[r3]mpls

[r3-mpls]lsp-trigger all   开启功能,将针对fib表中所有路由进行标签号的分配

[r2]tracert -v -a 2.2.2.2 56.1.1.2

五,使用mpls解决BGP的路由黑洞

MPLS协议并不会为通过BGP协议学习的路由条目分配标签号;

而是在访问这些BGP路由目标网段时,在流量中压入到达这些网段的BGP下一跳设备地址的标签号;

例:R2从BGP邻居5.5.5.5 学习到6.6.6.0 网段的路由;R2在访问6.6.6.0 时,将在数据包中压入到达5.5.5.5ip地址的标签号,来穿越中间没有运行BGP协议的设备;实现打破路由黑洞;

注:华为设备默认不为BGP协议执行下一跳标签机制,cisco默认执行;

华为设备需要开启  route recursive-lookup tunnel   路由基于隧道进行递归查找   

六,MPLS  VPN

  1. CE将私有路由传递到PE端
  2. PE端在收到不同CE发送过来的相同网段路由时,使用RD值进行区分---格式X:X  32位
  3. PE端将附上RD的私有路由不能直接装载于本地公有路由表中,需要放置到对应的VRF(虚拟路由转发)空间内;之后再路由付RT值,用于传递到对端PE设备,对端区分信息;

VPNV4路由=普通IPV4路由+RD+RT

  1. VPNV4路由需要MP-BGP来进行传递;对端基于RT值,将路由装载到对应的VRF空间内,再共享给对应的CE;
  2. 控制层面工作完成后,数据层面需要基于MPLS来工作,由于数据层面不能携带RD/RT值;

故mpls将在数据包中压入两层标签,外层标签用于穿越中间设备,打破BGP路由黑洞;

内层标签用于对应VRF空间;

配置:

  1. ISP部分
  1. IGP路由   
  2. MPLS域
  3. 配置MPLS VPN

[r2]ip vpn-instance a    创建名为a的vrf空间

[r2-vpn-instance-a]ipv4-family    进入IPV4的配置模式下

[r2-vpn-instance-a-af-ipv4]route-distinguisher 1:1   RD值

[r2-vpn-instance-a-af-ipv4]vpn-target 1:1   RT值 必须对端的PE端一致

[r2]interface GigabitEthernet 0/0/0    进入链接CE端的接口

[r2-GigabitEthernet0/0/0]ip binding vpn-instance a  关联到vrf空间

[r2-GigabitEthernet0/0/0]ip address 192.168.2.2 24   配置私有ip地址

注:在关联到vrf空间前不能配置接口ip,否则该地址的直连路由将进入公有路由表;

[r2]display  ip routing-table vpn-instance a    查看空间内的私有路由表

[r2]ping -vpn-instance  a  192.168.2.1   正常测试将在公有路由表中查询记录;该命令为基于VRF空间

a进行路由查询

  1. PE与PE间建立MP-BPG邻居关系

[r2]bgp 2

 [r2-bgp]router-id 2.2.2.2

先和对端建立正常BGP邻居关系,可用于传递正常的公网路由

 [r2-bgp]pe 4.4.4.4 as-number 2

 [r2-bgp]pe 4.4.4.4 connect-interface LoopBack 0

 [r2-bgp]pe 4.4.4.4 next-hop-local     

 同时还需要再在IPV4的家族模式中,与对端建立一个VPNV4的关系,用于传递VPNV4路由

 [r2-bgp]ipv4-family vpnv4

 [r2-bgp-af-vpnv4]peer 4.4.4.4 enable

[r2-bgp]display bgp vpnv4 all peer  查看mp-bgp邻居关系

  1. CE端与PE端交互路由

静态

CE端直接编写静态路由即可;

PE端编写到VRF空间内的静态路由

[r2]ip route-static vpn-instance  a 192.168.1.0 24 192.168.2.1

 将本地vrf空间内的静态和直连路由重发布到BGP协议传递到对端的PE

[r2]bgp 2

 [r2-bgp]ipv4 vpn-instance a

 [r2-bgp-a]import-route direct

     [r2-bgp-a]import-route static

<r4>display  bgp vpnv4 vpn-instance a routing-table  查看mp-bpg的BGP表

OSPF

CE端正常启动OSPF即可

PE端,启动VPNV4专用的ospf协议

[r4]ospf 2 vpn-instance a

[r4-ospf-2]area  0

[r4-ospf-2-area-0.0.0.0]network 192.168.3.1 0.0.0.0

之后使用双向重发布,实现路由共享

[r4]bgp 2

[r4-bgp]ipv4-family vpn-instance a

[r4-bgp-a]import-route ospf  2

[r4]ospf 2 vpn-instance a

[r4-ospf-2]import-route bgp  

[r4]display  mpls lsp vpn-instance a  查看双层标记的内层标签号

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

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

相关文章

【TypeScript】装饰器 Decorator

装饰器&#xff08;Decorators&#xff09;是 TypeScript 中一种特殊的语法&#xff0c;用于在类、方法、属性等元素上附加元数据或修改其行为。装饰器提供了一种在不改变类的定义的情况下&#xff0c;对类进行扩展或修改的方式。 装饰器的使用类似于注解&#xff0c;在代码中…

胖小酱之我没全抄

如果你在考试中抄袭同桌的答案被发现&#xff0c;这是一个严重的违规行为&#xff0c;可能会对你的成绩和未来的学业产生不利影响。以下是一些应对这种情况的建议&#xff1a;1. 承认错误&#xff1a;首先&#xff0c;你需要承认自己的错误&#xff0c;并向老师道歉。你可以向老…

矢量图层中要素的几何特征和属性特征的访问

打开QGIS Desktop 3.22.16&#xff0c;加载一个矢量图&#xff08;Ex48/area.shp&#xff09; 激活当前矢量图层 layeriface.activeLayer() 获取当前矢量图层矢量数据的个数 from qgis.utils import ifacelayer iface.activeLayer() # 得到当前激活的图层 print(layer.id()…

计算机图形视觉基础

一、环境安装 1、anaconda安装 官网下载&#xff1a;Free Download | Anaconda 2、打开anaconda prompt测试是否安装成功 输入conda env list命令显示虚拟环境清单即可 二、创建开发虚拟环境 1、创建python3.8虚拟环境 conda create --name demo_py3.8 python3.8 2、激…

渠道窜货怎么解决

品牌渠道中的常见问题有哪些&#xff1f; 低价、窜货是品牌需要治理的渠道常见问题&#xff0c;一般说到窜货就会提到低价&#xff0c;因为这两者是密不可分的&#xff0c;低价会带来窜货&#xff0c;窜货也必然有低价的影响&#xff0c;所有违规行为的背后&#xff0c;都是有…

Unity - 制作package 插件包

1.将制作的插件包代码放置一个根目录下 2.在跟目录下创建package.json文件 //package.json {"name": "com.unity.customlibrary", //插件包名:com.组织名.包名"displayName": "CustomLibrary", //显示的插件名"v…

程序员行业有必要考PMP吗?

首先&#xff0c;给大家简单普及一下什么是PMP&#xff1f; PMP(Project Management Professional)指项目管理专业人士&#xff08;人事&#xff09;资格认证。美国项目管理协会&#xff08;PMI&#xff09;举办的项目管理专业人员&#xff08;PMP&#xff09;认证考试在全球1…

海思Hi3861L开发二-SDK编译与下载

一、简介 上篇文章,我们介绍了海思Hi3861L的环境搭建,那这篇文章,我们就开始SDK的编译与下载吧。 准备: SDK:https://download.csdn.net/download/qq_26226375/88245580 开发环境:海思Hi3861L开发一-环境搭建_t_guest的博客-CSDN博客 二、SDK介绍 将SDK解压后,会出现如…

【Java架构-包管理工具】-Maven基础(一)

本文摘要 Maven作为Java后端使用频率非常高的一款依赖管理工具&#xff0c;在此咱们由浅入深&#xff0c;分三篇文章&#xff08;Maven基础、Maven进阶、私服搭建&#xff09;来深入学习Maven&#xff0c;此篇为开篇主要介绍Maven概念、模型、安装配置、基本命令 文章目录 本文…

2023-8-24 模拟堆

题目链接&#xff1a;模拟堆 #include <iostream> #include <string.h>using namespace std;const int N 100010;int h[N], ph[N], hp[N], Size;void heap_swap(int a, int b) {swap(ph[hp[a]], ph[hp[b]]);swap(hp[a], hp[b]);swap(h[a], h[b]); }void down(in…

基于大数据+django+mysql的学习资源推送系统的设计与实现(含报告+源码+指导)

本系统为了数据库结构的灵活性所以打算采用MySQL来设计数据库&#xff0c;而Python技术&#xff0c; B/S架构则保证了较高的平台适应性。文中主要是讲解了该系统的开发环境、要实现的基本功能和开发步骤&#xff0c;并主要讲述了系统设计方案的关键点、设计思想。 由于篇幅限制…

Bigemap软件常见实操疑问解答

工具 Bigemap gis office地图软件 BIGEMAP GIS Office-全能版 Bigemap APP_卫星地图APP_高清卫星地图APP Bigemap gis office 国产地图编辑工具作为一个大众化软件&#xff0c;他的操作其实是相对简单的&#xff0c; 可操作的功能也非常广泛&#xff0c; 所以就会有各行各业…

【uni-app】压缩图片并添加水印

总体思路 dom 结点 这里的 cvHeight 和 cvWidth 初始时要设置为你后续需要压缩后的最大宽高。假设我们在图片上传后图片最大为 350 * 350 <u-upload :fileList"baseInfoFormData.entrustFileList" afterRead"afterFileRead" multiple></u-uploa…

2023前端求职经历回顾及面试题总结

文章目录 前言一、求职经历二、前端面经1. 投简历的正确打开方式2. 面经及面试题复盘外企面经、面试题大厂面经、面试题面试中的笔试有三种笔试题 给同行的温馨提示我的其他热门文章 前言 2023 年的春节之前&#xff0c;几乎没有公司招人&#xff0c;直到 2023年2月10日 左右&a…

科技资讯|苹果Apple Watch新专利,可根据服装、表带更换表盘颜色

根据美国商标和专利局&#xff08;USPTO&#xff09;公示的清单&#xff0c;苹果公司近日获得了一项 Apple Watch 相关的技术专利&#xff0c;最大的亮点在于配备颜色采样传感器&#xff0c;可以根据表带、服装自动变幻变盘颜色和主题。 Apple Watch 正面配备颜色采样传感器&am…

Python快速入门体验

Python快速入门体验 一、环境信息1.1 硬件信息1.2 软件信息 二、Conda安装2.1 Conda介绍2.1.1 Conda简介2.1.2 Conda、Anaconda及Miniconda及的关系 2.2 Conda安装包下载2.2.1 Miniconda下载2.2.2 Anconda下载 2.3 Conda安装2.3.1 Miniconda安装2.3.2 Anconda安装 2.4 Conda初始…

微信小程序的springboot实现 个人行程日程安排系统

本站后台采用Java的springboot框架进行后台管理开发&#xff0c;可以在浏览器上登录进行后台数据方面的管理&#xff0c;MySQL作为本地数据库&#xff0c;微信小程序用到了微信开发者工具&#xff0c;充分保证系统的稳定性。系统具有界面清晰、操作简单&#xff0c;功能齐全的特…

openCV实战-系列教程5:边缘检测(Canny边缘检测/高斯滤波器/Sobel算子/非极大值抑制/线性插值法/梯度方向/双阈值检测 )、原理解析、源码解读

1、Canny边缘检测流程 Canny是一个科学家在1986年写了一篇论文&#xff0c;所以用自己的名字来命名这个检测算法&#xff0c;Canny边缘检测算法这里写了5步流程&#xff0c;会用到之前《openCV实战-系列教程》的内容。 使用高斯滤波器&#xff0c;以平滑图像&#xff0c;滤除…

揭开Android系统启动的神秘面纱

当有人问我们android中app启动流程的时候&#xff0c;我们总是会提到zygote。but&#xff0c;zygote又是从何而来&#xff1f;由此问题我想到了android系统的启动流程&#xff0c;zygote肯定是在系统初始化时创建的一个进程。带着这个疑问我去查询了一些android系统启动流程的资…

Linux配置nginx反向代理

在云服务器上部署高并发的服务&#xff0c;使用Nginx作为反向代理是一种常见的做法&#xff0c;可以实现流量分发、负载均衡&#xff0c;同时提升系统的可靠性和性能。 步骤概览&#xff1a; 安装Nginx&#xff1a; 确保服务器已安装Nginx。若未安装&#xff0c;可使用适用于你…