Skip to main content

Small ISP with Containerlab

Small ISP - SRRP Redundancy

ISP laboratory with SRRP redundancy between BNG MASTER and SLAVE, with dynamic BGP Traffic Engineering via EHS

Nokia SROS + SR Linux

Integration of Nokia 7750 SR-7 (BNG), SR Linux (OLT, Carriers) and Linux containers in a single lab

Telemetry Stack

Metrics and logs with gNMIC, Prometheus, Grafana, Alloy, and Loki

RADIUS Authentication + LUDB Fallback

Subscriber authentication with FreeRADIUS and fallback to Local User Database

NAT64 + CGNAT + One-to-One

Three NAT profiles: NAT64 for IPv6-only, deterministic CGNAT for dual-stack, and One-to-One for VIP

Lawful Interception + LEA Console

Legal interception with mirror destination ip-udp-shim and web console for real-time viewing

General Description

This lab implements a complete Small ISP using Containerlab as a virtualization platform. The architecture includes active/backup redundancy between two Nokia 7750 SR-7 BNGs with SRRP (Subscriber Routed Redundancy Protocol) and dynamic BGP Traffic Engineering controlled by EHS (Event Handling System).

Main Components

ComponentModel/ImageIP ManagementFunction
BNG MASTERNokia 7750 SR-7 (SRSIM)10.99.1.2Primary BNG with SRRP priority 200
BNG SLAVENokia 7750 SR-7 (SRSIM)10.99.1.3Secondary BNG with SRRP priority 50
OLTNokia SR Linux 25.1010.99.1.4Optical line terminal (MAC-VRF)
Carrier 1Nokia SR Linux 25.1010.99.1.252Upstream carrier router (AS 65501)
Carrier 2Nokia SR Linux 25.1010.99.1.253Upstream carrier router (AS 65502)
ONT1ont-ds:0.3 or later (IPoE)10.99.1.5Optical terminal - 3 WANs (IPv6, Dual, VIP)
ONT2ont-ds:0.3 or later (PPPoE)10.99.1.6Optical terminal - 1 WAN PPPoE IPv6
RADIUSFreeRADIUS10.99.1.8Authentication server
gNMICOpenConfig gNMIC10.99.1.9Telemetry collector
PrometheusPrometheus10.99.1.10Metrics Database
GrafanaGrafana 10.3.510.99.1.11Viewing metrics
LIGnetwork-multitool + Python10.99.1.12Lawful Interception Gateway
DNS64BIND910.99.1.13DNS64 Server for NAT64
Internetnetwork-multitool10.99.1.14Internet simulator
Lokigrafana/loki:latest10.99.1.15Log storage and indexing
Alloygrafana/alloy:latest10.99.1.16Syslog collector and label normalization
Containerbotghcr.io/abelperezr/containerbot:0.0.110.99.1.200Telegram automation bot

Technical Features

Implemented Technologies
  • SRRP (Subscriber Routed Redundancy Protocol): Active/backup redundancy between BNGs
  • EHS (Event Handling System): pySROS scripts for dynamic adjustment of BGP policies according to SRRP status
  • BGP Traffic Engineering: AS-Path Prepend differentiated by carrier and SRRP role
  • Multi-Chassis Redundancy: Synchronization of DHCP/SRRP/ESM sessions between BNGs
  • ESM (Enhanced Subscriber Management): Three Group Interfaces: ipv6-only, dual-stack, vip
  • NAT64: IPv6→IPv4 translation with prefix 64:ff9b::/96
  • CGNAT Deterministic: NAT44 with deterministic mapping 100.80.0.0/29 → 99.99.99.99
  • NAT One-to-One: Dedicated public IP 88.88.88.88/29 for VIP subscribers
  • Lawful Interception: Mirror destination with ip-udp-shim to LEA Console
  • IPoE + PPPoE: Full support for both protocols
  • Dual-Stack IPv4/IPv6: DHCPv4, DHCPv6 WAN and Prefix Delegation
  • DNS64: DNS resolution with AAAA record synthesis for NAT64
  • Centralized logs: syslog pipeline with Alloy + Loki integrated into Grafana
  • Containerbot: Telegram bot to run testing and monitoring scripts

These are the most compelling lab demonstrations for a short showcase. Each one has a detailed ATP procedure and is also grouped under Featured demos.

Access to the Laboratory

ServiceURL/PortCredentials
Grafanahttp://localhost:3030admin/admin
Prometheushttp://localhost:9090N/A
Loki APIhttp://localhost:3101N/A
Alloy UIhttp://localhost:12345N/A
LEA/LIGhttp://localhost:8092admin/multit00l
ONT1 Web GUIhttp://localhost:8090N/A
ONT2 Web GUIhttp://localhost:8091N/A
ONT1docker exec -it ont1 bashuser/test
ONT2docker exec -it ont2 bashuser/test
BNG MASTER SSHssh -p 56612 admin@localhostadmin/lab123
BNG SLAVE SSHssh -p 56613 admin@localhostadmin/lab123
OLT SSHssh -p 56614 admin@localhostadmin/lab123
Carrier 1 SSHssh -p 56610 admin@localhostadmin/lab123
Carrier 2 SSHssh -p 56611 admin@localhostadmin/lab123
Radiusssh -p 56617 admin@localhostadmin/admin
PC1docker exec -it pc1 bashadmin/multit00l
Internetssh -p 56620 admin@localhostadmin/multit00l
DNSssh -p 56621 admin@localhostadmin/multit00l
GNMICdocker exec -it gnmic /bin/shN/A

Quick Start

# Clone the repository
git clone https://github.com/abelperezr/small-isp-lab.git
cd small-isp-lab

# Deploy the lab
sudo containerlab deploy -t lab.yml

# Verify node status
sudo containerlab inspect -t lab.yml

# Access Grafana
firefox http://localhost:3030

# Access LEA Console
firefox http://localhost:8092
Prerequisites
  • Docker installed and working
  • Containerlab v0.50+ installed
  • Nokia SRSIM 25.10.R2 image available
  • Nokia SR Linux 25.10 image available
  • ONT-DS 0.3 or later image available
  • Containerbot 0.0.1 image available
  • At least 24 GB of RAM
  • Recommended: 32 GB for more operational headroom
  • Nokia license valid for SRSIM