oxidecomputer / oxidecomputer/opte

Actions and other `NetworkImpl`-defined objects could expose simple K/V property reads

Open
#960 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Rust
Stars
77
Forks
11
Avg merge
9d 20h
Merged PRs (30d)
8

Description

If we want to know what VNI a given port operates on, opteadm won't really help us figure this out. The actions which are guaranteed to know this all reside in the overlay layer:

BRM42220057 # opteadm dump-layer -p opte1 overlay
Port opte1 - Layer overlay
======================================================================
Inbound Flows
----------------------------------------------------------------------
PROTO  SRC IP  SPORT/TY  DST IP  DPORT  HITS  ACTION

Outbound Flows
----------------------------------------------------------------------
PROTO  SRC IP  SPORT/TY  DST IP  DPORT  HITS  ACTION

Inbound Rules
----------------------------------------------------------------------
ID   PRI  HITS  PREDICATES  ACTION
0    1    98    *           "Static: Decap"
1    2    0     *           "Meta: mcast-vni-validator"
DEF  --   0     --          "deny"

Outbound Rules
----------------------------------------------------------------------
ID   PRI  HITS  PREDICATES  ACTION
0    1    117   *           "Static: Encap"
DEF  --   0     --          "deny"

However, Static: Encap tells us nothing about what the action is programmed to do, what its parameters are, etc.

It would be nice if actions on a rule could list out their fixed propertes, analogous to dladm show-linkprop (potentially with a view towards being machine-readable if requested). In this scenario, we would want to query overlay/out/0:vni.

We could probably extend this to ports themselves having a K/V map to hold various optional facts the control plane may want to stash for other diagnostic tools to make use of. Generally we want to make things work such that we're not putting oxide-vpc specfic information into opteadm.

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 opteadm dump-layer output and the NetworkImpl-defined actions described in the issue, focusing on how overlay/out/0 could expose action properties. Define how fixed properties and optional port key/value data should be represented and whether a machine-readable view is needed; done means a query such as overlay/out/0:vni reveals the programmed VNI without oxide-vpc-specific logic in opteadm.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
cli, networking, tooling
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.