e
développe des émulateurs de réseau depuis 2011, et même si je ne suis
pas un programmeur, je peux dire que j'ai fait du bon travail, plaçant
iou-web (au début) et UNetLab (enfin) comme un bon concurrent de GNS3 et
de VIRL sans n'importe quel budget.
Si vous recherchez EVE-NG , suivez le lien .
Vous trouverez ci-dessous un bref résumé de mes logiciels et de l’architecture de UNetLabv2.
Fondamentalement, UNetLabv2 a les mêmes fonctionnalités de UNetLab, plus:
WebIOL a été développé en Perl et publié pour les employeurs de Cisco uniquement. Il contenait quelques travaux de base du programme Cisco 360.
Après quelques versions alpha, le 23 janvier (2012), iou-web a été rendu public. iou-web (pas webiou ou web-iou) a été développé en PHP et comptait en quelques mois des centaines d'utilisateurs dans le monde entier. Si GNS3 ne prend en charge que les IOS réelles (via Dynamips), iou-web ne prend en charge que les LIO. Mais comme IOL était plus rapide que Dynamips, de nombreux utilisateurs ont préféré iou-web.
En 2013, j'ai réalisé que iou-web était trop limité et qu'il me fallait un moyen «unifié» d'émuler un réseau, notamment des pare-feu, des équilibreurs de charge, etc. De plus, la multidiffusion utilisant IOL a été buggée. J'avais plus de prérequis:
Au départ, j'ai eu l'idée d'inclure Huawei eNSP, mais comme les nœuds eNSP attendent une chaîne particulière, personne n'a été en mesure d'exécuter des nœuds eNSP en dehors de eNSP.
À partir de 2015, je n'avais plus assez de temps libre pour UNetLab, alors un groupe de gars a lancé UNetLab et le 5 janvier (2017), EVE-NG a été rendu public, mais c'est une autre histoire, car je ne fais pas partie d'EVE- Équipe NG.
Donc, UNetLab v2 doit pouvoir:
À cause des limites de UNetLab, j'ai préféré réécrire UNetLab à partir de rien. Même si EVE-NG est une fourchette UNetLab, l’équipe EVE-NG s’efforce de surmonter les limites décrites précédemment.
UNetLabv2 est basé sur:
Le conteneur de contrôleur:
SOFTWARE
================================
UNL VM -Cisco Switch/Router IOS images -
Switch -
Router -
IOURC (Cisco License) KeyGen -
Telnet browser integration (REG file) -
VMWare -
WinSCP -
===================================
Si vous recherchez EVE-NG , suivez le lien .
Vous trouverez ci-dessous un bref résumé de mes logiciels et de l’architecture de UNetLabv2.
Fondamentalement, UNetLabv2 a les mêmes fonctionnalités de UNetLab, plus:
- des milliers de nœuds pour chaque laboratoire;
- des laboratoires répartis sur des dizaines de nœuds physiques ou virtuels;
- laboratoires en cours d'exécution illimités pour chaque utilisateur;
- support pour les outils d'automatisation Ansible / NAPALM /…
Précédemment sur WebIOL / iou-web / UNL / UNetLab / EVE-NG
Fin 2011, j'avais besoin d'un outil pour émuler les réseaux. Les conditions préalables étaient:- portabilité: les laboratoires doivent être exportables et importables;
- stabilité: les laboratoires en cours d'exécution doivent être stables et éviter les collisions;
- performances: les laboratoires doivent pouvoir utiliser un ordinateur portable bon marché ou une machine virtuelle.
WebIOL a été développé en Perl et publié pour les employeurs de Cisco uniquement. Il contenait quelques travaux de base du programme Cisco 360.
Après quelques versions alpha, le 23 janvier (2012), iou-web a été rendu public. iou-web (pas webiou ou web-iou) a été développé en PHP et comptait en quelques mois des centaines d'utilisateurs dans le monde entier. Si GNS3 ne prend en charge que les IOS réelles (via Dynamips), iou-web ne prend en charge que les LIO. Mais comme IOL était plus rapide que Dynamips, de nombreux utilisateurs ont préféré iou-web.
En 2013, j'ai réalisé que iou-web était trop limité et qu'il me fallait un moyen «unifié» d'émuler un réseau, notamment des pare-feu, des équilibreurs de charge, etc. De plus, la multidiffusion utilisant IOL a été buggée. J'avais plus de prérequis:
- inclure des appareils virtuels de fournisseurs dans les laboratoires;
- inclure de vrais IOS dans les laboratoires;
- inclure (éventuellement) des émulateurs de différents fournisseurs;
- multi-utilisateur.
- chaque nœud (périphérique émulé) doit être attaché à une couche commune;
- une belle couche commune pourrait être un pont Ethernet Linux (OVS était également supporté).
Au départ, j'ai eu l'idée d'inclure Huawei eNSP, mais comme les nœuds eNSP attendent une chaîne particulière, personne n'a été en mesure d'exécuter des nœuds eNSP en dehors de eNSP.
À partir de 2015, je n'avais plus assez de temps libre pour UNetLab, alors un groupe de gars a lancé UNetLab et le 5 janvier (2017), EVE-NG a été rendu public, mais c'est une autre histoire, car je ne fais pas partie d'EVE- Équipe NG.
Pourquoi UNetLabv2
Au cours des deux dernières années, je me suis concentré sur l'automatisation du réseau. Aujourd'hui, j'ai toujours besoin d'une plate-forme d'émulateur de réseau unifiée, mais les conditions préalables ont changé. Mais avant cela, permettez-moi de souligner les limites de UNetLab:- limite de pod par hôte: actuellement, chaque hôte peut exécuter jusqu'à 256 pod indépendants, en raison de la limite du port de console;
- Limite par nœud de laboratoire: actuellement, chaque module / laboratoire peut exécuter jusqu'à 128 à 1 nœuds, en raison de la limite du port de console.
- limite de pod par utilisateur: actuellement, chaque utilisateur peut exécuter jusqu'à un pod / laboratoire à la fois, en raison de la limite du port de console;
- un seul hôte: actuellement, il n’existe aucun moyen de réaliser une installation distribuée de UNetLab (OVS peut être utilisé, mais de nombreux types de trames sont filtrés par défaut);
- gestion de la configuration: obtenir et mettre en place la configuration de démarrage se fait à l'aide de scripts attendus, ils sont lents, non prédictifs et ne peuvent pas couvrir tous les types de nœuds;
- Les interfaces série Dynamips ne sont pas prises en charge.
- aucune modification de la topologie n'est autorisée pendant l'exécution du laboratoire, de par sa conception.
Donc, UNetLab v2 doit pouvoir:
- exécuter un laboratoire distribué (entre des nœuds locaux ou géographiquement répartis);
- exécuter un laboratoire avec un nombre non limité de nœuds;
- permettre à chaque utilisateur de personnaliser un laboratoire sans affecter la copie originale;
- reliez les interfaces série entre IOL et Dynamips;
- configurer les nœuds via Ansible / NAPALM / que ce soit.
À cause des limites de UNetLab, j'ai préféré réécrire UNetLab à partir de rien. Même si EVE-NG est une fourchette UNetLab, l’équipe EVE-NG s’efforce de surmonter les limites décrites précédemment.
Architecture UNetLabv2
L'architecture peut sembler un peu complexe, mais ce n'est pas vrai, j'ai été capable de la mettre en œuvre par moi-même et dans un délai relativement court.UNetLabv2 est basé sur:
- Docker: le contrôleur, les routeurs et les nœuds de laboratoire s'exécutent dans un conteneur Docker;
- Python: plus de C, PHP ou Bash, seulement Python 3;
- Python-Flask + NGINX implémente et expose les API;
- Memcached met en cache l'authentification pour une meilleure expérience utilisateur;
- Celery + Redis gère les tâches longues asynchrones en arrière-plan;
- MariaDB stocke toutes les données / utilisateurs et laboratoires en cours d'exécution;
- Git stocke les laboratoires originaux avec un contrôle de version;
- jQuery + Bootstrap implémentera l'interface utilisateur en tant qu'application à page unique;
- Le pont iptables + Linux permet de se connecter aux nœuds de laboratoire qui viennent d’être démarrés via SSH;
- IOL, QEMU et Dynamips exécutent des nœuds de laboratoire.
Le conteneur de contrôleur:
- expose l'interface utilisateur Web et les API aux clients utilisateurs, aux routeurs et aux nœuds de laboratoire;
- recevoir les demandes de registre des routeurs et des nœuds de laboratoire;
- fournir et gérer des nœuds de laboratoire via des routeurs;
- contacter des nœuds de laboratoire via Ansible / NAPALM /… via des routeurs;
- fournit une table de routage aux routeurs;
- peut être atteint via SSH via le port 2222.
- s'inscrire contre le contrôleur;
- exposer l'API à distance de Docker;
- exposer l'API de nœud de laboratoire;
- obtenir les routeurs et la table de routage du contrôleur;
- acheminer les paquets de laboratoire entre les nœuds et les routeurs;
- permettre l'accessibilité entre les nœuds du contrôleur et du laboratoire distant via OpenVPN.
- s'inscrire contre le contrôleur;
- exécuter le nœud émulé (IOL, Dynamips ou QEMU);
- lier une interface de gestion de note émulée à un pont local;
- acheminer les paquets sNAT / dNAT vers l'interface de gestion du noeud émulé;
- routez les paquets entre le routeur local et le nœud émulé pour les interfaces de non-gestion;
- gérer les liens émulés (haut / bas).
- TCP: 2222 pour se connecter au contrôleur via SSH;
- TCP: 80 443 pour les requêtes HTTP / HTTPS au contrôleur;
- TCP: 5443 pour les demandes HTTPS au routeur;
- UDP: 5005 pour les paquets routés entre différents nœuds UNetLabv2;
- UDP: 1194 pour l'accessibilité au réseau entre le contrôleur et les nœuds de laboratoire distants.
SOFTWARE
================================
UNL VM -Cisco Switch/Router IOS images -
Switch -
Router -
IOURC (Cisco License) KeyGen -
Telnet browser integration (REG file) -
VMWare -
WinSCP -
===================================
Aucun commentaire:
Enregistrer un commentaire