Installation SONiC sur GNS3

Installer Enterprise SONiC dans GNS3


Dans cet article, nous allons vous montrer comment installer Enterprise SONiC dans GNS3.

GNS3 est un environnement de simulation réseau virtuel qui vous permet de construire et de tester des réseaux sur votre ordinateur sans avoir besoin de matériel physique. Vous pouvez glisser-déposer des router, switch, serveurs et firewalls sur un canvas et les connecter comme vous le feriez dans un vrai lab. C’est gratuit, simple à utiliser, et idéal pour apprendre, expérimenter ou valider des idées avant de les déployer en production. GNS3 prend également en charge une large gamme d’équipements réseau, ce qui le rend particulièrement utile pour tester l’interopérabilité entre SONiC et d’autres constructeurs.

Vous pouvez télécharger GNS3 depuis le site officiel : www.gns3.com

Pour installer SONiC sur GNS3, vous avez besoin des éléments suivants :

  • Une image SONiC Virtual Switch
  • Un fichier appliance SONiC gns3a

Vous pouvez télécharger l’image du virtual switch depuis le GitHub de Broadcom : https://github.com/Broadcom/sonic-VirtualSwitch/releases/tag/3.1.2

L’image doit s’appeler sonic-vs.img — si ce n’est pas le cas, renommez-la en sonic-vs.img pour faciliter l’importation dans GNS3.

Si vous avez besoin d’une autre version, veuillez nous contacter.
CONTACTEZ-NOUS

L’image SONiC-VS permet aux utilisateurs de vérifier les fonctions du plan de contrôle (par exemple BGP, MC-LAG) sur un switch de datacenter classique.

Fonctionnalités supportées par l’image SONiC-VS :

  • eBGP / iBGP – (underlay et overlay)
  • MC-LAG
  • Underlay OSPF avec BGP / EVPN en overlay
  • Interfaces numérotées et non numérotées
  • BGP non numéroté
  • Route leaking
  • Multi-VRF (Multi-tenant)
  • BFD
  • VLAN
  • Static Anycast Gateway
  • etc.

Les fonctionnalités du plan de données (par exemple ACL, QOS, PBR) ne sont pas supportées par SONiC-VS car celui-ci ne dispose pas de plateforme physique sous-jacente.

Vous aurez également besoin d’un fichier appliance GNS3. Le fichier appliance GNS3 (.gns3a) agit comme un blueprint qui automatise le déploiement de SONiC dans GNS3. Au lieu de configurer manuellement les paramètres QEMU, les paramètres matériels et les images disque, le fichier appliance regroupe toutes les métadonnées nécessaires — CPU, RAM, types de NIC, images supportées et valeurs par défaut recommandées — afin que SONiC démarre avec le bon environnement à chaque fois. Cela rend l’importation et l’exécution de SONiC dans GNS3 rapides, reproductibles et sans erreur.

Étape 1 : Création du fichier appliance GNS3 pour SONiC

Vous pouvez créer l’appliance GNS3 à l’aide d’un script disponible sur le GitHub de SONiC. Rendez-vous sur https://github.com/sonic-net/sonic-buildimage/blob/master/platform/vs/sonic-gns3a.sh

Téléchargez le fichier en cliquant sur le bouton de téléchargement situé à côté du bouton « Raw ». Enregistrez-le dans le même répertoire que l’image SONiC que vous avez téléchargée.

Voici le script :
#!/bin/bash

# This script creates a .gns3a SONiC appliance file
IMGFILE="sonic-vs.img"
RELEASE="latest"

usage() {
    echo "`basename $0` [ -r  ] -b "
    echo "e.g.: `basename $0` -r 1.1 -b /sonic-vs.img"
    exit 0
}

while getopts "r:b:h" arg; do
  case $arg in
    h)
	usage
	;;
    r)
	RELEASE=$OPTARG
	;;
    b)
	IMGFILE=$OPTARG
	;;
  esac
done

if [ ! -e ${IMGFILE} ]; then
    echo "ERROR: ${IMGFILE} not found"
    exit 2
fi

MD5SUMIMGFILE=`md5sum  ${IMGFILE} | cut -f 1 -d " "`
LENIMGFILE=`stat -c %s ${IMGFILE}`
GNS3APPNAME="SONiC-${RELEASE}.gns3a"
NAMEIMGFILE=`basename $IMGFILE`

echo "
{
    \"name\": \"SONiC\",
    \"category\": \"router\",
    \"description\": \"SONiC Virtual Switch/Router\",
    \"vendor_name\": \"SONiC\",
    \"vendor_url\": \"https://sonic-net.github.io/SONiC/\",
    \"product_name\": \"SONiC\",
    \"product_url\": \"https://sonic-net.github.io/SONiC/\",
    \"registry_version\": 3,
    \"status\": \"experimental\",
    \"maintainer\": \"SONiC\",
    \"maintainer_email\": \"sonicproject@googlegroups.com\",
    \"usage\": \"Supports SONiC release: ${RELEASE}\",
    \"first_port_name\": \"eth0\",
    \"qemu\": {
        \"adapter_type\": \"e1000\",
        \"adapters\": 10,
        \"ram\": 2048,
        \"hda_disk_interface\": \"virtio\",
        \"arch\": \"x86_64\",
        \"console_type\": \"telnet\",
        \"boot_priority\": \"d\",
        \"kvm\": \"require\"
    },
    \"images\": [
        {
            \"filename\": \"${NAMEIMGFILE}\",
            \"version\": \"${RELEASE}\",
            \"md5sum\": \"${MD5SUMIMGFILE}\",
            \"filesize\": ${LENIMGFILE}
        }
    ],
    \"versions\": [
        {
            \"name\": \"${RELEASE}\",
            \"images\": {
                \"hda_disk_image\": \"${NAMEIMGFILE}\"
            }
        }
    ]
}
" > ${GNS3APPNAME}
Si vous êtes sur un MacBook, vous devez modifier les lignes suivantes comme indiqué ci-dessous :
MD5SUMIMGFILE=`md5sum  ${IMGFILE} | cut -f 1 -d " "`
LENIMGFILE=`stat -c %s ${IMGFILE}`
MD5SUMIMGFILE=$(md5 -q "${IMGFILE}")
LENIMGFILE=`stat -f %z ${IMGFILE}`

Vérifiez que le script se trouve dans le même dossier que l’image SONiC. L’image doit s’appeler sonic-vs.img.

Exécutez ensuite le script. Ouvrez un terminal, naviguez jusqu’au dossier contenant le script et l’image SONiC, puis lancez le script avec la commande ./sonic-gns3a.sh

En quelques secondes, le fichier appliance sera créé dans le même dossier. Il s’appelle SONiC-latest.gns3a

Étape 2 : Importation de l’appliance SONiC dans GNS3

Maintenant que le fichier appliance est prêt, nous pouvons démarrer GNS3 et importer notre appliance.

Cliquez sur Fichier → Importer une Appliance

Naviguez jusqu’au répertoire où vous avez généré le fichier appliance et où se trouve votre image SONiC.

Installez-la ensuite sur le serveur principal.

Laissez les paramètres QEMU par défaut sur x86_64.

GNS3 détectera automatiquement le fichier image SONiC dans le répertoire.

Cliquez sur Suivant puis Confirmez l’installation.

Le nouvel équipement SONiC est ajouté à la liste des équipements dans GNS3.

Étape 3 : Test de SONiC dans GNS3

Pour le tester, nous créons un nouveau projet appelé Topology.

Nous ajoutons l’équipement SONiC à la topologie. Faites un clic droit sur le switch pour le démarrer.

Vous pouvez ensuite ouvrir la Console en double-cliquant sur le switch.

Le démarrage de SONiC et le lancement des containers prennent quelques minutes.

Vous pouvez vérifier que tous les containers ont démarré avec la commande : docker ps -a

Vous êtes actuellement dans le shell Linux. Pour accéder au CLI SONiC, tapez sonic-cli

Avec SONiC 4.5.0 opérationnel, vous êtes prêt à expérimenter avec SONiC. Happy labbing !

Notes
  • Si vous trouvez que le switch démarre lentement ou est lent en général, vous pouvez essayer d’augmenter la RAM et les vCPU du template. Pour ce faire, faites un clic droit sur l’équipement dans GNS3 -> configurer le template -> augmenter la RAM et les vCPUs.