Skip to content

Tomtec331/dt-learning-prototype

Repository files navigation

DT-Learning-Prototype

This project was a part of my masters thesis at Hochschule Fulda, Germany. It showcases how a network digital twin can be implemented to be used in a learning environment. The IRTF NDT reference architecture and the already existing learn-sdn-hub were used as starting points.

Requirements

Linux (Ubuntu 22.04.4) is tested, might work on Windows!

  • Docker v26.0.0
  • Node v20.16.0 with pnpm
  • Arista cEOS 4.31.1F
  • ContainerLab v0.52.0 (optional, linux only)

!!!The environment currently needs full access to the docker.sock. If the local deployment option is used (described in 'Usage' section) containerlab needs to be installed locally and it must be possible to run commands without sudo (e.g. clab deploy ... instead of sudo clab deploy ...!!!

Installation

  • Install Docker
  • Install Containerlab (optional)
  • Install Node (e.g. via nvm)
    • Use nvm install --lts=iron (iron = v20)
    • Enable pnpm corepack enable pnpm
  • Clone this repository
  • Download & copy Arista image (free account needed) to docker-clab-image folder (filename must be cEOS-lab-4.31.1F.tar.xz)
  • Install dependencies
    • Use pnpm install in project root folder
  • Build packages and docker image
    • Run pnpm build:packages in project root folder
    • Run pnpm build in clab-rest-api folder (ignore the warnings regarding eval)
    • Run bash docker-clab-image/setup_image.sh in project root folder

Usage

With Docker-Instance: This is the intended way of running this application

  • Run pnpm dev in frontend folder
  • Run pnpm dev in backend folder

Local deployment: Use this if the docker container does not work

If you don't want to use a docker container for isolation you can run the application in the local deployment mode. For this you need to install containerlab (see hint in the requirements section) locally. Topologies will not be deployed in a container and multiple concurrent users are not supported!

  • Run pnpm dev in frontend folder
  • Start backend
    • Set env variable: export USE_LOCAL_MACHINE=true
    • Run pnpm dev in backend folder
  • Run pnpm dev in clab-rest-api folder

Afterwards open the frontend in browser and use any username and password combination you like.

Known issues

  • Docker-in-Docker does not always work correctly (use local deployment)
  • gNMI is stuck in an infinite system not initialized loop after deploying a topology (no fix)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published