vJunos-switchでVRF間のRoute Leakをする

## 概要
VRF同士は独立しているため、異なるVRF間で通信するためにはRoute Leakが必要となる。junosではrib-groupsを用いてRoute Leakを行う。rib-groupsとは、1 つ以上のルーティングテーブルをグループ化して、ルーティングテーブルグループを形成すること。
https://www.juniper.net/documentation/jp/ja/software/junos/cli-reference/topics/ref/statement/rib-groups-edit-routing-options.html

構成
Junos: 23.2R1.14
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3359374/2061d003-b241-7f6e-cb83-cfd87c2b3476.png)

Route Leak前のルートテーブル（vrf-002.inet.0）
```
admin@BorderRouter> show route table vrf-002.inet.0

vrf-002.inet.0: 13 destinations, 13 routes (13 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

10.120.0.0/29      *[Direct/0] 00:15:42
                    >  via ge-0/0/1.201
10.120.0.1/32      *[Local/0] 00:15:42
                       Local via ge-0/0/1.201
10.120.0.8/29      *[Direct/0] 00:15:42
                    >  via ge-0/0/1.202
10.120.0.9/32      *[Local/0] 00:15:42
                       Local via ge-0/0/1.202
10.120.0.16/29     *[Direct/0] 00:15:42
                    >  via ge-0/0/1.203
10.120.0.17/32     *[Local/0] 00:15:42
                       Local via ge-0/0/1.203
172.16.60.1/32     *[BGP/170] 00:03:58, localpref 100
                      AS path: 65001 I, validation-state: unverified
                    >  to 172.16.92.1 via ge-0/0/0.92
172.16.92.0/30     *[Direct/0] 00:15:42
                    >  via ge-0/0/0.92
172.16.92.2/32     *[Local/0] 00:15:42
                       Local via ge-0/0/0.92
```

## 設定
vrf-001がOSPFで学習した経路をvrf-002へRoute Leakする。経路をインポートするときに使用するimport-ribはPolicy Statementで指定する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3359374/7a9705c8-19eb-1b4d-5731-db5ccec42ccd.png)

```
//RIB-Group "RG-001-to-002" を作成
routing-options {
    rib-groups {
        RG-001-to-002 {
            import-rib [ vrf-001.inet.0 vrf-002.inet.0 ];
            import-policy PS-001-to-002;
        }
    }
}

//import-policyに適用するPolicy Statement "PS-001-to-002" を作成
policy-options {
    policy-statement PS-001-to-002 {
        term 10 {
            from {
                prefix-list PL-001;
            }
            then accept;
        }
    }
}

//Policy Statementに適用するPrefix List "PL-001" を作成
policy-options {
    prefix-list PL-001 {
        172.16.11.1/32;
        172.16.11.3/32;
        172.16.22.4/32;
        172.16.33.2/32;
    }
}

//RIB-Groupをvrf-001へ適用
routing-instances {
    vrf-001 {
        instance-type vrf;
        protocols {
            ospf {
                area 0.0.0.0 {
                    interface ge-0/0/0.91;
                    interface ge-0/0/1.101;
                    interface ge-0/0/1.102;
                    interface ge-0/0/1.103;
                }
                rib-groups {
                    inet RG-001-to-002;
                }
            }
        }
        interface ge-0/0/0.91;
        interface ge-0/0/1.101;
        interface ge-0/0/1.102;
        interface ge-0/0/1.103;
        route-distinguisher 65001:91;
        vrf-target target:65001:91;
    }
}
```

## 動作確認
Route Leak後のルートテーブル（vrf-002.inet.0）
OSPFの経路が追加されていることが分かる。双方向で通信するためには戻り用にvrf-002⇒vrf-001へのRoute Leakも設定する必要あり。
```
admin@BorderRouter> show route table vrf-002.inet.0

vrf-002.inet.0: 13 destinations, 13 routes (13 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

10.120.0.0/29      *[Direct/0] 00:25:39
                    >  via ge-0/0/1.201
10.120.0.1/32      *[Local/0] 00:25:39
                       Local via ge-0/0/1.201
10.120.0.8/29      *[Direct/0] 00:25:39
                    >  via ge-0/0/1.202
10.120.0.9/32      *[Local/0] 00:25:39
                       Local via ge-0/0/1.202
10.120.0.16/29     *[Direct/0] 00:25:39
                    >  via ge-0/0/1.203
10.120.0.17/32     *[Local/0] 00:25:39
                       Local via ge-0/0/1.203
172.16.11.1/32     *[OSPF/150] 00:00:08, metric 1, tag 3489725929
                    >  to 172.16.91.1 via ge-0/0/0.91
172.16.11.3/32     *[OSPF/150] 00:00:08, metric 1, tag 3489725929
                    >  to 172.16.91.1 via ge-0/0/0.91
172.16.22.4/32     *[OSPF/150] 00:00:08, metric 1, tag 3489725929
                    >  to 172.16.91.1 via ge-0/0/0.91
172.16.33.2/32     *[OSPF/150] 00:00:08, metric 1, tag 3489725929
                    >  to 172.16.91.1 via ge-0/0/0.91
172.16.60.1/32     *[BGP/170] 00:13:55, localpref 100
                      AS path: 65001 I, validation-state: unverified
                    >  to 172.16.92.1 via ge-0/0/0.92
172.16.92.0/30     *[Direct/0] 00:25:39
                    >  via ge-0/0/0.92
172.16.92.2/32     *[Local/0] 00:25:39
                       Local via ge-0/0/0.92
```