Add support for BGP on link-local addresses
doka380 opened this issue · 3 comments
Is your feature request related to a problem?
At the moment, it's not possible to use link-local addresses for building BGP peering, since there is no ability to specify interface where peer can be found. Value e.g. fe80::xxxx:xxxx:xxxx:xxxx%enp1s0
for peerAddress
in BGPPeer
rejected with the error Error from server (Forbidden): error when creating "metlb-conf.yaml": admission webhook "bgppeersvalidationwebhook.metallb.io" denied the request: parsing peer gk-peer-v6: invalid BGPPeer address "fe80::b8a3:17ff:fe0c:c54a%enp1s0"
Describe the solution you'd like
This is already supported by FRR:
neighbor fe80::a876:4dff:fe77:408 remote-as 64501
neighbor fe80::a876:4dff:fe77:408 interface enp1s0
and the second line of the config above (interface specification) can be generated based on the following BGPPeer specification:
spec:
peerASN: 64501
peerAddress: fe80::a876:4dff:fe77:408
peerInterface: enp1s0
Additional context
This change will allow to use any available addressing in IPv6 environment, including link-local addresses.
There was a discussion here about this - https://kubernetes.slack.com/archives/C8FSTGU56/p1717574500705649
I've read and agree with the following
- I've checked all open and closed issues and my request is not there.
- I've checked all open and closed pull requests and my request is not there.
Thanks for raising this! We are working on it!
At some point we'll create a design proposal.
Just to make it clear - this is not something exotic, the same approach also implemented in another routing software - Bird - https://bird.network.cz/?get_doc&v=20&f=bird-6.html#ss6.4 -
interface string
Define interface we should use for link-local BGP IPv6 sessions. Interface can also be specified
as a part of neighbor address (e.g., neighbor fe80::1234%eth0 as 65000;).