---
title: "Networking WG, 30th March 2023"
tags: networking, oakestra
datetime: 2023-03-30T16:00UTC
location: Online, Discord, the `#voice-meeting` voice channel
teams:
- networkingWG
participants:
- Giovanni (GB)
- Simon (SZ)
---
## 📋 Agenda
- [ ] IPv4 to IPv6 load balancing
- [x] SZ: Revise IPv6 subnetworking for future-proofing (leave address spaces open for future)
- [ ] NM: Discuss about the proxy gateway solutions when cluster is within a private n/w
- [ ] NM: Security aspects
- [ ] GB & SZ: Create internal documentation for this IP blocks: Add detailed documentation to https://hackmd.io/@oakestra/HyxDGGBRj/edit
- [ ] SZ: Finalize the IPv6 addressing logic
- [ ] GB & SZ: Think about external facing services in Oakestra, especially concerning category 2 as discussed.
- [ ] GB: create an IPv4 network split like the IPv6 one.
- [ ] GB: create an issue about netcfg.json v2.0
## 📢 Discussions
SZ: future-proofing: remove one of reserved blocks for service IPs and we can reserve them for the future. Is it a good solution for orgs? We can remove one bit and split the network in half. Removing the fd00:: can partition the netwrk in half and reserve half of the addresses for other purposes.
SZ: solution proposal:
|Subnet |Subnet description |
|-----------------|--------------------------|
|`fc00::/7` |full Oakestra subnetwork |
|`fc00::/120 - fdfd:ffff:ffff:ffff:ffff:ffff:ffff:ff00/120`|Worker subnets|
|`fdfe::/16` |reserved | 2^112 -> flexible
|`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 |
SZ: question:
The tunnel device has IP (arbitrarily selected) 10.19.254.1 -> 10.30.0.0/12 which is only on worker node, reaching the whole oakestra network. What is the network boundary of the tunnel? Cluster? Worker?
GB: The tunnel/proxy handles the outgoing traffic [here](https://github.com/oakestra/oakestra-net/blob/32eb067688fab020652ccc4e317e8931e71844a3/node-net-manager/proxy/ProxyTunnel.go#L186) calling the function implemented [here](https://github.com/oakestra/oakestra-net/blob/32eb067688fab020652ccc4e317e8931e71844a3/node-net-manager/proxy/ProxyTunnel.go#L499)
We check if packet destination is towards a service deployed in the local node subnetwork [here](https://github.com/oakestra/oakestra-net/blob/32eb067688fab020652ccc4e317e8931e71844a3/node-net-manager/proxy/ProxyTunnel.go#L508). In that case we forward the packet locally back to the node's bridge. Otherwise, we tunnel the traffic using UDP connection towards the external worker node.
SZ: at some point you have a worker node embedding this hard coded 10.19.254.1 address. Maybe use a fixed subnet from the reserved subnet or make it flexible.
GB: Yes, rn is hardcoded [here](https://github.com/oakestra/oakestra-net/blob/32eb067688fab020652ccc4e317e8931e71844a3/node-net-manager/proxy/ProxyTunnel.go#L99) and can be chosen dynamically instead.
GB: RN bridge is always first address of the subnetwork. The tunnel can be the second or the last. Routing towards fdff::/16 in IPv6.
## 🛠️ TODOs
- [ ] IPv4 to IPv6 load balancing
- [ ] SZ: Discuss about dual stack implementation and possible deprecation of IPv4
- [ ] NM: Discuss about the proxy gateway solutions when cluster is within a private n/w
- [ ] NM: Security aspects
- [ ] GB & SZ: Create internal documentation for this IP blocks: Add detailed documentation to https://hackmd.io/@oakestra/HyxDGGBRj/edit
- [ ] SZ: Finalize the IPv6 addressing logic
- [ ] GB & SZ: Think about external facing services in Oakestra, especially concerning category 2 as discussed.
- [ ] GB: create an IPv4 network split like the IPv6 one.
- [ ] GB: create an issue about netcfg.json v2.0