IMA4 2016/2017 ECP1

De Wiki d'activités IMA
Révision datée du 8 juin 2017 à 10:44 par Hdelatte (discussion | contributions) (Travail effectué)

Présentation du projet

Contexte

L'élève effectue son stage au Vietnam sans aucun matériel informatique personnel. Il lui est proposé une EC purement logicielle pouvant être développée sur n'importe quel système d'exploitation. Une machine virtuelle Linux est cependant nécessaire pour une partie du projet.

Objectif

L'objectif est de compléter un simulateur réseau écrit en JavaScript et tournant dans un navigateur. Ce simulateur se trouve à l'adresse http://rex.plil.fr/reseau.

Description du projet

Il est demandé d'ajouter la gestion des paquets ICMPv4 au simulateur. Cet ajout doit se faire proprement avec gestion des paquets ARP et mise en file d'attente des paquets IPv4 en attente de résolution d'adresses IPv4 en adresses Ethernet. Les paquets ICMPv4 à gérer sont les paquets de demande (ICMP de type 8) et de réponse d'écho (ICMP de type 0) ainsi que les paquet de redirection de route (ICMP de type 5). Les machines et les éléments du réseau pourront ainsi être testées par la commande ping mais aussi générer une erreur ICMP lorsqu'un paquet ne peut pas être routé pour diverses raisons.

En parallèle, pour tester la gestion des ICMPv4, il est demandé que le simulateur puisse gérer des éléments "externes". Le comportement de ces éléments ne sera pas pris en charge par le simulateur mais par un système d'exploitation externe. Le simulateur se contentera d'envoyer les paquets destinés aux éléments externes à une interface Ethernet virtuelle d'une machine Linux. A l'inverse, les paquets générés par l'interface virtuelle seront injectés dans le simulateur. La communication entre le simulateur et les interfaces virtuelles doit s'effectuer par des serveurs WebSocket. Vous utiliserez la bibliothèque WebSocket 2.x de Linux.

Cahier des charges

Un schéma d'ensemble précis du système est demandé. Ce schéma doit à la fois représenter l'architecture de communication entre le simulateur et les interface Ethernet virtuelles mais aussi l'architecture interne des modules du simulateur.

Modifier le programme de façon a enlever la demande d'adresse Ethernet. les stations trouverons les adresses grâce au protocole ARP.

Planning prévisionnel

Travail effectué

Lundi 5 juin

J'ai tout d'abord commencé a me familiariser avec le logiciel de simulation et tente de comprendre comment celui ci fonctionnait. j`ai ensuite ouvert les pages HTML et JAVASCRIPT pour comprendre comment elles étaient organisées. Après avoir relus les notions de bases en java script, ainsi que mes cours de réseau j'ai tente de comprendre pourquoi une des simulations fournies ne fonctionnait pas (en effet sur le schéma le plus complexe, deux stations ne sont pas capable de recevoir les paquet. Le problème venait d'une mauvaise configuration des masques. Les paquets ARP semblent fonctionner pourtant il m'est demandé de veiller à leur bon fonctionnement dans le cahier des charges.


mardi 7 juin

Après discussion avec Monsieur Xavier Redon, j'ai eu la confirmation qu'une coquille au niveau de l'adressage des stations etait presente. deux stations se trouvaient hors du réseau sur la table de routage du routeur. J'ai donc changer leurs adresses et cela refonctionne:

  • nouvelle adresse de la station 4: 192.168.1.200
  • nouvelle adresse de la station 3: 192.168.2.200

mercredi 8 juin

j'ai commencé a modifier le formulaire IP. L'adresse Ethernet source et maintenant déterminée automatiquement grâce a l'adresse IPV4. En effet grâce a l'adresse IPV4, on peut aller chercher, dans les div, directement l'adresse MAC associée. On retrouvera dans la fonction de création de packet, le code suivant qui permet de récupérer l'adresse MAC.

for(i=0;i<elements.length;i++){
   if (elements[i].find("[class=ip4port]").text() == ip4source_value){
   var ethsource_value = elements[i].find("[class=ethport]").text();
   var ethsource_color = elements[i].find("[class=ethport]").css('background-color');
   }
 }


Pour pouvoir trouver l'adresse MAC du destinataire nous faisons appel au protocole ARP pour simuler avec exactitude le fonctionnement d'un reseau. j'ai donc, pour éviter la redondance de code, relu les fonctions ARP utilisées pour le routeur. je vais donc en utiliser plusieurs pour pouvoir mettre en place ce protocole au niveau des stations. Je pourrai après avoir mis cela en place, m'attaquer a la construction du protocole de couche 3 de détection d'erreur: le protocole ICMP.


jeudi 8 juin

Je travaille aujourd’hui sur la recuperation de ladresse ethernet via protocol ARP. En utilisant des fonctions existantes dont une aue j,ai legerement modifie j'arrive a faire circuler les paquet ARP dans le meme reseau. Ainsi deux machines dans un meme reseau peuvent communiquer avec seulement leur adresse IP comme adresse de depart.

CODE


le problème rencontre est que si je possède l'adresse IP d'une machine d'un autre réseau, le routeur, ne reconnaissant pas son adresse IP lors de la demande ARP, ne renvoie pas son adresse MAC. Je suis donc en train de mettre au point une consultation de la table de routage de la station source. Ainsi la station émettrice enverra un paquet ARP avec l'adresse IP du routeur correspondant si elle constate que la machine réceptrice ne se trouve pas dans son réseau.


CODE

Documents

Sources