ipv4 table mcast4;
ipv6 table mcast6;
+ipv4 table mtab4;
+ipv6 table mtab6;
+
+vpn4 table vpntab4;
+vpn6 table vpntab6;
+
+vpn4 table vpn4mc;
+vpn6 table vpn6mc;
+
flow4 table flowtab4;
flow6 table flowtab6;
protocol device {
- scan time 10;
}
protocol kernel kernel4 {
- scan time 20;
-
ipv4 {
export all;
};
}
protocol kernel kernel6 {
- scan time 20;
-
ipv6 {
export all;
};
route 2001:db8:1:1::/64 via fe80::ec9b:67ff:fe60:fd5d % ve1;
}
+# VPNv4 routes with MPLS labels
+protocol static statvpn4 {
+ vpn4;
+
+ route 10:10 10.20.0.0/24 via 192.168.1.2 mpls 210;
+ route 10:10 10.20.1.0/24 via 192.168.1.2 mpls 210;
+ route 10:20 10.20.0.0/24 via 192.168.1.2 mpls 220;
+ route 10:20 10.20.1.0/24 via 192.168.1.2 mpls 220;
+}
+
+protocol static statvpn6 {
+ vpn6;
+
+ route 10:10 2001:db8:20:10::/64 via 2001:db8:1:1::10 mpls 200/210;
+ route 10:10 2001:db8:20:11::/64 via 2001:db8:1:1::10 mpls 200/210;
+ route 10:20 2001:db8:20:10::/64 via 2001:db8:1:1::10 mpls 200/220;
+ route 10:20 2001:db8:20:11::/64 via 2001:db8:1:1::10 mpls 200/220;
+}
+
# RFC 5575 flow specification
protocol static flowstat4 {
flow4;
length 2048..65535;
dscp = 63;
fragment dont_fragment, is_fragment || !first_fragment;
- } drop;
+ };
route flow4 {
dst 11.0.0.0/8;
proto = 0x12;
sport > 0x5678 && < 0x9abc || 0xdef0 || 0x1234,0x5678,0x9abc..0xdef0;
dport = 50;
- tcp flags 0xabcd/0xbbdd;
- } drop;
+ tcp flags 0x000/0xf00;
+ };
route flow4 {
dst 12.0.0.0/32;
- tcp flags ! 0 / 0x9999;
- } drop;
+ tcp flags ! 0/0x999;
+ };
route flow4 {
dst 220.0.254.0/24;
- tcp flags 0x99 / 0x9999;
- } drop;
+ tcp flags 0x99/0x999;
+ };
route flow4 {
dst 220.0.254.192/28;
- tcp flags !0xffff / 0xFFFF;
- } drop;
+ tcp flags ! 0xfff/0xfff;
+ };
route flow4 {
dst 15.0.0.0/8;
- tcp flags !0x9999/0x9999;
- } drop;
+ tcp flags ! 0x999/0x999;
+ };
}
protocol static flowstat6 {
tcp flags 0x03/0x0f, !0/0xff || 0x33/0x33;
fragment !is_fragment || !first_fragment;
label 0xaaaa/0xaaaa && 0x33/0x33;
- } drop;
+ };
route flow6 {
dst fec0:1122:3344:5566::1/128;
dport = 50;
sport > 24 && < 30 || = 40 || = 50 || = 60 || >= 70 && <= 80;
tcp flags 0x3/0x3 && 0x0/0xc;
- } drop;
+ };
}
export where source = RTS_OSPF;
}
-protocol ospf2 ospf4 {
-# ecmp;
-
+protocol ospf v2 ospf4 {
ipv4 {
import all;
# export where source = RTS_STATIC;
}
-protocol ospf3 ospf6 {
-# ecmp;
-
+protocol ospf v3 ospf6 {
ipv6 {
import all;
# export where source = RTS_STATIC;
# next hop address 2001:db8:1:1::1;
};
+ # IPv4 with MPLS labels (1/4)
+ ipv4 mpls {
+ # explicit IPv4 table
+ table mtab4;
+ import all;
+ export all;
+ };
+
+ # IPv6 with MPLS labels (2/4)
+ ipv6 mpls {
+ # explicit IPv6 table
+ table mtab6;
+ import all;
+ export all;
+ # allows IPv4 next hops (6PE)
+ # extended next hop;
+ };
+
+ # VPNv4 with MPLS labels (1/128)
+ vpn4 mpls {
+ # connects to vpntab4 table by default
+ import all;
+ export all;
+ };
+
+ # VPNv6 with MPLS labels (2/128)
+ vpn6 mpls {
+ # connects to vpntab6 table by default
+ import all;
+ export all;
+ };
+
+ # VPNv4 multicast topology (1/129)
+ vpn4 multicast {
+ table vpn4mc;
+ import all;
+ export all;
+ };
+
+ # VPNv6 multicast topology (2/129)
+ vpn6 multicast {
+ table vpn6mc;
+ import all;
+ export all;
+ };
+
# IPv4 Flowspec (1/133)
flow4 {
# connects to flowtab4 table by default