-
Notifications
You must be signed in to change notification settings - Fork 65
Description
Wicket currently uses a constant rack subnet for RSS
omicron/wicketd/src/rss_config.rs
Lines 664 to 687 in 5d08d2f
| Ok(bootstrap_agent_client::types::RackNetworkConfigV2 { | |
| rack_subnet: RACK_SUBNET.net(), | |
| infra_ip_first: config.infra_ip_first, | |
| infra_ip_last: config.infra_ip_last, | |
| ports: config | |
| .iter_uplinks() | |
| .map(|(switch, port, config)| { | |
| build_port_config(switch, port, config, bgp_auth_keys) | |
| }) | |
| .collect(), | |
| bgp: config | |
| .bgp | |
| .iter() | |
| .map(|config| BaBgpConfig { | |
| asn: config.asn, | |
| originate: config.originate.clone(), | |
| checker: config.checker.clone(), | |
| shaper: config.shaper.clone(), | |
| }) | |
| .collect(), | |
| //TODO bfd config in wicket | |
| bfd: vec![], | |
| }) | |
| } |
For cluster deployments, this needs to be configurable so that racks within the cluster can eventually be joined together in a multirack setup under a single control plane.
This cannot be just any prefix. It has to follow the model in RFD 63: IPv6 Addressing
In particular the rack portion of the prefix in the leading 2 octets of the 4th segment cannot be zero. From the latter part of the section linked above
we will need some number of addresses for service discovery itself. If we assume that these may be Cell or Availability Zone-wide, then our plan is to take one of the rack /56 entries and reserve it for this purpose. This /56 is called the services prefix.
This will need to be validated by wicket before starting RSS as the calamity will ensue otherwise.