博客
关于我
MPLS多协议标签交换协议
阅读量:371 次
发布时间:2019-03-03

本文共 2521 字,大约阅读时间需要 8 分钟。

MPLS(多协议标签交换)技术文档

1.1 概念

1.1.1 MPLS出现的背景

MPLS(多协议标签交换)最初主要用于解决早期IP转发效率低下的问题,但在近年来因硬件ANSI等芯片的快速发展,MPLS的快速转发优势不再明显。目前主要用于解决路由黑洞和无法形成流量分担的问题。

1.1.2 工作原理

MPLS的工作原理主要包括以下几个步骤:

  • 生成标签转发表:通过控制平面运行LDP协议或其他动态标签分发协议,为网络中的路由器建立标签转发表。
  • 数据平面标签转发:当数据平面收到带有标签的报文时,根据标签查找标签转发表进行转发。
  • 1.1.3 使用场景

    MPLS在以下场景中得到广泛应用:

    • MPLS TE(流量工程):用于实现路径保护和资源分配。
    • MPLS VPN(虚拟专用网络):承担数据转发的核心作用。

    2. MPLS体系结构

    2.1 控制面路由选择与转发

    • 控制面:通过运行IGP(如OSPF)选择最优路由,更新IP转发表。
    • 数据面:根据IP转发表进行转发,直到遇到MPLS标签转发表。

    2.2 标签转发机制

    • LER(标签边缘路由器):负责压入和弹出标签。
    • LSR(标签交换路由器):主要负责标签的交换。

    2.3 LSP(标签交换路径)

    • 静态LSP:由管理员手动配置,需遵循上游节点出标签的值等于下游节点入标签的值。
    • 动态LSP:通过LDP、RSVP-TE、MP-BGP等协议动态配置。

    2.4 上游下游概念

    • 数据面:数据的源是上游,目的地是下游。
    • 控制面:下游通过LDP等协议向上游传递标签信息,上游根据标签信息生成标签转发表。

    2.5 标签操作类型

    • push:压入标签。
    • swap:替换标签。
    • pop:弹出标签。

    3. MPLS的封装格式

    3.1 MPLS报文格式

    • 封装在L2之上,L3之下
    • 类型值
      • 0x0800:IPV4。
      • 0x8847:MPLS单播报文。
      • 0x8848:MPLS多播报文。
      • 0x8021:P2P类型IPv4报文。
      • 0x8281:MPLS单播P2P报文。
      • 0x8283:MPLS多播P2P报文。

    3.2 报文头部字段

    • 标签长度(20位):标签总数为2^20。
      • 0-15:保留标签。
      • 16-1023:静态LSP和静态CR-LSP标签空间。
      • 1024-2^20:动态标签(如LDP、RSVP-TE、MP-BGP)。
    • EXP位(3位):用于QoS。
    • S位(1位):标识是否为最后一个标签。
    • TTL(8位):防止环路。

    4. MPLS的转发

    4.1 转发表结构

    • RIB(路由信息库):用于路由选路,下发最优路由到FIB。
    • FIB(转发信息库):指导数据转发,包含tunnel-id和token。
    • LIB(标签信息库):保存标签信息。
    • LFIB(标签转发信息库):指导标签转发。
    • NHLFE(下一跳标签转发表项):包含tunnel-id、出接口、下一跳和标签操作。
    • ILM(入标签映射):入标签与NHLFE的映射。
    • FTN(FEC到NHLFE):FEC到NHLFE的映射。

    4.2 转发流程

    • 进入MPLS域:检查FIB中的tunnel-id是否为0。

      • 若为0,进行正常IP转发。
      • 若不为0,进入MPLS转发流程。
    • Ingress节点

      • 查询FIB和NHLFE,指导标签转发。
      • 压入标签并处理EXP和TTL。
    • Transit节点

      • 查询ILM和NHLFE,指导标签转发。
      • 根据标签处理方式进行转发。
    • Egress节点

      • 查询ILM指导标签转发。
      • 处理EXP和TTL,根据s位判断是否弹出标签。

    5. 配置静态LSP

    • 静态LSP
      • Only ingress节点需要存在到达FEC目的地址的路由。
      • Tunnel ID不为0,进行MPLS转发。

    6. 动态LSP

    6.1 LDP标签分发协议

    • LDP支持TPC/UDP646端口
    • LDP只能为IGP分配标签,不能为BGP分配标签,MP-BGP可为BGP分配标签
    • LDP的标签管理
      • DU(下游自主):下游自主决定是否传递标签。
      • DOD(下游按需):上游请求下游标签,下游按需回复。
      • 标签控制模式
        • independent:独立标签控制。
        • ordered:有序标签控制。
      • 标签保留模式
        • conservative:保守保留模式。
        • liberal:自由保留模式。
      • 标签通告原则
        • 默认只为32位主机路由分配标签。
        • 设备产生标签和FEC映射会通告给所有LDP邻居。

    6.2 LDP的报文类型

    • 发现消息(Hello报文):用于发现LDP邻居。
    • 会话消息
      • Initialization报文:初始化LDP会话。
      • KeepAlive报文:维护LDP会话。
    • 通告消息
      • Label Mapping:宣告FEC和标签映射。
      • Label Request:请求FEC的标签映射。
    • 通知消息:用于报错和状态通知。

    6.3 LDP邻居状态机

    • 非存在状态:通过TCP连接初始化。
    • 初始化状态:选举主动方和被动方。
    • 操作状态:邻居关系建立成功。

    7. MPLS-VPN

    7.1 基本模型构成

    • CE(连接站点):连接用户的设备。
    • PE(运营商边缘设备):负责MPLS转发。
    • P(骨干设备):负责MPLS转发。
    • Site(用户站点):通过CE连接。

    7.2 控制面路由传递问题

    • 多个CE背后的site:通过VPN实例区分不同VPN路由。
    • 本端PE与对端PE:使用MP-BGP传递路由,通过VPN Target属性区分VPN路由。

    7.3 数据面转发问题

    • 路由黑洞问题:通过MPLS转发域解决。
    • BGP路由传播问题:通过VPN Target和RD属性区分不同VPN路由。

    7.4 CE-PE之间的路由协议

    • 多实例OSPF:通过区域划分和sham-link解决路由分辨问题。
    • BGP扩展团体属性:携带OSPF属性,确保路由正确传递。

    7.5 路由防环

    • Pseudolink(伪链路):通过配置sham-link解决低速链路问题。

    7.6 BGP路由黑洞

    • IBGP互联:通过MPLS转发域解决路由黑洞问题。
    • 物理接口IBGP:确保MPLS域覆盖所有路由。

    通过以上内容,可以全面了解MPLS技术的工作原理、配置与应用场景。

    转载地址:http://gxxm.baihongyu.com/

    你可能感兴趣的文章
    MySQL中DQL语言的执行顺序
    查看>>
    mysql中floor函数的作用是什么?
    查看>>
    MySQL中group by 与 order by 一起使用排序问题
    查看>>
    mysql中having的用法
    查看>>
    MySQL中interactive_timeout和wait_timeout的区别
    查看>>
    mysql中int、bigint、smallint 和 tinyint的区别、char和varchar的区别详细介绍
    查看>>
    mysql中json_extract的使用方法
    查看>>
    mysql中json_extract的使用方法
    查看>>
    mysql中kill掉所有锁表的进程
    查看>>
    mysql中like % %模糊查询
    查看>>
    MySql中mvcc学习记录
    查看>>
    mysql中null和空字符串的区别与问题!
    查看>>
    MySQL中ON DUPLICATE KEY UPDATE的介绍与使用、批量更新、存在即更新不存在则插入
    查看>>
    MYSQL中TINYINT的取值范围
    查看>>
    MySQL中UPDATE语句的神奇技巧,让你操作数据库如虎添翼!
    查看>>
    Mysql中varchar类型数字排序不对踩坑记录
    查看>>
    MySQL中一条SQL语句到底是如何执行的呢?
    查看>>
    MySQL中你必须知道的10件事,1.5万字!
    查看>>
    MySQL中使用IN()查询到底走不走索引?
    查看>>
    Mysql中使用存储过程插入decimal和时间数据递增的模拟数据
    查看>>