文章目录
- 目录
文章目录前言一.MPLS概述二.标签交换传统IP网络缺陷MPLS优点标签交换概述 MPLS中标签转发原理:总结
前言
BGP文章中,解决路由黑洞的方法提到解决办法是MPLS,前文未做过多赘述,本篇文章就来详细了解一下MPLS。
一.MPLS概述
MPLS(Multiprotocol Label Switching,多协议标签交换)是一种基于标签的交换技术,可以在高速 IP 网络中实现数据转发、质量保证和虚拟专用网络(VPN)等功能。
二.MPLS基础知识
传统IP网络缺陷
1.查表效率低
当路由器进行转发数据时,会先查询本地的路由表,当路由表中有多条到达某一网段的路由信息时,路由表将执行最长匹配原则(将所有路由信息遍历一次,最终选择掩码长度最长的一条路由信息),因此效率低。
路由器存在递归查找原则,例如,假设路由器需要将数据包发送到目标地址192.168.1.1,路由表中没有该地址的匹配项,但有一项下一跳地址为192.168.2.1的路由项。路由器会根据该路由项继续查找,将数据包转发到192.168.2.1的接口,并在下一跳路由器中继续进行递归查找,直到找到匹配项或无法继续递归查找。因此效率低。
在整个包交换的过程中,需要查询路由表之后再查看ARP缓存表来完成转发过程,因此效率低。
2.流量控制困难
网络A和网络B去往网络C的流量,到达SWB,查路由表后,走路径SWB-SWC-SWD,因为这条路径跳数更少,带宽更大,所有路径都走上面的路径。路径SWB-SWG-SWH-SWD完全空闲不用,造成资源浪费,也可以通过路由策略控制流量走下面的路径,但是需要对具体的流量进行控制,不灵活。
MPLS优点
1.查表速度快
SWB左边是G0/0/1口,右边是G0/0/2口。
SWB的标签表
G0/0/1 | 1024 | G0/0/2 | 1029 |
G0/0/1 | 1025 | G0/0/2 | 1229 |
MPLS协议处在IP头部前面。每个设备都有一个标签转发表 ,标签转发表包括入端口,入标签以及对应端口的出标签,出端口。例如,SWB从G0/0/1收到一个带1024的报文,对应的出端口是G0/0/2,出标签是1029。和查路由表相比,查标签最大的优点就是唯一匹配,从而大大提高查表效率。
2.流量控制简单
MPLS RSVP-TE 技术可以将流量自动的分配到各个路径,不需要手动指定具体流量的转发路径 ,如上图,网络A,B去网络C的流量,70%走上面,30%走下面路径,该比例可调整。
标签交换概述
MPLS(Multiprotocol Label Switching)中的标签交换是基于一个可定向和可操控的标识符(标签)来实现数据包转发的一种技术。标签是一个短的固定长度的标识符,它被插入到每个数据包中,代表了一条特定的转发路径。MPLS交换机(也称为标签交换路由器)在接收到数据包时,根据标签将数据包转发到指定的下一跳路由器,而不是根据数据包中的的源和目的地址进行转发。
通过标签交换的方式,MPLS网络可以提供高效的数据传输和可靠的服务质量,使得网络运营商和企业用户能够更好地管理和控制网络传输。
MPLS转发原理概述
- 当一个数据包进入MPLS网络时,MPLS交换机会在二层和三层之间封装一个和路由条目存在映射关系的标签,并将该标签插入到以太网头部和IP头部之间 。
- 标签的分配是基于数据包的目的地址,在MPLS网络中设定一条标签转发路径,用于将数据包转发到目的地址。
- 当一个MPLS交换机接收到带有标签的数据包时,它会根据标签来决定如何转发该数据包。MPLS交换机会查找一个标签表(也称为标签信息表),该表记录了所有标签与其相应的标签链路接口。
- 根据标签对应的标签链路接口,MPLS交换机将数据包转发到该链路接口的下一跳MPLS交换机。
- 在数据包传输过程中,中间的MPLS交换机只需要根据标签来进行转发处理,而不需要重新解析IP地址。这样可以大大提高了数据包的传输速度和网络的效率。
- 在MPLS网络中,标签是由源节点和目的节点约定的,并在MPLS网络中保持不变,直到数据包到达目的节点。
三.MPLS拓展
拓展基础
上图中,由所有运行标签交换的路由器(称为LSR)组成的转发网络,称为一个MPLS网络,也称为MPLS域.。
MPLS会根据数据包的目的地址确定具有相同路由策略的数据包(称为FEC:等价转发类)并为FEC分配一个唯一标签,从而有效地减少了标签的数量。这不仅可以提高转发性能,还可以节省带宽和降低网络成本。
每台LSR会将自己的标签和FEC的映射信息记录LIB(标签信息表)中。LIB表与FIB表(MPLS路由表)可以结合为一张新表LFIB表(包含了标签与相应的出接口信息),上述MPLS优点中提到的MPLS标签表即为LFIB表。
- FIB表:它与路由表类似,但是FIB表仅包含转发信息。用于存储MPLS网络中的转发信息。它记录了到达一个特定目的地的最佳路径,并且在数据包到来时,可以快速地查找该数据包应该经过哪些路由器转发。
- LIB表:在MPLS网络中,每个路由器会有一个LIB表,用于存储当前路由器已经学习到的标签信息当一个数据包到达一个路由器时,该路由器会查找自己的LIB表,以确定该数据包应该如何转发。如果该路由器已经学习到了该数据包对应的MPLS标签,那么它会根据LIB表中的下一跳和出接口信息,将数据包转发给下一跳路由器。
MPLS中标签转发原理拓展:
- 控制层转发原理
LSR设备基于本地FEC生成本地标签(R2本地标签为1029),再通过静态或动态获取MPLS域中其它LSR的本地标签,接着生成LIB表,最后结合FIB表生成LIFB表。
- 数据层转发原理
当数据包需要访问2.2.2.0网段来到R1(称为入站LSR :MPLS域边界设备)后,R1会在数据包的IP头部之前压入R2的标签1029,当数据包来到R2之后,R2会根据MPLS转发原理,根据标签查找LFIB表,当数据包从R2(称为中转LSR)端口发往R3时,会给重新换成R3的本地标签。当数据包来到R4(出站LSR)时,R4会在出端口将数据包的标签剥离,然后根据路由表正常转发。以上从R1-R2-R3-R4的路径称为LSP(标签交换路径)(单向路径)
四.MPLS报文详解
1.标签位置又称标签空间,标签空间定义为标签号的取值范围(0-2^20),每台LSR设备的标签空间都是独立的。
标签分类
0-15 | 特殊标签值,不可直接分配 |
16-1023 | 用于静态LSP搭建 |
1024-2^20 | 用于LDP等动态标签交换协议使用 |
2.EXP:MPLS优先级,优先级高可以优先转发。
3.S:栈底标识:当数据包中存在多个标签时,为了方便截取标签,当S=0时,标识该标签非栈底,S=1表示该标签为栈底标签
4.TTL:防止环路,和IP的TTL值相同,用法一致。入站时复制IP的TTL值,出站时将本地的TTL值复制给IP。
五.配置命令
#构建静态LSP:静态LSP只需要边界设备知道对方的路由信息即可,因此只需要在边界LSR设备上配置静态IP
[R1]ip route-static 4.4.4.0 24 12.0.0.2
[r4]ip route-static 1.1.1.0 24 34.0.0.1
#配置入站LSR
#配置LSR ID:使用环回接口的IP
[R1]mpls lsr-id 1.1.1.1
#激活MPLS
#首先全局激活
[R1]mpls
#接着进行接口激活:激活MPLS域中所有LSR设备用于MPLS数据收发的接口
[R1-GigabitEthernet0/0/0]mpls
#构建静态的LSP:egress:出站LSR ingress:入站LSR transit:中转LSR
[R1]static-lsp ingress 1to4(1to4给LSP路径起名) destination 4.4.4.0 24 nexthop 12.0.0.2 out-label 1000(出站标签)
#配置中转LSR
[R2]mpls lsr-id 2.2.2.2
[R2]mpls
[R2-mpls]int g 0/0/0
[R2-GigabitEthernet0/0/0]mpls
[R2-GigabitEthernet0/0/0]int g 0/0/1
[R2-GigabitEthernet0/0/1]mpls
[R2]static-lsp transit 1to4 incoming-interface(出站接口) g 0/0/0 in-label 1000(需要和上一台设备的出站标签相同) nexthop 23.0.0.2 out-label 1001
#出站LSR配置
[r4]mpls lsr-id 4.4.4.4
[r4]mpls
[r4-mpls]int g 0/0/0
[r4-GigabitEthernet0/0/0]mpls
[r4]static-lsp egress 1to4 incoming-interface g 0/0/0 in-label 1002
LSP链路具有单向导通性,因此双方需要正常通信,需要构建第二条LSP链路
[r4]static-lsp ingress 4to1 destination 1.1.1.0 24 nexthop 34.0.0.1 out-label 10
10
[R3]static-lsp transit 4to1 incoming-interface g 0/0/1 in-label 1010 nexthop 23.
0.0.1 out-label 1011
[R2]static-lsp transit 4to1 incoming-interface g 0/0/1 in-label 1011 nexthop 12.
0.0.1 out-label 1012
[R1]static-lsp egress 4to1 incoming-interface g 0/0/0 in-label 1012
#查看LIFB转发表
[R1]display mpls static-lsp
[R1]dis fib
#测试时使用ping -a 1.1.1.1 4.4.4.4 指定路径测试,否则ping不通
- 入站LSR LFIB转发表
- 入站LSR FIB转发表
注:FIB 表中会针对标签交换的网段将Tunnel ID 改为0X1,其余都为0X0,借此来指引LSR设备将数据包(目标IP为4.4.4.0/24)通过MPLS转发,指引设备查看FIB表。
- 中转LSR LFIB转发表
R2
R3
- 出站LSR FIB转发表
- 出站LSR LFIB转发表