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 VPN3,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入站LSR1,给LSR配置LSR—ID——32位二进制构成,都是按照IP地址格式来写,但是,只能手动配置[r1]mpls lsr-id 1.1.1.1      LSR-ID建议使用环回接口的ip地址2,激活MPLS1,全局激活MPLS[r1]mpls2,接口激活MPLS——所有需要参与MPLS数据手法的接口都需要激活[r1-GigabitEthernet0/0/0]mpls3,构建静态的LSP[r1]static lsp ingress 1to4 destination 4.4.4.0 24 nexthop 12.0.0.2 out label 10001,下一跳——必须和路由表中的下一跳一致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 ID3,激活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。

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

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

相关文章

【 基于Netty实现聊天室聊天业务学习】第4节.什么是BIO与NIO

IO在读写的时候是阻塞的,无法做其他操作,并发处理能力的非常低,线程之间访问资源通信时候也是非常耗时久,依赖我们的网速,带宽。 我们看一下他的白话原理 我们来看一下这张图那么这张图的话它里面有一个server还有三个…

【C++题解】1607. 两位数运算

问题:1607. 两位数运算 类型:基本运算、拆位求解 题目描述: 小丽在编程课上学会了拆位运算,她已经可以拆出一个两位整数的十位和个位了,她想知道这个整数的十位 / 个位的结果是多少,请编程帮她实现&#…

【问题处理】银河麒麟操作系统实例分享,adb读写缓慢问题分析

1.问题环境 处理器: HUAWEI Kunpeng 920 5251K 内存: 512 GiB 整机类型/架构: TaiShan 200K (Model 2280K) BIOS版本: Byosoft Corp. 1.81.K 内核版本 4.19.90-23.15.v2101.ky10.aarch64 第三方应用 数据库 2.问题…

深度学习--CNN应用--VGG16网络和ResNet18网络

前言 我们在学习这两个网络时,应先了解CNN网络的相关知识 深度学习--CNN卷积神经网络(附图)-CSDN博客 这篇博客能够帮我们更好的理解VGG16和RetNet18 1.VGG16 1.1 VGG简介 VGG论文网址:VGG论文 大家有兴趣的可以去研读一下…

【智能算法】鸡群优化算法(CSO)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2014年,X Meng等人受到鸡群社会行为启发,提出了鸡群优化算法(Chicken Swarm Optimization, CSO)。 2.算法原理 2.1算法思想 CSO算法的思想是基于对…

数仓建模—物理数据模型

数仓建模—物理数据模型 前面我们讲了数据模型和逻辑数据模型,你可以参考前面的文章,这一节我们介绍一下物理数据模型 数仓建模—数据模型 数仓建模—逻辑数据模型 什么是物理数据模型 物理数据模型指定如何在数据库中构建数据模型。它概述了所有表结构,包括列名、数据类…

润开鸿与蚂蚁数科达成战略合作,发布基于鸿蒙的mPaaS移动应用开发产品

4月18日,江苏润和软件股份有限公司(以下简称“润和软件”) 旗下专注鸿蒙方向的专业技术公司及终端操作系统发行版厂商江苏润开鸿数字科技有限公司(以下简称“润开鸿”)与蚂蚁数科举行战略合作签约仪式,并发…

【Java开发指南 | 第十六篇】Java数组及Arrays类

读者可订阅专栏:Java开发指南 |【CSDN秋说】 文章目录 数组数组特点创建数组处理数组多维数组Arrays类 数组 Java中的数组是一种用来存储固定大小的相同类型元素的数据结构。 数组特点 数组具有以下特点: 1、固定大小: 一旦数组被创建,其…

系统调优助手,PyTorch Profiler TensorBoard 插件教程

0x1. 前言 使用PyTorch Profiler进行性能分析已经一段时间了,毕竟是PyTorch提供的原生profile工具,个人感觉做系统性能分析时感觉比Nsys更方便一些,并且画的图也比较直观。这里翻译一下PyTorch Profiler TensorBoard Plugin的教程并分享一些…

Sui在Basecamp 2024上重塑区块链行业

Sui主网于去年推出,世界各地的社区活动帮助开发者了解了这一开创性的区块链技术的潜力,而Sui Basecamp表明Sui时代已经到来。 来自65个国家的超过1100人参加了今年在巴黎举办的Sui全球活动,以了解Sui在游戏和DeFi领域的坚实立足点。在两天的…

什么是XXE攻击?如何进行防护

安全性很难做到正确,即使在当今具有安全意识的世界中,也存在一些严重的漏洞,例如 XML 外部实体 (XXE),它们被忽视并最终成为破坏的原因。 XML 外部实体 (XXE) 攻击是一种计算机安全漏洞,通常存在于 Web 应用程序中&…

SpringBoot 项目Docker部署三种方式

一种:直接拷贝jar到服务器部署 1.增加docker配置文件 新建Dockerfile文件,负责Docker的配置 FROM openjdk:21#ENV timezone RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \&& echo Asia/Shanghai >/etc/timezone# WORKD…

2W 3KVDC 隔离单、双输出 DC/DC 电源模块——TPH 系列

TPH系列是一款2W,单、双输出隔离电源模块,特别适合板上只有一种电压而要求有正负电源的场合,工业级温度范围–40℃到105℃,在此温度范围内都可以稳定输出2W,并且效率非常高,高达86%,温升非常低&…

JavaSE进阶篇-面向对象程序设计

一、面向对象和面向过程的关系 1)面向过程:强调的是功能行为,以函数为最小单位,考虑怎么做; 2)面向对象:强调了具备功能的对象,以类/对象为最小单位,考虑谁来做。 总结…

Python进阶编程 --- 3.闭包、装饰器、设计模式、多线程、网络编程、正则表达式、递归

文章目录 第三章:3.1 闭包3.2 装饰器语法糖写法 3.3 设计模式3.3.1 单例模式3.3.2 工厂模式 3.4 多线程3.4.1 进程、线程和并行执行3.4.2 多线程编程 3.5 网络编程3.5.1 Socket3.5.2 服务端开发3.5.3 客户端开发 3.6 正则表达式3.6.1 基础匹配3.6.2 元字符匹配单字符…

fopen/fwrite/fread/open/write/read的区别

fopen和Open,read和fread,write和fwrite有什么区别,很多人都会弄混了,而这经常会带来一些问题。所以在这里理清他们的关系是很有必要的。 open/read/write是Linux提供的系统调用,用户态的程序只能通过这些接口来访问文件系统层。而fopen/fread/fwrite是C库提供的文件读写接…

IT如何与业务双向奔赴,高效并驱共“盈”企业发展

随着经济和技术的飞速发展,在当前数字化时代中,如何进行有效的数字化转型、运用新技术,特别是让AI技术融入企业的具体业务场景、快速实现应用场景的落地、确保企业不落后于时代发展,是每一位CIO都会面临的一项挑战。 IT部门在企业…

springboot 载入自定义的yml文件转DTO

改进方法,直接spring注入 import cn.hutool.json.JSONUtil; import org.springframework.beans.factory.config.YamlMapFactoryBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import …

掌握Java异常处理:编写更健壮的应用程序

Java 异常处理机制是 Java 编程语言的核心特性之一,它为开发者提供了管理和处理运行时错误的有效方式。本文将深入探讨 Java 异常的类型、处理方法以及最佳实践,帮助你编写更健壮、可维护的 Java 应用程序。 1. 异常概念 异常是程序执行过程中出现的非正…

【强化学习的数学原理-赵世钰】课程笔记(十)Actor-Critic 方法

目录 一.最简单的 actor-critic(QAC):The simplest actor-critic (QAC) 二.Advantage actor-critic (A2C) 三.Off-policy actor-critic 方法 四. Deterministic actor critic(DPG) Actor-Critic 方法把基于 value 的方法,特别…