Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/abelperezr/nokia-bng-lab/llms.txt

Use this file to discover all available pages before exploring further.

Quick Start Guide

Get the Nokia BNG Lab up and running in your environment with this step-by-step deployment guide.
Time to Deploy: Approximately 5-10 minutes depending on your system and whether Docker images need to be pulled.

Prerequisites

Before deploying the lab, ensure you have the following requirements:

Required Software

1

Containerlab v0.50+

Install Containerlab following the official documentation.
# Quick install on Linux
bash -c "$(curl -sL https://get.containerlab.dev)"

# Verify installation
containerlab version
2

Docker v24+

Docker Engine is required as the container runtime.
# Verify Docker installation
docker --version

# Ensure Docker daemon is running
sudo systemctl status docker
3

Nokia SR-SIM License

Critical: You must obtain a valid Nokia SR-SIM license file. This lab will NOT work without proper licensing.
  • Contact Nokia to obtain SR_SIM_license.txt
  • The license must support Nokia SR OS 25.10.R2
  • Supports both SR-7 and IXR-ec platforms
4

Nokia SR OS Image

The lab requires the Nokia SR OS Simulator container image:
# Image required: localhost/nokia/srsim:25.10.R2
# Load or build this image per Nokia's instructions
If you don’t have this image, contact Nokia for access to SR OS container images.
5

Custom ONT Image

The lab uses a custom ONT (Optical Network Terminal) image:
# This image will be automatically pulled from GitHub Container Registry
docker pull ghcr.io/abelperezr/ont-ds:0.2

System Requirements

ResourceMinimumRecommended
CPU Cores48+
RAM8 GB16 GB
Disk Space20 GB40 GB
OSLinux (Ubuntu 20.04+, RHEL 8+, Debian 11+)Ubuntu 22.04 LTS
The lab deploys 12 containers including 4 Nokia SR OS simulators, which are resource-intensive. Ensure adequate system resources.

Download the Lab

Choose one of the following methods to download the lab:
git clone https://github.com/abelperezr/nokia-bng-lab.git
cd nokia-bng-lab

Deployment Steps

1

Prepare License Directory

Create the license directory and add your Nokia SR-SIM license file:
# Create license directory
mkdir -p configs/license

# Copy your Nokia license file
cp /path/to/your/SR_SIM_license.txt configs/license/

# Verify the license file exists
ls -lh configs/license/SR_SIM_license.txt
The license file MUST be named exactly SR_SIM_license.txt and placed in configs/license/ directory.
2

Verify Lab Configuration

Review the lab topology before deployment:
# Inspect the lab topology
cat lab.yml

# Check configuration files are present
ls -lh configs/sros/
ls -lh configs/radius/
ls -lh configs/gnmic/
3

Deploy the Laboratory

Deploy all containers using Containerlab:
# Deploy the lab (requires sudo)
sudo containerlab deploy -t lab.yml
INFO[0000] Containerlab v0.50.0 started
INFO[0000] Parsing & checking topology file: lab.yml
INFO[0000] Creating lab directory: /home/user/clab-lab
INFO[0000] Creating container: "bng1"
INFO[0000] Creating container: "bng2"
INFO[0000] Creating container: "switch"
INFO[0000] Creating container: "olt"
INFO[0000] Creating container: "ont1"
INFO[0000] Creating container: "ont2"
INFO[0000] Creating container: "tx"
INFO[0000] Creating container: "radius"
INFO[0000] Creating container: "gnmic"
INFO[0000] Creating container: "prometheus"
INFO[0000] Creating container: "grafana"
INFO[0000] Creating container: "iperf"
INFO[0000] Creating container: "pc1"
INFO[0001] Creating virtual wiring:
INFO[0001] bng1:1/1/c1/1 <--> tx:ethernet-1/1
INFO[0001] bng2:1/1/c1/1 <--> tx:ethernet-1/2
...
INFO[0120] Adding containerlab host entries to /etc/hosts
+---+------------------+--------------+---------------+-------+---------+
| # |       Name       | Container ID |     Image     | Kind  |  State  |
+---+------------------+--------------+---------------+-------+---------+
Deployment Time: Initial deployment takes 5-10 minutes. Nokia SR OS containers need time to boot and load configurations.
4

Verify Deployment

Check that all containers are running:
# Inspect the deployed lab
sudo containerlab inspect -t lab.yml

# Alternative: Check with Docker
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
You should see all 13 containers in “Up” state:
  • bng1, bng2 (BNG routers)
  • switch, olt (Access network)
  • tx (Transport)
  • ont1, ont2 (Subscribers)
  • radius (Authentication)
  • gnmic, prometheus, grafana (Telemetry)
  • iperf, pc1 (Testing)
5

Wait for Nokia Devices to Boot

Nokia SR OS simulators require additional time to fully boot:
# Check BNG1 status (wait for prompt)
ssh -p 56661 admin@localhost
# Password: lab123

# Exit and check BNG2
ssh -p 56664 admin@localhost
Wait 2-3 minutes after container creation before attempting SSH access. SR OS needs time to load the startup configuration.

Verify Services

Once deployed, verify that all services are accessible:

SSH Access to Network Devices

ssh -p 56661 admin@localhost
# Password: lab123

# Verify configuration
A:admin@BNG1# show system information
A:admin@BNG1# show service service-using
A:admin@BNG1# show subscriber-mgmt subscribers

ONT Subscriber Devices

ssh -p 56673 user@localhost
# Password: test

# Check IP address assignment
ip addr show
ip route
ping -c 3 8.8.8.8

# Web interface: http://localhost:8081

Telemetry Stack

ServiceURLCredentialsPurpose
Grafanahttp://localhost:3030admin / adminDashboards and visualization
Prometheushttp://localhost:9090(none)Metrics database and queries
gNMIc--Telemetry collector (no web UI)
1

Access Grafana

Open your browser to http://localhost:3030
  • Username: admin
  • Password: admin
Navigate to Dashboards to view pre-configured BNG monitoring dashboards.
2

Verify Prometheus Targets

Open http://localhost:9090/targetsEnsure the gnmic target is UP and scraping metrics successfully.
3

Check gNMI Subscriptions

View gNMIc logs to confirm telemetry collection:
docker logs clab-lab-gnmic
You should see active gNMI subscriptions to all Nokia devices.

RADIUS Server

# Check RADIUS service
sudo containerlab exec -t lab.yml --label clab-node-name=radius --cmd "radiusd -X"

# View configured subscribers
sudo containerlab exec -t lab.yml --label clab-node-name=radius --cmd "cat /etc/raddb/mods-config/files/authorize"

Service Access Summary

All services are exposed on localhost using port mapping. This allows easy access from your host machine without complex networking.

Complete Port Reference

ServiceProtocolPortCredentialsPurpose
BNG1SSH56661admin / lab123BNG1 management
BNG1gNMI56662admin / lab123BNG1 telemetry
BNG1NETCONF56663admin / lab123BNG1 automation
BNG2SSH56664admin / lab123BNG2 management
BNG2gNMI56665admin / lab123BNG2 telemetry
BNG2NETCONF56666admin / lab123BNG2 automation
SwitchSSH56667admin / lab123Switch management
SwitchgNMI56668admin / lab123Switch telemetry
OLTSSH56678admin / lab123OLT management
OLTgNMI56671admin / lab123OLT telemetry
ONT1SSH56673user / testSubscriber 1 access
ONT1HTTP8081-ONT1 web interface
ONT2SSH56674user / testSubscriber 2 access
ONT2HTTP8082-ONT2 web interface
iPerfSSH56675-Traffic testing
TXSSH56676admin / NokiaSrl1!Transport switch
PC1SSH56677-End-user device
GrafanaHTTP3030admin / adminMonitoring dashboards
PrometheusHTTP9090-Metrics queries

Management Network

All containers are connected to the management network:
Network: lab
Subnet: 10.77.1.0/24

Device IP Addresses:
- BNG1:       10.77.1.2
- BNG2:       10.77.1.3
- Switch:     10.77.1.4
- OLT:        10.77.1.5
- ONT1:       10.77.1.6
- ONT2:       10.77.1.7
- RADIUS:     10.77.1.10
- gNMIc:      10.77.1.12
- Prometheus: 10.77.1.13
- Grafana:    10.77.1.14
- iPerf:      10.77.1.15
- TX:         10.77.1.16
- PC1:        10.77.1.17

Health Checks

Perform these checks to ensure the lab is fully operational:
# SSH to BNG1
ssh -p 56661 admin@localhost

# View active subscribers
A:admin@BNG1# show subscriber-mgmt subscribers

# Expected: You should see active IPoE and/or PPPoE sessions
# If no subscribers, check RADIUS connectivity and ONT status
# From ONT1, trigger IPoE authentication
ssh -p 56673 user@localhost
sudo dhclient -r eth1.150  # Release
sudo dhclient eth1.150     # Renew

# Check RADIUS logs
docker logs clab-lab-radius | tail -20
# From ONT1 (IPoE subscriber)
ssh -p 56673 user@localhost

# Test IPv4 connectivity
ping -c 3 8.8.8.8

# Test IPv6 connectivity  
ping6 -c 3 2001:4860:4860::8888

# Traceroute to verify path through BNG
traceroute 8.8.8.8
# Check gNMIc is collecting metrics
docker logs clab-lab-gnmic | grep -i "subscription"

# Query Prometheus for metrics
curl -s 'http://localhost:9090/api/v1/query?query=up' | jq .

# Should show gnmic target with value 1 (UP)

Common Operations

Stop the Lab

# Gracefully destroy all containers
sudo containerlab destroy -t lab.yml

# Confirm all containers are removed
docker ps -a | grep clab-lab
Data Loss: Destroying the lab removes all runtime state. Configuration files are preserved, but any runtime data (logs, sessions, metrics) will be lost.

Restart the Lab

# Destroy existing deployment
sudo containerlab destroy -t lab.yml

# Re-deploy from scratch
sudo containerlab deploy -t lab.yml

Save Runtime Configuration

# SSH to a Nokia device and save config
ssh -p 56661 admin@localhost
A:admin@BNG1# admin save

# Backup configuration to external file
A:admin@BNG1# admin save cf3:\backup-config.cfg

View Container Logs

# View logs for specific container
docker logs clab-lab-bng1
docker logs clab-lab-radius
docker logs clab-lab-gnmic

# Follow logs in real-time
docker logs -f clab-lab-grafana

Execute Commands in Containers

# Execute command using Containerlab
sudo containerlab exec -t lab.yml --label clab-node-name=bng1 --cmd "show system information"

# Execute command using Docker
docker exec -it clab-lab-ont1 ip addr show

Troubleshooting

Symptoms: Some containers show “Exited” statusSolutions:
  1. Check Docker resources: docker system df
  2. Verify license file exists: ls -lh configs/license/SR_SIM_license.txt
  3. Review container logs: docker logs clab-lab-<container-name>
  4. Ensure all images are pulled: docker images | grep nokia
Symptoms: Connection refused or timeout when SSHing to BNG/Switch/OLTSolutions:
  1. Wait 2-3 minutes for SR OS to fully boot
  2. Check container is running: docker ps | grep bng1
  3. Verify port mapping: docker port clab-lab-bng1
  4. Test connection: nc -zv localhost 56661
Symptoms: show subscriber-mgmt subscribers returns emptySolutions:
  1. Verify RADIUS server is running: docker ps | grep radius
  2. Check ONT connection type environment variables
  3. Trigger DHCP on ONT: ssh -p 56673 user@localhost "sudo dhclient eth1.150"
  4. Review RADIUS logs: docker logs clab-lab-radius
  5. Check BNG RADIUS policy: show subscriber-mgmt authentication-policy
Symptoms: Dashboards are empty or show “No Data”Solutions:
  1. Verify Prometheus is scraping: http://localhost:9090/targets
  2. Check gNMIc logs: docker logs clab-lab-gnmic
  3. Ensure gNMI is enabled on devices: show system grpc
  4. Verify network connectivity: docker exec clab-lab-gnmic ping 10.77.1.2
Symptoms: Container logs show license validation errorsSolutions:
  1. Verify license file format (must be text, not PDF)
  2. Check license expiration date
  3. Ensure license supports SR OS 25.10.R2
  4. Confirm license path in lab.yml matches actual file location
  5. Contact Nokia for valid license

Next Steps

Now that your lab is deployed and operational:

Explore Configuration

Deep dive into BNG configuration and subscriber policies

Monitor Telemetry

Learn how to use Grafana dashboards and create custom metrics

Architecture Overview

Understand the network topology and design

Operations Guide

Access services and troubleshoot issues
For detailed configuration examples, subscriber management workflows, and advanced scenarios, continue to the Configuration Guide.

Build docs developers (and LLMs) love