菜单

[ Juniper ] 使用 Logical-Tunnel 实现路由器内部与 L2Circuit 链路的互联

2021年5月30日 - Juniper

在之前的文章《 [ Juniper ] 使用 MPLS L2-Circuit 提供虚拟网线服务 》中我们讲了如何用 L2Circuit (也叫 PW 或者 EoMPLS )来提供点对点的二层连接环境。但是这篇文章中的默认环境下,A 端和 Z 端都是服务于外界的服务器或者路由器,如果我们路由器本身想作为链路的其中一端与另一端做互联,则需借助 Logical-Tunnel 来完成需求。

实验拓扑如下:

CoreRouter 作为核心路由想和 Upstream 路由器建立 BGP 连接,但是 Upstream 只能将物理线拉到 Edge-Extend 所在的机房,且 Edge-Extend 作为一个边缘路由器,不具有接受路由全表的能力。于是我们决定使用 L2Circuit 来实现该需求,将 Extend 路由器的 ge-0/0/0 接口封装 ethernet-ccc 后送往 Core,然后 Core 内部借助这条 PW 来实现和 Upstream 直接启动 BGP session 并传递路由。

Upstream 已经预配置好了 BGP session,我们来着重配置 Edge 以及 Core路由器。

两台路由器已经预配置好了 SR-MPLS 作为传输层,使用的是 L-ISIS(当然,LDP + 纯 ISIS/OSPF 也是可以的),该处配置已省略,我们来配置 L2Circuit 并实现 Core 路由器的内部连接。

Extend:

protocols {
    mpls {
        interface ge-0/0/1.0;
    }
    ldp {
        transport-address router-id;
        interface ge-0/0/1.0;
        interface lo0.0;
    }
    l2circuit {
        neighbor 192.168.0.2 {
            interface ge-0/0/0.0 {
                virtual-circuit-id 100;
                no-control-word;
            }
        }
    }
}

配置完 Extend 后,我们来配置 Core 路由器的协议:

root> show configuration chassis
fpc 0 {
    pic 0 {
        tunnel-services {
            bandwidth 100g;
        }
        inline-services {
            bandwidth 100g;
        }
    }
} // 打开 tunnel-service 支持,以支持 logical-tunnel,lt 是基于 tunnel-service 的。

ldp {
    transport-address router-id;
    interface ge-0/0/1.0;
    interface lo0.0;
}
mpls {
    interface ge-0/0/1.0;
}

然后,再配置 logical-tunnel,将其与 L2Circuit 对接起来:

root> show configuration interfaces lt-0/0/0
unit 0 {
    encapsulation ethernet-ccc; // lt 的 unit 0 需要封装 ethernet-ccc 模式,以便与 L2Circuit VC 对接( L2Cicuit 的链路就是 ccc 模式)
    peer-unit 1; // 0 与 1 组成 lt 的两端
    family ccc; // 激活 ccc family,以便与 L2Circuit 对接
}
unit 1 {
    encapsulation ethernet; // 封装普通以太网模式,让 lt 的 unit 1 作为虚拟接口的 Z 端,默认放在 Global 路由表里面
    peer-unit 0; // 0 与 1 组成 lt 的两端
    family inet {
        address 100.64.0.3/31; // 激活 inet family,作为虚拟的 Z 端(路由器的虚拟接口)
    }
} //( Z 端作为虚拟接口放在了 Core 路由器的 GRT 里面,A端则是在 Extend 的 ge-0/0/0 )

root> show configuration protocols l2circuit
neighbor 192.168.0.1 {
    interface lt-0/0/0.0 { // 将 lt 的 unit 0 与该 L2circuit VC 做无缝对接
        virtual-circuit-id 100;
        no-control-word;
    }
}

配置完成后,我们查看 L2Circuit connection 状况:

root> show l2circuit connections
Layer-2 Circuit Connections:
{..snip..}
Legend for interface status
Up -- operational
Dn -- down
Neighbor: 192.168.0.1
    Interface                 Type  St     Time last up          # Up trans
    lt-0/0/0.0(vc 100)        rmt   Up     May 30 10:58:31 2021           1
      Remote PE: 192.168.0.1, Negotiated control-word: No
      Incoming label: 299776, Outgoing label: 299776
      Negotiated PW status TLV: No
      Local interface: lt-0/0/0.0, Status: Up, Encapsulation: ETHERNET
      Flow Label Transmit: No, Flow Label Receive: No

可以看到 L2Circuit 已经 UP 了,我们再配置 BGP 协议:

root> show configuration protocols bgp
group external {
    type external;
    import accept-all; // 接受来自于 Upstream 的路由
    export export-direct; // 发送本地的 Client 服务器路由,注意,按生产环境具体情况配置。
    peer-as 65000;
    local-as 65001;
    neighbor 100.64.0.2;
}

配置完成后,查看 BGP 协议:

root> show bgp summary
Threading mode: BGP I/O
Groups: 1 Peers: 1 Down peers: 0
Table          Tot Paths  Act Paths Suppressed    History Damp State    Pending
inet.0
                       1          1          0          0          0          0
Peer                     AS      InPkt     OutPkt    OutQ   Flaps Last Up/Dwn State|#Active/Received/Accepted/Damped...
100.64.0.2            65000         37         37       0       0       15:38 Established  inet.0: 1/1/1/0

在 Client 端 ping 并且 trace 目的地服务器:

root@localhost:~# ping 8.8.8.8 -c 3
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=62 time=11.9 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=62 time=9.22 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=62 time=12.0 ms

--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 5ms
rtt min/avg/max/mdev = 9.221/11.039/11.989/1.289 ms

root@localhost:~# mtr 8.8.8.8 --report
Start: 2021-05-30T13:02:25+0000
HOST: localhost                   Loss%   Snt   Last   Avg  Best  Wrst StDev
  1.|-- 10.0.0.1                   0.0%    10   11.9  67.7   1.6 373.7 119.6
  2.|-- 100.64.0.2                 0.0%    10    5.8   6.6   2.9  12.7   3.0
  3.|-- 8.8.8.8                    0.0%    10    6.5  11.6   6.5  25.3   6.0

Core 路由器成功实现了与 L2Circuit 内部对接,实验完成。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注