Skip to content

Frr01

Description A 3-node ring of FRR routers with OSPF IGP
Components FRR
Resource requirements1 2
2 GB
Topology file frr01.clab.yml
Name frr01
Version information2 containerlab:0.71.0, quay.io/frrouting/frr:containerlab-10.7.1, docker-ce:28.5.2

Description#

This lab example consists of three FRR routers connected in a ring topology, running OSPF between them. Each router has one PC connected to it, reachable over static routes.

Earlier versions of this lab used FRR containers with the linux kind and explicit configuration bind mounts. This version adapts that work to the native frr kind, making FRR a first-class citizen with managed configuration and daemon selection.

The routers use the frr kind. Each one gets its configuration from a startup-config file, which containerlab renders into the node's /etc/frr/frr.conf:

router1:
  group: routers
  startup-config: router1/frr.conf

The lab only runs OSPF, so the routers group narrows the daemons down from the default of all of them:

groups:
  routers:
    kind: frr
    image: quay.io/frrouting/frr:containerlab-10.7.1
    daemons:
      - ospfd

Setting this on the group rather than on each node means all three routers share the list. See Daemons for the full set of names.

To start the lab:

containerlab deploy -t frr01.clab.yml

The PCs configure their own interfaces and routes through the exec statements in the topology file, so the lab needs no further setup.

Verification#

Check that OSPF has come up on each router:

ssh root@clab-frr01-router1 'vtysh -c "show ip ospf neighbor"'

Each router should have two neighbours in the Full state. The PCs can then reach each other's networks:

docker exec clab-frr01-PC1 ping -c3 192.168.13.2

The lab configuration is documented in detail at: https://www.brianlinkletter.com/2021/05/use-containerlab-to-emulate-open-source-routers/


  1. Resource requirements are provisional. Consult with the installation guides for additional information. ↩

  2. The lab has been validated using these versions of the required tools/components. Using versions other than stated might lead to a non-operational setup process. ↩