Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[bgp, lib, tests, zebra] Add support for IPv6 VTEP for VXLAN Single Homing #18539

Draft
wants to merge 6 commits into
base: master
Choose a base branch
from

Conversation

mikemallin
Copy link
Contributor

@mikemallin mikemallin commented Mar 28, 2025

TODO

  • Zebra
  • BGPd
  • Topotest Changes
  • Documentation Changes

Open Questions for Reviewers (V6_VTEP_PR_QUESTION)

Description

This PR extends FRR to support IPv6 VTEPs for VxLAN. It also enables IPv4 over IPv6 VTEP forwarding in the Linux Kernel using the RTA_VIA attribute.

Lib changes

  • Added ipaddr_is_mcast

Zebra Changes

  • %pI4 to %pIA
  • struct in_addr to struct ipaddr
  • Show command filter changes as necessary to support IPv6 VTEP
    arguments

BGP Changes

  • %pI4 -> %pIA
  • struct in_addr -> struct ip_addr
  • Use either mp_nexthop_global_in (IPv4 VTEP) or mp_nexthop_global
    (IPv6 VTEP) for sending/receiving the nexthop of the route

Topotest Changes

Added V6 VTEP variants of the following topotests:

  • bgp_evpn_rt5
  • bgp_evpn_vxlan_topo1
  • bgp_evpn_vxlan_svd_topo1

Documentation Changes

TODO

This is part of the upstreaming process for #5885.

@mikemallin mikemallin force-pushed the dev/ipv6-vtep-support-zebra branch 4 times, most recently from fb4d645 to 1090825 Compare March 28, 2025 18:11
@github-actions github-actions bot added size/XXL and removed size/XL labels Mar 28, 2025
@mikemallin mikemallin force-pushed the dev/ipv6-vtep-support-zebra branch from 1090825 to 040f29d Compare March 28, 2025 18:12
@frrbot frrbot bot added the zebra label Mar 28, 2025
@mikemallin mikemallin force-pushed the dev/ipv6-vtep-support-zebra branch 2 times, most recently from cadf3c1 to 609e39d Compare March 28, 2025 19:24
Copy link
Member

@ton31337 ton31337 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Without documentation and topotests this is no go yet.

@mikemallin
Copy link
Contributor Author

Without documentation and topotests this is no go yet.

Ok, I'll finish porting of the BGP and topotest changes, and add documentation before asking for review.

@frrbot frrbot bot added bgp tests Topotests, make check, etc labels Apr 1, 2025
@mikemallin mikemallin changed the title [zebra] Add support for IPv6 VTEPs [bgp, zebra, tests] Add support for IPv6 VTEPs Apr 1, 2025
@mikemallin mikemallin changed the title [bgp, zebra, tests] Add support for IPv6 VTEPs [bgp, zebra, tests] Add support for IPv6 VTEP for VXLAN Single Homing Apr 1, 2025
@mikemallin mikemallin force-pushed the dev/ipv6-vtep-support-zebra branch 2 times, most recently from df5012b to bba2ecc Compare April 1, 2025 20:02
mikemallin and others added 6 commits April 1, 2025 16:43
- %pI4 to %pIA
- "struct in_addr" to "struct ipaddr"
- Stop changes at the ZAPI boundary until BGP is IPv6 VTEP aware
- Show command filter changes as necessary to support IPv6 VTEP
  arguments
- Add "ipaddr_is_mcast" to lib/ipaddr.h

This is intended to be a no-harm commit until more IPv6 VTEP code is
committed.

Signed-off-by: Mike Mallin <mmallin@cisco.com>

Co-authored-by: Tarek Saad <tsaad@cisco.com>
Co-authored-by: Ramanan Natarajan <ramannat@cisco.com>
This commit enables Kernel forwarding for IPv4 hosts which are reachable
over an IPv6 overlay. The RTA_VIA attribute is used for correct
forwarding in the kernel.

A minor bugfix, when Zebra receives a route add, the nexthop type is
used instead of the route address family in order to decode the EVPN
Nexthop Address correctly. Otherwise it tries to truncate the IPv6 VTEP
address and use it as a IPv4 VTEP...

Signed-off-by: Mike Mallin <mmallin@cisco.com>

Co-authored-by: Barry Friedman <friedman@cisco.com>
- %pI4 -> %pIA
- struct in_addr -> struct ip_addr
- Added zebra IPv6 VTEP handling code behind #if 0 (will enable in next
  commit with the topotests for Single Homed IPv6 VTEP)
- Use either "mp_nexthop_global_in" (IPv4 VTEP) or "mp_nexthop_global"
  (IPv6 VTEP) for sending/receiving the nexthop of the route
- Show commands with a VTEP filter will be extended for IPv6 support in
  an upcoming commit

Signed-off-by: Mike Mallin <mmallin@cisco.com>

Co-authored-by: Tarek Saad <tsaad@cisco.com>
This commit switches the ZAPI messaging to send/receive "struct ipaddr"
between BGP and Zebra for L2VNI, L3VNI and MAC-IP.

A variant of bgp_evpn_rt5 for V6 VTEP is added to test the changes
from end-to-end.

Signed-off-by: Mike Mallin <mmallin@cisco.com>
Signed-off-by: Mike Mallin <mmallin@cisco.com>
Signed-off-by: Mike Mallin <mmallin@cisco.com>
@mikemallin mikemallin changed the title [bgp, zebra, tests] Add support for IPv6 VTEP for VXLAN Single Homing [bgp, lib, tests, zebra] Add support for IPv6 VTEP for VXLAN Single Homing Apr 1, 2025
@mikemallin mikemallin force-pushed the dev/ipv6-vtep-support-zebra branch from bba2ecc to dd95c6a Compare April 1, 2025 20:46
@frrbot frrbot bot added the libfrr label Apr 1, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants