oakestra/oakestra-net

Extend IPv6 subnetworking

Closed this issue · 1 comments

Short

Transition the networking to IPv6 in order to solve the possible network address space exhaustion.

Proposal

Move the networking to IPv6 for more addresses, as well as semantic addressing.
The Oakestra platform then uses the reserved private IPv6 subnet fc00::/7.
This private subnet is further divided reserving the last 16 bit subnetwork block fdff::/16 for a Service IP subnet, which is needed in order to give addresses to Instances and the (up to) 30 balancing strategies per Instance. We divide the Service IP subnet into 32 equal sized subnetworks with up to 30 balancing strategy subnets and 2 Instance IP subnets, using a prefix of /21. The fdfe::/16 I would propose to keep reserved for future use. The remainder of the address space is used to hand out subnetworks for worker nodes, using a /120 prefix. This leaves a worker subnetwork with 8 bits for namespace IPs for the containers inside a worker subnetwork.

To sum up the subnetwork division with subnet specification:

Subnet Subnet description
fc00::/7 full Oakestra subnetwork
fc00::/120 - fdfd:ffff:ffff:ffff:ffff:ffff:ffff:0/120 Worker subnets
fdfe::/16 reserved for future use
fdff::/16 Service IP subnet
fdff:0000::/21 Instance IP subnet 1
fdff:1000::/21 Balancing 1
fdff:2000::/21 Balancing 2
... ...
fdff:f000::/21 Balancing 15
fdff:0800::/21 Instance IP subnet 2
fdff:1800::/21 Balancing 16
fdff:2800::/21 Balancing 17
... ...
fdff:f800::/21 Balancing 30

The Oakestra components are also required to support IPv6.
The net-manager should support to forward both IPv4 and IPv6 traffic. The service managers will additionally have to manage IPv6 entries in the databases.

Ratio

This solves the address space limitations IPv4 has with growing worker nodes. So far the limit is ~65535 workers, which would grow into a very large, unimaginable number with IPv6 subnetworking.

Impact

cluster/root service managers and netmanager

Status

Testing

Checklist

  • Discussed
  • Documented
  • Implemented
  • Tested

merged with #164