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

Set 'ipv6: True' on interfaces used for unnumbered IPv6 BGP sessions #460

Closed
ipspace opened this issue Sep 18, 2022 · 4 comments
Closed

Comments

@ipspace
Copy link
Owner

ipspace commented Sep 18, 2022

An interface that is used for unnumbered IPv4 EBGP session(s) needs IPv6 LLA (that's how the unnumbered sessions are implemented).

Not a big deal, until someone decides to disable IPv6 by default (I'm looking at you, Cumulus Linux 4.4 container). I "fixed" that SNAFU by enabling IPv6 on interfaces that have role 'external', but it would be much nicer to set ipv6: True on such interfaces within the BGP configuration module.

That might mess up the node address family though (all of a sudden, there would be IPv6 and VPNv6 address families) unless we do it at the very end of the transformation process.

Please note that we have a problem only in IPv4-only environments with interfaces configured either with unnumbered: True or ipv4: True.

The only devices currently supporting unnumbered IPv4 EBGP sessions are Cumulus Linux, FRR, and Nokia SR Linux. Any thoughts on this conundrum @jbemmel @petercrocker?

@jbemmel
Copy link
Collaborator

jbemmel commented Sep 18, 2022

I think the flag should be bgp.unnumbered; if true, it would enable ipv6 on the interface (given the dependency)

I just hit a similar issue through the unnumbered flag; it currently works on frr even with ipv6 absent, because the device templates don't currently disable ipv6 correctly. I'll submit some PRs to fix that (also for Cumulus potentially)

@jbemmel
Copy link
Collaborator

jbemmel commented Sep 19, 2022

See #463

I suspect the reasoning by Cumulus could be that they don't want their devices to do ipv6 unless explicitly configured to do so, for security reasons. In contrast, vanilla FRR enables ipv6 unless forced to disable it (outside of FRR)

@ipspace
Copy link
Owner Author

ipspace commented Sep 19, 2022

I think the flag should be bgp.unnumbered; if true, it would enable ipv6 on the interface (given the dependency)

I don't want to test yet-another flag in initial configuration (or later) templates. Setting 'ipv6: True' on the interface data gets the job done, but I wouldn't want it to trigger (for example) OSPFv3. Will check what happens if I set that flag late in BGP module.

I just hit a similar issue through the unnumbered flag; it currently works on frr even with ipv6 absent, because the device templates don't currently disable ipv6 correctly. I'll submit some PRs to fix that (also for Cumulus potentially)

The default state depends on the system setting, and as the FRR container serves mostly as a control-plane container (with some of us abusing it as a pure Linux data-plane device), I don't think they would care.

@ipspace
Copy link
Owner Author

ipspace commented Sep 19, 2022

I suspect the reasoning by Cumulus could be that they don't want their devices to do ipv6 unless explicitly configured to do so, for security reasons. In contrast, vanilla FRR enables ipv6 unless forced to disable it (outside of FRR)

There is no reasoning. IPv6 (LLA) is enabled on all interfaces in Cumulus VX 4.3.0 container and Cumulus VX 4.4.0 VM, but disabled in Cumulus VX 4.4.0 container.

ipspace added a commit that referenced this issue Sep 21, 2022
…essions (fixes #460)

There are devices that need IPv6 enabled on an interface to make
unnumbered EBGP sessions work. Those devices might not be able to pass
the IPv4-only unnumbered EBGP test case because IPv6 is not enabled.

This commit adds 'ipv6: True' to interfaces that have at least one
unnumbered EBGP session. The change is made very late in the
transformation process (after the links module calculates the node
address families) and thus should not impact other routing protocols. It
does not impact other modules using address families (like VRF module).

An alternative might have been to add yet another flag (example:
ipv6_lla) but that would require changes in initial device configuration
templates.
ipspace added a commit that referenced this issue Oct 1, 2022
…essions (fixes #460)

There are devices that need IPv6 enabled on an interface to make
unnumbered EBGP sessions work. Those devices might not be able to pass
the IPv4-only unnumbered EBGP test case because IPv6 is not enabled.

This commit adds 'ipv6: True' to interfaces that have at least one
unnumbered EBGP session. The change is made very late in the
transformation process (after the links module calculates the node
address families) and thus should not impact other routing protocols. It
does not impact other modules using address families (like VRF module).

An alternative might have been to add yet another flag (example:
ipv6_lla) but that would require changes in initial device configuration
templates.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants