Startseite Juniper – “Centrally-Routed Bridging Overlay” – Part 7 – Route Leaking
Eintrag
Abbrechen

Juniper – “Centrally-Routed Bridging Overlay” – Part 7 – Route Leaking

Im normalen Betrieb wird es vorkommen, dass Routingtabellen zwischen den einzelnen Routinginstanzen ausgetauscht werden müssen. In dem Beispiel 6 (“VRF Import / Export”) konnte man die Routen eines VRFs in ein anderes übertragen, jedoch kann es vorkommen, dass dies nicht mehr ausreicht. Im folgenden Beispiel soll eine statische Defaul Route aus dem VRF WAN in die VRFs DC und RED importiert werden. Folgende Topologie wird konfiguriert:

Netzwerkplan

Grundlegendes

Um Routen zwischen den VRF-Routingtabellen auszutauschen werden rib-groups benötigt. Diese bauen sich nach dem Schema Source-Routingtabelle Destination-Routingtabelle(n) auf. Der erste Schritt ist die Einrichtung einer rib-group in den routing-options der Standard Routinginstanz (inet.0 für IPv4). Dann wird diese in die entsprechenden VRF / VR Instanzen als “Interface-Route” eingebunden. Anschließend können in dem passenden VRF statische oder dynamische Routen direkt in diese Gruppe übergeben werden. Wichtig: der Import muss in der richtigen Instanz konfiguriert werden. Andernfalls werden falsche Routen in der falschen Instanz kopiert. Es sollte sich vorher ein Plan gemacht werden, welche Routen in welcher Tabelle erwartet werden.

Konfigurationsdaten Spine01

Um den Zugriff ins Internet zu gewährleisten wird ein weiteres VRF erstellt.

   
Name des VRF WAN
Loopback Interface lo0.99
Loopback IP Adresse 192.168.0.99
Route Distinguisher 192.168.0.1:99
Route Target target:65000:99
VLAN ID 99
VxLAN ID 10099
IP Adresse 172.16.0.100/24

Konfiguration VRF Spine01 

Das VRF mit allen Loopbacks und VLANs wird eingerichtet.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
edit vlans VL99
set description "Transit-Netz"
set vlan-id 99
set vxlan vni 10099
set l3-interface irb.99

top edit interfaces lo0 unit 99
set description VRF-WAN
set family inet address 192.168.0.99/32

top edit interfaces xe-0/0/9
delete unit 0
set description "Uplink-A--ISP"
set unit 0 family ethernet-switching interface-mode access
set unit 0 family ethernet-switching vlan members VL99

top edit interfaces irb unit 99
set description VRF-WAN
set family inet address 172.16.0.100/24

top edit routing-instances WAN
set description VRF-WAN
set instance-type vrf
set interface irb.99
set interface lo0.99
set route-distinguisher 192.168.0.1:99
set vrf-target target:65000:99

commit

Konfiguration Default Route Spine01

1
2
3
4
edit routing-instances WAN routing-options
set static route 0.0.0.0/0 next-hop 172.16.0.1 metric 1

commit

Damit sollte die Routingtabelle WAN.inet.0 erstellt sein und eine Default Route besitzen.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
root@Spine01# run show route table WAN.inet.0

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

0.0.0.0/0 *[Static/5] 00:00:36, metric 1
> to 172.16.0.1 via irb.99
172.16.0.0/24 *[Direct/0] 00:00:36
> via irb.99
172.16.0.1/32 *[EVPN/7] 00:00:12
> via irb.99
172.16.0.100/32 *[Local/0] 00:00:36
Local via irb.99
192.168.0.99/32 *[Direct/0] 00:09:55
> via lo0.99

Konfiguration rib-group Spine01

Jetzt soll die Default Route in das VRF-DC und VRF-RED importiert werden. Dies wird über rib-groups ermöglicht.

1
2
3
4
5
6
7
8
9
top edit routing-options
edit rib-groups vrf-wan-export
set import-rib [ WAN.inet.0 DC.inet.0 ]

top edit routing-instances WAN routing-options
set static rib-group vrf-wan-export
set interface-routes rib-group inet vrf-wan-export

commit

Die statische Route wurde direkt in die rib-group “vrf-wan-to-vrf-dc” kopiert. Das Ganze wird im VRF WAN als Interface-Route konfiguriert. Interfacerouten sind alle direkten Routen. Diese sind aktuell nicht erwünscht und müssen noch ausgefiltert werden.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
root@Spine01# run show route table DC.inet.0

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

0.0.0.0/0 *[Static/5] 00:00:19, metric 1
> to 172.16.0.1 via irb.99
10.10.0.0/24 *[Direct/0] 14:52:53
> via irb.10
10.20.0.0/24 *[Direct/0] 14:52:53
> via irb.20
10.50.0.0/24 *[Direct/0] 1d 01:31:49
> via irb.50
10.100.0.0/24 *[Direct/0] 6d 03:25:19
> via irb.100
10.100.0.1/32 *[Local/0] 6d 03:25:19
Local via irb.100
10.100.0.254/32 *[Local/0] 6d 03:25:19
Local via irb.100
172.16.0.0/24 *[Direct/0] 00:00:19
> via irb.99
172.16.0.100/32 *[Local/0] 00:00:19
Local via irb.99
192.168.0.99/32 *[Direct/0] 00:00:19
> via lo0.99
192.168.0.103/32 *[Direct/0] 6d 03:25:19
> via lo0.103

Policyfilter Spine01

Um die rot markierten Routen zu entfernen wird folgende Policy erstellt.

1
2
3
4
5
6
7
8
9
10
11
12
13
edit policy-options policy-statement RIB-vrf-wan-export
edit term 1
set from protocol static
set from route-filter 0.0.0.0/0 exact
set to rib DC.inet.0
set then accept
up
set then reject

top edit routing-options rib-groups vrf-wan-export
set import-policy RIB-vrf-wan-export

commit

Damit sieht die Routingtabelle DC.inet.0 wie erwartet aus.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
root@Spine01# run show route table DC.inet.0

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

0.0.0.0/0 *[Static/5] 00:00:15, metric 1
> to 172.16.0.1 via irb.99
10.10.0.0/24 *[Direct/0] 15:01:21
> via irb.10
10.20.0.0/24 *[Direct/0] 15:01:21
> via irb.20
10.50.0.0/24 *[Direct/0] 1d 01:40:17
> via irb.50
10.100.0.0/24 *[Direct/0] 6d 03:33:47
> via irb.100
10.100.0.1/32 *[Local/0] 6d 03:33:47
Local via irb.100
10.100.0.254/32 *[Local/0] 6d 03:33:48
Local via irb.100
192.168.0.103/32 *[Direct/0] 6d 03:33:48
> via lo0.103

Erweiterung des VRF RED

1
2
3
4
5
6
7
8
9
10
11
edit routing-options rib-groups vrf-wan-export
set import-rib RED.inet.0

top edit policy-options policy-statement RIB-vrf-wan-export

edit term 2
set from protocol static route-filter 0.0.0.0/0 exact
set to rib RED.inet.0
set then accept

commit

Die Routingtabelle RED.inet.0 sollte nun ein Default-Gateway haben.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
root@Spine01# run show route table RED.inet.0

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

0.0.0.0/0 *[Static/5] 00:02:09, metric 1
> to 172.16.0.1 via irb.99
10.10.0.0/24 *[Direct/0] 6d 12:32:26
> via irb.10
10.10.0.1/32 *[Local/0] 6d 12:32:26
Local via irb.10
10.10.0.254/32 *[Local/0] 6d 12:32:26
Local via irb.10
10.20.0.0/24 *[Direct/0] 6d 12:59:05
> via irb.20
10.20.0.1/32 *[Local/0] 6d 12:59:05
Local via irb.20
10.20.0.254/32 *[Local/0] 6d 12:59:05
Local via irb.20
10.100.0.0/24 *[Direct/0] 17:36:43
> via irb.100
192.168.0.101/32 *[Direct/0] 6d 12:59:05
> via lo0.101

Konfigurationsdaten Spine02

Um den Zugriff ins Internet zu gewährleisten wird ein weiteres VRF erstellt.

   
Name des VRF WAN
Loopback Interface lo0.99
Loopback IP Adresse 192.168.0.199
Route Distinguisher 192.168.0.2:99
Route Target target:65000:99
VLAN ID 99
VxLAN ID 10099
IP Adresse 172.16.0.200/24

Konfiguration VRF Spine02 

Das VRF mit allen Loopbacks und VLANs wird eingerichtet.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
edit vlans VL99
set description "Transit-Netz"
set vlan-id 99
set vxlan vni 10099
set l3-interface irb.99

top edit interfaces lo0 unit 99
set description VRF-WAN
set family inet address 192.168.0.199/32

top edit interfaces xe-0/0/9
delete unit 0
set description "Uplink-B--ISP"
set unit 0 family ethernet-switching interface-mode access
set unit 0 family ethernet-switching vlan members VL99

top edit interfaces irb unit 99
set description VRF-WAN
set family inet address 172.16.0.200/24

top edit routing-instances WAN
set description VRF-WAN
set instance-type vrf
set interface irb.99
set interface lo0.99
set route-distinguisher 192.168.0.2:99
set vrf-target target:65000:99

commit

Konfiguration Default Route Spine02

1
2
3
4
edit routing-instances WAN routing-options
set static route 0.0.0.0/0 next-hop 172.16.0.1 metric 1

commit

Damit sollte die Routingtabelle WAN.inet.0 erstellt sein und eine Default Route besitzen.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
root@Spine02# run show route table WAN.inet.0

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

0.0.0.0/0 *[Static/5] 00:00:36, metric 1
> to 172.16.0.1 via irb.99
172.16.0.0/24 *[Direct/0] 00:00:36
> via irb.99
172.16.0.1/32 *[EVPN/7] 00:00:12
> via irb.99
172.16.0.100/32 *[EVPN/7] 00:00:12
> via irb.99
172.16.0.200/32 *[Local/0] 00:00:36
Local via irb.99
192.168.0.99/32 *[Direct/0] 00:09:55
> via lo0.99

Konfiguration rib-group Spine02

Jetzt soll die Default Route in das VRF-DC und VRF-RED importiert werden. Dies wird über rib-groups ermöglicht.

1
2
3
4
5
6
7
8
9
top edit routing-options
edit rib-groups vrf-wan-export
set import-rib [ WAN.inet.0 DC.inet.0 ]

top edit routing-instances WAN routing-options
set static rib-group vrf-wan-export
set interface-routes rib-group inet vrf-wan-export

commit

Die statische Route wurde direkt in die rib-group vrf-wan-to-vrf-dc kopiert. Das Ganze wird im VRF WAN als Interface-Route konfiguriert. Interfacerouten sind alle direkten Routen. Diese sind aktuell nicht erwünscht und müssen noch ausgefiltert werden.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
root@Spine01# run show route table DC.inet.0

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

0.0.0.0/0 *[Static/5] 00:00:19, metric 1
> to 172.16.0.1 via irb.99
10.10.0.0/24 *[Direct/0] 14:52:53
> via irb.10
10.20.0.0/24 *[Direct/0] 14:52:53
> via irb.20
10.50.0.0/24 *[Direct/0] 1d 01:31:49
> via irb.50
10.100.0.0/24 *[Direct/0] 6d 03:25:19
> via irb.100
10.100.0.1/32 *[Local/0] 6d 03:25:19
Local via irb.100
10.100.0.254/32 *[Local/0] 6d 03:25:19
Local via irb.100
172.16.0.0/24 *[Direct/0] 00:00:19
> via irb.99
172.16.0.200/32 *[Local/0] 00:00:19
Local via irb.99
192.168.0.99/32 *[Direct/0] 00:00:19
> via lo0.99
192.168.0.103/32 *[Direct/0] 6d 03:25:19
> via lo0.103

Policyfilter Spine02

Um die rot markierten Routen zu entfernen wird folgende Policy erstellt.

1
2
3
4
5
6
7
8
9
10
edit policy-options policy-statement RIB-vrf-wan-export
edit term 1
set from protocol static
set from route-filter 0.0.0.0/0 exact
set to rib DC.inet.0
set then accept
up
set then reject

commit

Damit sieht die Routingtabelle DC.inet.0 wie erwartet aus.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
root@Spine02# run show route table DC.inet.0

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

0.0.0.0/0 *[Static/5] 00:00:15, metric 1
> to 172.16.0.1 via irb.99
10.10.0.0/24 *[Direct/0] 15:01:21
> via irb.10
10.20.0.0/24 *[Direct/0] 15:01:21
> via irb.20
10.50.0.0/24 *[Direct/0] 1d 01:40:17
> via irb.50
10.100.0.0/24 *[Direct/0] 6d 03:33:47
> via irb.100
10.100.0.1/32 *[Local/0] 6d 03:33:47
Local via irb.100
10.100.0.254/32 *[Local/0] 6d 03:33:48
Local via irb.100
192.168.0.103/32 *[Direct/0] 6d 03:33:48
> via lo0.103

## Erweiterung des VRF RED

```bash
edit routing-options rib-groups vrf-wan-export
set import-rib RED.inet.0

top edit policy-options policy-statement RIB-vrf-wan-export

edit term 2
set from protocol static route-filter 0.0.0.0/0 exact
set to rib RED.inet.0
set then accept
commit

Die Routingtabelle RED.inet.0 sollte nun ein Default-Gateway haben.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
root@Spine02# run show route table RED.inet.0

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

0.0.0.0/0 *[Static/5] 00:02:09, metric 1
> to 172.16.0.1 via irb.99
10.10.0.0/24 *[Direct/0] 6d 12:32:26
> via irb.10
10.10.0.1/32 *[Local/0] 6d 12:32:26
Local via irb.10
10.10.0.254/32 *[Local/0] 6d 12:32:26
Local via irb.10
10.20.0.0/24 *[Direct/0] 6d 12:59:05
> via irb.20
10.20.0.1/32 *[Local/0] 6d 12:59:05
Local via irb.20
10.20.0.254/32 *[Local/0] 6d 12:59:05
Local via irb.20
10.100.0.0/24 *[Direct/0] 17:36:43
> via irb.100
192.168.0.101/32 *[Direct/0] 6d 12:59:05
> via lo0.101

Damit sind die entsprechenden Routen veröffentlicht.

Konfigurationsblöcke

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
root@Spine01# show vlans VL99
description VRF-WAN;
vlan-id 99;
l3-interface irb.99;
  vxlan {
  vni 10099;
}

root@Spine01# show interfaces lo0 unit 99
description VRF-WAN;
family inet {
  address 192.168.0.99/32;
}

description Uplink-A--ISP;
unit 0 {
  family ethernet-switching {
  interface-mode access;
   vlan {
    members VL99;
  }
 }
}

routing-options {
static {
route 0.0.0.0/0 {
  next-hop 172.16.0.1;
  metric 1;
 }
rib-group vrf-wan-export;
}
 interface-routes {
  rib-group inet vrf-wan-export;
}
auto-export {
  family inet {
  unicast;
  }
 }
}

root@Spine01# show routing-options
rib-groups {
  vrf-wan-export {
   import-rib [ WAN.inet.0 DC.inet.0 RED.inet.0 ];
   import-policy RIB-vrf-wan-export;
  }
 }

root@Spine01# show policy-options policy-statement RIB-vrf-wan-export
term 1 {
  from {
   protocol static;
   route-filter 0.0.0.0/0 exact;
  }
  to rib RED.inet.0;
  then accept;
 }
term 2 {
  from {
   protocol static;
   route-filter 0.0.0.0/0 exact;
 }
 to rib DC.inet.0;
 then accept;
}
then reject;