oxidecomputer / oxidecomputer/omicron

preflight check should complain if network setup is incomplete

Open
#7,459 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Rust
Stars
572
Forks
97
Avg merge
2d 12h
Merged PRs (30d)
96

Description

During RSS, I uploaded a config file for london to switch 14.

That file contained this config

# TODO: docs on network config
[rack_network_config]
infra_ip_first = "172.20.15.25"
infra_ip_last = "172.20.15.32"
bgp = []


[rack_network_config.switch0.qsfp0]
routes = [ ]
addresses = [ ]
uplink_port_speed = "40G"
uplink_port_fec = "none"
autoneg = true
bgp_peers = []

# The one routed through lab `172.20.27.0/24`
[rack_network_config.switch1.qsfp0]
routes = [ { nexthop = "172.20.15.25", destination = "0.0.0.0/0" } ]
addresses = [ {address = "172.20.15.29/29" } ]
uplink_port_speed = "40G"
uplink_port_fec = "none"
autoneg = true
bgp_peers = []

So, no actual network routes/addresses for switch 0.

I then ran preflight check, and it went ahead and tried to configure that address, and things failed:

alan@jeeves $ ssh -t wicket@fe80::aa40:25ff:fe05:2702%london_sw0tp0 preflight uplink
Warning: Permanently added 'fe80::aa40:25ff:fe05:2702%london_sw0tp0' (ED25519) to the list of known hosts.
✔ Configuring switch (11.398809ms)
    configured Qsfp(Qsfp("qsfp0"))/0: ips [], routes []
✔ Waiting for L1 link up (1.004374661s)
    missing metadata
✔ Configuring IP address in host OS (37.391µs)
    configured uplinks/qsfp0_0
✔ Configuring routing in host OS (35.097µs)
    added routes []
  Checking for external DNS connectivity (60.121132165s)
    DNS server 1.1.1.1 A query attempt 1: failed to look up ntp.eng.oxide.computer: proto error: io error: No route to host (os error 148)
    ....
    DNS server 1.1.1.1 A query attempt 31: failed to look up ntp.eng.oxide.computer: proto error: io error: No route to host (os error 148)
    DNS server 9.9.9.9 A query attempt 1: failed to look up ntp.eng.oxide.computer: proto error: io error: No route to host (os error 148)
    ....
    DNS server 9.9.9.9 A query attempt 31: failed to look up ntp.eng.oxide.computer: proto error: io error: No route to host (os error 148)
* Checking for external NTP connectivity (6.051µs)
    missing metadata
    no NTP IP addresses known (DNS failure?)
✔ Cleaning up host OS routing configuration (56.628µs)
    missing metadata
✘ Cleaning up host OS IP address configuration (20.848173ms)
    missing metadata
    failed to remove uplink SMF property "uplinks/qsfp0_0": command failed (status exit status: 1); stdout="" stderr="svccfg: No such property uplinks/qsfp0_0.\n"
Connection to fe80::aa40:25ff:fe05:2702%london_sw0tp0 closed.

Without addresses and routes, preflight should just stop early and complain.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the preflight uplink entry point and reproduce the supplied configuration where switch 0 has empty addresses and routes. Trace the preflight steps to identify where host IP and routing setup begins; done means an incomplete network configuration stops early with a clear complaint instead of attempting host setup.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
networking
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.