MPLS.flv

1.三层设备转发数据包有哪些表项?RIB表与FIB表有什么差别?转发的时候查什么表?为什么查FIB表?LIB表与LFIB表什么差别?数据包转发过程中,设备角色可以分为哪些?各自有什么差别?LSR和LER什么意思?进行的动作是什么?入接点查什么表?可以得到什么结果?NHLFE这张表有什么内容?ILM表呢?Tnunnel ID有什么用?中间设备手动数据包查什么表?设备依据什么判定数据包有没有带标签?依据什么判定接下来进行IP转发还是MPLS转发?NHLFE这张表里的下一跳有什么用?只有出接口没有下一跳行不行?为什么?

  • RIB、FIB、LIB、LFIB
  • 通过RIB表进行转发需要进行一次迭代出下一跳地址,而FIB表中直接存在下一跳地址,可以快速转发。
  • 转发时查FIB表
  • 因为FIB表中存在迭代后的下一跳,省去了RIB表中的迭代过程,可以快速转发。
  • LIB表为标签表,记录了不同的前缀对应分配的标签,而LFIB表负责标签的交换负责标签路由的快速转发
  • 分为LER、LSR
  • LER为标签边界路由器作为MPLS域边缘设备,LSR为标签交换路由器作为MPLS域标签传输节点
  • 进入LER设备动作为push,进入LSR设备为switch/PHP
  • 入接点首先查FIB表查看Tunnel ID是否为0,不为0则进入MPLS转发,再去查LFIB表(NHLFE)
  • 可以得到Tunnel ID,出标签,标签动作,出接口,下一跳
  • ILM=Tunnel ID、入标签、入接口、标签动作
  • Tunnel ID表示流量需要通过什么转发
  • 设备通过二层上标识的上层字段来知道有没有带标签,当标识为0x8847时上层是MPLS,0x0800是IP
  • 当Tunnel ID不为0的时候进行MPLS转发
  • 下一跳用于进行数据包的封装,如果不知道下一跳则无法封装二层地址
  • 只有出接口无法封装报文进行转发

2.MPLS的报文长什么样?每个字段什么意思?lable取值范围多少?哪些是保留的?哪些是静态的?哪些是动态的?0号标签和3号标签叫啥名字?有啥特殊的?有什么作用?PHP什么意思?画图解释清楚?静态的配置命令是怎么样的?动态标签的分发协议有哪些?

  • lable - EXP - S - TTL
  • lable表示我们的标签,EXP用于QOS,S表示栈底标签,TTL用于防环
  • 0-15 16-1023 1024及以上
  • 0-15为保留的
  • 16-1023是静态的
  • 1024以上是用于动态分配的
  • 显式空标签、隐式空标签
  • 用于最后一跳弹出标签,可以减少出节点的查表次数,省去了先查LFIB过程。
  • PHP表示最后一跳弹出,可以在离出节点最后一跳时剥离标签,进行IP转发。
  • static-lsp ingress lsp名字 目标网段 下一跳 出接口 标签 transit为static-lsp transit name 入接口 入标签 下一跳 出接口 出标签 egress为入接口 入标签。
  • LDP、RSVP、MBGP

3.LSP是什么意思?FEC是什么意思?LSP的建立方式?LDP的工作过程可以分为几个阶段?每个阶段干什么用的?配置MPLS的时候要先配置啥?MPLS LSR-ID必须为本设备的接口IP吗?发现对端设备存在用什么报文?哪一层的报文?目的地址多少?多久发一次?携带什么信息?为什么发现阶段不采用TCP?TCP建立的时候谁向谁发起?怎么判定?三次握手的端口号是多少?TCP建立完成发什么报文?各自的作用是什么?有Hello包为何还需要keepalive?通知阶段干什么?发什么消息?各自的作用什么?标签分发方式有哪些?各自什么意思?标签的发布控制有哪些?各自什么意思?标签的保持方式有哪哪些?各自什么意思?默认的又有哪些?

  • 标签交换路径
  • 转发等价类,一组目的地址相同的报文。
  • 静态、动态
  • 发现阶段(Hello)、会话建立与维护阶段(TCP会话)、LSP建立与维护阶段(通告)、会话撤销(通知)
  • 发现阶段用于建立LDP的邻居,发送的Hello报文中包括LSR ID向组播地址224.0.0.2发送用于建立LDP邻居,会话建立阶段处理TCP建立过程,由主动端发起TCP连接,并且发送inti报文,由被动方发送init报文和keepalive报文,这两个报文在一个报文中发送,LSP建立过程发送FEC/Lable字段携带标签信息。
  • 配置LSR ID
  • 必须是本设备的接口IP,也可以是loopback接口IP
  • 组播发送Hello报文
  • 应用层报文
  • 224.0.0.2
  • 5S发送一次
  • 携带了LSR ID
  • 因为发现阶段用TCP需要进行三次握手和单播发送,消耗大量资源
  • 由Transitport address地址大的建立
  • 646
  • 发送init报文和Keepalive报文
  • 维持TCP的连接
  • 通告阶段负责发送address message和FEC/Lable,这个阶段是负责通知转发地址和转发等价类的标签
  • 下游自主、下游按需
  • 下游自主是下游主动为上游分配标签,无需上游设备请求,下游按需是收到上游发送的请求消息后才会为其分配标签
  • 独立、有序
  • 独立的标签分发方式是在采用下游按需的时候收到上游的标签请求后会立即为其分配标签,而在下游自主模式中只要有对应的FEC就会为其分配标签并为其邻居分发。有序的分发方式加上下游按需需要在收到FEC的下一跳发来的标签才可以为其上游分发标签,所以当上游发来针对一条FEC的请求标签时,下游设备也会相应的向上游发起请求,当收到该FEC的下一跳发来的标签后慢慢向上游建立LSP。有序加下游自主方式是由下游设备主动分发FEC对应的标签,逐渐向上游建立LSP。
  • 保守、自由
  • 保守模式指的是当收到多个LDP邻居为一个FEC分配标签时,只保留该路由的下一跳为其分配的标签,下游自主模式收到多个丢弃非下一跳分配的,下游按需的话则只向该路由下一跳请求标签。当模式为自由模式时搭配下游自主时,会收所有LDP Peer发来的标签映射消息,当模式为自由模式加下游按需时,会向所有LDP peer发送标签请求消息。
  • 华为默认的模式是DU+有序+自由

4.OSPF建立邻居和LDP建立邻居差别?OSPF发现邻居依靠什么报文?哪一层的报文?LDP发现邻居依靠什么报文?哪一层的报文?OSPF和LDP分别用什么来标识邻居的?必须是IP地址呢?为什么?OSPF建立邻居依靠什么报文?LDP呢?保持邻居关系分别又用什么报文呢?

  • OSPF通过Hello报文用Router ID来标识身份,而LDP建立邻居也通过Hello报文用LSR ID标识身份,OSPF发送地址为224.0.0.5,LDP发送地址为224.0.0.2。
  • 依靠Hello报文
  • IP层报文,协议号89
  • Hello报文
  • 应用层
  • OSPF通过Router ID标识邻居,LDP用LSR ID标识
  • 必须是IP地址,因为Router ID格式为点分十进制的IP地址格式,LSR ID必须是本设备的接口IP或Loopback地址
  • Hello报文
  • Hello报文
  • OSPF用Hello来维持邻居关系,LDP用Keepalive保持

5.TTL的处理方式有哪些?中文怎么说?英文又怎么说?分别什么意思?画图解释清楚。为什么要使用Pipe模式?

  • 统一模式、管道模式
  • Uniform、Pipe

一万个为什么之MPLS - 图2
一万个为什么之MPLS - 图3

  • 因为要隐藏MPLS域的网络结构,保障网络的安全性

6.LSP的备份方式有哪些?有什么作用?没开启这个机制会怎么样?静态的方式怎么配置?动态的又怎么实现?回切的时候又要注意什么?没开启同步之前怎么样的?开启同步之后又是怎么样的?画图解释。

  • 手动和自动的备份方式
  • 手动备份方式是需要自己写LDP Frr来指定另一条标签转发路径,自动的话是通过动态路由协议来进行自动的备份,例如在OSPF中开启IP Frr来自动的进行分配。
  • 没开启这个机制会使在链路出现问题时切换路径造成过大的延时或丢包,因为重新收敛需要先等OSPF的RIB进行收敛再到FIB表收敛才能进行到LIB表到LFIB表。
  • 回切的时候因为OSPF的收敛速度要大于LDP,所以当RIB收敛完,外部IP网络发来数据包,但是我们的LDP还是没有完成收敛的,所以会造成一个短暂的丢包。
  • 开启同步后,当OSPF收敛完后会进行一个抑制10S,当LDP邻居和LFIB表收敛结束后才会取消抑制,开始转发