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

Lab examples #96

Merged
merged 14 commits into from
Nov 8, 2020
2 changes: 1 addition & 1 deletion docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,4 +23,4 @@ But, of course, containerlab is perfectly capable of wiring up any typical linux
* TLS certificates can be generated automatically for every node of a lab.
* The lab topology can be graphically visualized with [graphviz](https://graphviz.org) tool (WIP).

<script type="text/javascript" src="https://viewer.diagrams.net/embed2.js?&fetch=https%3A%2F%2Fraw.githubusercontent.com%2Fsrl-wim%2Fcontainerlab-diagrams%2Fmain%2Fcontainerlab.drawio"></script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/gh/hellt/drawio-js@main/embed2.js?&fetch=https%3A%2F%2Fraw.githubusercontent.com%2Fsrl-wim%2Fcontainerlab-diagrams%2Fmain%2Fcontainerlab.drawio" async></script>
32 changes: 32 additions & 0 deletions docs/lab-examples/ext-bridge.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
| | |
| ----------------------------- | -------------------------------------------------------------------- |
| **Description** | Connecting nodes via linux bridges |
| **Components** | [Nokia SR Linux][srl] |
| **Resource requirements**[^1] | :fontawesome-solid-microchip: 1 <br/>:fontawesome-solid-memory: 2 GB |
| **Topology file** | [br01.yml][topofile] |
| **Prefix** | br01 |

## Description
This lab consists of three Nokia SR Linux nodes connected to a linux bridge.

<center><div class="mxgraph" style="max-width:100%;border:1px solid transparent;" data-mxgraph="{&quot;page&quot;:8,&quot;zoom&quot;:1.5,&quot;highlight&quot;:&quot;#0000ff&quot;,&quot;nav&quot;:true,&quot;check-visible-state&quot;:true,&quot;resize&quot;:true,&quot;url&quot;:&quot;https://raw.githubusercontent.com/srl-wim/containerlab-diagrams/main/containerlab.drawio&quot;}"></div></center>

!!!note
`containerlab` **will not** create/remove the bridge interface on your behalf.

bridge element must be part of the lab nodes. Consult with the [topology file][topofile] to see how to reference a bridge.

## Use cases
By introducing a link of `bridge` type to the containerlab topology, we are opening ourselves to some additional scenarios:

* interconnect nodes via a broadcast domain
* connect multiple fabrics together
* connect containerlab nodes to the applications/nodes running outside of the lab host


[srl]: https://www.nokia.com/networks/products/service-router-linux-NOS/
[topofile]: https://github.com/srl-wim/container-lab/tree/master/lab-examples/br01/br01.yml

[^1]: Resource requirements are provisional. Consult with SR Linux Software Installation guide for additional information.

<script type="text/javascript" src="https://cdn.jsdelivr.net/gh/hellt/drawio-js@main/embed2.js?&fetch=https%3A%2F%2Fraw.githubusercontent.com%2Fsrl-wim%2Fcontainerlab-diagrams%2Fmain%2Fcontainerlab.drawio" async></script>
15 changes: 15 additions & 0 deletions docs/lab-examples/lab-examples.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<center><div class="mxgraph" style="max-width:100%;border:1px solid transparent;" data-mxgraph="{&quot;page&quot;:4,&quot;zoom&quot;:1.5,&quot;highlight&quot;:&quot;#0000ff&quot;,&quot;nav&quot;:true,&quot;check-visible-state&quot;:true,&quot;resize&quot;:true,&quot;url&quot;:&quot;https://raw.githubusercontent.com/srl-wim/containerlab-diagrams/main/containerlab.drawio&quot;}"></div></center>
<script type="text/javascript" src="https://cdn.jsdelivr.net/gh/hellt/drawio-js@main/embed2.js?&fetch=https%3A%2F%2Fraw.githubusercontent.com%2Fsrl-wim%2Fcontainerlab-diagrams%2Fmain%2Fcontainerlab.drawio" async></script>

`containerlab` aims to provide a simple, intuitive and yet customizable way to run container based labs. To help our users to get from an "I have a bare VM" point to a running and functional lab we ship some essential lab topologies inside the `containerlab` package.

These lab examples are meant to be used as-is or as a base layer to a more customized or elaborated lab scenario. Once `containerlab` is installed, you will find the lab examples directories by the `/etc/containerlab/lab-examples` path. Copy those directories over to your working directory to start using the provided labs.

!!!note "Container images versions"
The provided lab examples use the images without a tag, i.e. `image: srlinux`. This means that the image with a `latest` tag must exist. A user needs to tag the image themselves if the `latest` tag is missing.

For example: `docker tag srlinux:20.6.1-286 srlinux:latest`

The source code of the lab examples is contained within the [containerlab repo](https://github.com/srl-wim/container-lab/tree/master/lab-examples); any questions or issues regarding the provided examples can be addressed via [Github issues](https://github.com/srl-wim/container-lab/issues).

Each lab comes with a definitive description that can be found in this documentation section.
27 changes: 27 additions & 0 deletions docs/lab-examples/min-5clos.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
| | |
| ----------------------------- | -------------------------------------------------------------------- |
| **Description** | A 5-stage CLOS topology based on Nokia SR Linux |
| **Components** | [Nokia SR Linux][srl] |
| **Resource requirements**[^1] | :fontawesome-solid-microchip: 4 <br/>:fontawesome-solid-memory: 8 GB |
| **Topology file** | [clos02.yml][topofile] |
| **Prefix** | clos02 |

## Description
This labs provides a lightweight folded 5-stage CLOS fabric with Super Spine level bridging two PODs.

<center><div class="mxgraph" style="max-width:100%;border:1px solid transparent;" data-mxgraph="{&quot;page&quot;:8,&quot;zoom&quot;:1.5,&quot;highlight&quot;:&quot;#0000ff&quot;,&quot;nav&quot;:true,&quot;check-visible-state&quot;:true,&quot;resize&quot;:true,&quot;url&quot;:&quot;https://raw.githubusercontent.com/srl-wim/containerlab-diagrams/main/containerlab.drawio&quot;}"></div></center>

The topology is additionally equipped with the Linux containers connected to leaves to facilitate use cases which require access side emulation.

## Use cases
With this lightweight CLOS topology a user can exhibit the following scenarios:

* perform configuration tasks applied to the 5-stage CLOS fabric
* demonstrate fabric behavior leveraging the user-emulating linux containers attached to the leaves

[srl]: https://www.nokia.com/networks/products/service-router-linux-NOS/
[topofile]: https://github.com/srl-wim/container-lab/tree/master/lab-examples/clos02/clos02.yml

[^1]: Resource requirements are provisional. Consult with SR Linux Software Installation guide for additional information.

<script type="text/javascript" src="https://cdn.jsdelivr.net/gh/hellt/drawio-js@main/embed2.js?&fetch=https%3A%2F%2Fraw.githubusercontent.com%2Fsrl-wim%2Fcontainerlab-diagrams%2Fmain%2Fcontainerlab.drawio" async></script>
27 changes: 27 additions & 0 deletions docs/lab-examples/min-clos.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
| | |
| ----------------------------- | ---------------------------------------------------------------------- |
| **Description** | A minimal CLOS topology with two leafs and a spine |
| **Components** | [Nokia SR Linux][srl] |
| **Resource requirements**[^1] | :fontawesome-solid-microchip: 1.5 <br/>:fontawesome-solid-memory: 3 GB |
| **Topology file** | [clos01.yml][topofile] |
| **Prefix** | clos01 |

## Description
This labs provides a lightweight folded CLOS fabric topology using a minimal set of nodes: two leaves and a single spine.

<center><div class="mxgraph" style="max-width:100%;border:1px solid transparent;" data-mxgraph="{&quot;page&quot;:5,&quot;zoom&quot;:1.5,&quot;highlight&quot;:&quot;#0000ff&quot;,&quot;nav&quot;:true,&quot;check-visible-state&quot;:true,&quot;resize&quot;:true,&quot;url&quot;:&quot;https://raw.githubusercontent.com/srl-wim/containerlab-diagrams/main/containerlab.drawio&quot;}"></div></center>

The topology is additionally equipped with the Linux containers connected to leaves to facilitate use cases which require access side emulation.

## Use cases
With this lightweight CLOS topology a user can exhibit the following scenarios:

* perform configuration tasks applied to the 3-stage CLOS fabric
* demonstrate fabric behavior leveraging the user-emulating linux containers attached to the leaves

[srl]: https://www.nokia.com/networks/products/service-router-linux-NOS/
[topofile]: https://github.com/srl-wim/container-lab/tree/master/lab-examples/clos01/clos01.yml

[^1]: Resource requirements are provisional. Consult with SR Linux Software Installation guide for additional information.

<script type="text/javascript" src="https://cdn.jsdelivr.net/gh/hellt/drawio-js@main/embed2.js?&fetch=https%3A%2F%2Fraw.githubusercontent.com%2Fsrl-wim%2Fcontainerlab-diagrams%2Fmain%2Fcontainerlab.drawio" async></script>
31 changes: 31 additions & 0 deletions docs/lab-examples/single-srl.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
| | |
| ----------------------------- | ---------------------------------------------------------------------- |
| **Description** | a single Nokia SR Linux node |
| **Components** | [Nokia SR Linux][srl] |
| **Resource requirements**[^1] | :fontawesome-solid-microchip: 0.5 <br/>:fontawesome-solid-memory: 1 GB |
| **Topology file** | [srl01.yml][topofile] |
| **Prefix** | srl01 |

## Description
A lab consists of a single SR Linux container equipped with a single interface - its management interface. No other network/data interfaces are created.

<center><div class="mxgraph" style="max-width:100%;border:1px solid transparent;" data-mxgraph="{&quot;page&quot;:2,&quot;zoom&quot;:1.5,&quot;highlight&quot;:&quot;#0000ff&quot;,&quot;nav&quot;:true,&quot;check-visible-state&quot;:true,&quot;resize&quot;:true,&quot;url&quot;:&quot;https://raw.githubusercontent.com/srl-wim/containerlab-diagrams/main/containerlab.drawio&quot;}"></div></center>

The SR Linux's `mgmt` interface is connected to the `containerlab` docker network that is created as part of the lab deployment process. The `mgmt` interface of SRL will get IPv4/6 address information via DHCP service provided by docker daemon.

## Use cases
This lightweight lab enables the users to perform the following exercises:

* get familiar with SR Linux architecture
* explore SR Linux extensible CLI
* navigate the SR Linux YANG tree
* play with gNMI[^2] and JSON-RPC programmable interfaces
* write/debug/manage custom apps built for SR Linux NDK

[srl]: https://www.nokia.com/networks/products/service-router-linux-NOS/
[topofile]: https://github.com/srl-wim/container-lab/tree/master/lab-examples/srl01/srl01.yml

[^1]: Resource requirements are provisional. Consult with SR Linux Software Installation guide for additional information.
[^2]: Check out [gnmic](https://gnmic.kmrd.dev) gNMI client to interact with SR Linux gNMI server.

<script type="text/javascript" src="https://cdn.jsdelivr.net/gh/hellt/drawio-js@main/embed2.js?&fetch=https%3A%2F%2Fraw.githubusercontent.com%2Fsrl-wim%2Fcontainerlab-diagrams%2Fmain%2Fcontainerlab.drawio" async></script>
23 changes: 23 additions & 0 deletions docs/lab-examples/srl-ceos.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
| | |
| ----------------------------- | -------------------------------------------------------------------- |
| **Description** | A Nokia SR Linux connected back-to-back with Arista cEOS |
| **Components** | [Nokia SR Linux][srl], [Arista cEOS][ceos] |
| **Resource requirements**[^1] | :fontawesome-solid-microchip: 1 <br/>:fontawesome-solid-memory: 2 GB |
| **Topology file** | [srlceos01.yml][topofile] |
| **Prefix** | srlceos01 |

## Description
A lab consists of an SR Linux node connected with Arista cEOS via a point-to-point ethernet link. Both nodes are also connected with their management interfaces to the `containerlab` docker network.

<center><div class="mxgraph" style="max-width:100%;border:1px solid transparent;" data-mxgraph="{&quot;page&quot;:6,&quot;zoom&quot;:1.5,&quot;highlight&quot;:&quot;#0000ff&quot;,&quot;nav&quot;:true,&quot;check-visible-state&quot;:true,&quot;resize&quot;:true,&quot;url&quot;:&quot;https://raw.githubusercontent.com/srl-wim/containerlab-diagrams/main/containerlab.drawio&quot;}"></div></center>

## Use cases
This lab allows users to launch basic interoperability scenarios between Nokia SR Linux and Arista cEOS operating systems.

[srl]: https://www.nokia.com/networks/products/service-router-linux-NOS/
[ceos]: https://www.arista.com/en/products/software-controlled-container-networking
[topofile]: https://github.com/srl-wim/container-lab/tree/master/lab-examples/srlceos01/srlceos01.yml

[^1]: Resource requirements are provisional. Consult with the installation guides for additional information.

<script type="text/javascript" src="https://cdn.jsdelivr.net/gh/hellt/drawio-js@main/embed2.js?&fetch=https%3A%2F%2Fraw.githubusercontent.com%2Fsrl-wim%2Fcontainerlab-diagrams%2Fmain%2Fcontainerlab.drawio" async></script>
26 changes: 26 additions & 0 deletions docs/lab-examples/two-srls.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
| | |
| ----------------------------- | -------------------------------------------------------------------- |
| **Description** | Two Nokia SR Linux nodes |
| **Components** | [Nokia SR Linux][srl] |
| **Resource requirements**[^1] | :fontawesome-solid-microchip: 1 <br/>:fontawesome-solid-memory: 2 GB |
| **Topology file** | [srl02.yml][topofile] |
| **Prefix** | srl02 |

## Description
A lab consists of two SR Linux nodes connected with each other via a point-to-point link over `e1-1` interfaces. Both nodes are also connected with their management interfaces to the `containerlab` docker network.

<center><div class="mxgraph" style="max-width:100%;border:1px solid transparent;" data-mxgraph="{&quot;page&quot;:3,&quot;zoom&quot;:1.5,&quot;highlight&quot;:&quot;#0000ff&quot;,&quot;nav&quot;:true,&quot;check-visible-state&quot;:true,&quot;resize&quot;:true,&quot;url&quot;:&quot;https://raw.githubusercontent.com/srl-wim/containerlab-diagrams/main/containerlab.drawio&quot;}"></div></center>

## Use cases
This lab, besides having the same objectives as [srl01](single-srl.md) lab, also enables the following scenarios:

* get to know protocols and services configuration
* verify basic control plane and data plane operations
* explore SR Linux state datastore for the paths which reflect control plane operation metrics or dataplane counters

[srl]: https://www.nokia.com/networks/products/service-router-linux-NOS/
[topofile]: https://github.com/srl-wim/container-lab/tree/master/lab-examples/srl02/srl02.yml

[^1]: Resource requirements are provisional. Consult with SR Linux Software Installation guide for additional information.

<script type="text/javascript" src="https://cdn.jsdelivr.net/gh/hellt/drawio-js@main/embed2.js?&fetch=https%3A%2F%2Fraw.githubusercontent.com%2Fsrl-wim%2Fcontainerlab-diagrams%2Fmain%2Fcontainerlab.drawio" async></script>
25 changes: 25 additions & 0 deletions docs/lab-examples/wan.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
| | |
| ----------------------------- | -------------------------------------------------------------------- |
| **Description** | WAN emulating topology |
| **Components** | [Nokia SR Linux][srl] |
| **Resource requirements**[^1] | :fontawesome-solid-microchip: 1 <br/>:fontawesome-solid-memory: 3 GB |
| **Topology file** | [srl03.yml][topofile] |
| **Prefix** | srl03 |

## Description
Nokia SR Linux while focusing on the data center deployments in the first releases, will also be suitable for WAN deployments. In this lab users presented with a small WAN topology of four interconnected SR Linux nodes with multiple p2p interfaces between them.

<center><div class="mxgraph" style="max-width:100%;border:1px solid transparent;" data-mxgraph="{&quot;page&quot;:9,&quot;zoom&quot;:1.5,&quot;highlight&quot;:&quot;#0000ff&quot;,&quot;nav&quot;:true,&quot;check-visible-state&quot;:true,&quot;resize&quot;:true,&quot;url&quot;:&quot;https://raw.githubusercontent.com/srl-wim/containerlab-diagrams/main/containerlab.drawio&quot;}"></div></center>

## Use cases
The WAN-centric scenarios can be tested with this lab:

* Link aggregation
* WAN protocols and features

[srl]: https://www.nokia.com/networks/products/service-router-linux-NOS/
[topofile]: https://github.com/srl-wim/container-lab/tree/master/lab-examples/srl03/srl03.yml

[^1]: Resource requirements are provisional. Consult with SR Linux Software Installation guide for additional information.

<script type="text/javascript" src="https://cdn.jsdelivr.net/gh/hellt/drawio-js@main/embed2.js?&fetch=https%3A%2F%2Fraw.githubusercontent.com%2Fsrl-wim%2Fcontainerlab-diagrams%2Fmain%2Fcontainerlab.drawio" async></script>
28 changes: 0 additions & 28 deletions lab-examples/arista-topo.yml

This file was deleted.

23 changes: 23 additions & 0 deletions lab-examples/br01/br01.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# topology documentation: http://containerlab.srlinux.dev/lab-examples/ext-bridge/
Prefix: br01

Duts:
kind_defaults:
srl:
type: ixrd1
image: srlinux
license: license.key
dut_specifics:
srl1:
kind: srl
srl2:
kind: srl
srl3:
kind: srl
br-clab:
kind: bridge

Links:
- endpoints: ["srl1:e1-1", "br-clab:eth1"]
- endpoints: ["srl2:e1-1", "br-clab:eth2"]
- endpoints: ["srl3:e1-1", "br-clab:eth3"]
Loading