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

Dualstack Support #202

Draft
wants to merge 14 commits into
base: master
Choose a base branch
from
34 changes: 34 additions & 0 deletions docs/src/development/proposals/MEP13/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# IPv6 Support

IPv6 support is required to be able to create Kubernetes clusters with either IPv6 single- or dual-stack enabled.
With immanent shortage of IPv4 addresses the need to be able to use IPv6 increased.

Full IPv6 dual-stack Support was added to Kubernetes with v1.23 as stable.

Gardener on the other hand does not yet have full IPv6 dual-stack support. See: https://github.com/gardener/gardener/issues/7051

Metal Stack manages Cidrs and IP Addresses with the [go-ipam](https://github.com/metal-stack/go-ipam) library, which gained full IPv6 Support already in 2021 https://metal-stack.io/blog/2021/02/ipv6-part1.
majst01 marked this conversation as resolved.
Show resolved Hide resolved
But this was only the foundation, to get full IPv6 support for all aspects which are managed by metal-stack.io, further work needs to be done.

## General Decisions

### Networks

Currently metal-stack organizes Cidrs/Prefixes in a `network`. A network can consist of multiple cidrs from the same address family,
for example if you need internet connectivity, you start with a small cidrs but with time you will need more ipaddresses and by more internet cidrs.
Then you simply add these additional cidrs you bought, to the already existing internet `network` and more servers can be created with internet addresses.
majst01 marked this conversation as resolved.
Show resolved Hide resolved

With IPv6 we have to choose between two options:

#### Network per Address Family

This means that we allow networks with cidrs from one address family only, one for IPv4 and one for IPv6
majst01 marked this conversation as resolved.
Show resolved Hide resolved

The machine creation process will not change if the machine only needs to be either IPv4 or IPv6 addressable.
But if on the other side, the machine need to be able to connect to both address families, the machine creation needs to specify two networks, one for IPv4 and one for IPv6.
Also there will be 2 distinct VRF IDs for every network with a different address family.

#### Network with both Address Families

Make a network dual address family capable, that means that you can add multiple cidrs from both address families to one network
Then the machine creation will stay the same for the single stack and dual-stack case, but the ip address allocation from one network must return a pair of ip addresses if the network is dual-stack.
3 changes: 2 additions & 1 deletion docs/src/development/proposals/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ Possible states are:
Once a proposal was accepted, an issue should be raised and the implementation should be done in a separate PR.

| Name | Description | State |
| :------------------------ | :--------------------------------------------- | :-------------: |
|:--------------------------|:-----------------------------------------------|:---------------:|
| [MEP-1](MEP1/README.md) | Distributed Control Plane Deployment | `In Discussion` |
| [MEP-2](MEP2/README.md) | Two Factor Authentication | `Aborted` |
| [MEP-3](MEP3/README.md) | Machine Re-Installation to preserve local data | `Completed` |
Expand All @@ -30,3 +30,4 @@ Once a proposal was accepted, an issue should be raised and the implementation s
| [MEP-10](MEP10/README.md) | SONiC Support | `Completed` |
| [MEP-11](MEP11/README.md) | Auditing of metal-stack resources | `Completed` |
| [MEP-12](MEP12/README.md) | Rack Spreading | `Completed` |
| [MEP-13](MEP13/README.md) | IPv6 | `In Discussion` |