多协议标签交换(MPLS)是一种用于快速转发数据包的技术,它的出现就是为了提高转发效率。因为IP转发大多靠软件进行,在转发的每一跳都要进行至少一次最长匹配查找,操作复杂导致转发速度比较慢。有些厂商借鉴ATM的转发方式来简化IP转发过程,由此产生了一种结合IP和ATM的优势于一身的新技术—MPLS。在当时的条件下这可以说是一个很大的创举,其优势也是显而易见的,但后来IP转发领域有很多新技术产生,如硬件转发与网络处理器的出现,导致MPLS的速度优势体现不出来,纯MPLS转发在实际应用中几乎没有用武之地。

  虽然MPLS在实际转发应用中较少用到,但是由于其灵活可扩展,因此出现了许多基于MPLS的新技术,比如BGP/MPLS VPN、流量工程等技术。当前,MPLS越来越受重视,成为当今网络技术的热点,还有一些新的应用需求也正在利用MPLS来实现。

1 MPLS基础概念

  MPLS协议处于二层和三层之间,也就是MAC头和IP报文之间,是一个2.5层的协议。MPLS协议格式如下图所示:

(图片来自于:MPLS及LDP协议基础)

  • Label:标签值,20bit,用于转发数据。
  • Exp:流量等级,也成为TC,3bit。
  • S:标志位,表示栈底协议,1bit。
  • TTL:存活时间,8bit,与IP报文中的TTL值相似。

MPLS中的一些概念

  • FEC:转发等价类,MPLS将具有相同特征值(目的地址相同或服务等级相同)的报文归为一类。
  • 标签:本地意义的标识符,用于唯一标识一个报文所属的FEC,一个标签代表一个FEC。
  • LSP:标签转换路径,同一个FEC在MPLS网络经过的路径。
  • 标签转发表:与IP网络中的FIB(转发信息库)类似,称为LFIB,LFIB中的信息有InLabel(入标签)、OutLabel(出标签)、出接口、操作类型(Pop/Swap)、下一跳等。

  MPLS中有控制平面和转发平面,控制平面负责标签分配,EFC标签映射、标签转发表建立、LSP建立等,相关的协议LDP、MP-BGP等;转发平面根据LFIB进行报文的转发。

  MPLS网络的基本单元是LSR。LSP建立的过程就是标签和FEC的绑定,在LSR上建立LFIB的过程。LSP分为静态LSP和动态LSP,静态LSP就是手动配置LSP的出入标签、下一跳等,适合网络拓扑简单且稳定的小型网络;动态建立LSP就是基于LDP或者MP-BGP等协议建立的LSP,建立过程是:下游LSR根据目的地址划分FEC,为特定FEC分配标签,将FEC标签的绑定关系告知上游LSR,上游LSR根据绑定关系建立LFIB,报文转发路径上所有LSR都为该FEC建立转发表项后,就成功建立了转发FEC的LSP。

  基于MPLS的L2VPN将用户二层数据封装成可以在MPLS网络或IP网络中传输的分组,通过IP路径或MPLS隧道转发封装后的分组,从用户角度来看,MPLS或IP网络就是一个二层交换网络。

  一个MPLS报文可以有多个Label,靠近二层头的Label为栈顶Label,靠近IP报文的Label为栈底Label,LSR执行Label交换时总是基于栈顶Label。有多个Label时,每个Label都包括以上完整的32bit,并不是其它的Label只包括20bit的Label值,如下图所示:

(图片来自于:MPLS及LDP协议基础)

2 MPLS转发流程

  MPLS技术综合了第二层交换和第三层路由的功能,将第二层的快速交换和第三层的路由有机地结合起来。MPLS网络边缘的LER主要完成以下工作:三层路由、分析IP包头用于决定对应的FEC和标签交换路径(LSP),进而标记报文。而在MPLS网络核心的LSR采用基于标签的第二层交换,工作相对较简单。从这里就可以看出MPLS的好处,虽然处在MPLS网络边缘的LER工作较复杂,但处在核心的LSR只需要像FR或ATM交换机那样执行二层交换就可以了,根本不需要最长匹配和多次查找。

典型的MPLS转发过程如下:

  • Step 1: 所有LSR启用传统路由协议(OSPF、IS-IS等),在LSR中建立IP路由表
  • Step 2: 由LDP结合IP路由表来建立LSP
  • Step 3: Ingress LER接收IP包,分析IP包头并对应到FEC,然后给IP包加上标记,根据标签转发表中的LSP将已标记的报文送到相应的出接口。
  • Step 4:LSR收到带有标记的报文,将只分析标记头,不关注标记头之上的部分,根据Label头查找LSP,替换Label,送到相应的出接口
  • ……………..(中途转发过程与Step 4类似)
  • Step n-1:倒数第二跳LSR收到带有标记的报文,查找标记转发表,发现对应的出口标签为隐式空标签或显式空标签,弹出标签,发送IP报文到最后一跳LSR
  • Step n:在最后一跳Egress LER上执行三层路由功能,根据报文的目的IP地址转发

3 LDP协议基础

  LDP协议在[RFC 3036]中详细定义,LDP的协议报文除Hello报文基于UDP外,其它报文都是在TCP之上,端口号为646。当发生传输丢包时,能够利用TCP协议提供错误指示,实现快速响应和恢复。与BGP相似,这种基于TCP的可靠连接使得协议状态机较为简单。

LDP报文格式

LDP PDU 头部

版本号:16bit,目前LDP只有一个版本,版本号始终为1;

PDU长度:为16bit,值为LDP PDU头部以后的数据部分的长度,不包括LDP PDU头部;

LDP Id:长度为48bit,前32bit为LSR-ID,后16bit为标记空间标志,全局空间为“0”,局部接口空间为“1”。如:收到的LDP PDU中的LDP-ID为192.168.1.2:0,表示对方的LSR-ID为192.168.1.2,标签空间为全局空间。

LDP 消息格式

U:这一位总是为“0”,代表可识别的消息,为“1”代表不可识别的消息;

类型域:协议根据这个域识别不同的消息;

长度域:指示出长度域之后的数据部分的长度;

消息ID:用来唯一地标识这个消息,如果消息为Notification,则ID与导致产生Notification的消息ID相关联。

LDP消息种类

  按照功能来划分,LDP消息可分为4种类型消息:

  • 邻居发现消息:在启用LDP协议的接口上周期性发送该消息

    • Hello消息
  • 会话建立和维护消息:用来建立和维护LDP会话
    • Initialization消息
    • KeepAlive消息
  • 标签分发消息:用来请求、通告及撤销标签绑定
    • Address message
    • Address Withdraw message
    • Label request message
    • Label mapping message
    • Label withdraw message
    • Label release message
    • Label abort request message
  • 错误通知消息:用来提示LDP对等体在会话过程中的重要事件
    • Notification消息

LDP相关概念

标签空间

  可分为全局标签空间和接口标签空间,全局标签空间表示LSR为特定目的地的FEC产生唯一的Label,接口标签空间表示LSR在每个接口上为特定目的地的FEC产生唯一的Label。在帧模式的链路上为全局标签空间,在信元模式的链路上为接口标签空间。LDP报文中的LDP-ID域中指示出标签空间值。

上游LSR和下游LSR

  对于某FEC(图示中的IPv4前缀)来说,C是B的下游路由器,A是B的上游路由器

倒数第二条弹出

  在实际应用当中(如MPLS VPN),对于Egress LSR在弹出最外层Label后还需要进行其它较复杂的三层工作。而事实上最外层标签的作用在MPLS VPN的应用中只是为了将报文送到Egress LSR。因此,在倒数第二跳LSR已知报文下一跳的情况下,可以将最外层的标签弹出后转发到最后一跳LER,而不必进行标签替换。这样使得最后一跳LSR的工作相对简单了一些。因此在 [RFC 3032] 中规定,最后一跳LSR发给倒数第二跳LSR的标签为隐式空标签“3”。据此,收到标签“3”的上游LSR就知道自己是该FEC的倒数第二跳,就知道自己在用该LSP转发Label报文时,应执行倒数第二跳弹出。

(倒数第二跳弹出)

标签分发方式

1 DU(Downstream Unsolicited)

  下游LSR如果工作在DU方式(下游主动分发)下将根据某一触发策略向上游LDP邻居主动分发标签。下图中LSR-C标签分发触发策略是为直连32位掩码的路由分配标签,因此LSR-C通过Label mapping message向上游LDP邻居主动通告自己的直连路由172.16.1.1/32的标签,Comware系统缺省工作在DU方式。

2 DOD(Downstream On Demand)

  下游LSR如果工作在DOD方式(下游按需分发)下,只有在接收到上游LDP邻居的Label request message后才回应Label mapping message分发标签(针对标记请求消息所指定的FEC)。下图中LSR-C工作在DOD模式下,LSR-A的触发策略生效(LSR-A转发到172.16.1.0/24的报文流量达到设定阀值)后将向172.16.1.0/24的下游发送标记请求消息Label request message(请求172.16.1.0/24的标签)。最终LSR-C收到请求,发送Label mapping message响应。

标签控制协议

1 独立控制方式

  LSR如果工作在独立控制方式下,如果标签分发方式是DU,即使在没有获得下游标签的情况下也会直接向上游分发标签。在标签控制的方式上显得很“独立”,不依赖下游LSR;如果标签分发方式是DOD,发送标签请求的LSR的直连上游LSR会直接回应标签,而不必等待来自最终下游的标签。

  在上图中,在LSR-B上采用独立控制方式。LSR-B路由表中有172.16.1.0/24的路由,但没有收到下游来的标签绑定。由于LSR-B工作于独立控制方式,所以对路由表中的所有路由都向上游发送标签。继而,无论LSR-A工作在独立模式还是有序模式,将向上游继续发送标签。这时,如果有目的IP为172.16.1.0/24的报文进入LSR-A,它将采用MPLS转发。但数据到LSR-B后,由于没有关联172.16.1.0/24的LSP,所以采用传统IP转发。

2 有序控制方式(Odered)

  LSR如果工作在有序控制方式下,如果标签分发模式为DU,则只有收到下游LSR分发的标签时才会向自己的上游LSR通告标签,如果没有收到下游的标签映射则不向上游LSR通告。Comware系统缺省工作在有序方式。

  在上图中,LSR-B路由表中有172.16.1.0/24的路由,但由于LSR-B没有收到下游的标签且工作在有序模式,因而不向上游通告关于172.16.1.0/24的Label。如果LSR-A收到目的IP为172.16.1.0/24的报文将采用传统IP转发。可以看出,在有序控制方式下,是否向上游LSR分发标签取决于自己是否收到下游LSR的标签。

标签保留方式

1 自由保留方式

  收到无效的Label通告后(没有对应的IP路由或路由通告与Label通告的下一跳不一致),虽然不生成LSP,但在标签绑定表里存储,并且LSR向上游通告其它FEC的Label绑定时也不占用这些标签,这种方式的优点是LSR应对网络拓扑变化的响应较快,缺点是浪费标签,所有不能生成LSP的Label通告都需要保留。

  在上图中LSR-A工作于自由保留方式,对于FEC为172.16.1.0/24将生成下一跳为LSR-B的LSP,LSR-C发来的Label通告将保留。如LSR-A和LSR-B之间的直连链路down掉,对于FEC:172.16.1.0/24的将很快生成下一跳为LSR-C的LSP。

2 保守保留方式

  工作于保守保留模式的LSR收到无效的Label通告后将不存放到标签绑定表里,在向上游通告Label时可以自由使用这些标签。保守保留模式的缺点是对拓扑变化的响应较慢,优点是节省标签。

  在上图中,LSR-A工作于保守保留模式,对于FEC为172.16.1.0/24将生成下一跳为LSR-B的LSP,LSR-C发来的Label通告将不保留。如LSR-A和LSR-B之间的直连链路down掉,对于FEC:172.16.1.0/24将不能很快生成下一跳为LSR-C的LSP。

PS:最近杭州华三comware部门在大量招人,有意向者可发简历到luo.xiangnan@h3c.com,LZ不是HR,LZ可以帮内推,谢谢~

参考:

  1、MPLS及LDP协议基础

MPLS与LDP从入门到了解的更多相关文章

  1. 实验 MPLS LDP配置

    实验 MPLS LDP配置 一.学习目的 掌握启用和关闭MPLS的方法 掌握启用和关闭MPLS LDP配置方法 掌握使用MPLS LDP配置LSP的方法 二.拓扑图 三.场景 你是公司的网管员,公司的 ...

  2. mpls vpn剩余笔记

    将IP地址映射为简单的具有固定长度的标签 用于快速数据包交换 20 3 1 8 在整个转发过程中,交换节点仅根据标记进行转发 标签交换路径(LSP) 多协议标签交换MPLS最初是为了提高转发速度而提出 ...

  3. mpls vpn剩余笔记

    将IP地址映射为简单的具有固定长度的标签 用于快速数据包交换 20 3 1 8 在整个转发过程中,交换节点仅根据标记进行转发 标签交换路径(LSP) 多协议标签交换MPLS最初是为了提高转发速度而提出 ...

  4. CCNP路由实验之十二 MPLS

     个.第3个数据包„„同样的操作.包含查询路由表.重写MAC地址,CRC校验等. 系列路由器.或者12000系列路由器. Netflow switching 通过一种标准的交换机制,处理了流的第一 ...

  5. MPLS基础与工作原理

    MPLS Fundamental History of WAN Protocol 1970年代之前 第一个 WAN 用于将办公室与终端连接到大型机和小型计算机系统. 它是从办公室到数据中心的点对点连接 ...

  6. CCIE-MPLS基础篇-实验手册

    又一部前期JUSTECH(南京捷式泰)工程师职业发展系列丛书完整拷贝. MPLS(Multi-Protocol Label Switching) 目录 1:MPLS 基础实验.... 1.1实验拓扑. ...

  7. 32 (OC)* keyChain的本质

    1:它是一个sqlite数据库,其保存的所有数据都是加密过的. 2:Keychain是加密规则(key)的集合.每个规则必须含有以下三个要素:认证算法.认证密钥(加密字符串).规则的时间. 3:key ...

  8. MPLS LDP随堂笔记2

    前一天排错 Acl 1 匹配所有ospf的数据包 (目的 ospf建立邻居关系 传递路由条目) 2 放行UDP报文 让LDP邻居能互相收发HELLO包 4 放行TCP报文 让LDP邻居能够建立TCP会 ...

  9. MPLS LDP随堂笔记1

    LDP 的使用原因(对于不同协议来说) LDP的四大功能 发现邻居 hello 5s 15s 224.0.0.2 发现邻居关系 R1 UDP 646端口 R2 UDP 646端口 此时形成邻居 建立邻 ...

随机推荐

  1. MVC5 网站开发之六 管理员 2、添加、删除、重置密码、修改密码、列表浏览

    目录 奔跑吧,代码小哥! MVC5网站开发之一 总体概述 MVC5 网站开发之二 创建项目 MVC5 网站开发之三 数据存储层功能实现 MVC5 网站开发之四 业务逻辑层的架构和基本功能 MVC5 网 ...

  2. Android动画效果之初识Property Animation(属性动画)

    前言: 前面两篇介绍了Android的Tween Animation(补间动画) Android动画效果之Tween Animation(补间动画).Frame Animation(逐帧动画)Andr ...

  3. fullpage.js全屏滚动插件使用小结

    刚做好公司网站,通过全屏滚动,显著提高了官网的浏览体验.遂总结一下使用fullpage.js的方法.欢迎指正 一. fullpage.js简介 fullpage.js是一套实现浏览器全屏滚动的js插件 ...

  4. 全自动迁移数据库的实现 (Fluent NHibernate, Entity Framework Core)

    在开发涉及到数据库的程序时,常会遇到一开始设计的结构不能满足需求需要再添加新字段或新表的情况,这时就需要进行数据库迁移. 实现数据库迁移有很多种办法,从手动管理各个版本的ddl脚本,到实现自己的mig ...

  5. ldap部署相关,ldap双机\LAM配置管理\ldap备份还原

    前言 接之前我的文章,django+ldap+memcache实现单点登录+统一认证 就单点登录实现过程进行详细记录,ldap是一切的基础,可以把它理解成一个读强写弱的文件类型数据库,统一认证我们通过 ...

  6. [Asp.net 5] Caching-缓存架构与源码分析

    首先奉献caching的开源地址[微软源码] 1.工程架构 为了提高程序效率,我们经常将一些不频繁修改,但是使用了还很大的数据进行缓存.尤其是互联网产品,缓存可以说是提升效率优化第一利器.微软为我们实 ...

  7. 通过向页面写html代码导出excel

    //excel文件名 string filename = "考勤汇总"; StringBuilder ExcelHtml = new StringBuilder(); ExcelH ...

  8. 工作中常用的git命令

    一 常用Git命令 git clone:(区分SSH or HTTP) git init:初始化仓库 二 Git命令详解 Git Bash下,cd /c git clone,从远程Git版本库克隆一份 ...

  9. GJM: 设计模式 - 观察者模式

    GJM : 观察者模式 视频地址: http://www.imooc.com/learn/415 本课程通过一个天气预报的发布和订阅案例,来讲解观察者模式在Java项目中的应用.主要包括观察者模式的结 ...

  10. Ext JS 如何动态加载JavaScript创建窗体

    JavaScript不需要编译即可运行,这让JavaScript构建的应用程序可以变得很灵活.我们可以根据需要动态从服务器加载JavaScript脚本来创建和控制UI来与用户交互.下面结合Ext JS ...