zoukankan      html  css  js  c++  java
  • MPLS 原理详解

    在学习MPLS之前,应该知道MPLS有两种工作模式。

    1, 帧模式-->在第三层分组头(如IP分组头)前加入标签进行转发。

    2, 信元模式.--->在ATM LSR组成的MPLS网络中,在控制平面使用MPLS交换VPI/VCI的信息,而不是采用ATM信令进行转发.

    点击浏览下一页

    1, 转发等价类。FEC

    如果入口路由器收到分组都到达同一子网的,则这些分组就属于同一类。这是依据FIB中的最长匹配查找决定的。例如,假设在FIB表中有一项目的地址为1.1.1.0/24,下一跳是2.2.2.2.如果我收到了两个IP地址分别是1.1.1.1和1.1.1.2的分组,这两个分组都会转发给同样的下一条,2.2.2.2,那么这个时候这两个报文就属于同一个FEC.

    点击浏览下一页

    这里可以看到,对于到6.1.1.0/24网段,不管后面的主机位,所分发的标签,20,都是一样的,实际上是由下游路由器对本端的outgoing label分发的20,都是一样的。所以6.1.1.0就是一个等价转发类。

    这个和IP层面的路由表是一样的。

    对于IP层面,到相同的目的,走一样的路由。

    对于MPLS层面,到相同的目的,分发相同的标签,那就是一样的走相同的路径。

    2, 标签交换.

    标签交换有三个过程:

    ■根据入标签进行查找

    ■找到分组的出接口和出标签.

    ■进行标签交换,然后再出接口发送分组.

    MPLS体系结构被分为两个独立的单元:控制平面和转发转发,如下图所示:

    点击浏览下一页

    这里先来说一下控制平面。

    ■IGP--和在只有IP的网络中的用途相同。如果mpls网络使用了流量工程,IGP会作为链路状态协议,可以是OSPF或者是IS-IS.

    ■标签分配协议. 有三种协议可以分配标签。

    cisco TDP (private protocol)

    LDP (standard protocol regarding the RFC)

    RSVP 资源预留协议,专门为TE 工作的。

    关于转发,传统的IP与MPLS网络转发有什么不同呢?

    ■IP转发是基于目的的IP地址和FIB的。

    ■MPLS转发是基于MPLS标签和标签转发信息库(LFIB)的。

    ■MPLS转发和IP转发都是逐跳转发的,IP转发在每一跳都对分组进行识别分类,而MPLS转发只在入口路由器进行分类,类分号了,就通过FEC进行转发.

    PS:如果不使用流量工程TE,那么所有的IGP路由协议都可以使用。但是为了将来的扩展使用,最好使用OSPF或者ISIS来作为IGP,因为MPLS TE只能支持这两种IGP类型。具体原因以后再做详解.

    点击浏览下一页

    假如说流量是从PE-1 R2到R6的环回10.1.1.2.

    那么这个时候控制平面和转发平面的方向是完全相反的。

    在R2上面show mpls forwarding-table,从R3到本地分发的标签是18,从R5到R3分发的标签是16, R6没有向R5分发标签,因为R5转发数据报文的时候利用次末节点弹出机制,将标签弹出了,这样R6负责的就是纯IP转发了。

    在R2上面:

    点击浏览下一页

    在R3上面:

    点击浏览下一页

    在R5上面:

    点击浏览下一页

    所以这里可以看出,转发层面是从左到右,控制层面的标签分发是从右到左的.

    在MPLS转发表中,分为ilm和ftn.

    分别是MPLS to MPLS和MPLS to IP.

    标签发布的时候,实际发布的内容是标签,IP前缀和掩码长度,这个过程称为标签发布。

    下面就来说明一下,标签,是如何发布的。

    0-15是保留的标签。

    0-IPv4显式空标签。

    1-路由器警告标签。

    2-IPv6显式空标签

    3-隐式空标签。

    合法的标签范围是从16开始到2的20次方-1.

    即16--1048575.都是合法的标签。

    local 的标签是我发给上游路由器的标签。而,outgoing label的标签是下游路由器发给我的标签。

    所以转发平面如果是从左到右的话,那么控制平面的标签分发就是反的,是从右往左来进行标签的分发的。

    下面有一个例子,

    点击浏览下一页

    这里如果在R3上面查看mpls 的转发表到10.1.1.2的话。

    点击浏览下一页

    这里可以看到。outgoing是16,那么实际上是R5的local应该是16,是R5发给R3的16.

    对于R3上面的18,local,应该是R2的出标签。

    也就是说。R5上面的local是16,R2上面对应10.1.1.2的出标签应该是18.

    R3:

    点击浏览下一页

    对了,R5的local是16,分发给R3.

    在R2上面:

    点击浏览下一页

    R2上面的出outgoing是18.这样就符合标签分发的原理了。

    本文出自 “hank--我,只关注原理” 博客,请务必保留此出处http://361531.blog.51cto.com/351531/646548

  • 相关阅读:
    清空DB
    C#生成PDF
    C#程序打包发布
    用C#实现生成PDF文档的方法
    SCOPE_IDENTITY、IDENT_CURRENT 和 @@IDENTITY的比较
    如何在DataGridView中实现下拉列表可变的联动
    TreeList控件实现数据过滤功能
    SQL函数大全
    远程链接调用sql脚本
    gb2312简繁转换js兼容各种浏览器
  • 原文地址:https://www.cnblogs.com/yechuan/p/2452623.html
Copyright © 2011-2022 走看看