Skip to content

T7388: IPv6 neighbor discovery not supported by every interface type #4541

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

Draft
wants to merge 2 commits into
base: current
Choose a base branch
from

Conversation

c-po
Copy link
Member

@c-po c-po commented Jun 2, 2025

Change summary

The commit b124f0b ("interface: T4627: support IPv6 Interface Identifier (token) for SLAAC") revealed an incorrect assumption in VyOS: that all nterface types in use inherently support SLAAC and IPv6 Neighbor Discovery (ND).

However, this assumption does not hold true for WireGuard, Tunnel, and VTI interfaces. Therefore, the corresponding CLI option should not be available for these interface types. Additionally, SLAAC support should be removed for them in a future pull request.

To address this, remove the "ipv6 address autoconf" CLI tree from the following interface types using a migration script:

  • WireGuard
  • Tunnel
  • VTI

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Code style update (formatting, renaming)
  • Refactoring (no functional changes)
  • Migration from an old Vyatta component to vyos-1x, please link to related PR inside obsoleted component
  • Other (please describe):

Related Task(s)

Related PR(s)

How to test / Smoketest result

Checklist:

  • I have read the CONTRIBUTING document
  • I have linked this PR to one or more Phabricator Task(s)
  • I have run the components SMOKETESTS if applicable
  • My commit headlines contain a valid Task id
  • My change requires a change to the documentation
  • I have updated the documentation accordingly

…very file

To support features that are available on everz IPv6 supporting interface
define a "base" file and one or more feature include files like neighbor
discovery, as this is not supported on every interface.
Copy link

github-actions bot commented Jun 2, 2025

👍
No issues in PR Title / Commit Title

Copy link

github-actions bot commented Jun 2, 2025

✅ No issues found in unused-imports check.. Please refer the workflow run

@c-po c-po added the bp/circinus Create automatic backport for circinus label Jun 2, 2025
@c-po c-po requested a review from sever-sever June 2, 2025 13:41
base = ['interfaces']

def migrate(config: ConfigTree) -> None:
for iftype in ['tunnel', 'wireguard', 'vti']:
Copy link
Member

Choose a reason for hiding this comment

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

In theory it should work for encapsulation gretap

Copy link
Member Author

Choose a reason for hiding this comment

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

You are right about gretap - we probably should keep it for tunnel and only remove it for VTI and WireGuard interfaces? What's your opinion on this?

vyos@vyos:~$ sudo tcpdump -ni tun0
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on tun0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
22:07:43.765838 IP6 fe80::f980:afff:fed8:1ecf > ff02::2: ICMP6, router solicitation, length 8
22:07:43.766526 IP6 fe80::f975:49ff:fe15:1e71 > fe80::f980:afff:fed8:1ecf: ICMP6, router advertisement, length 64
22:07:49.110446 IP6 fe80::f975:49ff:fe15:1e71 > fe80::f980:afff:fed8:1ecf: ICMP6, neighbor solicitation, who has fe80::f980:afff:fed8:1ecf, length 32
22:07:49.110495 IP6 fe80::f980:afff:fed8:1ecf > fe80::f975:49ff:fe15:1e71: ICMP6, neighbor advertisement, tgt is fe80::f980:afff:fed8:1ecf, length 24

Tested using:

set interfaces tunnel tun0 encapsulation 'gretap'
set interfaces tunnel tun0 ipv6 address autoconf
set interfaces tunnel tun0 remote '172.18.254.201'
set interfaces tunnel tun0 source-address '172.18.254.202'

Copy link
Member

@sever-sever sever-sever Jun 3, 2025

Choose a reason for hiding this comment

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

only remove it for VTI and WireGuard interfaces

Sounds reasonable
Not sure about vti + IPv6 peers.

@c-po c-po requested a review from sever-sever June 2, 2025 20:09
The commit b124f0b ("interface: T4627: support IPv6 Interface Identifier
(token) for SLAAC") revealed an incorrect assumption in VyOS: that all
interface types in use inherently support SLAAC and IPv6 Neighbor Discovery
(ND).

However, this assumption does not hold true for WireGuard, Tunnel, and VTI
interfaces. Therefore, the corresponding CLI option should not be available
for these interface types. Additionally, SLAAC support should be removed for
them in a future pull request.

To address this, remove the "ipv6 address autoconf" CLI tree from the following
interface types using a migration script:
* WireGuard
* Tunnel (if encapsulation is not gretap or ip6gretap)
* VTI
@c-po c-po force-pushed the T7388-ipv6-nd branch from b2ed3d9 to 03cf3d0 Compare June 4, 2025 17:41
@c-po c-po marked this pull request as draft June 4, 2025 18:46
Copy link

github-actions bot commented Jun 4, 2025

CI integration ❌ failed!

Details

CI logs

  • CLI Smoketests (no interfaces) ❌ failed
  • CLI Smoketests (interfaces only) ❌ failed
  • Config tests 👍 passed
  • RAID1 tests 👍 passed
  • TPM tests 👍 passed

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bp/circinus Create automatic backport for circinus current
Development

Successfully merging this pull request may close these issues.

2 participants