aristanetworks / avd

Arista Validated Designs
https://avd.arista.com
Apache License 2.0
290 stars 209 forks source link

RFC5549 IPv4 routing in overlay broken due to missing config #2646

Closed onurgashi closed 1 year ago

onurgashi commented 1 year ago

Issue Summary

The configuration would work fine for underlay due to ip routing ipv6 interfaces being present. For overlay the switch generates the correct BGP update however doesn't know how to route traffic without the knob in the overlay.

ip routing ipv6 interfaces vrf transit

Is mandatory so that the routing can be done for the VRF using iBGP over the peer-link. Otherwise traffic will be black-holed in case of uplink convergence.

The above config in turn should remove the config from running-config:

ip routing vrf transit

To enable:

# Enable RFC 5549(iBGP) i.e. IPv6 Unnumbered for MLAG iBGP connections.
# Requires "underlay_rfc5549: true"
overlay_mlag_rfc5549: < true | false | default -> false >

If this would be tweaked for the VRF template that would solve the problem.

`    @cached_property
    def ip_routing_ipv6_interfaces(self) -> bool | None:
        """
        ip_routing_ipv6_interfaces set based on underlay_rfc5549 variable
        """
        if get(self._hostvars, "underlay_rfc5549") is True:
            return True
        return None`

Which component(s) of AVD impacted

eos_designs

How do you run AVD ?

Ansible CLI (with virtual-env or native python)

Steps to reproduce

If you configure RFC 5549 and you have MLAG iBGP peers in VRFs this will not generate the config `ip routing ipv6 interfaces  vrf transit` which is required for routing of IPv4 packets with IPv6 next-hops.

This works well for the underlay when using RFC5549.

Relevant log output

No response

Contributing Guide

onurgashi commented 1 year ago

Thank you very much for taking this over.

I have verified the config in all molecule scenarios and it generates as expected. Also the logic on how it's used makes sense to me.

LGTM!