admin 管理员组

文章数量: 887021

MPLS

ISO位于二层和三册之间,可认定为是2.5层

VPN/虚拟私有网络的分类:

  • 传统的VPN:
    • PPPoE
    • PPTP
    • L2TP
  • 站点之间的基于互联网的IPSec
  • MPLS VPN

传统IP的缺陷

  • 路由器逐跳转发,最长匹配查找
  • 传统IP流量工程切换,备份,转发的问题

术语定义

  • LER/Label Edge Router:处于MPLS域边缘的路由器,用于打标签和删除标签

  • LSR/Label Switch Router:处于MPLS域内,用于标签交换的路由器

  • LSP/Label Switch Path: MPLS生成的路径,是单向的

  • LDP/Label Distribution Protocol/标签分发协议: MPLS 体系中的一种主要协议。在 MPLS 网络中,两个标签交换路由器(LSR)必须用在它们之间或通过它们转发流量的标签上达成一致。[用UDP去发现邻居,TCP去建立邻居,目的端口号都为646]

  • ISP/Internet Service Provider/互联网服务提供商:指的是面向公众提供下列信息服务的经营者:

    • 一是接入服务,即帮助用户接入Internet
    • 二是导航服务,即帮助用户在Internet上找到所需要的信息
    • 三是信息服务,即建立数据服务系统,收集、加工、存储信息,定期维护更新,并通过网络向用户提供信息内容服务。
  • PE/Provider Edge:服务提供商骨干网的边缘路由器,它相当于标签边缘路由器(LER)。

  • CE/Customer Edge/用户边缘设备:是服务提供商所连接的用户端路由器。CE路由器通过连接一个或多个PE路由器,为用户提供服务接入。CE路由器通常是一台IP路由器,它与连接的PE路由器建立邻接关系。

  • P/Provider

标签的空间范围

  • 0-15:特殊标签
  • 16-1023:静态LSP和静态CR-LSP/Constraint-based Router Label Switch Path的共享的标签空间
  • 1024即以上:LSP,RSVP-TE,MP-BGP等动态信令协议的标签空间

MPLS 结构

  • 控制平面:负责产生和维护路由信息以及标签信息

    • 路由信息表/RIB/Routing Information Base:由IP路由协议(IP Routing Protocol)生成,用于选择路由
    • 标签分发协议/LDP/Label Distribution Protocol:负责标签的分配、标签转发信息表的建立、标签交换路径的建立、拆除等工作
    • 标签信息表/LIB/Label Information Base:由标签分发协议生成,用于管理标签信息
  • 转发平面:即数据平面(Data Plane),负责普通IP报文的转发以及带MPLS标签报文的转发

    • 转发信息表/FIB/Forwarding Information Base:从RIB提取必要的路由信息生成,负责普通IP报文的转发
    • 标签转发信息表/LFIB/Label Forwarding Information Base:简称标签转发表,由标签分发协议在LSR上建立LFIB,负责带MPLS标签报文的转发

MPLS帧模式封装

MPLS Header包含(总长度4byte):

  • 标签长度20bit
  • EXP/Expermental Use:3 bit,用于QoS
  • S/Bottom Of Stack:1 bit,用于区分标签嵌套的结束
  • TTL: 8bit,防止环路和数据无限转发

MPLS环路检测

  1. IGP的环路检测机制
  2. TTL环路检测
    1. 帧模式的MPLS中使用TTL
    2. 信源模式的MPLS中不使用TTL
  3. LDP环路检测机制
    1. 距离向量法
    2. 最大跳数法

基本MPLS配置

  • 必须有IGP或静态路由
  • mpls lsr-id x.x.x.x–配置标签交换路由器的ID,该地址必须在全局路由可达,否则无法发现、建立邻居或邻居不稳定
  • mpls–全局开启mpls
  • mpls ldp–全局开启mpls的ldp/标签分发协议
  • 接口上配置:mpls和mpls ldp
  • tracert lsp ip 44.1.1.1 32----用该命令测试LDP的配置

MPLS标签的转发/标签的行为

  • PUSH Label:存在于入口的PE;会根据FEC/转发等价类(一般意义上是一个前缀)压入一个标签
  • SWAP:存在于P;进行标签的交换
  • POP:移除/弹出一层标签

MPLS 对TTL的处理/TTL的繁衍

  1. 在进入MPLS域内的时候复制IP的TTL,即既有IP的TTL又有MPLS的TTL
  2. 在MPLS域内只对MPLS 的TTL进行计算
  3. 出MPLS域的时候,将MPLS的TTL复制到IP的TTL,并删除MPLS的TTL
  • 有时候需要关闭MPLS的TTL复制功能,如不希望边缘用户/CE知道PE内的具体信息
  • 建议在配置MPLS的时候也配置关闭TTL
  • 命令:在mpls视图下配置undo ppl propagate public

LDP

用来在LSR之间建立LDP Session 并交换Label/FEC映射信息的协议

用UDP去发现邻居,TCP去建立邻居,目的端口号都为646

LDP发现机制–hello

  • 基本发现机制:发现直接连接在同一链路上的LSR邻居,目的地址224.0.0.2(224网段的组播地址的TTL值都为1)
  • 扩展发现机制:发现非直连的LSR邻居,单播形式

LDP Session建立和维护----Initiation+KeepAlive

LDP的邻居状态:

基于平台的标签空间:

  • 如LDP ID 的11.1.1.1:0中的:0代表基于平台
  • 对一个前缀向所有的邻居发送相同的标签
  • 两个设备之间有多个运行LDP的链路,但是会话依旧只有一个
  • 只有出接口没有入接口

LDP的标签发布方式/Label Advertisement Mode

  • 下游自主方式/DU/Downstream Unsolicited:默认情况下的标签分发方式,对于一个特定的FEC,LSR无需从上游获得标签请求消息即进行标签分配与分发;华为设备默认情况下只针对32位的路由来分发标签(因此在配置接口IP时应该配置成32位的后缀)(思科设备是对所有的静态和igp路由分发标签);下游分配的标签供上游使用的
  • 下游按需方式/DoD/Downstream on Demand:需要上游请求,下游设备才会进行标签的分配与分发

LDP的标签分配方式/Label Distribution Control Mode

  • 定义:在LSP的建立过程中,LSR分配标签时采用的处理方式。
  • Independent/独立标签分配控制方式:本地LSR可以自主地分配一个标签绑定到某个FEC,并通告上游LSR,而无需等待下游的标签
  • Ordered/有序标签分配控制方式:默认的标签分配方式,对于LSR上某个FEC的标签映射,只有当该LSR已经具有此FEC下一跳的标签映射消息、或者该LSR就是此FEC的出节点时,该LSR才可以向上游发送此FEC的标签映射

LDP标签的保持方式/Label Retention Mode

  • 定义:对LSR收到的、但目前暂时不需要的标签映射的处理方式
  • Conservative/保守:对于从邻居LSR收到的标签映射,只有当邻居LSR是自己的下一跳才保留
  • Liberal/自由标签保持方式:默认的方式;对于从邻居LSR收到的标签映射,无论邻居LSR是不是自己的下一跳都保留,可以更快速地切换

LDP的一些调整:

  • local:默认的用mpls lsr-id 的地址来建立邻居
  • 用直连接口来作为transport地址:接口视图下配置 mpls ldp transport-address interface
  • 建立远端LDP会话:
    • mpls ldp remote-peer name
    • remote-ip x.x.x.x
    • 需要两端对指

PHP/次末跳弹出:

  • 原本在MPLS的最后一跳需要查找FIB和LFIB,而MPLS域内PE又多,会造成效率低,因此有了PHP

  • PHP:在倒数第二跳收到了来自末跳设备的特殊标签(3,即隐式空标签,默认行为;0,即显示空标签~用于QoS)

    • 显示空标签配置:mpls下配置label advertise explicit-null
    • 隐式空标签配置:mpls下配置label advertise implicit-null
  • 严格意义上不是只有最后一跳才做,任何设备都会做

LDP与IGP同步:

  • 产生背景:由于LDP的收敛速度依赖于IGP路由的收敛,即LDP的收敛速度比IGP的收敛速度慢,因此可能导致:
    • 当主链路发生故障时,IGP路由和LSP均切换到备份链路上。但当主链路从故障中恢复时,由于LDP的收敛速度低于IGP,IGP会先切换回主链路,因此会造成LSP流量损失
    • 当主链路IGP正常但主链路的LDP会话发生故障时,由于IGP仍在使用主链路而备份链路不存在IGP,导致LSP链路无法建立,造成LSP流量丢失
    • 当某节点发生主备倒置时,LDP会话的建立可能晚于IGP的GR/Graceful Restart结束,从而发布链路的最大开销值,造成路由震荡
  • 三个定时器:
    • Hold-down timer:用于抑制IGP邻居建立的时长
    • Hold-max-cost timer:用于控制通告接口链路的最大cost值的时长
    • Delay timer:用于控制等待LSP建立的时间

静态LSP

  • 产生背景:LDP是动态方式通告标签,一般情况下都使用LDP建立LSP,但若LDP协议出现问题,可能导致MPLS流量的丢失,因此对于某些关键数据或重要业务,通过配置静态LSP来确定传输路径

  • 特点:静态LSP需要通过手工配置来实现,不需要交互控制报文,资源消耗比较小,但通过静态方式建立的LSP不能根据网络topo变化动态调整,需要管理员预干涉,所以适用于topo简单且稳定的网络

  • 配置原则:

    • 上一节点的出标签等于下一节点的入标签
    • 范围是16~1023
    • 需要在Ingress/入口PE、Transit/传输P设备和Egress/出口PE上配置(因为LSP是单向的而数据包有来有回,因此在每个需要配置的设备上都需要配置双向)
  • 基本配置代码:

    • Ingress/入口PE的配置:

      • system-view视图下:
      • static-lsp ingress name destination IP-address mask nexthop IP-address out-label number
    • Transit/传输P设备的配置

      • system-view视图下:
      • static-lsp transit name incoming-interface g0/0/1 in-label number1 nexthop IP-address out-balel number2
    • Egress/出口PE的配置:

      • system-view视图下:
      • static-lsp egress 14 incoming-interface g0/0/2 in-label number

      ▲因为LSP是单向的,所以不要忘记建立双向的LSP

MPLS VPN

典型的具有两层标签:

  • 其中外层标签/公网标签是LDP分发的
  • 内层标签/VPN的标签/私网标签是MP-BGP协议(VPNV4)来自动分发的(每个VPNV4分配一条标签,仅出口PE了解内层标签,中间设备不关心内层标签)。

VRF/Virtual Route Forwarding/虚拟路由器转发:相当于把一个路由器划分成多个子虚拟路由器,不同的虚拟子路由器之间相互隔离(VRP,FIB等都隔离)

  • VPNv4的路由:96位的=64位的RD+32位的IP

  • 关键参数:

    • RD/route-distinguisher/路由区分符:64位长,必须拥有,建议RD是惟一的;目的是解决在PE和PE之间更新VPNv4路由的时候解决潜在的路由重叠问题
  • RT/route-target/路由目标:用来控制收发VPNv4的路由

  • 通常只在PE上配置

VPN实例/VPN Instance:即VPN路由转发表/VRF

  • 不同的VPN之间的路由表通过VRF实现
  • PE上存在多个路由转发表,包括一个公网/全局路由转发表,以及一个或多个VPN路由转发表
  • 一个VPN实例/Site可以拥有多个接口,但一个接口只能属于一个VPN实例

MP-BGP:

  • 多个PE之间需要全互联或者需要有RR
  • 采用不同的地址族来区分不同的网络层协议,以便正确处理VPN-IPv4路由
    • IPv4的单播
    • IPv4的VPNv4地址族
    • IPv4的vpn-instance的地址族
  • 在PE设备间更新什么内容:
    • 96位的VPNv4
    • 对应的内层标签
    • 其他属性(metric,ext-community等)
  • PE和CE的交互:
    • PE必会运行MP-BGP
    • 如果客户端是IDG协议则需要双向重分布
    • 如果客户端是静态路由,需要手工书写静态路由指向客户站点,然后重发布到BGP的vpn实例中
    • 如果客户也是BGP协议,需要在BGP的vpn实例中激活邻居

基本配置–PE端:

  • 1.配置SP内的IGP(OSPF,ISIS等),以确定路由可达
  • 2.配置LDP(具体命令见上),以为BGP配置更新源,确保外层的LSP是连续的
  • 3.ip vpn-instance Name —为每个客户配置vpn实例
    • router-distinguisher 100:1 --配置RD
    • vpn-target 100:14 export-extcommunity —配置RT的出方向
    • vpn-target 100:14 import-extcommunity —配置RT的入方向
  • 4.isis 1 vpn-instance Name --配置与CE相关的IGP,此处注意要绑定vpn实例,否则该ISIS为全局协议
    • is-level level-2
    • cost-style wide
    • network-entity 49.2525.0000.0000.0001.00
    • import-route bgp —bgp重分布到isis
  • 5.int g0/0/1 —用户祥光的接口绑定vpn实例
    • ip binding vpn-instance Name —在接口上绑定VPN实例
    • ip add 15.1.1.1 24 --配置IP地址,此时的IP地址不是全局范围的单播地址(若在绑定vpn实例之前配置了IP地址,可能会被删除)
    • isis enable —需要先绑定vpn实例后再绑定isis,否则会报错
  • 6.bgp 100 ----配置mp-bgp
    • peer 11.1.1.1 as-number 100
    • peer 11.1.1.1 connect-interface loopback0
    • ipv4-family unicast
      • undo synchronization
      • undo peer 11.1.1.1 enable --关闭默认的单播邻居,该设备不需要承载默认的IPv4单播路由
    • ipv4-family vpnv4
      • policy-target —对收到的VPN路由或者标签进行VPN-Target过滤,是系统的默认命令
      • peer 11.1.1.1 enable --配置使能vpnv4邻居
    • ipv4-family vpn-instance Name
      • network 15.1.1.0 24 --宣告网段
      • import-route isis 1 —isis重分布到bgp
  • 7.测试
    • ping -vpn-instance Name 15.1.1.5 ----若要ping测试,需要加“-vpn-instance”内容
    • tracert lsp ip 44.1.1.1 32----用该命令测试LDP的配置
    • display bgp vpnv4 vpn-instance Name routing-table
    • display ip routing-table vpn-instance Name

MPLS VPN和OSPF:

  • 存在的问题:在MPLS VPN的场景下的OSPF,改变了框架,PE设备成为ABR。MPLS区域被认为是超级区域0,所以得到了区域间的路由/inter-area[会造成问题,如若两个CE之间存在直连的低速备份链路,那么路由就不会走MPLS域而是走直连的备份链路]
  • 解决方法:还原MPLS环境下的OSPF的LSA的技术:sham-link
    • 在PE设备上运行
    • 1.int loop 10 —新建一个虚拟接口
      • ip binding vpn-instance Name --绑定vpn实例
      • ip address 10.10.10.10 32 --必须是32位的
    • 2.bgp 100
      • ipv4-family vpn-instance Name
        • network 10.10.10.10 32 --宣告loop 10
    • 3.ospf 1 —在ospf中建立sham-link.默认的cost为1,不要没事干修改cost否则可能被备份低速链路抢先
      • area 0
        • shame link 10.10.10.10 destin-ip/40.40.40.40

MPLS VPN和BGP:

  • 问题:因为同一个CE/vpn实例若运行的是BGP协议,那么他们的AS号就会配置成相同,在CE1通过MPLS传递给CE2的时候,因为AS_Path的放环机制,会丢弃传递过来的路由
  • 解决方法1:PE设备改写AS_Path
    • bgp 100
      • ipv4-family vpn-instance Name
        • peer 15.1.1.5 substitute-as --核心命令,配置CE的AS号为自己的AS号(即若原来是 100 64241该命令后AS会被改为100 100)
  • 解决方法2:配置SoO/Set of Origin:不常见

QinQ/dot1Q in dot1Q

描述:类似于MPLS VPN(L3 VPN),该为L2 VPN,也存在两层标签(私网+公网),封装双层VLAN Tag

优点:

  • 解决日益紧缺的公网VLAN ID资源问题(原本只有4096个Vlan可供使用,该技术将可使用的Vlan扩展到4096*4096个)
  • 用户可以规划自己的私网VLAN ID
  • 提供一种较为简单的二层VPN解决方法
  • 使用户网络具有较高的独立性

数据转发流程:

QinQ的类型:

  • 基于端口的QinQ
  • 灵活QinQ:相对于基于端口的QinQ,灵活QinQ可以根据如报文的外层Vlan及802.1P来选择加入或不加入S-Vlan tag,并且S-Vlan tag可配置

基本配置:

  • 基于端口的QinQ:
    • 在PE的与CE相连接的接口视图下配置
      • port link-type dot1q-tunnel —开启QinQ
      • port default vlan 3 —配置外层tag

本文标签: 笔记 routing HCIP amp IENP