HCIP——MPLS(笔记)

MPLS--多协议标签交换技术

包交换
数据组成数据包,之后,在各个网络节点中不断传递,最终到达目标。
    包交换转发效率不高的问题所在:
        1,在整个包交换的过程中,需要先查询路由表之后再查看ARP缓存表两张表来完成转发过程,导致效率较低。
        2,路由表的匹配原则——最长匹配原则导致路由表的查询效率不会太高。
        3,路由表存在递归查找的过程
        4,IP头部是可变长头部,导致我们对IP头部进行读取时需要使用软件进行处理,无法基于硬件进行快速地查找。
标签交换
标签交换在二层和三层封装之间,添加一个和路由表条目存在映射关系的标签,之后维护一张记录对应关系及转发接口的表,携带标签的数据来到设备上,先看标签,之后基于维护的标签转发表进行转发,而不再需要查看三层的内容,因为标签本身短小且定长,所以,其转发效率将高于包交换。
但是标签交换需要先给数据包打上标签,之后在到达目标之前还需要将标签弹出,因此,标签交换只是在转发过程中提高了效率,整体上相较于包交换提升不明显。
包交换的变更
1,进程交换——process switching——最早期的包交换——每一个数据包都需要先查看路由表,之后再查看ARP缓存表来确定二层封装的内容。
2,快速包交换(fast switching)——基于流的包交换——一次路由,多次交换——当一股数据流来到设备上,我们只针对第一个数据包执行路由过程,将路由的结果和数据包的特征(五元组)记录在缓存表中,之后,数据流中的其他数据来到设备将直接对比缓存表中的五元组,相同,则直接暗账转发方式进行转发而不再进行路由过程。
3,思科的特快交换技术——Cisco express forwarding——简称CEF技术,主要是将路由表和ARP缓存表中的内容进行预读取(就是将该递归的进行递归运算,该差ARP缓存表的提前查好),之后将结果记录在CEF表中,而CEF表是支持硬件转发的,所以,可以极大的提升路由的转发效率。
​
虽然,CEF技术是思科的私有技术,但是各大厂商也基于其思路设计出了属于自己的特快交换技术,华为设备在进行路由转发时就基于FIB(转发信息表),这个表是支持硬件转发的。
标签交换的应用
虽然标签交换无法替代包交换成为主流的转发技术,但是,依然和包交换在共同的发展,MPLS就是包交换和标签交换共同发展的产物,主要因为在一些领域下,标签交换可以做到更好:
    1,用于解决BGP的路由黑洞
    2,MPLS VPN
    3,MPLS TE——流量工程——简单理解就是控制流量转发的路径
MPLS域
所有运行标签交换的路由器组成的转发网络,我们可以看作一个MPLS网络,我们将他称为MPLS域。我们将这些运行了MPLS的设备称为LSR——标签路由器
​
基于标签交换前提先得有标签,标签是每台LSR基于本地的路由表中的路由条目来生成的。我们将所有具有相同特征(所有匹配到同一条路由条目的数据包)的数据包称为FEC——等价转发类。同一个FEC需要配置同一个标签。
        
每台LSR级昂自己的标签和FEC的映射信息记录在本地的一张表中,这张表被称为——LIB(标签信息表)。之后,将和FIB表进行结合,生成LFIB表——标签转发信息表。
        
在整个过程中,LSR设备出了需要自己分配标签以外还需要知道其他LSR设备针对同一个FEC分配的标签,所以,标签交换和包交换一样也分为两个层面——控制层面,数据层面。
​
包交换
    控制层面——路由协议的数据流方向,目的是为了获取未知网段的路由信息,生成路由表。
    数据层面——设备基于已经完善的路由表(FIB)来转发具体的数据信息,其方向正好和控制层流量相反。
标签交换
    控制层面——基于FEC分配标签,并获取其他LSR对同一个FEC分配的标签,之后,记录生成LIB表,之后结合FIB生成LFIB表。——这个过程可以基于静态来完成,也可以基于动态协议来完成——LDP协议(标签分发协议)
    数据层面——设备基于LFIB表,根据标签进行转发。
​
        入站LSR——(ingress)MPLS域的边界,当没有标签的数据包来到入站LSR上,他需要在数据包中压入标签。
        中转LSR——(transit)完成标签置换动作的LSR设备
        出站LSR——(egress)也是MLPS域的边界,完成标签的弹出动作。
整个过程中,数据层流量流动的路径为R1-R2-R3-R4,这条路径我们称为LSP——标签交换路径。需要注意的是LSP是单向的,如果想让数据双向来回,则还需要构建一条R4-R3-R2-R1的路径。
MPLS标签报文

label——20位——0-2的20次方——我们将标签号的取值范围称为标签空间,每台LSR设备的标签空间都是独立的。
        0-15——特殊标签值——我们分配的时候不能直接分配,因为每个特殊标签都拥有其特殊的含义
        16-1023——一般应用于静态LSP搭建
        1024-2的20次方——应用于LSP等动态标签交换协议来分配时使用
                
EXP——占3位——做策略使用的——一般为000,可以理解为优先级,优先级高则可以优先转发。
​
s——占1位——栈底位——标签不止可以打一个,也可以打多个,我们将多个标签的有序集合称为标签栈。如果存在多个标签,需要使用这个标记位进行标识。如果是最后一个标签,则该位置为1.如果不是,则为0。
        
TTL——生存时间——和三层的TTL值一样,主要目的是为了防止数据包在环路中无限循环下去。数据来到入站LSR时,将吧三层的TTL值复制到标签中,在MPLS域中每经过一次转发,TTL减1,之后,在出站LSR上弹出标签,再将标签中的TTL值复制到三层包头中。
​
LDP
标签分发协议——主要应用在MPLS的控制层面
MPLS在控制层面需要完成的工作主要就是分配标签和传递标签,分配标签的前提是本地路由表中得先存在标签,传递标签的前提也是得先具备路由基础。所以,LDP想要正常工作,则需要IGP作为基础。
1,分配标签
    分配标签并不是所有设备都针对自己本地路由表中所有的路由条目分配标签,而是在判断自己是自己到达某网段的出站LSR时,才会主动分配标签。
    当然,在构成到达目标网段的LSP过程中,所有中间的LSR都需要给对应的FEC分配标签才行,则其他设备只有在收到标签和目标网段的映射关系后,才会被动的分配标签,分配标签之前需要完成检查动作,主要检查目标网段本地路由是否可达,以及下一跳和通告者是否相同,检查通过则可以分配标签,不通过则不能分配标签。
    LDP的标签分配方式:
        1,有序方式——华为设备默认选择的事有序方式分配标签。
        2,独立方式——不需要确认自己是出站LSR,也可以主动给路由表中路由条目分配标签。
2,传递标签
    出站LSR分配完标签之后,需要传递给其他的LSR设备,传递的前提条件是彼此之间得先是LDP对等体关系,而LDP对等体关系建立的前提条件是需要先建立LDP会话。
        本地LDP会话——直连的两个设备之间建立LDP回话。
        远程LDP会话——非直连设备之间,可以通过手工指定的方式来创建远程的LDP回话。
        LDP协议在建立本地的LDP会话时,不需要手动指定邻居的IP地址,可以自动的发现邻居关系,主要是因为LDP手写会通过组播(224.0.0.2)的形式周期性发送hello包来发现邻居。hello包使用UDP 646 端口来完成。
​
本地LDP会话的建立过程
1,在LSR上激活LDP之后,首先周期性的发送hello包来完成对等体的发型工作。
    在hello包中需要携带一些参数,其中包含传输地址和LDP ID。
    传输地址:这个地址主要是后面建立TCP会话是需要用到的地址,默认情况下,我们将使用该设备的LSR ID来作为这个地址。所以要求,LSR ID必须是可用且可达的IP地址。
    LDP ID:所有激活LDP协议的LSR设备都要求必须具有一个LDP ID,这个ID是由48 位二进制构成,表达方式为32位:16位,前32位使用的是LSR ID,后16位用0来表示。这个和标签空间有关,所有基于设备的标签空间,其值都为0.
    hello包的发送周期默认为5s,保活时间为3倍hello时间,默认为15s
​
2,双方在交互完hello包之后,将获取到对放的传输地址,则将根据这个传输地址来建立TCP会话。
    在建立TCP会话之间,LDP也存在检查动作,需要先确认收到的传输地址,在本地路由表中是否可达,可达则可以正常建立TCP会话。
                
    如果双方都建立TCP会话,则将创建两条双向通道,造成资源浪费,则在收到对端hello包中的传输地址之后,将和本地的传输地址进行对比,传输地址大的一方,我们称为主动方,主动方则可以主动建立TCP会话,而被动方则不建立。
​
3,完成TCP会话建立之后,传输地址大的一方将优先使用初始化报文,里面包含一些协商的参数发给被动方。对方如果确认里面的参数,则将恢复Keeplive报文进行确认,同时发送自己本地的初始化报文,携带自己的参数。主动方收到后也将对三叔进行确认,如果没问题则也将发送Keeplive报文。双方都收到Keeplive报文,则代表参数协商成功,LDP会话建立成功。
​
之后,也需要周期性的发送Keeplive报文进行保活,发送周期默认为15s,保活时间为3倍的周期发送时间,默认为45s。
​
上下游关系
有数据层流量流动方向来决定,数据发送方为上游,接收方为下游。从控制层的角度来看,则标签传递的放心应该是从下游发送到上游,之后上游设备回去收集下游的标签。
标签传递方式
DU模式——下游自主模式——华为设备默认采用的这种模式,所有LSR在分配标签之后,可以中的的将标签传递给其他LSR。
    如果选择的事下游自主模式,则设备在传递标签时,无法判断上下有关系的,则会将标签发给所有的对等体关系。当设备收到标签之后,则将可以基于路由表判断上下游关系。华为设备,只有上游设备会记录下游设备发送的标签,而上游设备发送的标签下游设备将不会保存。(还有一种标签的保存模式是上下游标签都保存。)
DOD模式——下游按需模式——只有下游设备在收到上游设备的通知之后,才会给上游设备发送标签。
数据层面流动过程
在数据层面流量通过的过程中,入站LSR设备和出站LSR设备都需要查询两张表,一张FIB表,一张LFIB表才可以完成转发过程,导致效率降低,需要优化。
    优化思路:
        入站LSR——因为入站的数据包中不包含标签,所以,必须查看FIB表。则可以直接将出站标签添加到FIB表中,这样则将不在需要查看LFIB表。
        出站LSR——PHP——次末跳弹出机制——出站LSR设备在给FEC分配标签时直接分配特殊标签3(隐士空标签),之后,将这个标签传递给自己的上游设备,上游设备会把这个标签作为出站标签记录在LFIB表中。当有数据来到设备上,匹配LFIB时发现出站标签为3.则该LSR设备将直接把这个标签弹出。这样当出站LSR设备收到的将是一个不带标签的数据包,则出站LSR可以直接查看FIB表来实现转发。(华为设备默认开启次末跳弹出机制)
​

静态MPLS

构建静态LSP:
    1.保证路由条件——静态只需要边界设备拥有来回路由信息即可
    2.配置LSR
        入站LSR
            1,给LSR配置LSR—ID——32位二进制构成,都是按照IP地址格式来写,但是,只能手动配置
                [r1]mpls lsr-id 1.1.1.1      LSR-ID建议使用环回接口的ip地址
                
            2,激活MPLS
                    1,全局激活MPLS
                    [r1]mpls
                    2,接口激活MPLS——所有需要参与MPLS数据手法的接口都需要激活
                    [r1-GigabitEthernet0/0/0]mpls
            3,构建静态的LSP
                    [r1]static lsp ingress 1to4 destination 4.4.4.0 24 nexthop 12.0.0.2 out label 1000
                    1,下一跳——必须和路由表中的下一跳一致
                    2,out label——出站标签——下一跳设备接受就需要根据这个标签判断数据到达那个网段
        配置中转LSR:
                    [r2]static-lsp transit 1to4 incoming-interface GigabitEthernet 0/0/0 in-label 1000 nexthop 23.0.0.2 out label 1001
        出站LSR:
                    [r4]static-lsp egress 1to4 incoming-interface GigabitEthernet 0/0/0 in-label 1002
                
    查看MPLS域
            display mpls routing-table
​

动态MPLS

LDP的配置:
            1,现在所有LSR设备上启动IGP协议,保证路由基础。
            2,配置MPLS的LSR ID
            3,激活MPLS的LDP
                全局激活
                接口激活
                [r1]display mpls ldp peer --- 查看LDP对等体关系
                [r1]display mpls ldp session --- 查看LDP会话
                [r4]display mpls lsp --- 查看LFIB表
注意:华为设备默认只给/32的主机路由分配标签,因为MPLS并没有主要应用在数据转发上,如果路由表中路由条目太多,则将导致生成过多LSP,造成资源浪费。
                [r4-mpls]lsp-trigger all -- 这个命令可以让设备给出来/32主机路由外的路由分配标签
            MPLS解决路由黑洞问题
                [r2]route recursive-lookup tunnel --- 在进行路由递归查找的时候,如果有隧道则递归进隧道
        [r2]display fib verbose --- 查看FIB表的细节信息

MPLS VPN

MPLS VPN是一种由运营商提供的专门解决虚拟专线安全及带宽问题的综合解决方案。
站点——可以理解为是一个组织机构在不同地址位置设置的不同的IP网络。
​
PE——服务提供商边界设备——需要连接CE设备(客户网络的边界设备),则需要接受客户私网的路由信息。他还需要将私网的路由信息传递到远端的PE设备上。这部分路由的传输主要使用BGP协议来进行传递。则中间的P设备(服务提供商的设备),只需要完成路由信息的高速转发即可。
​
VRF——虚拟路由转发——VPN instance(VPN实例)——我们可以将一台真实的物理设备抽象出多台虚拟的设备。每一个虚拟的设备就被称为一个VRF空间,每个VRF空间都拥有独立的路由表,FIB表,动态路由协议以及接口。
​
RD值——路由区分码——由64位二进制构成的,华为设备最常用的表达方式是AS:NN(AS代表所在的AS号,NN代表自定义值)
​
VPN v4 路由——IPV4路由信息前面添加上RD值之后,从原来的32位变为96位,则将变成VPN v4路由。
MP-BGP——可以针对多种地址组的路由信息来进行携带。如果需要传递VPN v4路由,则需要使用MP-BGP来进行传递。
            
RT——路由目标值——VPN target——32位二进制构成——由不给牌的社团属性来携带
出站RT值——Export RT——PE设备为不同VRF空间配置不同的出站RT,发出由社团属性携带,需要和远端PE设备上的入站RT对应。
入站RT值——import RT——PE设备为不同VRF空间配置不同的入站RT,根据社团属性中携带的值进行对比,将其放入对应的VRF空间当中。
​
数据层流量——数据层流量主要是在到达远端PE设备上时无法分辨到底加入到哪个VRF空间中,所以,需要使用双层标签来进行区分。
    外层标签(靠近二层)——公网标签——有LDP协议来分配,其目的是为了保证数据可以正常的通过MPLS域,到达远端PE。
    内层标签(靠近三层)——私网标签——由MP-BGP协议来分配,目的是在远端PE设备上弹出外层标签后,可以根据内存标签判断到底是到达哪个VRF的数据流量。内层标签需要和VRF空间存在对应关系,这个标签是由MP-BGP分配后,通过社团属性随着路由传递到达对端PE。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java:内部类

目录 1.内部类介绍2.实例内部类3.静态内部类4.局部内部类5.匿名内部类 1.内部类介绍 当一个事物的内部,还有一个部分需要一个完整的结构进行描述,而这个内部的完整的结构又只为外部事物提供服务,那么这个内部的完整结构最好使用内部类。在 J…

KDD‘23 | AlphaMix: 高效专家混合框架(MoE)显著提高上证50选股表现

KDD23 | AlphaMix: 高效专家混合框架(MoE)显著提高上证50选股表现 原创 QuantML QuantML 2024-04-18 09:17 上海 Content 本文提出了一个名为AlphaMix的新型三阶段专家混合(Mixture-of-Experts,MoE)框架,…

信息流广告大行其是,微博回望“原生”的初心

摘要:有流量的地方,就当有原生信息流广告 信息流广告,自2006年Facebook推出后就迅速火遍全球数字营销界,被誉为实现了广告主、用户、媒体平台三赢。特别是随着OCPM/OCPX大放异彩,信息流广告几乎成为广告主的必选项&…

达梦数据库的AWR报告

达梦数据库的AWR报告 数据库快照是一个只读的静态的数据库。 DM 快照功能是基于数据库实现的,每个快照是基于数据库的只读镜像。通过检索快照,可以获取源数据库在快照创建时间点的相关数据信息。 为了方便管理自动工作集负载信息库 AWR(Auto…

数据结构实验(二)

单链表的基本操作 一、总的设计思路(c++实现) 1、首先定义一个包含name、gender、student_number、hobbies的学生信息结构体。 2、接着一一写出:链表初始化(initialize)函数、后插法插入(insert)函数、打印信息(output)函数、对链表结点进行排序(sortList)函数、…

【Qt 学习笔记】Qt常用控件 | 按钮类控件 | Check Box的使用及说明

博客主页:Duck Bro 博客主页系列专栏:Qt 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ Qt常用控件 | 按钮类控件 | Check Box的使用及说明 文章编号&#xff…

华为ensp中MSTP多网段传输协议(原理及配置命令)

作者主页:点击! ENSP专栏:点击! 创作时间:2024年4月22日15点29分 在华为ENSP中,MSTP(多段传输协议)是重要的生成树协议,它扩展了STP(生成树协议&#xff09…

跨境电商日报:Tk使用时长全美第一;Shopee发布Z世代购物调查报告

# 平台资讯 PART 1 电商 Shopee调查:六成Z世代购物者看重平台功能多样性 日前,据外媒报道,Shopee发布了《在数字时代吸引Z世代购物者》调查报告。数据显示,60%的Z世代购物者优先考虑搜索简单、具有比较功能和有用评论的平台。据…

代码随想录算法训练营第三十六天|435. 无重叠区间,763.划分字母区间,56. 合并区间

题目:435. 无重叠区间 给定一个区间的集合 intervals ,其中 intervals[i] [starti, endi]。返回需要移除区间的最小数量,使剩余区间互不重叠。 题目链接/讲解链接: https://programmercarl.com/0435.%E6%97%A0%E9%87%8D%E5%8F%A0…

Swin Transformer 浅析

Swin Transformer 浅析 文章目录 Swin Transformer 浅析引言Swin Transformer 的网络结构W-MSA 窗口多头注意力机制SW-MSA 滑动窗口多头注意力机制Patch Merging 图块合并 引言 因为ViT无法实现CNN中的层次化构建以及局部信息,由此微软团队提出了Swin Transformer来…

Linux磁盘及读写数据原理/Raid技术/硬软raid及企业案例/磁盘分区环境搭建/格式化磁盘系列-12213字

高薪思维: 怎么才能一直去坚持下去? 1.做这件事情的好处,对自己一直去放大。 2.不做的坏处,并放大 3.学习痛苦?还是去上班(餐饮、外卖痛苦?) 用比学习更痛苦的事情,去对抗…

Java后端中如何随意接收参数

目录 一、参数名相同 二、参数名不同,使用RequestParam注解 大概访问流程是:先访问test控制器,test控制器跳转到index页面(此时index页面收到了test控制器传来的数据),然后在index页面跳转到t5控制器&…

【YOLOv9】实战二:手把手教你使用TensorRT实现YOLOv9实时目标检测(含源码)

‍‍🏡博客主页: virobotics(仪酷智能):LabVIEW深度学习、人工智能博主 🎄所属专栏:『LabVIEW深度学习实战』 📑上期文章:『【YOLOv9】实战一:在 Windows 上使用LabVIEW OpenVINO工具…

Java代码基础算法练习-分段函数求值-2024.04.21

任务描述: 有一个函数,写一段程序,输入x,输出y。 任务要求: 代码示例: package April_2024;import java.util.Scanner;public class a240421 {public static void main(String[] args) {Scanner sc new S…

Print Conductor 文档批量打印工具 v9.0.2312

网盘下载 Print Conductor 是 Windows 上一款功能强大的文档批量打印工具,通过该软件可以快速的帮用户批量处理打印PDF文件、协议、文档、图纸、演示文稿、文本文件等,完美的支持PDF、DOC、JPG、PNG、SNP、PSD、MSG、WRI、WPS、RTF、TXT、XLS、PPT、PPS、…

spring高级篇(三)

1、Spring选择代理 1.1、Aspect和Advisor 在Spring框架中,"Aspect" 和 "Advisor" 是两个关键的概念,它们都与AOP(面向切面编程)密切相关: 如果要在Spring中定义一个Aop类,通常会&…

山与路远程控制 一个基于electron和golang实现的远控软件

山与路远程控制 🎥项目演示地址 还在制作… ♻️项目基本介绍 山与路远程控制是基于electron(vue3)和golang实现的远程控制软件(项目界面主要模仿向日葵远程软件,如有侵权请告知),代码可能有点臃肿毕竟只花了一周左右写的无聊项目,如果对其感兴趣的大佬可以fork自…

【Qt 学习笔记】Qt常用控件 | 显示类控件 | Label的使用及说明

博客主页:Duck Bro 博客主页系列专栏:Qt 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ Qt常用控件 | 显示类控件 | Label的使用及说明 文章编号:Q…

根据表格该列数据的长度动态变化该列的宽度;

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、代码前言 在使用elementui的表格将数据展示出来时,我们想根据表格该列数据的长度动态变化该列的宽度; 1.看了一下elementui文档有一个 width 的属性,可用它来修改对应列。 2.那么我们需要拿到该列的所有数据去比较…