MPLS(多协议标签交换)基础

原始包交换

  • 包交换实际指定的是路由传递的过程,包指的是三层PDU:数据包。在路由传递的过程中,由于MAC地址只能在一个网段内表示某一主机,所以在传递过程中,源目MAC是不断变换的,而数据包的内容是一般不会被修改的,如下图中所描述的包交换的过程。
    在这里插入图片描述
  • 在包交换中当流量来到路由器上,需要查看两张表,路由表和ARP表,在过去,计算机硬件性能很差的时候,查看两张表就是非常浪费时间的事,而且路由表遵循递归查找的原则,一条路由可能需要反复递归查找多次才能找到出接口,所以为了提高转发效率,有人就提出了标签交换。

标签交换

  • 本地为路由条目添加一个数字标签,并创建一张表,记录标签所对应的出接口及二层封装,在传递路由时,在二层和三层之间打入这个数字标签,携带标签的数据的来到设备上,将先看到的是二层与三层之间的标签,然后依据本地记录标签的表进行转发。
    在这里插入图片描述

  • 因为标签本身短小且定长,所以在转发的效率高于原始包交换,但由与在标签交换的开头需要压入标签,末尾需要弹出标签,整体对包交换效率的提升并不明显,所以随着包交换的优化,标签交换更多的是用于其他方面,解决一些包交换无法解决的问题。

包交换的优化

  • 原始包交换:每个数据包来到设备都需要去基于目标IP查看路由表及ARP缓存表来进行转发。
  • 快速交换:也叫基于数据流的交换。在通信时,由于MTU的限制,一个数据包最大只有1500字节,所以在一次通信中,必定有很多个数据包,这些数据包称为数据流。而快速交换的原理就是转发在数据流的第一个数据包时查看路由表和ARP表,然后会将查看的结果缓存下来,后续的数据包就可依据缓存直接转发,就不需查看路由表和ARP表,一次路由,多次交换
  • 特快交换:最早是由思科提出的CEF技术,其他各个厂家也依据CEF的原理开发出了自己的技术。原理是将路由表中的递归结果和ARP表合成一张表:FIB表,里面记录着某条路由的出接口、下一跳及二层封装。并且FIB表是二进制储存,硬件可直接读取,大大提高了交换的速度,由于特快交换不需要查看路由表,也被称为无需路由,直接交换

MPLS

简介

MPLS(Multi-Protocol Label Switching),多协议标签交换,可以基于多种不同的3层协议来生成2.5层的标签信息。数据包在进入到的MPLS的域内后,将在第2层和3层中间压入标签号;使得域内的路由器在转发该数据包时,基于2.5层的标签号仅需要查询本地的标签转发信息数据库,最初在包交换仅支持原始交换时,标签的意义在于更快的查询;但随着包交换的加速,使用标签交换失去了快速查表的优势,所以如今的MPLS更多的是应用于:1.解决BGP的路由黑洞;2.MPLS VPN;3.MPLS TE(流量工程)。

标签报文格式

在这里插入图片描述

标签主要字段:
LABEL:20位,取值范围为0 - 2的20次方。我们把标签的取值范围称为标签空间,每台设备的标签空间是独立的。在标签空间中,0 - 15为特殊标签值,我们在分配时一般不用这些标签,因为他们具有特殊含义;16 - 1023一般用于静态LSP搭建使用;023 - 2的20次方为LDP等可以动态分配标签的协议使用的标签号的范围
EXP:占3位,主要做策略用的。一般情况下为 000 ,可以理解为优先级,数值越大,优先级越高,可以优先转发。
S:占1位,事实上,我们不止能压入一个标签,该位用来标识该标签为是否是最后一个标签,该位为1则代表是最后一个标签,为0,则代表还有后续标签需要处理。
TTL:在压入标签的时候,会将IP报文中的TTL值复制到标签中,没经过一台路由其转发就将其减1,最后弹出的时候在将标签的TTL值替换掉IP报文的TTL值,这样在无需三层报文依然可以起到防环的作用。

名词解释

在这里插入图片描述

  • MPLS域:所有运行MPLS设备组成的网络,我们可以称为是一个MPLS域
  • LSR:域中所有运行MPLS的设备都可以被称为LSR(标签交换路由器)。
  • FEC:等价转发类,简单理解就是目标网段相同的数据报文,一个FEC分配一个标签。
  • LIB表:标签信息表,每台路由器基于自己路由表中的路由条目生成标签存放在LIB表中,每个设备生成的标签是独立的。
  • LFIB表:标签信息转发表,是LIB表和FIB表结合的产物,随着包交换的加速,使得今天的MPLS技术也开始基于FIB表工作;来提高MPLS的工作效率,该表主要记录的就是标签编号和出接口及下一跳的对应关系。
  • LSP:标签交换路径,如上图中1.1.1.0/24网络访问2.2.2.0/24网段,R1-R2-R3-R4就是一个LSP,LSP是分方向的,如果需要实现数据的双向互通,则必须搭建两个方向的LSP才行。
  • Ingress LSR:入站LSR,上图中R1为进入MPLS域中的数据压入标签,所以,R1被我们称为入站LSR。
  • egress LSR:出站LSR,上图中R4为MPLS的边界,在数据离开MPLS域将标签弹出数据,所以,R2被称为出站LSR。
  • transit LSR:中转LSR,除了入站和出站LSR,其他LSR都是中转LSR。
  • PE:边界LSR,工作mpls域的边缘,连接域外设备,上图中的R1和R4。
  • P:标签交换路由器,在MPLS域内工作的LSR,上图中的R2和R3。

LDP:标签分发协议

  • MPLS中我们可以手工添加标签配置静态LSP,但由于静态LSP配置量大且当拓扑结构发生变化时,网络管理员需要手工修改,所以一般不适用静态配置,更多的时侯使用的是动态标签分发协议。
  • 动态标签分发协议主要有TDP和LDP,但由于TDP是思科私有协议,而LDP是公有协议,所以华为设备使用的是LDP。
  • LDP用于MPLS的控制层面,有分配标签传递标签的功能,LDP在生成标签和传递标签之前,需要先与邻居建立LDP会话。成功建立会话后,将该标签传递给邻居,本地会将自己生成的标签和邻居生成的标签都存放在LIB表中,再依据FIB表的最佳路径将自己生成的标签和有效的标签存放到LFIB表里。

LDP会话

  • LSR间交换标签的前提是LSR必须是LDP对等体关系,而建立对等体关系的前提是R3和R4之间必须建立LDP会话。LDP会话分两种:本地LDP会话、远程LDP会话。
  • 由于LDP会话是基于TCP建立的,可以通过手工指定的方式去远程建立LDP会话,非直连建邻。
  • LDP在进行本地LDP会话建立时,不需要手工指定,本地会周期性的发送组播hello包进行发现邻居。
本地LDP会话建立
  • 在接口激活LDP协议后,LSR的接口将开始周期发送hello报来发现LDP邻居。

Hello包采用UDP的646号端口进行通讯。源和目标都是646。Hello包中将携带自己的LDP ID传输地址等。
传输地址:默认使用的是–我们配置的LSR-ID。这个传输地址在后续将作为TCP会话建立的通讯地址,所以,在配置LSR-ID时,一定要保证该地址可用,且IGP要保证彼此地址间可达。
LDP ID:要求,所有激活LDP协议的设备都需要具有一个LDP ID。由48位二进制构成。一般构成方式LSR-ID:0,前32位为LSR ID,后16位位标签空间。

在这里插入图片描述

  • 双方收到彼此交互的hello包之后,获取到对方的传输地址,之后,基于传输地址,去建立TCP会话。为了避免重复建立TCP会话,LDP会选择传输地址大的一方作为主动方,主动发起TCP会话连接请求。
    在这里插入图片描述
  • 完成TCP会话建立之后,传输地址更大的一方将优先发送初始化报文,中将携带LDP相关的参数,对端收到后,将对这些参数进行检查,如果认可,则将发送自己的初始话报文,同时还会发送一个keeplive报文,代表确认收到的参数。对端收到初始化报文后,如果认可其中的参数,则也将反馈一个keeplive报文作为确认。双方都收到对端的keeplive报文后,则将代表LDP会话建立完成。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值