24 minutes
Introduction to Network Simulation Tools for Labs
Εισαγωγή
Το post αυτό κάνει μια διπλή προσπάθεια:
- Να περιγράψει το τοπίο γύρω από το Network Sumulation και τις ανάγκες που μπορεί να καλύψει για network labs και όχι μόνο
- Να επαναφέρει το ρυθμό της παραγωγής περιοχομένου της ομάδας για το Network Automation σε ένα κύκλο λίγο πιο συχνό από τέσσερα χρόνια (τελευταίο post ήταν το 2021)
Network Simulation
Τί είναι;
Είναι η προσπάθεια να παράγουμε με ψηφιακό τρόπο μια δικτυακή τοπολογία όπου ψηφιακοί κόμβοι αναπαράγουν τη συμπεριφορά πραγματικών δικτυακών κόμβων όπως routers και switches αλλά και system hosts αν χρειάζεται. Οι φηψιακοί κόμβοι συνδέονται μεταξύ τους με εικονικούς συνδέσμους και το σύνολο συμπεριφέρεται λίγο έως πολύ σαν ένα πραγματικό δίκτυο.
Λειτουργεί το ίδιο ακριβώς με ένα πραγματικό δίκτυο;
Όχι ακριβώς. Οι φηφιακοί κόμβοι είναι άλλοτε απλά processes, άλλοτε virtual machines κι άλλοτε containers. Αντίστοιχα υλοποιούνται οι συνδέσεις ανάλογα με την περίπτωση ώστε να προκύψει η ψηφιακή τοπολογία.
Είναι κάτι καινούριο;
Σαν ιδέα όχι. Όποιος μελετά για δίκτυα από παλιά (π.χ. γύρω στο 2000), ίσως θυμάται το NS (Network Simulator). Μπορείτε να πάρετε μια ιδέα στα παρακάτω links:
NS-2 @ Research Gate:
Φυσικά σε σχέση με τις σημερινές πλατφόρμες Network Simulations το NS φαντάζει προϊστορικό. Υλοποιούσε ωστόσο protocol stacks ώστε να μπορεί κάποιος να μελετήσει βασικές συμπεριφορές δικτύων σε λογικό επίπεδο.
Εξέλιξη των network simulators - Γνωστές Πλατφόρμες
Με την εξέλιξη του virtual compute (virtual machines & virtual networking), δόθηκε η ευκαιρία για να αποκτήσουν οι κόμβοι και οι τοπολογίες μεγαλύτερες δυνατότητες και να εξομοιώνουν περισσότερα χαρακτηριστικά από αυτά που έχουν οι πραγματικοί δικτυακοί κόμβοι.
Cisco Packet Tracer
Κάποιες εταιρείες παρήγαγαν εργαλεία στοχευμένα στην εκπαίδευση συγκεκριμένων τεχνολογιών. Π.χ. η Cisco έφτιαξε το Cisco Packet Tracer για να μπορούν μαθητές στις ακαδημίες Cisco ανά τον κόσμο αλλά και άλλοι επίδοξοι εκπαιδευόμενοι μηχανικοί να εξοικειωθούν με κάποιες από τις βασικές τεχνολογίες δικτύων της εταιρείας. Το packet tracer χρησιμοποιείται ακόμα και είναι διαθέσιμο στην παρακάτω διεύθυνση:
https://www.netacad.com/cisco-packet-tracer
Hashicorp Vagrant
Άλλες εταιρείες δημιούργησαν πιο γενικής φύσης εργαλεία όπου δικτυακοί κόμβοι μπορούσαν να λειτουργήσουν ως virtual machines. H Hashicorp δημιούργησε το Vagrant το οποίο βρήκε αρκετή χρήση ακόμα και από μηχανικούς της Cisco. Μπορεί να μάθει κανείς περισσότερα στην παρακάτω διεύθυνση:
https://www.netacad.com/cisco-packet-tracer
GNS-3
Η πρώτη αξιόλογη προσπάθεια για εξομείωση δικτύων ήρθε με την πλατφόρμα GNS-3 (Graphical Network Simulator). Το λογισμικό είναι open source αλλά υπάρχει πίσω του εταιρεία που το υποστηρίζει (περισσότερο θα έλεγα το εμπορεύεται μέσω του Marketplace). Δημιουργήθηκε το 2008 (είχε αρχίσει ως project για διπλωματική από τον ) και επικεντρώθηκε σε δικτυακές συσκευές και το Dynamips simulation engine. Το γραφικό περιβάλλον που είχε έδωσε τη δυνατότητα να σχεδιάζουν οι χρήστες την τοπολογία με σχετικά εύκολο τρόπο και οι συσκευές εξομείωναν πραγματικά μοντέλα συσκευών Cisco, προφανώς με σημαντικούς συμβιβασμούς. Η ανάπτυξη του συνεχίστηκε, ενσωματώνοντας υποστήριξη για πλατφόρμες εικονικών συστημάτων όπως η Vmware και το VirtualBox και δίνοντας έτσι τη δυνατότητα να υποστηρίζει και άλλους εικονικούς κόμβους εκτός από συσκευές Cisco και έδωσε τη δυνατότητα σε μαθητές και μηχανικούς να δημιουργούν network labs χωρίς να χρειάζονται ακριβά, θορυβώδη και δύσκολα στην μετακίνηση και συντήρηση πραγματικά μηχανήματα. Η υποστήριξη και ανάπτυξη του GNS-3 συνεχίστηκε μέχρι σήμερα και ενσωματώνοντας και υποστήριξη για docker έδωσε τη δυνατότητα να προστίθεται και containers στις εικονικές τοπολογίες των εξομειώσεων.
EVE-NG
Ένα πολύ πιο δουλεμένο περιβάλλον από το GNS-3, καλύτερα γραφικά, καλύτερο support, πρώτο σε integrations και νέα features, πρώτο σε δυνατότητες αυτοματισμού (με κάποιους περιορισμούς), αλλά για πρώτη φορά και δύο διαφορετικές εκδόσεις. Μία δωρεάν (community edition) και δυστυχώς μία επί πληρωμή (PRO) με διάφορα flavors ανάλογα το scale και το licensing. To EVE-NG υποστήριξε πρώτο αρκετά σημαντικά features (docker, bridge προς το πραγματικό δίκτυο, APIs, προχωρημάνα γραφικά περιβάλλοντα, user roles, κλπ) αλλά και διαφορετικές πλατφόρμες (dynamips, Virtual Machiones με qemu, containers κλπ) και γενικά καλύτερο performance.
EVE-NG Labs Library:
Με τα χρόνια, αν και συνεχίζει να είνα αρκετά δημοφικές ειδικά και για την ενσωμάτωση κι άλλων vendor nodes όπως juniper, arista κλπ αλλά και για την παροχή οδηγών με λεπτομέρεια για την παρακσκευή node templates (πρωτότυπα για τη δημιουργία nodes) και αρκετά καλό documentation, πλέον και το GNS-3 έχει έρθει κοντά στην υποστήριξη features ενώ παραμένει δωρεάν, διαθέτει δε marketplace για nodes και topologies και academy για την εκμάθηση, ενώ το EVE-NG όχι. Παρόλα αυτά συνεχίζει να έχει φανατικούς χρήστες και υπάρχουν αρκετά κατατοπιστικά videos με δύο δημιουργούς να είναι κορυφαίοι μεταξύ των υπολοίπων, ο “Data” Knoxx, γνωστός trainer από την πλατφόρμα CBT-Nuggets και ο Christian Scholz, μηχανικός της AXIANS σε ανώτατο επίπεδο (Lead Architect).
- Data Knoxx youtube playlist on EVE-NG
- Building a Juniper EVE-NG Lab-Environment for daily usage - Part 1/3
- EVE-NG REST API
PNETLab
Το PNETLab είναι ένα EVE-NG clone που είναι δωρεάν. Έχει κάποια από τα features της EVE-NG PRO έκδοσης αλλά όχι όλα (δεν έχει ακόμα docker support νομίζω), είναι λίγο πίσω στις εκδόσεις, αλλά διαθέτει και το δικό του marketplace και license/user model. Είναι πολύ δημοφιλές σε network engineers που θέλουν να μελετήσουν μεγάλης κλίμακας τοπολογίας και μπορεί κανείς να κατεβάσει labs απευθείας από το marketplace (περίπου, υπάρχουν κάποιες προϋποθέσεις). Πιθανότατα θα το βρεις να χρησιμοποιείται από αρκετούς network trainers. Όπως υποννοεί πάντα το marketplace, δεν είναι πάντα όλα δωρεάν.. To software όμως είναι..
Cisco Modeling Labs (CML)
Παλιότερα γνωστό ως Virl, το CML είναι στην έκδοση 2.9 πλέον και συνήθως αναφέρονται σε αυτό ως CML-2 ακριβώς για να δείξουν αυτή τη διαφορά. Είναι η πλατφόρμα φτιαγμένη από ομάδα μηχανικών της Cisco, μεταξύ των οποίων ο γνωστότερος και αυτός που παίρνει το περισσότερο credit για την ανάπτυξη του είναι ο Ralph Schmieder. Το CML έρχεται τελευταίο στη γιορτή.. Είναι μια πλατφόρμα που υποστηρίζει κυρίως QEMU based virtual machines και μπορεί να τρέξει IOSv (τα παλιά cisco platforms για simulation), τα IoL (IOS on Linux) images, δίνοντας πρόσβαση σε εξομοιώσεις γνωστών network platforms της Cisco (NXOS, Catalyst, ISR/CSR, IOS-XRd, κλπ) αλλά και αρκετά άλλα nodes της Cisco που ξεφεύγουν από τον ορισμό του network node όπως Cisco Firepower FTD και FMC, Cisco ISE, Cisco SD-WAN manager, κλπ. Λόγω του ότι προέρχεται από τον κατασκευαστή Cisco έχει μοναδική πρόσβαση στα resources αυτά ως images, τα οποία ωστόσο … με μαγικούς τρόπους μεταφέρονται προς άλλες πλατφόρμες εξομοίωσης. Είναι αυτό νομότυπο κατά τη Cisco; Όχι προφανώς. Για να χρησιμοποιήσει κάποιος Cisco images πρέπει να έχει είτε το CML είτε κάποιο σχετικό συμβόλαιο με τη Cisco που να αφορά αυτές τις πλατφόρμες ώστε να μπορεί να κατεβάσει το software. Και πάλι υπάρχει μηχανισμός licensing για όλα αυτά. Ωστόσο οι μηχανικοί που θέλουν να τα χρησιμοποιήσουν σε άλλες πλατφόρμες, βρίσκουν συνήθως διάφορους τρόπους. Δεν θα περιγράψουμε τίποτε τέτοιο σε αυτό το post, δεν υποστηρίζουμε καμία τέτοια χρήση, το ίδιο αναφέρουν κι όλοι οι υπόλοιποι κατασκευαστές για network simulation platforms.

CML Topology
Το CML είναι γενικά χειρότερο στην διαχείριση resources, αργεί να υιοθετήσει features (μόλις ενσωμάτωσε υποστήριξη για docker) και είναι εξωφρενικά ακριβό αν αναλογιστεί κανείς ποιοι είναι αυτοί που το χρειάζονται για να μάθουν την τεχνολογία. Ένα ακόμα μειονέκτημα είναι πως για να ενσωματώσετε network device images από άλλους vendors στο ίδιο lab ενδεχομένως χρειάζεται να βρείτε και να εισάγετε τα images μόνοι σας, καθώς το CML έρχεται μόνο με Cisco created images. Από την άλλη αν θέλετε να το κάνετε αυτό, γιατί να χρησιμοποιήσετε CML;
Όπως προανέφερα, είναι ακριβό. Υπάρχουν 2 εκδόσεις Personal (για 20 και 40 nodes) ενώ η Enterprise έκδοση για χρήση σε εταιρικό περιβάλλον είναι απόλυτα απαγορευτική ως κόστος. Ωστόσο υπάρχουν πλέον και free tier για μέχρι 5 nodes (δεν μετράνε τα unmanaged switches, οπότε μπορείτε να φτιάξετε κάτι λίγο πιο μεγάλο με δρομολογητές, αλλά και πάλι..)
Και το CML υποστηρίζει REST API και μάλιστα υπάρχει και Terraform provider γι αυτό. Χρήσιμα links:
- Παλιό post του Ralph στο Cisco Blog για Get Started With Terraform and Cisco Modeling Labs
- Παρουσίαση από τον Ralph στο San Diego Cisco Live 2025
- CML Terraform Provider
- Δωρεάν Lab Guides για CML από τον Kevin Wallace
Containerlab
Το Containerlab έχει φέρει επανάσταση στους Network Simulators, δίνοντας τη δυνατότητα για την κατασκευή network labs με χρήση containers. Η ιδέα ξεκίνησε από τον Wim Hendrickx (Nokia - Head of IP Architecture), αλλά ήταν ο Roman Dodin (Nokia - Product Line Manager) και μια ομάδα μηχανικών που το «πήγε στο επόμενο επίπεδο». Ξεκίνησε ως ένα open-source project και προέκυψε από την ανάγκη για έναν πιο απλό και γρήγορο τρόπο δημιουργίας lab topologies με network operating systems όπως το Nokia SR Linux. Η βασική φιλοσοφία ήταν η δημιουργία ενός εργαλείου όσο το δυνατόν πιο ελαφρύ, ικανού να τρέξει σε ένα απλό laptop αν χρειαστεί. Με τον καιρό εξελίχθηκε ώστε να περιλαμβάνει περισσότερα χαρακτηριστικά, ενσωματώνοντας κι άλλα δικτυακά λειτουργικα συστήματα που έχουν μετατρέψει οι αντίστοιχοι κατασκευαστές σε μορφή container.
 The story of Containerlab at Network Automation Nerds with Roman Dodin
The story of Containerlab at Network Automation Nerds with Roman Dodin
Ωστόσο, υπάρχει η δυνατότητα για ενσωμάτωση και δικτυακών λειτουργικών συστημάτων που βρίσκονται σε μορφή Virtual Machine βασισμένα σε quemu, “πακετάροντας” τα μέσα σε containers, όπως π.χ. Cisco IoL, CSR, Catalayst 9kv, Nexus9kv, κλπ, χρησιμοποιώντας το vrnetlab project και συγκεκριμένα ένα fork του (γνωατό ως hellt από το github username του Roman Dodin).
https://github.com/srl-labs/vrnetlab/releases/tag/v0.21.0
Η δυνατότητα χρήσης container images δίνει ένα πολύ σημαντικό πλεονέκτημα στο Containerlab καθώς μπορεί να λειτουργήσει απόλυτα σε συνθήκες IaC (Infrastructure as Code), δημιουργώντας ένα network lab σε πλήρη μορφή και configuration state σε λίγα λεπτά, από το τίποτε, ενώ σε πλατφόρμες με χρήση VMs templates δεν υπάρχει η ίδια ευελιξία, καθώς τα VMs βασίζονται πολύ σε σταθερό storage και τα βήματα για να βρεθούν σε ένα τελικό state από τη δημιουργία ενός lab είναι πολύ περισσότερα, ενώ πρέπει η κάθε πλατφόρμα να υποστηρίζει κατάλληλα APIs και οι χρήστες της πλατφόρμας να δημιουργήσουν συγκεκριμένα automated flows για να φτάσουν το lab στην επιθυμητή κατάσταση.
Το Containerlab δημιουργήθηκε με αυτή τη φιλοσοφία κι γι αυτό αποδίδει σε αυτές τις συνθήκες εξαιρετικά, ελαχιστοποιώντας το footprint των εργαστηρίων και δίνοντας τη δυνατότητα να δημιουργείται και να καταστρέφεται το εργαστήριο όσες φορές θέλουμε, διατηρώντας τα αρχεία ρυθμίσεων αν θέλουμε σε εξωτερικά αρχεία κειμένου στο folder structure του lab. Το άλλο πλεονέκτημα του είναι πως είναι εξαιρετικά εύκολος ο διαμοιρασμός εργαστηρίων και η δημιουργία και συντήρηση από κοινού χρησιμοποιώντας το git για version control, ενώ το ίδιο το Containerlab μπορεί να “κατεβάσει” και να τρέξει ένα lab από ένα remote git repository, όπως περιγράφει η Claudia De Luna στο παρακάτω post:
https://gratuitous-arp.net/containerlab-the-anti-pattern/ - Claudia De Luna, Containerlab the anti-pattern.
Τέλος, η ομάδα της Nokia που υποστηρίζει το Containerlab έχει δημιουργήσει και μια επέκταση για το vs-code, δίνοντας τη δυνατότητα για γραφικο τρόπο σχεδιασμού και λειτουργίας της πλατφόρμας με εξαιρετικά απλό τρόπο.

Σήμερα το Containerlab αποτελεί ένα δημοφιλές, δωρεάν και open-source εργαλείο που απλοποιεί τη δημιουργία και διαχείριση network labs, καθιστώντας το κατάλληλο για testing, demos, αλλά και για CI/CD pipelines. Ακολουθεί άλλο ένα post από το Nico Vilbert της Isovalent, αν και λίγο παλιό:
https://nicovibert.com/2022/06/09/first-look-into-containerlab/
Netlab
Όπως λέει κι ο φίλος Μανώλης, “αν το Containerlab το ερωτεύεσαι, το Netlab το παντρεύεσαι”. To Netlab έχει δημιουργηθεί από τον Ivan Pepelnjak και έχει τη δυνατότητα βασισμένο σε yaml configuration files να δημιουργεί και να τρέχει δικτυακές τοπολογίες σε vagrant ή containerlab και να δημιουργεί Ansible invetories για αυτές. Μπορεί να χρησιμοποιεί διάφορους virtualization providers (KVM/libvirt, Docker containers) ή και φυσικά συστήματα. Το netlab, με βάση το configuration file σε Yaml που θα φτιάξετε, θα ρυθμίσει IP addressing, routing protocols, VLANs, VRFs, και άλλες δικτυακές τεχνολογίες, δημιουργώντας όλα τα απαραίτητα configs για κάθε μέρος τους, και θα σηκώσει απλά το lab λειτουργικό και έτοιμο προς χρήση.
Μπορείτε να δείτε ακριβώς τις προϋποθέσεις χρήσης του containerlab (είναι λίγο πιο πίσω σε συμβατότητα όσο αφορά τις εκδόσεις) με το netlab στο παραλάτω link, όπως και ποια vendor images υποστηρίζονται για αυτό το integration:
https://netlab.tools/labs/clab/
Ακολουθεί ένα εξαιρετικό post που περιγράφει ένα τέτοιο lab setup, by Manolis Kalliotis.
https://net4fungr.github.io/posts/iou-love/
Vendor Images
Πολλά από τα vendor images είναι πρακτικά QEMU images κατάλληληλα είτε για το CML είτε για το EVE-NG (άρα και το PNETLab) ή το GNS-3 (θα πρέπει να ψάξετε τη διαδικασία ενσωμάτωσης στο αντίστοιχο documentation κάθε πλατφόρμας). Για το Containerlab χρειάζεται να χρησιμοποιήσετε το vrnetlab για να πακετάρετε τέτοια images ως containers. Και αναφέρουμε ωστόσο τα containers, κάποιοι vendors διαθέτουν τέτοια images έτοιμα.
Cisco
Προσοχή σε ότι αφορά εξομείωση SD-WAN, η Cisco έχει δημιουργήσει ξεχωριστά images γι αυτό.
IoL
IOS on Linux, QEMU based, δουλεύουν πολύ καλά για μεγάλες τοπολογίες γιατί δεν θέλουν πολλά resources σε αντίθετα με γνωστά άλλα virtual platforms της Cisco. Αναφορά σε χρήση IoL στο documentation του Containerlab: https://containerlab.dev/manual/kinds/cisco_iol/
NXOS
Η γνωστή πλατφόρμα datacenter networking της Cisco είχε μια πιο άδοξη έκδοση για Cisco Nexus 7000 αλλά οι πιο αξιόπιστες είναι οι πιο πρόσφατες εκδόσεις Nexus 9kv. Χρειάζονται πάρα πολλά resources για να λειτουργήσουν σωστά σε οποιαδήποτε πλατφόρμα εξομείωσης.
Cat8k
Τα γνωστά nodes που αντικατέστησαν τις ISR και CSR πλατφόρμες. Τα Catalyst 8kv είναι τα αντίστοιχα νέα virtual nodes που είναι διαθέσιμα τόσο στο CML όσο και στο γνωστό Denvet Sanbdox για δοκιμαστική χρήση. Και αυτά θέλουν αρκετά resources.
Cat9k
Αντίστοιχα έκδοση της γνωστής πλατφόρμας Catalyst 9k σε virtual edition με λίγες θύρες. Έχει βγει σε 2 εκδόσεις, με λίγο καλύτερη υποστήριξη features σε μία από τις δύο και ακόμα μεγαλύτερη ανάγκη από resources. Μην περιμένετε όλα τα features και μάλιστα σε ότι αφορά το switching (ούτε λόγος για SD-Access). Για περιπτώσεις χρήσης iox (ενσωματωμένους containers) διάβασα πρόσφατο σχόλιο του Joe Clark ότι υποστηρίζεται προς το παρόν μόνο στο Cat8k, εντός CML. Και πάλι, καλή τύχη…
ios-xr
Η γνωστή πλατφόρμα για Service Providers σε έκδοση virtual. Δεν έχω ιδέα πόσο καλά λειτουργεί.. Γνωρίζω φήμες για προβλήματα αλλά αν πιστέψουμε τη Cisco το έχουν χρησιμοποιήσει ως Route Reflector.. Μερικά links:
- https://developer.cisco.com/docs/modeling-labs/ios-xrv/
- https://www.cisco.com/en/US/docs/ios_xr_sw/ios_xrv/install_config/b_xrvr_432_chapter_01.html
- https://xrdocs.io/virtual-routing/
Arista
Η Arista έχει βγάλει εκδόσεις του δικτυακού λειτουργικού της τόσο ως Virtual Machine όσο και ως Container και είναι η μοναδική εταιρεία που δεν κρύβει εντελώς τα images πίσω από Regwall ή Paywall. Για αυτό και τα Arista images είναι πολύ δημοφιλή για δημιουργία labs. Δημιουργείτε απλά χρήστη στο site της Arista και στη συνέχεια κατεβάζετε το αντίστοιχο image.
- https://www.arista.com/en/support/software-download
- https://www.arista.com/en/products/eos
- https://arista.my.site.com/AristaCommunity/s/article/Getting-Started-with-cEOS-lab-in-Containerlab#Comm_Kna_ka0Uw00000082z7IAA_81
Juniper
Η Juniper διαθέτει αρκετά virtual images για labs, vJunos-switch, vJunosEvolved, vJunos-router, cJunosEvolved. Η διαδικασία για να πάρετε πρόσβαση στα images περιγράφεται στο παρακάτω link:
https://www.juniper.net/us/en/dm/vjunos-labs.html
Μην ξεχνάμε εδώ την πολύ καλή δουλειά που έχει κάνει ο Christian Scholtz με labs για Juniper όπως ανέφερα παραπάνω:

Υπάρχει όμως και ο Suresh Vinasiththamby, ο οποίος δημοσιεύει αρκετές φορές υλικό για labs με Juniper nodes. Μόλις σήμερα (τρομερός συγχρονισμός!!) δημοσίευσε και ένα άρθρο για virtual labs που μπορείτε να βρείτε εδώ:
https://www.packetswitch.co.uk/network-labs-on-a-budget/
Άλλα links από το blog του Suresh που ίσως βρείτε ενδιαφέροντα:
- https://www.packetswitch.co.uk/netlab-the-fastest-way-to-build-network-labs/
- https://www.packetswitch.co.uk/tag/juniper/
- https://www.packetswitch.co.uk/running-eve-ng-in-proxmox/
Nokia SR-Linux
H Nokia διαθέτει τα SR-Linux images ως containers εντελώς δημόσια (ούτε restistration δεν χρειάζεται). Είναι πολύ εύκολο να αφήσετε το containeral να κατεβάσει τοπικά τα αντίστοιχα images από τα συνήθη container registries ή να τρέξετε απλά την εντολή:
docker pull ghcr.io/nokia/srlinux
Ορισμένα links για το SR-Linux:
- https://www.nokia.com/ip-networks/service-router-linux-NOS/
- https://containerlab.dev/manual/kinds/srl/
- https://documentation.nokia.com/srlinux/24-7/books/product-overview/about-sr-linux.html#what-sr-linux-product-overview
- https://learn.srlinux.dev/
Linux Hosts
Τα linux hosts μπορούν να χρησιμοποιηθούν σε τέτοιες πλατφόρμες κυρίως ως virtual machines αλλά και ως containers. Μέχρι τώρα δεν έχω βρει άλλο τρόπο να τρέξω μια ομάδα services με docker-compose εκτός κι αν στήσω ένα virtual machine με linux (π.χ. Ubuntu Server) και μετά μέσα εκεί τρέξω docker και docker-compose. Ωστόσο μπορεί κανείς να δημιουργήσει το σύνολο από τα services εντός μια τέτοιας πλατφόρμας ως containers, αρκεί να ρυθμίσει σωστά ότι είναι απαραίτητο π.χ. τα volume mounts κλπ. Θα βρείτε αναφορές και σε ειδικά διαμορφωμένα images για network labs και testing στο documentation του Containerlab, δείτε π.χ. εδώ:
https://github.com/srl-labs/srl-telemetry-lab/blob/main/st.clab.yml#L55
Εκτός από ένα πλήρες topology με prometheus & grafana περιέχει και αναφορές σε ορισμό client nodes με το image για το network-multitool, ένα image βασισμένο σε Alpine Linux με ειδική διαμόρφωση για network testing. Στην τοπολογία που υπάρχει στο link, τα nodes ρυθμίζονται με συγκεκριμένες ip addresses και τρέχουν iperf εντολές για τη δημιουργία network traffic εντός του lab.
Στην περίπτωση που θέλει κανείς να στήσει κάτι πιο γενικό και με την έκδοση linux που θέλει εντός EVE-NG, υπάρχει οδηγός στο documentation του EVE-NG που εξηγεί πως να φτιάξετε template με όποιο λειτουργικό θέλετε αρκεί να διαθέτετε το ISO της εγκατάστασης:
https://www.eve-ng.net/index.php/documentation/howtos/howto-create-own-linux-host-image/
Docker images
Θεωρητικά οποιοδήποτε docker image μπορεί να τρέξει εντός των διαφόρων πλατφορμών (εκτός φυσικά του PNETLab όπως είπαμε, τουλάχιστον προς το παρόν) αρκεί να είναι linux based image. Οι απαραίτητες ρυθμίσεις είναι σαν να ορίζετε τις παραμέτρους για docker run. Θα βρείτε ωστόσο πως εκτός κι αν το κάνετε στο containerlab, κάποια πράγματα όπως τα εξωτερικά volume mounts είναι λίγο πιο δύσκολα..
Για να εντάξετε docker images σε EVE-NG labs, δεν θα βρείτε αναφορές στο documentation εκτός από το παρακάτω video:
Hosting Platforms
Για να χρησιμοποιήσετε ένα λογισμικό για Network Simulation χρειάζεστε μια πλατφόρμα που θα το φιλοξενήσει. Υπάρχουν διάφορες επιλογές ανάλογα με το τί έχετε διαθέσιμο ως φυσικούς πόρους αλλά και από οικονομικής πλευράς.. Το σίγουρο είναι πως όπου και να το τρέξετε θα χρειαστείτε μνήμη, πολύ μνήμη…
Vmware Workstation / ESXi / VCenter
Τόσο το Vmware Workstation που τρέχει σε περιβάλλοντα desktop όσο το Vsphere ESXi που είναι η απλή έκδοση του Vmware Hypervisor και τρέχει σε φυσικά συστήματα, διατίθενται δωρεάν (παρά τις προσωρινές παρενέργειες από την εξαγορά της Vmware από τη Broadcom) και παραμένουν μια από τις καλύτερες επιλογές για να τρέξει το λογισμικό εξομείωσης σε ένα home lab. Σε εταιρικά περιβάλλοντα η χρήση των πλατφόρμων της Vmware απαιτεί εμπορικές άδειες και ειδικά για esxi hypervisors απαιτείται και η χρήση της πλατφόρμας διαχείρισης VCenter. Αν έχετε τέτοια δυνατότητα, φροντίστε σε κάθε περίτπωση τα φυσικά συστήματα να υποστηρίζουν nested virtualization και να το έχετε ενεργοποιήσει τόσο στο BIOS όσο και στους hypervisors, στα ίδια τα virtual machines τα οποία θα φιλοξενήσουν π.χ. το EVE-NG, το PNETLab ή το Containerlab. H vmware ζητά να εκδώσετε μια δωρεάν άδεια για προσωπική χρήση του Workstation ή του ESXi αλλά πρόκειται για εξαιρετικά απλή διαδικασία. https://www.vmware.com/products/desktop-hypervisor/workstation-and-fusion - Vmware Page on Workstation
Proxmox
Δωρεάν εναλλακτική για hypervisor η οποία έγινε πολύ δημοφιλής την εποχή που η Broadcom αποφάσισε προσωρινά να σταματήσει τη δωρεάν διάθεση του Vmware ESXi. Υπάρχουν αρκετά blogs και Youtube videos που περιγράφουν την εγκατάσταση και τη χρήση του και μπορείτε να στήσετε και διαδικασίες backup αλλά και να χρησιμοποιήσετε διαδικασίες IaC μέσω Terraform για το provisioning συστημάτων. Χρήσιμα links:
- https://pve.proxmox.com/wiki/Main_Page - Proxmox main wiki
- https://app.pluralsight.com/library/courses/proxmox-ve-fundamentals/table-of-contents - Proxmox training (απαιτείται συνδρομή Pluralsight)
- https://www.packetswitch.co.uk/running-eve-ng-in-proxmox/ - post από Suresh Vina για eve-ng on proxmox
- https://www.proxmox.com/en/products/proxmox-backup-server/overview - proxmox backup server
- https://www.xda-developers.com/i-set-up-disposable-proxmox-vms/ - proxmox automation no1
- https://spacelift.io/blog/terraform-proxmox-provider - proxmox automation no2
- https://registry.terraform.io/providers/Terraform-for-Proxmox/proxmox/latest/docs - terraform provider
- https://youtu.be/5j0Zb6x_hOk?si=i2iiym8Pj7vUt8JH - Intro Guide
- https://youtu.be/lFzWDJcRsqo?si=YCUafIZYBThZVPdD - Course
Kubernetes
Ακούγεται τραβηγμένο.. Ωστόσο υπάρχει to clabernetes ή απλά, c9s! Δηλαδή το λογισμικό που επιτρέπει να τρέξετε το Containerlab με τα resources μοιρασμένα σε kubernetes clusters!! Αν χρειάεζεστε παραπάνω resources και έχετε πρόσσβαση σε τέτοια υποδομή, καλή τύχη!! Το Clabernetes δημιουργήθηκε από τον Carl Montanari. Χρήσιμα links:
- https://containerlab.dev/manual/clabernetes/ - Clabernetes manual page at Containerlab documentation
- https://github.com/srl-labs/clabernetes - Clabernetes Github repo
- https://www.youtube.com/watch?v=K7ms3Hl928w - Expand Your Network Labs With Containerlab and Clabernetes, Packet Pushers
- https://ripe88.ripe.net/presentations/31-clabernetes-ripe88.pdf - Simulating networks at scale with Clabernetes and OVHcloud
Cloud Rentals
Υπάρχουν πλατφόρμες σε γνωστούς cloud providers που δίνουν τη δυνατότητα να νοικιάσετε μια υποδομή εξομείωσης. Μία από αυτές αναφέρεται στο ίδιο το site του EVE-NG (CloudmyLab), αλλά υπάρχουν κι άλλες. https://cloudmylab.com/services/hosted-emulators/eve-ng https://www.cloudlabbox.com/.
Το Cloudmylab κάνει host και άλλα λογισμικά εξομείωσης όπως GNS-3 και CML 2.0. Ο πλήρης κατάλογος των υπηρεσιών είναι στο παρακάτω link:
https://cloudmylab.com/services
Github Codespaces
Τα github codespaces είναι περιβάλλοντα ανάπτυξης και δοκιμών στο Github που στήνονται γύρω από github repositories. Πρόκειται πρακτικά για ένα linux container που σηκώνεται στο cloud με έτοιμο κώδικα (από το repository) για να μπορέσει κανείς να δοκιμάσει πράγματα χωρίς να έχει ανάγκη ένα περιβάλλον σε δική του υποδομή και όλο το editing και management γίνεται μέσω του browser, όπου η microsoft πρακτικά τρέχει το vs-code στο browser. Υπάρχει βέβαια δυνατότητα να κάνετε πράγματα μέσα από το τοπικό σας vs-code μέσω του αντίστοιχου extension. Μερικά links:
- https://docs.github.com/en/codespaces/about-codespaces/what-are-codespaces - documentation
- https://github.com/features/codespaces - features & getting started
- https://docs.github.com/en/codespaces/developing-in-a-codespace/using-github-codespaces-in-visual-studio-code - Πως να τρέξετε codespaces στο vs-code (μέσω του extension)
Τα περισσότερα περιβάλλοντα είναι αδύνατο να τρέξουν σε containers στο cloud. Όχι όμως το containerlab, και αυτή την εξαίρετη ιδέα χρησιμοποίησε ο Eric Chou όταν δημιούργησε το 100 Days of Nautobot Challenge. Μπορείτε εντός του challenge στις πρώτες 20 μέρες να δείτε το containerlab σε δράση, στο cloud, στο browser σας, χωρίς να χρειάζετε να αφιερώσετε resources σε δικό σας σύστημα:
- https://networktocode.com/blog/2025-01-16-100-days-of-nautobot/
- https://github.com/nautobot/100-days-of-nautobot
- https://medium.com/@florian.loehden/100-days-of-nautobot-175915146de5
Λίγο προσοχή πρέπει να δώσει κανείς στο ότι όταν ξεκινά ένα codespace, αυτό καταρχήν καταναλώνει storage. Έχετε συγκεκριμένο quota στο github με το χρήστη σας μέχρι να φτάσετε στο σημείο που η δωρεάν συνδρομή δεν θα είναι πλέον αρκετή. Πρακτικά όσο αφήνετε το codespace να υπάρχει, τρώτε από το quota σας. Αν σβήσετε το codespace και το ξαναδημιουργήσετε (παίρνει λίγα λεπτά η δημιουργία ανάλογα την περίπτωση) τότε έχετε προφανώς κάνει “reset” αφού ότι αρχεία δημιουργήσατε/προσθέσατε στον container κι όλο σας το history έχουν διαγραφεί. Τέλος τα resources που μπορείτε να αφιερώσετε στο codespace που θα τρέξετε, είναι συγκεκριμένα. Υπάρχουν διάφορα tires. Από όσο μπορώ να καταλάβω, στα ευρωπαϊκά datacenters της Microsoft όπου τρέχει το Github (πιθανότατα azure sites), είναι πιο περιορισμένες οι επιλογές από ότι στα US based. Και μην ξεχνάτε, στο network emulation, χρειάζονται resources (πρακτικά μόνο με images με μικρό footprint μπορείτε να παίξετε στο δωρεάν tier). Και επίσης, μην ξεχνάτε το copyright.. Κατά τα άλλα, θεωρώ πως είναι εξαιρετική ιδέα και δίνει σε όλους τη δυνατότητα να δουν κάποια πράγματα σε δράση χωρίς να αφιερώσουν ιδιαίτερα resources πέρα από το χρόνο τους φυσικά. ή.. Απλά νοικιάζετε ένα cloud server με περισσότερα resources και στήνετε ένα containerlab instance από την αρχή..
Aπομόνωση ή σύνδεση;
Ανάλογα τί θέλετε να δοκιμάσετε και πως βλέπετε το θέμα της ασφάλειας για τα δεδομένα του lab σας αλλά και την πιθανότητα να προκαλέσετε προβλήματα σε πραγματικό δίκτυο, έχετε διαφορετικές επιλογές στο πως να συνδέσετε το lab σας στο δίκτυο και πως να ορίσετε την πρόσβαση σε αυτό. Πρακτικά έχουμε να κάνουμε είτε με virtual switches (virtual machine based) είτε με linux bridges (container based). Αν έχετε να κάνετε με simulation πάνω σε vm προσέξτε σε ποιο virtual switch θα συνδέσετε το simlation host (τυπικα οι επιλογές είναι: jost-only/nat/bridged).
Ασφάλεια - Airtight
Μπορεί να θέλετε ένα πλήρως απομονωμένο περιβάλλον. Στο containerlab μπορείτε να πετύχετε εύκολα κάτι τέτοιο ορίζοντας απλά το management network ή αφήνοντας τα defaults. Είναι μετά όμως σε σας το αν θα αναθέσετε στις συσκευές σας το management interface να είναι σε απομονωμένο δίκτυο (π.χ. ξεχωριστό VRF) ή θα το βάλετε να συμμετέχει στην τοπολογία. Είναι δηλαδή θέμα configuration. Καλό θα είναι εδώ να θυμηθείτε ότι ενδεχομένως να χρειάζεστε κάποια επαφή με το δίκτυο ή το internet για compute nodes στο lab σας, π.χ. server / desktop nodes, για software updates ή installations. Στην περίπτωση άλλων simulation platforms όπως το EVE-NG, το isolation είναι το default. Η πλατφόρμα ορίζει με κάποιο τρόπο το port forwarding και έχετε την επιλογή να ορίσετε εξωτερικές εφαρμογές για το management (π.χ. virtual terminal sorftware όπως το putty, original ή solarwinds version) ή να έχετε html based περιβάλλον όπου τα terminals γίνονται launch εσωτερικά στο browser ως guacaomole (από το Apache foundation) instances. Αν ανησυχείτε είτε για την ασφάλεια είτε για το impact του να συνδεθεί το δίκτυο αλλού ή απλά θέλετε να δοκιμάσετε addressing που έχει conflicts με το πραγματικό δίκτυο (π.χ. μπορεί να είναι lab version ενός πραγματικού δικτύου) χωρίς να θέλετε να στήσετε NAT, αυτή η επιλογή ίσως σας ταιριάζει.
Πρόσβαση - mixed environments
Μπορούμε σε πολλές περιπτώσεις simulators να έχουμε full bridged envioronments στο πραγματικό δίκτυο. Στο containerlab είναι θέμα configuration, σε άλλες πλατφόρμες όπως το EVE-NG είναι τόσο απλό όσο το να δώσετε links προς ένα cloud network type το οποίο είναι bridged στο πραγματικό δίκτυο μέσω της σύνδεσης του EVE-NG host. Προσοχή όταν συνδέετε network devices σε αυτό όπως Cisco routers όπου το CDP είναι ενεργοποιημένο εξαρχής. Θα αρχίσετε να βλέπετε τις συσκευές σας από τις υπόλοιπες με CDP επειδή θα “βλέπουν” η μία την άλλη μέσω του bridged network (και ίσως και καμιά πραγματική συσκευή, π.χ. το gateway στο εταιρικό σας δίκτυο). Καλό θα είναι σε τέτοιες περιπτωσεις να απενεργοποιείτε κάποια features σε τέτοια interfaces όπως και μάλλον θα χρειαστεί να κάνετε κι άλλα πράγματα σχετικά με τα boot processes κλπ (ας μην μπούμε σε λεπτομέρειες, θα το καταλάβετε αφού δημιουργήσετε ορισμένα nodes και τα ξεκινήσετε). Στο σχήμα αυτό μπορεί κανείς να κάνει μίξη simulated nodes με physical nodes ή ακόμα και simulated nodes που βρίσκονται σε διαφορετικά hosts (χωρίς να πάμε στην ακραία περίπτωση του clabernetes όπου μιλάμε για ένα overlay δίκτυο across hosts). Αν στην περίτπωση σας χρησιμοποιείτε Vmware Workstation και το “physical node” είναι το λειτουργικό σύστημα στο laptop σας (π.χ. θέλετε να μιλήσετε από τo vs-code στο laptop σας σε node μέσα στο lab ή και να αντιγράψετε αρχεία), και αντιμετωπίζετε προβλήματα στη σύνδεση, φροντίστε να συνδέσετε το laptop στο σταθερό δίκτυο με καλώδιο. Θα λύσει το πρόβλημα.
Hybrid - Management on bridged
Μπορείτε να έχετε μόνο το management δίκτυο στο bridged network και τα υπόλοιπα να είναι απομονωμένα. Πρακτικά αυτό είναι θέμα design σε όλες τις περιπτώσεις. Είναι σαν ένα Out of Band Management Network για physical devices αλλά αντί για physical devices έχετε ένα simulator host και simulated network nodes. Είναι ίσως best of both worlds σε σχέση με τα παραπάνω αλλά και πάλι εξαρτάται από την εφαρμογή/use case.
Χρήσεις
Υπάρχουν πολλοί λόγοι για να στήσει και να λειτουργήσει κανείς ένα virtual lab. Σίγουρα οι παρακάτω δεν είναι οι μόνοι αλλά είναι ίσως οι πιο δημοφηλείς.
Εκμάθηση περιβάλλοντος (CLI)
Μπορεί να θέλετε να δοκιμάσετε εντολές για να μάθετε το περιβάλλον, να δοκιμάσετε ρυθμίσεις που μαθαίνετε σε κάποιο training course, με απόλυτη ασφάλεια (χωρίς επιπτώσεις σε πραγματικό περιβάλλον) ή απλά να μη διαθέτετε ένα πραγματικό περιβάλλον και να θέλετε να μάθετε network configuration για κάποιο από τους δημοφιλείς vendors. Η χρήση ενός virtual lab είναι εξαιρετική λύση για όλα τα παραπάνω.
Network design and configuration
Όπως παραπάνω αλλά για συνδυασμούς συσκευών, τοπολογιών και features. Και πάλι εξαιρετική λύση ένα virtual lab αλλά θυμηθείτε πως όσο αυξάνεται το μέγεθος μιας τοπολογίας και ανάλογα με το είδος των nodes, αυξάνονται και οι ανάγκες σε πόρους.. Ένα laptop με Ι7/Ryzen7 και 64GB και δίσκο 2ΤΒ μπορεί να είναι εξαιρετική περίπτωση για labs με μέτριες τοπολογίες αρκεί βέβαια να προσέχετε το είδος των nodes (π.χ. Cisco IoL & Arista CEOS/VEOS). Αν θέλετε όμως να τρέξετε Cisco SD-WAN & ISE, τότε θέλετε αρκετές εκατοντάδες GB RAM μερικά ΤΒ δίσκο και κάποια γερά CPUs.. δηλαδή μάλλον θα ψάχνετε στο Ebay για κάποιο “παλιό” server και θα βάλετε το γάμο σας σε δοκιμασία προσπαθώντας να το τρέξετε στο υπόγειο (δεν είμαστε στις Ηνωμένες Πολιτείες όπου το μόνο πρόβλημα ενάντια στο real estate είναι τα tornados).. Ή θα τρέξετε κάτι στο cloud (και θα κινδυνεύσετε από λογαριασμούς.. δεν τη γλυτώνετε όπως και να'χει..)
Simple Network Test Scenarios
Η γνωστή ερώτηση “What if” αλλά όχι στο Marvel Metaverse.. Είτε για υπάρχον δίκτυο και τοπολογία είτε για κάτι που θέλετε να μελετήσετε, υπάρχει ένα σενάριο που θέλετε να δοκιμάσετε π.χ. ανταπόκριση μιας τοπολογίας και πρωτοκόλλων/features σε μια αλλαγή ή βλάβη. Η χρήση ενόςς virtual lab ίσως είναι η απάντηση που ψάχνετε. Ωστόσο καλό είναι να θυμόμαστε πως κάποια features δεν υπάρχουν στα virtual images ή απλά δεν συμπεριφέρονται εντελώς το ίδιο με ένα virtual device. Μερικές φορές, η μοναδική απάντηση είναι να δοκιμάσετε σε φυσικό δίκτυο.. Αλλά στις περισσότερες περιπτώσεις, η μελέτη στο virtual lab θα δώσει ικανοποιητικά αποτελέσματα.
Network Automation Testing
Θέλετε να δοκιμάσετε τεχνολογίες automation, scripts, Network Source of Truth και Automation platforms (ή ακόμα και AI) αλλά διστάζετε να αφήσετε ελεύθερα τα δαιμόνια στο φυσικό δίκτυο.. Λογικό. Μπορείτε λοιπόν να δοκιμάσετε αρκετά πράγματα σε ένα virtual lab. Μερικές φορές θα στήσετε εξοκλήρου το περιβάλλον εντός του lab με ένα “bastion host” (σε ελεύθερη μεταφορά) εντός του lab στον οποίο έχετε πρόσβαση απέξω, ή το automation platform σας βρίσκεται εξ ολοκλήρου εκτός αλλά με πρόσβαση στο management network, ανάλογα με το τί βολεύει ή το τί περιλαμβάνει το test case σας. Μπορείτε να κάνετε πολλά στο κομμάτι του Network Automation με ένα virtual lab (ειδικά σε mixed topologies ή bridged management network). Μην ξεχνάτε όμως πως σε τελικό στάδιο, αν δεν εφαρμοστεί στην πραγματικότητα (με guardrails φυσικά), το network automation από μόνο του στο θεωρητικό επίπεδο, δεν έχει να προσφέρει τίποτε.
Digital Twin Testing
Η ειδική περίπτωση όπου εξομοιώνουμε ένα πραγματικό περιβάλλον σε ένα virtual lab και το οποίο ενημερώνεται συνεχώς με τις αλλαγές του πραγματικού περιβάλλοντος. Ένα τέτοιο περιβάλλον μπορεί να έχει πολύ σημαντικό ρόλο στις λειτουργίες ενός οργανισμού, πεδίο πειραματισμού ή απαραίτηο στάδιο πριν τις εγκρίσεις αλλαγών στο πραγματικό περιβάλλον. H Nokia έχει ανάγει την ιδέα αυτή σε τέχνη με τις πλατφόρμες της και το containerlab. Μπορείτε ωστόσο να δείτε μια ενδιαφέρουσα περίπτωση integration στην παρουσίαση που έκανε ο Νίκος Καλλέργης (Nick Kallergis - Network to Code) στο GRNOG 18: “(container)labs gone nuts!” Είμαι σίγουρος ότι θα το απολαύσετε, και έχει μερικές στιγμές που μάλλον θα σας εκπλήξουν (hint: πως ξεκινά το containerlab και από που παίρνει το topology;)
Επίλογος
Είδαμε συνοπτικά τί είναι το network simulation, πως μπορείτε να το χρησιμοποιήσετε για να στήσετε ένα virtual lab, ποιες είναι οι επιλογές σας σε simulation software, hosting platforms, vendor images και πθανές χρήσεις. Καλό labbing, κι όπως πάντα, αν ενδιαφέρεστε για το network automation & programmability και δεν ξέρετε από που να αρχίσετε, ελάτε σε επαφή μαζί μας να το συζητήσουμε. Είμαστε το NetAutoGr, μια ομάδα από μηχανικούς που ενδιαφέρονται για Network Automation & Programmability και την εξάπλωση του στην κοινότητα του Networking στην Ελλάδα και το Εξωτερικό. Μπορείτε να έρθετε σε επαφή μαζί μας με μήνυμα σε ένα από τα μέλη μας στο Twitter:
@mythryll - https://x.com/mythryll




