oxidecomputer / oxidecomputer/maghemite

BGP bestpath algorithm should more closely follow RFC 4271

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

Nobody has claimed this yet.

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

Description

The current BGP bestpath algorithm does not implement the full Phase 2 tie breaking rules from RFC 4271.
When the BESTPATH_FANOUT is set to 1 (which is currently a const, but won't always be), we don't select the singular best path via the full tie-breaking process outlined in the spec.

Some quick (but not exhaustive) examples are:

  • we don't look at the origin attribute
  • we don't look at the peer's Router-ID
  • we don't look at the IP address we use to connect to the peer
  • we don't pick the oldest path if all else is the same

This is something we should do to bring us into better alignment with the standards, and so that there's a little more determinism in which path gets picked in non multipath scenarios

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 locating the current BGP bestpath algorithm and the BESTPATH_FANOUT setting, then compare the singular-best-path behavior with RFC 4271's Phase 2 tie-breaking rules. Completion means considering the origin, peer Router-ID, peer connection IP address, and oldest-path criteria so non-multipath selection is deterministic.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
networking
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.