update Readme
This commit is contained in:
parent
fff3ae2a93
commit
540fd58c5b
8 changed files with 51 additions and 80 deletions
BIN
20230510-mictcp-moodle-a8taleb.tar.gz
Normal file
BIN
20230510-mictcp-moodle-a8taleb.tar.gz
Normal file
Binary file not shown.
113
README.md
113
README.md
|
@ -1,92 +1,49 @@
|
|||
# BE RESEAU
|
||||
## TPs BE Reseau - 3 MIC
|
||||
[https://prod.liveshare.vsengsaas.visualstudio.com/join?06D950E7114F70AD557DABDD54F41A8DE5B6](https://prod.liveshare.vsengsaas.visualstudio.com/join?E54E923D637B2C66FF9497A2A21FF21459AD)
|
||||
Les détails du sujet du BE est accessible depuis le cours "Programmation Système et Réseau" sur moodle.
|
||||
## TPs BE Reseau - 3 MIC Aittaleb Mohamed Barnavon Jules-iana
|
||||
|
||||
|
||||
## Contenu du dépôt « template » fourni
|
||||
Ce dépôt inclut le code source initial fourni pour démarrer le BE. Plus précisément :
|
||||
- README.md (ce fichier) qui notamment décrit la préparation de l’environnement de travail et le suivi des versions de votre travail;
|
||||
## Contenu du dépôqui vous interesse
|
||||
Ce dépôt inclunotre code source final pour mictcp
|
||||
- README.md (ce fichier)
|
||||
- tsock_texte et tsock_video : lanceurs pour les applications de test fournies.
|
||||
- dossier include : contenant les définitions des éléments fournis que vous aurez à manipuler dans le cadre du BE.
|
||||
- dossier src : contenant l'implantation des éléments fournis et à compléter dans le cadre du BE.
|
||||
- src/mictcp.c : fichier au sein duquel vous serez amenés à faire l'ensemble de vos contributions (hors bonus éventuels).
|
||||
- src/mictcp.c : code source que l'on a d<>veloppé
|
||||
- configurer.sh : script shell qui vous demandera la version que vous voudrez utiliser et la tol<6F>rance aux pertes que vous souhaitez pour la v3 et au-delas
|
||||
|
||||
## Choir la version
|
||||
La méthode pour choisir la version que nous recommandons est d'utiliser le script `configurer.sh`, assurez vous de le rendre ex<65>cutable par la commande :
|
||||
`chmod +x configurer.sh`. Il ne fait que modifier une variable `version` qui controle la version dans `src/mictcp.c`.
|
||||
|
||||
## Création du dépôt mictcp
|
||||
Si non vous pouvez toujours remonter aux commits tagg<67>s avec le nom de la version que vous voulez.
|
||||
|
||||
1. Création d’un compte git étudiant : Si vous ne disposez pas d’un compte git, connectez vous sur http://github.com/ et créez un compte par binôme.
|
||||
## Compiler:
|
||||
Si vous avez utiliséle script pour choisir la version, il n'est pas n<>cessaire de recompiler, si non veuillez ex<65>cuter `make`
|
||||
|
||||
2. Afin d’être capable de mettre à jour le code que vous aurez produit sur le dépôt central Github, il vous faudra créer un jeton d’accès qui jouera le rôle de mot de passe. Veuillez le sauvegarder, car il vous le sera demandé lors de l'accès au dépôt central. Pour ce faire, veuillez suivre les étapes décrites : https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token
|
||||
## Notre avancement
|
||||
Nous arrivéà d<>veloppéune version qui marche de la v4, (i.e fiabilit<69> partielle et <20>tablissement de la connexion.
|
||||
|
||||
3. Création d’un dépôt Etudiant sur GitHub pour le BE Reseau
|
||||
|
||||
Créer une copie du dépôt template enseignant : https://github.com/rezo-insat/mictcp, en vous y rendant et en cliquant sur le bouton « use this template » situé dans le coin en haut, plutôt à droite de la page. Il est demandé de le choisir comme dépôt privé. Il est impératif pour les corrections que vous rajoutiez le compte : rezo-insat comme collaborateur afin de permettre à vos enseignants d'accéder à votre dépôt. Pour ce faire, sélectionner le bouton "settings" puis "collaborators" et rajouter comme utilisateur : rezo-insat. La marche à suivre est décrite ci-après : https://docs.github.com/en/organizations/managing-access-to-your-organizations-repositories/adding-outside-collaborators-to-repositories-in-your-organization
|
||||
## Bug observé
|
||||
Avant d'ex<65>cuter tsock_text, assurez vous de ne pas avoir ex<65>cutétsock_video sur votre machine auparavant, nous avons observéque ceci faisait planter
|
||||
notre application. La seule solution que l on a trouvéest de simplement reboot la machine.
|
||||
|
||||
## Choix remarquables
|
||||
### Parametres de la fiabilite partielle
|
||||
Pour implanter la fiabilite partielle, nous repris notre solution pour la fiabilite totale, et nous avons ajoute les elements suivants
|
||||
Lorsque le client re<72>oit un acquitement, il ajoute un 1 au buffer circulaire de son socket et incr<63>ment le num<75>ro de s<>quence, si non, il calcule la proportion de 1 dans
|
||||
ce buffer, et si elle est sup<75>rieure <20>au pourcentage de pertes tol<6F>r<EFBFBD>es, il ajoute un 0 au buffer, et retourne au client la taille envoy<6F>e
|
||||
mais n incremente pas le numero d acquitement, si non, il renvoie le packet et attend toujours l'acquittement.
|
||||
|
||||
4. Créer un clone local de votre dépôt Github, i.e. une copie locale du dépôt sur votre compte insa.
|
||||
|
||||
cliquer sur le bouton « code » de votre dépôt, copier l’URL qui permet de l’identifier.
|
||||
Ouvrir un terminal de votre machine. En vous plaçant dans le répertoire de travail de votre choix, taper depuis le terminal :
|
||||
|
||||
git clone <url de votre dépôt>
|
||||
|
||||
Vous avez désormais une copie locale de votre dépôt, que vous pouvez mettre à jour et modifier à volonté au gré de votre avancement sur les TPs.
|
||||
|
||||
5. Afin de nous permettre d’avoir accès à votre dépôt, merci de bien vouloir renseigner l'URL de votre dépôt sur le fichier accessible depuis le lien "fichier URLs dépôts étudiants" se trouvant sur moodle (au niveau de la section: BE Reseau).
|
||||
|
||||
## Compilation du protocole mictcp et lancement des applications de test fournies
|
||||
|
||||
Pour compiler mictcp et générer les exécutables des applications de test depuis le code source fourni, taper :
|
||||
|
||||
make
|
||||
|
||||
Deux applicatoins de test sont fournies, tsock_texte et tsock_video, elles peuvent être lancées soit en mode puits, soit en mode source selon la syntaxe suivante:
|
||||
|
||||
Usage: ./tsock_texte [-p|-s]
|
||||
Usage: ./tsock_video [[-p|-s] [-t (tcp|mictcp)]
|
||||
|
||||
Seul tsock_video permet d'utiliser, au choix, votre protocole mictcp ou une émulation du comportement de tcp sur un réseau avec pertes.
|
||||
|
||||
## Suivi de versions de votre travail
|
||||
|
||||
Vous pouvez travailler comme vous le souhaitez sur le contenu du répertoire local. Vous pouvez mettre à jour les fichiers existants, rajouter d’autres ainsi que des dossiers et en retirer certains à votre guise.
|
||||
|
||||
Pour répercuter les changements que vous faites sur votre répertoire de travail local sur le dépôt central GitHub, sur votre terminal, taper :
|
||||
Afin de permettre l'implantation de cette fiabilite partielle, nous avons juggéque seul celui qui envoie les packets (ici le client) est en
|
||||
position de controler cette fonctionalit<69>. De ce fait, il n'y pas de n<>gociation, simplement c est la source envoie, et qui controle le pourcentage de
|
||||
pertes dans ce qu elle a envoy<6F>.
|
||||
|
||||
git add .
|
||||
git commit -m «un message décrivant la mise à jour»
|
||||
git push
|
||||
### La r<>alisation des IP_recv
|
||||
Si vous vous penchez sur notre code source, vous verrez que l'on a fait usage de thread supl<70>mentaire alors que nous ne sommes pas all<6C>s jusqu'à la v4.2.
|
||||
La raison de ceci est que nous avons rencontrédes bugs assez troublant concernant les IP_recv, ces derniers adoptent un comportement diff<66>rent d une execution a l'autre.
|
||||
Nous avons alors d<>cidéde les traiter comme une source de perte en tant que tel, et nous les ex<65>cutons toujours dans un thread c<>tépuit. C<>tésource, vu que le
|
||||
process_received_pdu est lancé dans un thread a part, cela n'a pas <20>tén<C3A9>cese.
|
||||
|
||||
- Marquage des versions successives de votre travail sur mictcp
|
||||
|
||||
Lorsque vous le souhaitez, git permet d'associer une étiquette à un état précis de votre dépôt par l'intermédiaires de tags. Il vous est par exemple possible d'utiliser ce mécanisme pour marquer (et par conséquence pouvoir retrouver) l'état de votre dépôt pour chacune des versions successives de votre travail sur mictcp.
|
||||
### Etablissement de la connexion
|
||||
Pour l'etablissement de la connexion, notre protocole effectue les op<6F>rations suivantes :
|
||||
|
||||
Pour Créer un tag « v1 » et l'associer à l'état courrant de votre dépôt, vous taperez la commande suivante sur votre terminal :
|
||||
|
||||
git tag v1
|
||||
|
||||
Pour lister les tags existants au sein de votre dépôt
|
||||
|
||||
git tag -l
|
||||
|
||||
Pour transférer les tags de votre dépôt local vers le dépôt central sur github:
|
||||
|
||||
git push origin --tags
|
||||
|
||||
|
||||
Ceci permettra à votre enseignant de positionner le dépôt dans l'état ou il était au moment du marquage avec chacun des tags que vous définissez.
|
||||
|
||||
## Suivi de votre avancement
|
||||
|
||||
Veuillez utiliser, à minima, un tag pour chacune des versions successives de mictcp qui sont définies au sein du sujet du BE disponible sous moodle.
|
||||
|
||||
|
||||
## Liens utiles
|
||||
|
||||
Aide pour la création d’un dépôt depuis un template : https://docs.github.com/en/repositories/creating-and-managing-repositories/creating-a-repository-from-a-template
|
||||
|
||||
Manuel d'utilisation de git: https://git-scm.com/docs
|
||||
|
||||
## Amélioration
|
||||
Implémenter la liste des sockets par une liste chaînée
|
||||
Lorsque le client c<>tésource<63> fat un mic_tcp_connect, l'applicatio fixe le numero de sequence associe a son socket a 0, puis envoie un pdu syn a ce meme numero de sequence 0.
|
||||
A sa reception cote puit, la fonction process_receive_pdu l'applicatio fixe aussi son numero de sequence associe a son socket a 0, envoie un pdu syn ack ce numero de sequence ,
|
||||
|
|
BIN
build/client
BIN
build/client
Binary file not shown.
BIN
build/gateway
BIN
build/gateway
Binary file not shown.
BIN
build/mictcp.o
BIN
build/mictcp.o
Binary file not shown.
BIN
build/server
BIN
build/server
Binary file not shown.
14
configurer.sh
Executable file
14
configurer.sh
Executable file
|
@ -0,0 +1,14 @@
|
|||
#!/bin/bash
|
||||
|
||||
read -p "Donnez la version que vous desirez: " version_number
|
||||
|
||||
read -p "Donnez le pourcentage de perte que vous voulez tolérer (marche qu'à partir de la v3): " loss_acceptability_number
|
||||
|
||||
file_path="./src/mictcp.c"
|
||||
|
||||
sed -i "s/version=[0-9]\+;/version=${version_number};/" "$file_path"
|
||||
|
||||
sed -i "s/#define LOSS_ACCEPTABILITY [0-9]\+/#define LOSS_ACCEPTABILITY ${loss_acceptability_number}/" "$file_path"
|
||||
|
||||
echo "Valeurs mises à jour avec success."
|
||||
make
|
|
@ -5,7 +5,7 @@
|
|||
#define NBR_SOCKETS 1024
|
||||
#define TIMEOUT_DEFAUT 1000
|
||||
#define WINDOW_SIZE 10
|
||||
#define LOSS_ACCEPTABILITY 20 // sur 100
|
||||
#define LOSS_ACCEPTABILITY 2 // sur 100
|
||||
#define ATTENTE_ACK 1
|
||||
#define PAYLOAD_SIZE 64
|
||||
|
||||
|
@ -45,7 +45,7 @@ pthread_t envoi_syn_ack_tid;
|
|||
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
|
||||
pthread_cond_t end_accept_cond = PTHREAD_COND_INITIALIZER;
|
||||
char debug=1;
|
||||
char version=3;
|
||||
char version=2;
|
||||
//================================== SIGNATURES DES FONCTIONS PRIVEES =============================
|
||||
|
||||
int valid_socket(int socket);
|
||||
|
|
Loading…
Reference in a new issue