Simulateur réseau

Présentation

Ce simulateur de réseau permet de montrer le fonctionnement de la commutation Ethernet et du routage en IPv4. Le simulateur est écrit en javascript et les animations sont assurées par jquery-ui.

Au niveau commutation Ethernet, la simulation de l'auto-apprentissage des adresses Ethernet est gérée. Les VLANs ne sont pas adressés.

Au niveau routage IPv4, une table de routage est consultée et le cache ARP est géré. Les routeurs génèrent des paquets ARP quand nécessaire et les routeurs et stations savent répondre à une requête ARP et exploiter une réponse ARP. et les routeurs

Scénarios commutation Ethernet

Quelques scénarios de commutation Ethernet :

Scénarios routage IPv4

Quelques scénarios de routage IPv4 :

Téléchargement

Les sources du simulateur peuvent être téléchargées.

Perspectives

Les paquets IPv4 sont assez mal représentés, il faudrait mieux rendre le fait que le paquet IPv4 est imbriqué dans le paquet Ethernet. Cela peut se faire par un div contenant l'adresse Ethernet destination, l'adresse Ethernet source et un autre div avec une bordure contenant lui l'adresse IPv4 source puis l'adresse IPv4 destination.

Avant de continuer le développement du simulateur, vérifier que la partie HTML est bien à la norme HTML5. Rendre la page compatible HTML5 le cas échéant.

Il serait intéressant de pouvoir créer des scénarios sans devoir taper du code HTML, juste en cliquant pour créer des éléments (stations, routeurs et commutateurs), pour ajouter ou supprimer des ports, pour ajouter ou supprimer des entrées dans les tables de routage et pour connecter des éléments entre eux.

La simulation devrait être poussée jusqu'à la gestion et la génération de paquets ICMPv4. Bien sûr pour répondre à un ping mais aussi pour répondre par un ICMP quand un paquet ne peut pas être routé pour diverses raisons.

Il faudrait gérer les paquets IPv6 et le routage IPv6.

Une ouverture vers le réseau réel est possible en connectant des machines virtuelles sur des interfaces Ethernet virtuelles (interfaces tap) via un serveur websocket.