diff --git a/README.md b/README.md new file mode 100644 index 0000000000000000000000000000000000000000..ee4a7df43a977c409d74ea490d0158ecb494522e --- /dev/null +++ b/README.md @@ -0,0 +1,105 @@ +# goSDN [](https://code.fbi.h-da.de/danet/gosdn/-/commits/master) [](https://code.fbi.h-da.de/danet/gosdn/-/commits/master) + +`goSDN` is a prototypical approach to build a model driven multi-vendor SDN controller. + +# Table of Contents + +- [Overview](#overview) + * [Example](#example) + * [Structure](#structure) +- [Concepts](#concepts) +- [Installing](#installing) +- [Getting Started](#getting-started) + * [Playground](#playground) +- [Contributing](CONTRIBUTING.md) +- [License](LICENSE) +- [CI Status](#ci-status) + +# Overview + +`goSDN` is also an application that will allow you to manage your multi-vendor network using one unified controller. + +`goSDN` provides: +* Model driven device representation +* Native multi vendor support +* Multi controller environments + +## Example +A simple showcase how the controller can be adressed after `make containerlab-start` is shown below: + + + +## Structure + +- The `api` is a representation of the `controllers` Northbound-Interface and + can be used to communicate with the `controller`. +- The `cli` is the CLI to manage the `controller`. +- `csbi` is the implementation of Containerised-Southbound-Interfaces (based on + the idea and the proof of concept of Manuel Kieweg). Allowing to request + capabilities of ONDs and generate a containerised Southbound-Interface based + on them. +- `controller` represents the `goSDN-controller`. + +# Concepts + +The `goSDN` controllers core - also called `nucleus` - is a lightweight library that +manages principal network domains and provides southbound interface operations +for orchestrated networking devices. + +In addition we provide a simple Northbound-API for the controller () + +## Principal Networking Domain (PND) + +The PND is the single source of truth within a network. Its state is held and +maintained by the controller. Any configuration of an OND has to be applied by +the PND. + +## Orchestrated Networking Device (OND) + +Any device directly configured by `goSDN` + +# Installing +`goSDN` provides a `Makefile` for all common use cases. + +```sh +# build the application files for goSDN, cSBI orchestrator, gosdnc (CLI). +make build + +# build the Dockerfiles for goSDN, cSBI orchestrator, gosdnc (CLI). +make container +``` + +Now you can start `goSDN` locally by moving to the `artifacts` folder and +running `./gosdn` from the shell. + +# Getting Started + +If you want to use the the [playground](#playground) you have to make sure you have +[containerlab](https://containerlab.dev/install/) installed on your system. + +## Playground + +With the help of [containerlab](https://containerlab.dev/) we provide a simple +test environment to play around with. + +The environment contains two [Arista +cEOS](https://www.arista.com/en/products/software-controlled-container-networking), +a goSDN, a cSBI orchestrator and a gNMI target. + +```sh +# starts the containerlab topology which contains two Arista cEOS, an cSBI orchestrator, a goSDN controller and gNMI target. +make containerlab-start + +# stop the containerlab topology +make containerlab-stop +``` + +## CLI +Information about how to use the CLI is provided in the `cli` folder, see [here](cli#usage). + +# CI Status + +| Master | Develop | +| ------ | ------ | +| [](https://code.fbi.h-da.de/danet/gosdn/-/commits/master) | [](https://code.fbi.h-da.de/danet/gosdn/-/commits/develop) | +| [](https://code.fbi.h-da.de/danet/gosdn/-/commits/master) | [](https://code.fbi.h-da.de/danet/gosdn/-/commits/develop) | diff --git a/gosdn-cli-showcase.webm b/gosdn-cli-showcase.webm new file mode 100644 index 0000000000000000000000000000000000000000..dfff09b0763f3a0ec5bbe4275506a2f918eb51da Binary files /dev/null and b/gosdn-cli-showcase.webm differ