一篇带你精通MPLS

这篇具有很好参考价值的文章主要介绍了一篇带你精通MPLS。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言导入

MPLS:多协议标签交换

多协议

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

包交换

  • 包为网络层的PDU,故包交换就是基于IP地址进行数据转发;也就是路由器的路由行为。(路由器和终端基于3层的IP地址数据转发的路由行为)

原始包交换

查两张表
在包交换过程中,数据包每经过一个路由器,路由器需要查两张表:路由表(RIB)+ARP表

快速包交换

第一次查两张表,之后的每一次查一张表
一次路由,多次交换(一个数据流的第一个数据包进行原始交换,过程中生成转发规则缓存,该数据流剩余的数据包全部基于缓存中的规则进行转发)

特快交换,FIB表

查一张表
无需路由,直接交换(路由表RIB----->FIB表,ARP表---->ADJ表;其中FIB表是已经递归好的路由表并且是纯二进制表格,可以被物理硬件直接读取,不需要编译)
CEF:Cisco特快交换,为Cisco私有技术;非Cisco厂商设备均存在和CEF转发机制相同的技术

路由表转换为FIB(转发信息数据库)表,流量转发过程中仅查询FIB表即可
FIB表和特点:

在将路由器表转换过程中,存储递归查询结果,同时将新封装的二层地址进行绑定
IP       fast0/0                   172.16.20.115(7)
       (递归后的出接口)           0 packets, 0 bytes
                                   epoch 0
                                   sourced in sev-epoch 357
                                   Encap length 14
                                   
                                   701CE7662A9768EFBD1D24C50800  新的二层封装
                                   目标MAC    源MAC      类型号

标签交换

  • 路由器基于2.5层的标签号进行路由行为

在数据包的2.5层压入标签号,路由器基于2.5的标签号查询本地的LFIB表,即可进行数据转发。(第一跳路由器压入标签号,最后一跳弹出标签)
数据包在进入到的MPLS的域内后,将在第2层和3层中间压入标签号,使得域内的路由器在转发该数据包时,基于2.5层的标签号仅需要查询本地的一张LFIB表(标签转发信息数据库)
FIB+LIB=LFIB;LFIB表的信息齐全:标签号,MAC地址等等

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

MPLS存在的意义

  • 解决BGP的路由黑洞
  • MPLS VPN
  • MPLS TE 流量工程

另外:随着包交换的加速,使得今天的MPLS技术也开始基于FIB表工作,来提高MPLS的工作效率(FIB表允许存标签号,这就是LFIB表要和FIB合作的原因)

MPLS的工作过程

控制层面:路由协议工作,生成RIB,RIB再生成FIB表,流量的方向即为控制流量
数据层面:设备基于路由表访问目标,产生数据流量,与控制层面方向相反

控制层面工作过程

1.在没有MPLS时控制层面仅生成RIB(路由表)和FIB(转发信息数据库),FIB是基于RIB生成的
2.MPLS协议会启动TDP(Cisco)或LDP(公有),直连设备间建立邻居关系 (LDP要为FIB表中的每一条路由分配一个标签号,每一个目标网段分配一个标签号)
一篇带你精通MPLS,智能路由器,网络
这个LIB表是要上下传递的,只上下邻居传递

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

总结:MPLS协议需要在直连邻居间使用router-id地址来进行TCP会话,故前提条件为:router-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域的边缘,连接域外设备 (运行MPLS的第一台设备)
  • LSR(P):标签交换路由器,整体工作MPLS域内

3.当流量进入到第一台PE设备时,在没有特快交换之前,路由器基于目标IP地址查询本地的RIB;之后还要在LIB表中对应才能确定流量是否应该压入标签,需要两张表的查询;在存在特快交换时,流量进入第一台PE时,直接查询FIB表,若表中关联标签号,将直接确定是否压入标签;流量再到P路由器上,接收到的流量中若存在标签则基于LFIB表转发,若没有标签则基于FIB表转发即可;流量从最后一台边界离开MPLS域时将弹出标签

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

MPLS标签号

标签被压入2层3层之间,称为2.5层
一篇带你精通MPLS,智能路由器,网络
标签的格式:32位,4个字节
一篇带你精通MPLS,智能路由器,网络

  • 前20位为标签号,2^20个标签号;其中数值1-15为保留,用作特殊编号
  • 第21-23位exp,3位二进制,为优先级,用于QOS策略使用
  • 第24位为栈底位,该位为1标识该标签为最后一层标签;MPLS最大可以在一个数据包中封装3次标签,(普通的MPLS一层标签,MPLS VPN两层标签,MPLS TE三层标签)
  • TTL:生存时间,在第一次压入标签时,将当前数据包中的3层TTL复制到标签中,之后查询一次标签TTL减1,在最后一跳设备弹出标签时将2.5层的TTL复制到3层报头中

MPLS的次末跳

倒数第二跳 (默认执行)

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

一篇带你精通MPLS,智能路由器,网络

注:FIB表存储标签号,这就是FIB和LFIB合作的原因
一篇带你精通MPLS,智能路由器,网络
一篇带你精通MPLS,智能路由器,网络

一篇带你精通MPLS,智能路由器,网络
一篇带你精通MPLS,智能路由器,网络

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 g0/0/0
[R2-GigabitEthernet0/0/0]mpls    先开启mpls
[R2-GigabitEthernet0/0/1]mpls ldp  再激活LDP协议
当启动配置完成后,邻居间使用UDP报文组播收发hello包,之后基于hello包中的router-id地址进行TCP会话的建立
[R2]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会话再建立邻居关系,生成邻居表
[R2]display mpls ldp peer

再然后基于本地的FIB表,默认华为仅针对32位的主机路由生成标签号,存储于LIB表中,之后邻居间共享LIB表
[R2]display fib   查看FIB表
[R2]display mpls ldp lsp      查看LIB表,装载本地和邻居为各条路由分配的标签号

最后路由器将LIB和FIB集合,生成最佳路径的标签转发规则-LFIB表
[R2]display mpls lsp  查看LFIB表

注:默认华为仅针对32位主机路由分配标签
[R2]mpls
[R2-mpls]lsp-trigger all  开启功能,将针对FIB表中所有路由进行标签号的分配

[R2]tracert  -v  -a 2.2.2.2  56.1.1.2

一篇带你精通MPLS,智能路由器,网络
一篇带你精通MPLS,智能路由器,网络
一篇带你精通MPLS,智能路由器,网络

MPLS解决BGP的路由黑洞

MPLS协议并不会为通过BGP协议学习的路由条目分配标签号;
而是在访问这些BGP路由目标网段时,在流量中压入到达这些网段的BGP下一跳设备地址的标签号;

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

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

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

一篇带你精通MPLS,智能路由器,网络

MPLS VPN

  • CE将私有路由传递到PE端
  • PE端在收到不同CE端发送过来的相同网段路由时,使用RD值进行区分(格式 X:X 32位,16进制)
  • PE端将附上RD的私有路由且不能直接装载于本地公有路由表中,需要放置到对应的VRF(虚拟路由转发)空间内;之后再在路由上付RT值,用于传递到对端PE设备上,对端区分信息
  • VPNV4路由=普通IPV4路由+RD+RT
  • VPNV4路由需要MP-BGP来进行传递;对端基于RT值,将路由装载到对应的VRF空间内,再共享给对应的CE
  • 控制层面工作完成后,数据层面需要基于MPLS来工作,由于数据层面不能携带RD/RT值,故MPLS将在数据包中压入两层标签,外层标签用于穿越中间设备,打破BGP路由黑洞;内层标签用于对应VRF空间

一篇带你精通MPLS,智能路由器,网络
一篇带你精通MPLS,智能路由器,网络

MPLS VPN配置

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

[r2]ip vpn-instance a1  创建名为a1的VRF空间
[r2-vpn-instance-a1]ipv4-family     进入IPV4的配置模式下
[r2-vpn-instance-a1-af-ipv4]route-distinguisher 1:1  RD值
[r2-vpn-instance-a1-af-ipv4]vpn-target 1:1  RT值,必须和对端的PE值一致
[r2]interface g0/0/0     进入链接CE端的接口
[r2-GigabitEthernet0/0/0]ip binding vpn-instance a1  关联到VRF空间
[r2-GigabitEthernet0/0/0]ip address 192.168.2.2 24  配置私有IP地址
注:在关联到VRF空间前不能配置接口IP,否则该地址的直连路由将进入公有路由表
[r2]display ip routing-table vpn-instance a1  查看空间内的私有路由表
[r2]ping -vpn-instance a1 192.168.2.1   正常测试(不带-vpn-instance a1)将在公有路由表中查询记录,该命令为基于VRF空间a1进行路由查询

5.PE与PE间建立MP-BGP邻居关系

[r2]bgp 2
[r2-bgp]router-id 2.2.2.2    先和对端建立BGP邻居关系,可用于传递正常的公网路由
[r2-bgp]peer 4.4.4.4 as-number 2
[r2-bgp]peer 4.4.4.4 connect-interface loopback 0
[r2-bgp]peer 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邻居关系

6.CE端与PE端交互路由
如果是静态路由

CE端直接编写正常静态路由即可
PE端编写到VRF空间内的静态路由
[r2]ip route-static vpn-instance  a1  192.168.1.0 24 192.168.2.1

将本地VRF空间内的静态和直连路由重发布到BGP协议中,传递到对端的PE上
[r2]bgp 2
[r2-bgp]ipv4-family vpn-instance a1
[r2-bgp-a1]import-route direct
[r2-bgp-a1]import-route static

[r2]display bgp vpnv4 vpn-instance a1 routing-table  查看MP-BGP的BGP表

如果是动态路由

CE端正常启动OSPF即可
PE端,启动vpnv4专用的ospf协议
[r2]ospf 2 vpn-instance a1
[r2-ospf]area 0
[r2-ospf-2-area-0.0.0.0]network 192.168.3.1 0.0.0.0
之后使用双向重发布,实现路由共享
[r2]bgp 2
[r2-bgp]ipv4-family vpn-instance a1
[r2-bgp-a1]import-route ospf 2

[r2]ospf 2 vpn-instance a1
[r2-ospf-2]import-route bgp

[r2]display mpls lsp vpn-instance a1 查看双层标记的内层标签号
[r2]rip 1 vpn-instance a1
[r2-rip-1]version 2
[r2-rip-1]network 192.168.2.0

一篇带你精通MPLS,智能路由器,网络文章来源地址https://www.toymoban.com/news/detail-837168.html

bt下载

到了这里,关于一篇带你精通MPLS的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【数据结构】一篇带你彻底吃透 顺序表

    顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改等功能。 顺序表一般可以分为: 静态顺序表:使用定长数组存储元素。 动态顺序表:使用动态开辟的数组存储。 而现实的顺序表大多数采用动态

    2023年04月19日
    浏览(81)
  • 【Python】一篇带你掌握数据容器之列表

    目录 前言: 一、列表 1.列表的定义 2.列表的下标索引 3.列表的常用操作 (1)index方法:查找某元素的下标 (2)修改特定位置下标的元素 (3)insert(下标,元素)方法:插入元素 (4)append(元素)方法:追加元素1 (5)extend(其他数据容器)方法:追加元素2 (6)del(列表

    2024年02月05日
    浏览(53)
  • [Linux 基础] 一篇带你了解linux权限问题

    Linux下有两种用户:超级用户(root)、普通用户。 超级用户:可以再linux系统下做任何事情,不受限制 普通用户:在linux下做有限的事情。 超级用户的命令提示符是“#”,普通用户的命令提示符是“ $ ” 命令: su [用户名] 功能: 切换用户。 例如,要从root用户切换到普通用

    2024年02月08日
    浏览(48)
  • 【C语言】-- 一篇带你了解指针,内存,解引用

    目录 1、什么是指针? 1.1 内存 1.2 指针变量 二、指针和指针类型 1、指针类型 2、指针+整数 3、指针的解引用 三、野指针 1、野指针成因 (1) 指针未初始化 (2) 指针越界访问 (3) 指针指向的空间释放 2、如何规避野指针 四、指针运算 1、指针-指针        本篇文章我们来了解C语

    2024年02月16日
    浏览(58)
  • Linux - 一篇带你读懂 Curl Proxy 代理模式

    curl 是一个很有名的处理网络请求的 类Unix 工具。出于某种原因,我们进行网络请求,需要设置代理。本文讲全面介绍如何为 curl 设置代理 设置代理参数 基本用法 设置 HTTP 代理 下面两种设置代理的方式是可以的 由于代理地址的默认协议为  HTTP, 所以可以省略,按照下面的

    2024年02月05日
    浏览(69)
  • 【Mysql】一篇带你了解数据定义,操作和查询语言

    目录 数据定义语言DDL(Data Definition Language) 一.对数据库的操作 二.对数据表的操作 数据操作语言DML(Data Manipulation Language) 一.添加 insert into 二.删除  delete 三.修改  update 数据查询语言DQL(Data Query Language) 一.查询 select 二. 1.between ... and ...(在....之间) 2.in, exists

    2024年02月12日
    浏览(86)
  • C语言学习系列-->一篇带你看懂内存函数

    上篇文章学习了C语言字符串函数,只是对字符串进行操作 本节,小编整理了一下C语言中的内存函数,对内存进行操作,只针对会内存块,不针对数据 memcpy是对内存拷贝 拷贝的可能是字符串,也可能是整型数组 所以使用 void* 将source拷贝到destination,指定字节数为num code arr

    2024年02月09日
    浏览(49)
  • 智能路由器是什么以及智能路由器有什么作用和功能

    继智能手机、智能电视火爆之后,如今智能汽车、智能路由器又成为科技界关注的宠儿,如今华为、小米、极路由器、百度、360等业界巨头均纷纷推出了智能路由器。那么什么是智能路由器,其和普通路由器有哪些区别,其作用又是什么呢?这是近段时间不少朋友所思考的一

    2024年02月06日
    浏览(58)
  • [ C++ ] 一篇带你了解C++中隐藏的this指针

    本篇文章我们将一起讨论在有趣的知识点--隐藏的this指针。本篇我们要使用到之前我们所学习到的C++类与对象(1),如果有各位小伙伴还不曾了解类与对象的简单思想,可以访问上篇博客:[ C++ ] 带你一篇了解什么是OOP(面向对象编程),什么是封装? -- 类与对象(上) 目录 1.

    2024年02月07日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包