工作关系,又要去转运营商的东西了。一直想做juniper的实验,无奈命令行,尤其是MPLS部分实在和cisco差太远。慢慢来吧,先把MPLS的单AS的逻辑梳理好,inter-AS option ABC 日后看完视频在整理。发现51CTO的确要比qq空间要好,发自己写的总结比较好,先搬过来。

  1. VRF, 将路由器分割成多张独立的路由表,用于接收不同客户的流量。
    Cisco: ip vrf CustomerA
    interface gi 0/0
    ip vrf forwarding CustomerA
    Juniper: set routing-instance CustomerA instance-type vrf
    set routing-instance CustomerA interface ge-0//0.0

  2. Route-distinguisher: 跟随VRF的属性,安于客户的ipv4 header,成为***v4地址,使得不同客户的重复地址可以互相独立。
    以下就是当MP-BGP建立后,传输的NLRI。
    MPLS Single AS 梳理_第1张图片
    Cisco
    ip vrf CustomerA
    router-distinguisher 65001:1
    Juniper
    set routing-instance CustomerA route-distinguisher 65001:1

  3. Route-target:BGP的扩展团体extended community,其实community本身就是给BGP路由打tag。route-target的作用其实就是决定向相关的vrf里面注入哪些路由,并且次vrf导出的路由打了什么community。
    Cisco
    ip vrf CustomerA
    route-target import 65003:5
    route-target export 65001:1
    或者使用export-map import-map 不过没用过 得查文档

Juniper
set routing-instance CustomerA vrf-import A-IMPORT;
set routing-instance CustomerA vrf-export-B-EXPORT
A-IMPORT 为policy option的policy-statement

  1. MPLS: 其实MPLS本身没什么神奇的地方,但scalibility真的太出色,有效的能将控制层面和数据层面分开。在MPLS ***的部署中,主要作用就是构建不同PE之间的LSP,所以很多英文文档把mpls归类成一种tunnelling技术。(隧道)

Cisco Live一份PPT讲的非常清晰,直接截图,

直接翻译, 首先是控制层面:

  1. PE端接收到来自CE发送的路由
  2. PE把路由转换成***v4路由,由于是EBGP,修改next hop属性,给此条路由发放(通常是加)RT,并为这个路由发送一个基于此VRF的label (这个标签很重要,是内层VRF标签,仔细看第一张截图NLRI传输内容)。
  3. PE将MP-iBGP的update发送给已建立BGP peering的路由器。有可能是RR,有可能是PE。
  4. 对端PE接收到MP-iBGP的更新之后,根据RT值决定放入对应的VRF
  5. 对端PE将路由放入VRF之后,更新此VRF的CEF表,决定它的标签多少。(既数据层面上来看,当CE2要到达CE1时,CE2的数据进入PE2,内层标签是什么。

MPLS Single AS 梳理_第2张图片
接下来就是数据层面,报文传输路径为CE2--->CE1。当数据抵达PE1时,首先先粘上外层标签,既通过PE2通过MP-BGP传过来的标签。通过show ip vrf cef 来显示。之后,会贴上PE2前往PE1的label,通过show ip cef得知。因为这个label是MPLS根据BGP的下一跳分发的。
MPLS Single AS 梳理_第3张图片

MPLS Single AS 梳理_第4张图片

如上。Lab本身不难,关键要想办法抓包有点费劲。关键想看看MP-BGP里面的NLRI,这个比较重要。