Refactor generator - allow for multiple types of node (only 'vpp' for now) -- move the vpp overlays into a new 'type'-root; we will read common/ / and / now

This commit is contained in:
Pim van Pelt
2023-05-06 10:57:05 +00:00
parent aa0b042298
commit e9d645cba4
14 changed files with 16 additions and 10 deletions

View File

@ -0,0 +1,21 @@
## Bird2 configuration for {{ node.hostname }}
router id {{ node.loopback.ipv4.split("/")[0] }};
protocol device { scan time 30; }
protocol direct { ipv4; ipv6; check link yes; }
protocol kernel kernel4 {
ipv4 { import none; export where source != RTS_DEVICE; };
learn off;
scan time 300;
}
protocol kernel kernel6 {
ipv6 { import none; export where source != RTS_DEVICE; };
learn off;
scan time 300;
}
include "core/static.conf";
include "core/bfd.conf";
include "core/ospf.conf";
include "manual.conf";

View File

@ -0,0 +1,6 @@
protocol bfd bfd1 {
interface "e*" {
interval 100 ms;
multiplier 20;
};
}

View File

@ -0,0 +1,21 @@
protocol ospf v2 ospf4 {
ipv4 { export where (source = RTS_DEVICE || source = RTS_STATIC); import all; };
area 0 {
interface "loop0" { stub yes; };
interface "e0" { type pointopoint; cost 5; bfd off; };
interface "e1" { type pointopoint; cost 5; bfd off; };
interface "e2" { type pointopoint; cost 5; bfd off; };
interface "e3" { type pointopoint; cost 5; bfd off; };
};
}
protocol ospf v3 ospf6 {
ipv6 { export where (source = RTS_DEVICE || source = RTS_STATIC); import all; };
area 0 {
interface "loop0" { stub yes; };
interface "e0" { type pointopoint; cost 5; bfd off; };
interface "e1" { type pointopoint; cost 5; bfd off; };
interface "e2" { type pointopoint; cost 5; bfd off; };
interface "e3" { type pointopoint; cost 5; bfd off; };
};
}

View File

@ -0,0 +1,20 @@
protocol static static4 {
ipv4 { export all; };
# route 192.0.2.0/24 via 10.0.0.1;
route {{lab.ipv4}} unreachable;
{% if node.id == 0 %}
route 0.0.0.0/0 via 192.168.{{10+lab.id}}.4;
{% endif %}
}
protocol static static6 {
ipv6 { export all; };
# route 2001:db8:cafe::/48 via 2001:db8::1;;
route {{lab.ipv6}} unreachable;
{% if node.id == 0 %}
route ::/0 via 2001:678:d78:2{{lab.id}}1::ffff;
{% endif %}
}

View File

@ -0,0 +1 @@
## Manual configuration for {{ node.hostname }}

View File

@ -0,0 +1,11 @@
comment { Apply system defaults from the build }
exec /etc/vpp/config/defaults.vpp
exec /etc/vpp/config/loopback.vpp
exec /etc/vpp/config/interface.vpp
exec /etc/vpp/config/lcp.vpp
comment { exec /etc/vpp/config/flowprobe.vpp }
comment { Allow user to set persistent manual configs }
exec /etc/vpp/config/manual.vpp

View File

@ -0,0 +1,6 @@
set logging class linux-cp rate-limit 1000 level warn syslog-level notice
lcp default netns dataplane
lcp lcp-sync on
lcp lcp-auto-subint off

View File

@ -0,0 +1,11 @@
comment { Generate full IPFIX stats, send them to lab.ipng.ch }
set ipfix exporter collector 194.1.163.86 src {{node.loopback.ipv4.split("/")[0]}} port 4739 path-mtu 1450 template-interval 30
flowprobe params record l2 l3 l4 active 10 passive 60
flowprobe feature add-del GigabitEthernet10/0/0 l2 both
flowprobe feature add-del GigabitEthernet10/0/1 l2 both
flowprobe feature add-del GigabitEthernet10/0/2 l2 both
flowprobe feature add-del GigabitEthernet10/0/3 l2 both

View File

@ -0,0 +1,41 @@
{% if node.id == 0 %}
comment { Gi10/0/0 is connected to lab.ipng.ch:lab{{lab.id}} }
set interface mtu 9000 GigabitEthernet10/0/0
set interface mtu packet 9000 GigabitEthernet10/0/0
set interface ip address GigabitEthernet10/0/0 2001:678:d78:2{{lab.id}}1::{{node.id}}:fffe/112
set interface ip address GigabitEthernet10/0/0 192.168.{{10+lab.id}}.{{5+2*node.id}}/31
set interface state GigabitEthernet10/0/0 up
{% else %}
comment { Gi10/0/0 is connected to vpp{{lab.id}}-{{node.id-1}}:Gi10/0/1 }
set interface mtu 9000 GigabitEthernet10/0/0
set interface mtu packet 9000 GigabitEthernet10/0/0
set interface ip address GigabitEthernet10/0/0 2001:678:d78:2{{lab.id}}1::{{node.id}}:{{lab.id}}{{node.id}}/112
set interface ip address GigabitEthernet10/0/0 192.168.{{10+lab.id}}.{{5+2*node.id}}/31
set interface state GigabitEthernet10/0/0 up
{% endif %}
{% if node.id < 3 %}
comment { Gi10/0/1 is connected to vpp{{lab.id}}-{{node.id+1}}:Gi10/0/0 }
set interface mtu 9000 GigabitEthernet10/0/1
set interface mtu packet 9000 GigabitEthernet10/0/1
set interface ip address GigabitEthernet10/0/1 2001:678:d78:2{{lab.id}}1::{{node.id+1}}:{{lab.id}}{{node.id}}/112
set interface ip address GigabitEthernet10/0/1 192.168.{{10+lab.id}}.{{6+2*node.id}}/31
set interface state GigabitEthernet10/0/1 up
{% else %}
comment { Gi10/0/1 is free to use }
set interface mtu 9000 GigabitEthernet10/0/1
set interface mtu packet 9000 GigabitEthernet10/0/1
set interface state GigabitEthernet10/0/1 down
{% endif %}
comment { Gi10/0/2 is free to use }
set interface mtu 9000 GigabitEthernet10/0/2
set interface mtu packet 9000 GigabitEthernet10/0/2
set interface state GigabitEthernet10/0/2 down
comment { Gi10/0/3 is free to use }
set interface mtu 9000 GigabitEthernet10/0/3
set interface mtu packet 9000 GigabitEthernet10/0/3
set interface state GigabitEthernet10/0/3 down

View File

@ -0,0 +1,8 @@
comment { Create one LinuxCP Interface Pair for each phy }
lcp create loop0 host-if loop0
lcp create GigabitEthernet10/0/0 host-if e0
lcp create GigabitEthernet10/0/1 host-if e1
lcp create GigabitEthernet10/0/2 host-if e2
lcp create GigabitEthernet10/0/3 host-if e3

View File

@ -0,0 +1,7 @@
comment { Create a loopback interface }
create loopback interface instance 0
set interface state loop0 up
set interface ip address loop0 {{ node.loopback.ipv4 }}
set interface ip address loop0 {{ node.loopback.ipv6 }}

View File

@ -0,0 +1,3 @@
comment { Put any config for {{ node.hostname }} you'd like here. }
comment { It will persist across restarts of VPP and reboots of the VM. }