goSDN
goSDN is a prototypical approach to build a model driven multi-vendor SDN controller.
This repository contains submodules, therefore it must be cloned with
git clone --recurse-submodules git@code.fbi.h-da.de:danet/gosdn.git.
If you have cloned the repository without --recurse-submodules simply run git submodule update --init --recursive
to get all submodules.
Table of Contents
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
apiis a representation of thecontrollersNorthbound-Interface and can be used to communicate with thecontroller. - The
cliis the CLI to manage thecontroller. -
csbiis 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. -
controllerrepresents thegoSDN-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.
# 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 you have to make sure you have containerlab installed on your system.
Playground
With the help of containerlab we provide a simple test environment to play around with.
The environment contains two Arista cEOS, a goSDN, a cSBI orchestrator and a gNMI target.
If you're a member of the danet group you should have access to the containers repo. Don't forget to
sudo docker login registry.code.fbi.h-da.de(sudois necessary sincecontainerlabhas to be run with it and therefore a normaldocker loginwouldn't be recognized by it.)If you're no member of the danet group you have to create an account at Arista and download the Arista cEOS image by yourself. Don't forget to change the image name (line
11in thegosdn.clab.ymlfile) to the local one you've downloaded.
# 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.
CI Status
| Master | Develop |
|---|---|