Skip to content

Commit 02c4592

Browse files
authored
Cumulus NVUE: Add multiple loopback and VRF support, fix IPv6 (#1557)
1 parent e705de3 commit 02c4592

File tree

3 files changed

+67
-31
lines changed

3 files changed

+67
-31
lines changed

docs/platforms.md

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
| Cisco IOS XRv [](caveats-iosxr) | iosxr |
2626
| Cisco Nexus 9300v [](caveats-nxos) | nxos |
2727
| Cumulus Linux 4.x/5.x [](caveats-cumulus) | cumulus |
28-
| Cumulus Linux 5.0 (NVUE) [](caveats-cumulus-nvue) | cumulus_nvue |
28+
| Cumulus Linux 5.x (NVUE) [](caveats-cumulus-nvue) | cumulus_nvue |
2929
| Dell OS10 [](caveats-os10) | dellos10 |
3030
| Fortinet FortiOS [](caveats-fortios) | fortios |
3131
| FRRouting (FRR) [](caveats-frr) | frr |
@@ -83,7 +83,7 @@ You cannot use all supported network devices with all virtualization providers.
8383
| Cisco IOS XRv | [](build-iosxr) |||
8484
| Cisco Nexus 9300v | [](build-nxos) ||[](clab-vrnetlab) |
8585
| Cumulus Linux |||[](caveats-cumulus) |
86-
| Cumulus Linux 5.0 (NVUE) |||[](caveats-cumulus) |
86+
| Cumulus Linux 5.x (NVUE) |||[](caveats-cumulus) |
8787
| Dell OS10 | [](build-dellos10) |||
8888
| Fortinet FortiOS ||||
8989
| FRR |[](caveats-frr) |[](caveats-frr) ||
@@ -117,7 +117,7 @@ Configuration files for Virtualbox and KVM/libvirt environments specify the numb
117117
| Cisco IOS XRv | iosxr | 2 | 8192 | e1000 |
118118
| Cisco Nexus 9300v | nxos | 2 | 6144 [](caveats-nxos)| e1000 |
119119
| Cumulus Linux | cumulus | 2 | 1024 | virtio |
120-
| Cumulus Linux 5.0 (NVUE) | cumulus_nvue | 2 | 1024 | virtio |
120+
| Cumulus Linux 5.x (NVUE) | cumulus_nvue | 2 | 1024 | virtio |
121121
| Dell OS10 | dellos10 | 2 | 2048 | e1000 |
122122
| Fortinet FortiOS | fortios | 1 | 1024 | virtio |
123123
| FRR | frr | 1 | 1024 | virtio |
@@ -177,7 +177,7 @@ The following system-wide features are configured on supported network operating
177177
| Cisco IOS XRv ||||||
178178
| Cisco Nexus OS ||||||
179179
| Cumulus Linux ||[^HIF] ||||
180-
| Cumulus Linux 5.0 (NVUE) ||||||
180+
| Cumulus Linux 5.x (NVUE) ||||||
181181
| Dell OS10 ||||||
182182
| Fortinet FortiOS ||||||
183183
| FRR ||[^HIF] ||||
@@ -204,7 +204,7 @@ The following interface parameters are configured on supported network operating
204204
| Cisco IOS XRv ||[](caveats-iosxr) |||
205205
| Cisco Nexus OS |||||
206206
| Cumulus Linux |||||
207-
| Cumulus Linux 5.0 (NVUE) || | | |
207+
| Cumulus Linux 5.x (NVUE) || | | |
208208
| Dell OS10 |||||
209209
| Fortinet FortiOS |||||
210210
| FRR |||||
@@ -230,7 +230,7 @@ The following interface addresses are supported on various platforms:
230230
| Cisco IOS XRv ||||
231231
| Cisco Nexus OS ||||
232232
| Cumulus Linux ||||
233-
| Cumulus Linux 5.0 (NVUE) ||||
233+
| Cumulus Linux 5.x (NVUE) ||||
234234
| Dell OS10 ||||
235235
| Fortinet FortiOS ||||
236236
| FRR ||||
@@ -264,7 +264,7 @@ Routing protocol [configuration modules](module-reference.md) are supported on t
264264
| Cisco IOS XRv ||||||
265265
| Cisco Nexus OS ||||||
266266
| Cumulus Linux ||||||
267-
| Cumulus Linux 5.0 (NVUE) ||||[](caveats-cumulus-nvue) ||
267+
| Cumulus Linux 5.x (NVUE) ||||[](caveats-cumulus-nvue) ||
268268
| Dell OS10 |[](caveats-os10) |||||
269269
| Fortinet FortiOS |[](caveats-fortios) |||||
270270
| FRR ||||||
@@ -311,11 +311,12 @@ These devices support additional control-plane protocols or BGP address families
311311
(platform-layer-2-support)=
312312
The layer-2 control plane [configuration modules](module-reference.md) are supported on these devices[^NSM]:
313313

314-
| Operating system | [Spanning<br>Tree Protocol](module/stp.md) | [Link Aggregation<br>Groups](module/lag.md) |
315-
| --------------------- |:--:|:--:|
316-
| Arista EOS |||
317-
| Cumulus Linux |||
318-
| FRR |||
314+
| Operating system | [Spanning<br>Tree Protocol](module/stp.md) | [Link Aggregation<br>Groups](module/lag.md) |
315+
| ------------------------- |:--:|:--:|
316+
| Arista EOS |||
317+
| Cumulus Linux |||
318+
| Cumulus Linux 5.x (NVUE) |||
319+
| FRR |||
319320

320321
(platform-dataplane-support)=
321322
The data plane [configuration modules](module-reference.md) are supported on these devices[^NSM]:
@@ -329,7 +330,7 @@ The data plane [configuration modules](module-reference.md) are supported on the
329330
| Cisco IOSv/IOSvL2 |||||||
330331
| Cisco Nexus OS |||||||
331332
| Cumulus Linux |||||||
332-
| Cumulus Linux 5.0 (NVUE) | |[](module-vrf-platform-support)|||||
333+
| Cumulus Linux 5.x (NVUE) | |[](module-vrf-platform-support)|||||
333334
| Dell OS10 |||||||
334335
| FRR |||||||
335336
| Juniper vMX |||||||
@@ -375,7 +376,7 @@ Core *netlab* functionality and all multi-protocol routing protocol configuratio
375376
| Cisco IOS XE[^18v] |||||||
376377
| Cisco Nexus OS |||||||
377378
| Cumulus Linux |||||||
378-
| Cumulus Linux 5.0 (NVUE) |||||||
379+
| Cumulus Linux 5.x (NVUE) |||||||
379380
| Dell OS10 |||||||
380381
| Fortinet FortiOS |||||||
381382
| FRR |||||||

netsim/ansible/templates/initial/cumulus_nvue.j2

Lines changed: 50 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@
1414
{% endif %}
1515
{% if i.ipv4 is defined or i.ipv6 is defined %}
1616
ip:
17+
{% if i.vrf is defined %}
18+
vrf: {{ i.vrf }}
19+
{% endif %}
1720
address:
1821
{% if i.ipv4 is defined %}
1922
{% if i.ipv4 == True %}
@@ -22,12 +25,18 @@
2225
{{ i.ipv4 }}: {}
2326
{% endif %}
2427
{% endif %}
25-
{% if i.vrf is defined %}
26-
vrf: {{ i.vrf }}
27-
{% endif %}
2828
{% if i.ipv6 is defined %}
29-
{% if i.ipv6 is string %}
29+
{% if i.ipv6 is string and i.ipv6|ipv6 %}
3030
{{ i.ipv6 }}: {}
31+
ipv6:
32+
forward: on
33+
{% if 'ipv6' not in i.dhcp.client|default({}) %}
34+
neighbor-discovery:
35+
enable: on
36+
router-advertisement:
37+
enable: off # Major bug in NVUE - any non-"on" value will *enable* (no suppress) RA...
38+
interval: 5000
39+
{% endif %}
3140
{% endif %}
3241
{% else %}
3342
ipv6:
@@ -50,21 +59,46 @@
5059
address:
5160
dhcp: {}
5261
type: eth
62+
{% for l in interfaces|default([]) if l.type!='loopback' %}
63+
{{ decl_interface(l) }}
64+
{% endfor %}
65+
66+
{% for lb in netlab_interfaces if lb.type=='loopback' %}
67+
- set:
68+
{% if lb.vrf is not defined %}
69+
interface:
5370
lo:
71+
type: loopback
72+
{% if lb.mtu is defined %}
73+
link:
74+
mtu: {{ lb.mtu }}
75+
{% endif %}
5476
ip:
5577
address:
56-
{% if 'ipv4' in loopback %}
57-
{{ loopback.ipv4 }}: {}
58-
{% else %}
59-
127.0.0.1: {}
60-
{% endif %}
61-
{% if 'ipv6' in loopback %}
62-
{{ loopback.ipv6 }}: {}
63-
{% else %}
78+
{% if 'ipv4' in lb %}
79+
{{ lb.ipv4 }}: {}
80+
{% else %}
81+
127.0.0.1/8: {}
82+
{% endif %}
83+
{% if 'ipv6' in lb %}
84+
{{ lb.ipv6 }}: {}
85+
{% else %}
6486
ipv6:
6587
enable: off
66-
{% endif %}
67-
type: loopback
68-
{% for l in interfaces|default([]) if l.type in ['lan','p2p','stub','svi','lag'] %}
69-
{{ decl_interface(l) }}
88+
{% endif %}
89+
{% else %}
90+
vrf:
91+
{{ lb.vrf }}:
92+
loopback:
93+
ip:
94+
address:
95+
{% if 'ipv4' in lb %}
96+
{{ lb.ipv4 }}: {}
97+
{% else %}
98+
127.0.0.1/8: {}
99+
{% endif %}
100+
{% if 'ipv6' in lb %}
101+
{{ lb.ipv6 }}: {}
102+
{% endif %}
103+
{% endif %}
70104
{% endfor %}

netsim/devices/cumulus_nvue.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
description: Cumulus VX 5.x configured with NVUE
22
interface_name: swp{ifindex}
33
lag_interface_name: "bond{lag.ifindex}"
4+
loopback_interface_name: lo{ifindex} # Can assign multiple IPs to 'lo' interface, name ignored by template
45
mgmt_if: eth0
5-
mtu: 1500 # Set default MTU for all providers the same
6+
mtu: 1500 # Set default MTU for all providers the same
67
libvirt:
78
image: CumulusCommunity/cumulus-vx:5.10.0 # Latest as of November 2024, supports PVRST+ on single vlan-aware bridge
89
virtualbox:

0 commit comments

Comments
 (0)