Unter VyOS und EdgeOS gibt es einen Fehler in der Kombination von IPv4 und IPv6 Prefix-Listen in einer gemeinsamen Route-Map. Die Filter für IPv6 werden dabei auch auf IPv4 Subnetze angewendet. Im aktuellen Rolling-Release ist der Fehler bereits behoben.

Das Test-Setup besteht aus zwei Routern, die jeweis ein lokales Netzwerk in Form eines /28 Netzes aus dem Bereich 192.168.0.0/16 announcieren. Verbunden sind die beiden Router über ein Transfernetz (100.64.64.0/30), als AS Nummern werden 100 (RT01) und 200 (RT02) verwendet.

Schematische Darstellung Test-Setup

Die Definition der Prefix-Listen und der Route-Map sieht wie folgt aus, es werden nur Netzwerke mit einer Subnetzmaske ≤ /24 für IPv4 bzw. ≤ /48 für IPv6 erlaubt, alle anderen Subnetze werden herausgefiltert.

vyos@RT02# show policy
prefix-list test-filter {
rule 10 {
action permit
le 24
prefix 0.0.0.0/0
}
}
prefix-list6 test-filter {
rule 10 {
action permit
le 48
prefix ::/0
}
}
route-map test-filter {
rule 10 {
action permit
match {
ip {
address {
prefix-list test-filter
}
}
}
}
rule 20 {
action permit
match {
ipv6 {
address {
prefix-list test-filter
}
}
}
}
rule 6000 {
action deny
}
}

Schauen wir uns nun die Ausgabe der Prefix-Listen und der Route-Map unter VyOS 1.1.8 an fällt auf, dass die Einzelausgaben der Prefix-Lists korrekt sind (keine IPv6 Netze konfiguriert) aber die Route-Map falsch berechnet wird.

vyos@RT02:~$ show ip bgp prefix-list test-filter
BGP table version is 0, local router ID is 100.64.64.2
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, R Removed
Origin codes: i - IGP, e - EGP, ? - incomplete
 
Network Next Hop Metric LocPrf Weight Path
*> 192.168.100.0 100.64.64.1 0 0 100 i
*> 192.168.200.0 0.0.0.0 0 32768 i
 
Total number of prefixes 2
 
vyos@RT02:~$ show ipv6 bgp prefix-list test-filter
 
vyos@RT02:~$ show ip bgp route-map test-filter
BGP table version is 0, local router ID is 100.64.64.2
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, R Removed
Origin codes: i - IGP, e - EGP, ? - incomplete
 
Network Next Hop Metric LocPrf Weight Path
*> 192.168.100.0 100.64.64.1 0 0 100 i
*> 192.168.100.0/28 100.64.64.1 0 0 100 i
* 192.168.200.0 0.0.0.0 32768 i
*> 192.168.200.0/28 0.0.0.0 0 32768 i
 
Total number of prefixes 4

Im aktuellen Rolling-Release der Version 1.2.0 wird der Filter korrekt verarbeitet und die IPv6 Regel beeinflusst die IPv4 Subnetze nicht.

vyos@RT02:~$ show ip bgp prefix-list test-filter
BGP table version is 4, local router ID is 100.64.64.2, vrf id 0
Status codes: s suppressed, d damped, h history, * valid, > best, = multipath,
i internal, r RIB-failure, S Stale, R Removed
Nexthop codes: @NNN nexthop's vrf id, < announce-nh-self
Origin codes: i - IGP, e - EGP, ? - incomplete
 
Network Next Hop Metric LocPrf Weight Path
*> 192.168.100.0/24 100.64.64.1 0 0 100 i
*> 192.168.200.0/24 0.0.0.0 0 32768 i
 
Displayed 2 routes and 4 total paths
 
vyos@RT02:~$ show ipv6 bgp prefix-list test-filter
 
vyos@RT02:~$ show ip bgp route-map test-filter
BGP table version is 4, local router ID is 100.64.64.2, vrf id 0
Status codes: s suppressed, d damped, h history, * valid, > best, = multipath,
i internal, r RIB-failure, S Stale, R Removed
Nexthop codes: @NNN nexthop's vrf id, < announce-nh-self
Origin codes: i - IGP, e - EGP, ? - incomplete
 
Network Next Hop Metric LocPrf Weight Path
*> 192.168.100.0/24 100.64.64.1 0 0 100 i
*> 192.168.200.0/24 0.0.0.0 0 32768 i
 
Displayed 2 routes and 4 total paths

Als Workaround können dedizierte Route-Maps für IPv4 und IPv6 BGP Peers verwendet werden.