oxidecomputer / oxidecomputer/maghemite

ddm protocol version negotiation

Open
#157 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

ddm
Dominant language
Rust
Stars
94
Forks
6
Avg merge
1d 8h
Merged PRs (30d)
12

Description

Things currently work between v1 and v2 peers because ddm v1 does no version checking at all. So ddm v2 speakers can send out discovery packets with the version set to 2, and ddm v1 speakers can send out discovery packets with the version set to 1, and as long a v2 router speaks version 1 after discovering a v1 peer, things will work. However, this will not work for version 3. So we need to implement version negotiation. This would also not work for changes in the discovery protocol, if we were to have changes there. So we need to come up with a general way for both protocols to evolve.

Contributor guide

No contributing guide indexed for this repository

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 by tracing DDM discovery packets and the existing v1/v2 version handling. Define a general negotiation approach that lets peers select a compatible protocol version and can accommodate future discovery-protocol changes. Done means v1, v2, and future v3 peers can negotiate compatibility without relying on v1's lack of version checking.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
networking
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.