瞻博网络 MX:将路由从 RIB 泄漏到 VRF

网络工程 杜松 瞻博网络 虚拟现实
2021-07-27 11:19:21

目标

我们有防火墙将 IPSec VPN 终止到 AWS。这些用于在一对 AWS Direct Connect 出现故障的情况下。目前,VPN 通过它们正在备份的同一个 Direct Connect 路由到 AWS - 如果 Direct Connect 由于某种原因停止路由流量,VPN 也会中断。

建议的解决方案

在 Juniper MX 上创建一个 VRF,我们将从 Transit 中学习到的 AWS 路由导入其中,而不是从 Direct Connect 中学习到的路由。

执行

phil@mx# show routing-instances
be-fw-tunnels {
    instance-type virtual-router;
    interface ae0.336;
    routing-options {
        instance-import vrf_be_fw_tunnels;
    }
}

phil@mx# show policy-options policy-statement vrf_be_fw_tunnels
term no_aws_direct {
    from {
        instance master;
        community Direct;
    }
    then reject;
}
term aws_indirect {
    from {
        instance master;
        as-path aws-indirect;
    }
    then accept;
}
term no_more {
    then reject;
}

phil@mx# show policy-options as-path aws-indirect
".* (14618|16509)$";

问题

该解决方案在某些Amazon 路由泄漏到 VRF的范围内有效,但仅适用于 Amazon 根本没有在 Direct Connect 上公布的前缀。我认为这是因为instance-import从 FIB 导入的数据和安装在 FIB 中的感兴趣的路由都来自 Direct Connect 对等互连。

问题

是否可以从 RIB 导入 VRF,以便考虑导入所有可能的路由……而不仅仅是当前活动的路由?

1个回答

解决方案似乎是使用rib-group. 我总是假设rib-group并且instance-import可以互换,但顾名思义,它rib-group在 RIB 中工作,而instance-import仅在 FIB 上工作。

语法要复杂得多,但它很好,因为您可以应用于rib-group单个 BGP 对等体,从而避免需要明确过滤掉您不想要的路由。

phil@mx# show routing-instances
be-fw-tunnels {
    description "VRF importing specific DFZ routes for use by BE FW tunnels";
    instance-type virtual-router;
    interface ae0.236;
}

phil@mx# show routing-options rib-groups
/* Export some IPv4 routes from the main table into the be-fw-tunnels table */
be-fw-tunnels-v4 {
    import-rib [ inet.0 be-fw-tunnels.inet.0 ];
    import-policy vrf_be_fw_tunnels;
}
/* Export some IPv6 routes from the main table into the be-fw-tunnels table */
be-fw-tunnels-v6 {
    import-rib [ inet6.0 be-fw-tunnels.inet6.0 ];
    import-policy vrf_be_fw_tunnels;
}

phil@mx# show policy-options policy-statement vrf_be_fw_tunnels
term aws_indirect {
    from as-path aws-indirect;
    then accept;
}
term no_more {
    then reject;
}

phil@mx# show groups
/* Apply to BGP groups from which you want to export certain routes to the be-fw-tunnels VRF */
aws-to-vrf-v4 {
    protocols {
        bgp {
            group <*> {
                neighbor "<[0-9]*.[0-9]*.[0-9]*.[0-9]*>" {
                    family inet {
                        unicast {
                            rib-group be-fw-tunnels-v4;
                        }
                    }
                }
            }
        }
    }
}
/* Apply to BGP groups from which you want to export certain routes to the be-fw-tunnels VRF */
aws-to-vrf-v6 {
    protocols {
        bgp {
            group <*> {
                neighbor <*:*:*> {
                    family inet6 {
                        unicast {
                            rib-group be-fw-tunnels-v6;
                        }
                    }
                }
            }
        }
    }
}

phil@mx# show protocols bgp group Transit
apply-groups [ aws-to-vrf-v4 aws-to-vrf-v6 ];
...