Mon répertoire de travail pour le BE Réseau de 3 MIC à l'INSA Toulouse
Find a file
2021-08-22 13:24:38 +02:00
mictcp.c Importation du code depuis GitHub 2021-08-22 13:24:38 +02:00
README.md Importation du code depuis GitHub 2021-08-22 13:24:38 +02:00

Bureau d'étude réseau - Répertoire de travail

Je mets ici le résultat de mes travaux pour le bureau d'étude réseau de 3ème année MIC à l'INSA de Toulouse. Veuillez noter que je ne mets que mictcp.c et que vous allez avoir besoin du reste de l'environnement pour compiler et utiliser le protocole.

Avancement

  • La v1 a été implémentée et est parfaitement fonctionnelle.
  • La v2 a été implémentée et fonctionne. Aucun paquet n'est perdu (des compteurs permettent de le vérifier) et les performances sont acceptables.
  • La v3 est fonctionnelle. Elle peut être testée en mettant DO_HANDSHAKE = 0
  • La v4.1 est fonctionnelle et le handshake permet l'échange du ADMITTED_LOSS_RATE

Notes pour le correcteur

Remarque : Ces notes sont disponibles dans l'entête du fichier mictcp.c.

TP BE Réseaux

 À L'ATTENTION DU CORRECTEUR:
    - Ce fichier est le seul fichier que j'ai modifié 

    - La v1 a été implémenté et fonctionne avec tsock_texte et 
    tsock_video.

    - La v2 a été implémentée et reprise de perte ok. Pour tester la
    v2, vous devez faire quelques modifications : 
        * Régler les parametres comme suivant :
            MOD_SEQ_NUM = 2
            ADMITTED_LOSS_RATE = 0
        * Il faut décommenter les lignes commençant par // [V2]
          Ces lignes sont dans la fonction process_received_PDU().

    - La v3 est implémentée et fonctionnelle. ADMITTED_LOSS_RATE permet de 
    parametrer le taux de paquets perdus abandonnés. S'il vaut 5, alors 5% 
    des paquets perdus ne seront pas renvoyés. Pour tester la v3, passez :
        * DO_HANDSHAKE = 0
    Utiliser cette version permet d'avoir moins de ralentissements, mais au
    prix de coupure et des pertes d'informations.

    - La v4.1 est implémentée et fonctionnelle. Le handshake permet également 
    d'échanger le taux de pertes admissibles. Pour tester la v3, le handshake
    peut être désactivé avec DO_HANDSHAKE = 0.
    On peut faire plusieurs remarques sur le programme final :
        - Le taux de pertes admis (ADMITTED_LOSS_RATE) est calculé à chaque 
          itération à partir de l'ensemble des pertes et des envoies fait jusqu'à
          présent. On aurait pu implémenter une fenêtre (e.g. avec une pile FIFO, 
          et ça serait plus pertinent pour de longues transmissions) mais il est alors 
          plus difficile d'observer les effets de la v3 et de se s'arrurer que les
          taux de pertes admises sont corrects.
        - La gestion des pertes admissibles est entièrement gérée par la source
          et fonctionne sur le principe du stop and wait uniquement.

    Améliorations possibles :
    Je vous propose ici quelques idées pour aller plus loin que je n'ai pas eu 
    le temps d'implémenter :
        - Mettre en place de l'asynchronisme entre le client et MIC TCP. Cela pourrait 
        être fait avec un buffer créant une file d'attente avant le stop and wait.
        - Mettre en place le multiplexage, en passant toutes les variables globales
        dans un struct pour chaque socket et utiliser le numéro de port pour identifier
        à quel socket un paquet appartient.
        - Utiliser le RTT plutôt qu'un timeout fixe
        - Regarder l'implémentation de TCP pour le remplacer par MIC-TCP avec par exemple
        l'utilisation de LD_PRELOAD (bon ça, c'est vraiment ambitieux).