MPLS 多协议标签交换

  1. 支持多种网络层协议,也将MPLS叫做2.5层协议
  2. 基于标签交换进行数据转发,一般数据基于3层IP地址转发,做了MPLS后,在二层与三层之间做了MPLS字段,至于三层是什么协议不关注,代替了三层数据包交换。
    .标签交换与传统数据转发对比
  3. 标签交换转发效率优于传统数据包交换(已不明显),
    IP数据转发原理(与操作,最长匹配,递归查找)
    MPLS是基于里面的标签label,32bit,4个字节定长,数据转发会进行标签交换,比如收到label17,那么自己会换成18.
  4. MPLS支持MPLS VPN 支持 MPLS TE(MPLS流量工程,属于ISP方向)

(控制层面)标签分发协议:LDP 、TDP、MP-BGP(MPLS VPN)、RSVP(MPLS TE)
(数据层面)MPLS,仅仅基于标签的交换,目的为了转发数据

传统交换技术:

  1. 进程转发,基于数据包的转发方式,每个数据包过来都要查找路由(与操作,最长匹配等)
快速转发,基于流量(缓存)的转发方式,每个流量中第一个数据包进行路由查找,后继数据基于第一个数据包的缓存转发,基于流(源IP,目的IP,源端口,目标端口,协议号)的传输
  1. cef转发,基于拓扑的转发方式,不管快速转发多么优秀,第一个数据包还得进行路由查找,不能适应拓扑与路由自动切换问题。基于流就有可能导致数据不通。Cef,cisco私有快速交换,所有数据包无需查看路由转发,直接查看Cef(FIB)表进行转发,该表项是自动适应路由表。
    这个表项类似于MAC地址表,固定长度,无需路由,直接转发,可以被硬件所调用且与路由表同步信息。
    二.MPLS 模式
    Frame :帧模式,
    Cell :信元模式 , 仅限于ATM
    三、MPLS术语
    FEC:转发等价类,具有相同的处理方式的一类数据称为一个转发等价类,标签分发协议LDP怎么分发标签的参考就叫做FEC,比如源地址一样,目标IP一样,相同的QOS行为等
    LSR:标签交换路由器,标签交换(swap)
    E-LSR:边界标签交换路由器,标签压入impose 和弹出pop
    LSP:标签交换路径
    LIB:标签信息库 LFIB:标签转发信息库
    在非MPLS域中,也就是IP域,关注目的地址,为了找到运行路由协议,OSPF/EIGRP等,会学习到路由,形成路由表,但是最终转发信息是cef/FIB,
    而在MPLS域中,关注的不是目的地址,而是label,对比IP域,这里使用LDP/TDP/MP-BGP等,会形成LIB表,标签信息库,并不会进行数据转发,只是存放了针对所有FEC所分配的标签以及所有LDP邻居分配自己学习的。(比如R3自己学习的是100,R2给的是200,R4给的是400,那么R2就会将三者一起绑定了,)同理,转发数据的叫做LFIB,具体过程:查看FIB表,结合LIB表,比如在R3上到达100.1.1.0/24本地标签是100,出标签是400,一般本地标签叫做入标签,学习到的叫做出标签。那么数据从R1到达R2后,R2会把R3给自己的标签100压入,R3收到后,100正好是入标签,就知道自己要去100.1.1.0/24网段,压入400,传递给R4.,R4收到后,弹出标签。
    再者,数据到达R2后,查看的是FIB表,也就是cef表,是支持插入标签的,否则查看后基于IP转发了,那么做了MPLS就没意义了。R3查看LFIB表,R4收到后还是查看LFIB弹出标签,再查看FIB,转发给R5.
    四、label

    标签:20bit,范围16~2^20,0-15标签保留,有时候做QOS会用
    EXP:3bit,用于在label中标记标签中优先级,类似于QoS中的TOS字段,设置优先级,数据优先级高的优先处理
    S:栈底位,代表标签是否到达栈底,最否最靠近IP字段,S=0代表未到达栈底,S=1代表到达栈底,
    TTL:生存时间,用于MPLS label交换中防环
    五、标签分发协议
    LDP/TDP:TDP思科私有,公开化命名为LDP,标签分发协议,主要为MPLS技术使用
    Label distribution protocol /tag distribution protocol
    TDP:cisco私有,基于TCP或者UDP封装,端口号为711,广播发送,255.255.255.255,
    先发送UDP报文,就会知道对方地址,接着就可以使用三次握手,后续数据传输使用TCP。
    LDP:工业标准,基于TCP或者UDP封装,使用端口号为646,组播发送224.0.0.2(所有支持组播的路由器均支持)
    LDP邻居发现阶段,使用LDP的hello建立邻居,UDP发送,知晓地址后,进行三次握手
    LDP会话建立阶段,进行LDP初始化报文的发送,发送keepalive报文,并发送LDP的标签分发信息。
    MP-BGP:利用了团体属性的扩展属性,主要用于MPLS VPN
    RSVP:资源预留协议,比如一条链路10M带宽,有一个主机访问网络必须为其预留2M
    也可做标签分发,主要用于MPLS TE
    六、倒数第二跳弹出
    倒数第一跳路由器向倒数第二跳路由器发送一个label 3空标签,使倒数第二跳路由器提前
    弹出标签。
    对于R4来说查看LFIB,还得查看FIB表,R4就会向R3发送label 3空标签R3在收到R2的
    数据后,就会弹出外层标签。R4收到后直接查看FIB转发。
    注意:标签只是具有本地意义,所以入标签与出标签可以一致。

实验拓扑图:

利用mpls解决路由黑洞 mpls解决bgp路由黑洞原理_IP


运行EIGRP,MPLS做在R2R3R4上面接口启用MPLS(默认是LDP)

利用mpls解决路由黑洞 mpls解决bgp路由黑洞原理_IP_02


查看LDP包:

利用mpls解决路由黑洞 mpls解决bgp路由黑洞原理_利用mpls解决路由黑洞_03


LSR ID与label space一同标识,查看邻居表中peer:2.2.2.0:0.LSR ID必须是可达的,后续

数据发送需要,IPV4 transport address就是LSR ID,先选最大的环回,再选最大的物理地

址。

当开始完成发送TCP连接,则说明LDP进入第二阶段,会话建立阶段

利用mpls解决路由黑洞 mpls解决bgp路由黑洞原理_R3_04


利用mpls解决路由黑洞 mpls解决bgp路由黑洞原理_IP_05

利用mpls解决路由黑洞 mpls解决bgp路由黑洞原理_利用mpls解决路由黑洞_06

双发开始交互keepalive报文,后续只发送hello报文,说明LDP会话已经建立。
接着发送标签映射,label mapping message查看标签信息: LFIB

也可以这样查看:

利用mpls解决路由黑洞 mpls解决bgp路由黑洞原理_IP_07


查看LDP邻居

利用mpls解决路由黑洞 mpls解决bgp路由黑洞原理_R3_08


查看FIB表

利用mpls解决路由黑洞 mpls解决bgp路由黑洞原理_利用mpls解决路由黑洞_09

利用mpls解决路由黑洞 mpls解决bgp路由黑洞原理_数据_10

这样分配标签,是随机的,也可以自己定义分配的标签,先删除之前的MPLS。

利用mpls解决路由黑洞 mpls解决bgp路由黑洞原理_利用mpls解决路由黑洞_11


利用mpls解决路由黑洞 mpls解决bgp路由黑洞原理_R3_12

查看LFIB表

利用mpls解决路由黑洞 mpls解决bgp路由黑洞原理_IP_13


利用mpls解决路由黑洞 mpls解决bgp路由黑洞原理_R3_14


1.1.1.1 ping 5.5.5.5

利用mpls解决路由黑洞 mpls解决bgp路由黑洞原理_利用mpls解决路由黑洞_15

查看CEF中携带的label信息

利用mpls解决路由黑洞 mpls解决bgp路由黑洞原理_数据_16

强制修改MPLS route-id

利用mpls解决路由黑洞 mpls解决bgp路由黑洞原理_IP_17


利用mpls解决路由黑洞 mpls解决bgp路由黑洞原理_R3_18


传输地址也可以改,不修改默认为route-id

利用mpls解决路由黑洞 mpls解决bgp路由黑洞原理_利用mpls解决路由黑洞_19


修改协议(两边都得做):

利用mpls解决路由黑洞 mpls解决bgp路由黑洞原理_IP_20

MPLS 也可以解决BGP的数据层面的路由黑洞

AS12透过AS234学习到AS45的路由,R5也可以学习到R1的路由,但是对于中间的路由器而言,并不见得所有的路由器都会运行BGP,那么数据到达R3由于没有路由会被丢弃,而至于学习到路由是因为学习路由的过程是分段传递的。

利用mpls解决路由黑洞 mpls解决bgp路由黑洞原理_数据_21


利用mpls解决路由黑洞 mpls解决bgp路由黑洞原理_数据_22


利用mpls解决路由黑洞 mpls解决bgp路由黑洞原理_数据_23

解决这个问题的办法:

  1. 将BGP重发布进入IGP中
  2. Full-match建立BGP邻居
  3. MPLS
    在R2 R3 R4上面接口开启MPLS IP ,直接通信

    原理主要是针对4.4.4.0分配了标签