MPLS多协议标签交换技术解决BGP路由黑洞

2020-07-29 16:28:22 云杰通信 106

MPLS多协议标签交换技术解决BGP路由黑洞

  MPLS支持多种网络层协议,也将MPLS叫做2.5层协议。基于标签交换进行数据转发,一般数据基于3层IP地址转发,做了MPLS后,在二层与三层之间做了MPLS字段,至于三层是什么协议不关注,代替了三层数据包交换。

  标签交换与传统数据转发对比

  标签交换转发效率优于传统数据包交换(已不明显),IP数据转发原理与操作,最长匹配,递归查找,MPLS是基于里面的标签label,32bit,4个字节定长,数据转发会进行标签交换,比如收到label17,那么自己会换成18。

  MPLS支持MPLS VPN 支持 MPLS TE(MPLS流量工程,属于ISP方向),(控制层面)标签分发协议:LDP 、TDP、MP-BGP(MPLS VPN)、RSVP(MPLS TE),(数据层面)MPLS,仅仅基于标签的交换,目的为了转发数据。

  传统交换技术

  进程转发,基于数据包的转发方式,每个数据包过来都要查找路由(与操作,最长匹配等,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转发。

  注意:标签只是具有本地意义,所以入标签与出标签可以一致。

  实验拓扑图:

  运行EIGRP,MPLS做在R2R3R4上面

  接口启用MPLS(默认是LDP)

  查看LDP包:

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

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

  址。

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

  双发开始交互keepalive报文,后续只发送hello报文,说明LDP会话已经建立。

  接着发送标签映射,label mapping message查看标签信息: LFIB

  也可以这样查看:

  查看LDP邻居

  查看FIB表

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

  查看LFIB表

  1.1.1.1 ping 5.5.5.5

  查看CEF中携带的label信息

  强制修改MPLS route-id

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

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

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

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

  解决这个问题的办法:

  将BGP重发布进入IGP中,Full-match建立BGP邻居,MPLS在R2 R3 R4上面接口开启MPLS IP ,直接通信,原理主要是针对4.4.4.0分配了标签。