Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Document codebase architecture #158

Open
qmonnet opened this issue Jan 14, 2025 · 1 comment
Open

Document codebase architecture #158

qmonnet opened this issue Jan 14, 2025 · 1 comment
Assignees

Comments

@qmonnet
Copy link
Member

qmonnet commented Jan 14, 2025

What repo, what piece of code does what, and so on. Would be helpful to dive in the code base, or just keep track of the code and resources we have.

@qmonnet qmonnet self-assigned this Jan 14, 2025
@qmonnet
Copy link
Member Author

qmonnet commented Jan 15, 2025

Work in progress below:


Hedgehog Dataplane Repositories Architecture

Dataplane repository

Repository

https://github.com/githedgehog/dataplane

Role

Main repository for dataplane/gateway

Notes

  • Public repository
  • Set up with dependencies etc. and CI for working on the dataplane

CI

  • bump.yml: Update dpdk-sys dependency (compile-env)
  • dev.yml, sterile.yml: Tests for PRs
  • docs.yml: Generate design docs from dataplane repo (GitHub pages)

dpdk-sys: Toolchain for dataplane

Repository

https://github.com/githedgehog/dpdk-sys

Role

Contains the build framework, description files, dependency list, and workflow description for building the compilation environment for the dataplane. The resulting compile-env image is pulled from the dataplane repository.

Notes

  • Public repository
  • Motivation: These are all linked to the dataplane repository and, technically, could be in the same repository. However, rebuilding the compilation environment is seldom necessary, and takes time, so it is move efficient to have it as a separate repository.

CI

  • build.yml:

    1. Generate matrix from builds.yml (updated with bump.sh)
    2. "just [...] push"
      1. Builds sysroot
      2. Builds frr, compile-env, doc-env containers
      3. pushes:
        • dpdk-sys/compile-env -> compilation environment for dataplane
        • dpdk-sys/doc-env -> docs
        • dpdk-sys/frr -> ? (seems unused at the moment)
      4. Generate SBOM
    3. (For PRs: print summary of outdated/vulnerable packages)
  • bump.yml: Update external dependencies

tmp-nat: NAT experiments

Repository

https://github.com/githedgehog/tmp-nat

Role

Experimental repository for working on NAT, on the structure of the related objects, and on the related lookups

Notes

  • Currently a private repository
  • Meant to be a temporary repository; should be merged into dataplane
  • Movitation: Couldn't build code from dataplane repository on macOS, so created a separate repository for experimenting
  • No CI to date

Control plane

Repositories

Role

Control plane components

Notes

  • FRR: Clone from upstream, currently unchanged
  • Currently private repositories (except for the FRR fork)
  • gw-controlplane pulls the three others as Git submodules
  • No CI to date

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant