Removed old README
Added more text in RAPPORT Changed debug level
This commit is contained in:
parent
8f65bca3e1
commit
29de8fd0b3
35
RAPPORT.md
35
RAPPORT.md
@ -56,14 +56,33 @@ Ce message sera envoyé aux pairs en faisant la demance lors de l'inondation.
|
|||||||
|
|
||||||
Lors de la réception d'un message, on effectue plusieurs vérifications. La première consiste à vérifier l'entête du paquet. Une fois cette entête validée, on ajoute le pair à la liste des pairs connus.
|
Lors de la réception d'un message, on effectue plusieurs vérifications. La première consiste à vérifier l'entête du paquet. Une fois cette entête validée, on ajoute le pair à la liste des pairs connus.
|
||||||
|
|
||||||
On passe ensuite à la validation de chaque TLV. On commence par créer un paquet vide, qui va nous servir lors du renvoie éventuel de paquet vers les pairs.
|
On passe ensuite à la validation de chaque TLV. On commence par créer un paquet vide, qui va nous servir lors du renvoie éventuel de paquet vers les pairs. Ensuite, l'un à la suite des autres, nous validons les TLVs. Une fois qu'un TLV est valide, nous le traitons. Si nous avons besoin de renvoyer un paquet, nous allons soit le renvoyer directement, soit agrégé des TLVs dans un paquet, qui se remplira jusqu'a être pleins, suite à quoi il sera envoyé.
|
||||||
|
|
||||||
|
#### Gestion et génération des hashs.
|
||||||
|
|
||||||
|
?
|
||||||
|
|
||||||
## Choix d'implémentation
|
## Choix d'implémentation
|
||||||
|
|
||||||
Comment on implémente les TLV ? Utilisation de poll() ? Envoie des paquets UDP avec sendmsg ? Gestion des erreur.
|
### TLV
|
||||||
|
|
||||||
Temps de convergance : < 1s
|
Les TLVs sont représentés par un type `union TLV`, qui contiens des pointeurs vers le `struct` TLV en lui-même.
|
||||||
|
|
||||||
|
### poll()
|
||||||
|
|
||||||
|
L'utilisation de `poll()` nous permet de réagir à des évènements, et donc de ne pas avoir à attendre inutilement quand rien ne se passe. `poll()` va attendre 10ms sur chaque descripteur de fichier, en bloquant le reste du programme. Si nous recevons un message alors que nous n'observons pas le socket, rien de grave ne se passe ; on attendra un autre message.
|
||||||
|
|
||||||
|
### Envoie des paquets avec sendmsg
|
||||||
|
|
||||||
|
L'utilisation de `sendmsg` ainsi que d'un buffer vectorisé n'a pas de réel avantage par rapport à un buffer classique. Mais, il pourrait permettre de stocker des messages à envoyer en l'attente d'une connexion. On pourrait ainsi envoyer plusieurs paquets d'un coup, au lieu de les envoyer les uns à la suite des autres.
|
||||||
|
|
||||||
|
### Affichage et gestion des erreurs
|
||||||
|
|
||||||
|
Notre programme contient une variable `DEBUG_LEVEL` définie dans `debug.h`, qui permet de compiler avec plusieurs niveaux de verbosité. Lorsqu'elle est à 0, seul des messages d'information et d'erreur sont affichés, tel que l'ajout d'un message, la réception d'un message, ou l'affichage des messages connus.
|
||||||
|
|
||||||
|
Puis, entre 1 et 9, des message de débug avec plus ou moins de détails sont affichés, ce qui permet d'avoir une idée de la "vie" du pair en temps réel. À partir de 9, l'éxécution se fait étape par étape, en appuyant sur entrée à chaque étape.
|
||||||
|
|
||||||
|
Une attention particulière est porté sur la gestion des erreurs. En effet, notre pair va essayer au maximum de continuer à vivre malgré les bugs possible. Vu qu'il est possible de recevoir tout type de message, nous préférons afficher un message d'erreur ou de débug plutôt que d'arrêter l'éxécution. À noter que le fait de ne pas avoir de pair au début n'est pas une erreure fatale, car il se peut qu'un autre pair communique avec nous, sans que nous ne le connaissions au préalable.
|
||||||
|
|
||||||
## Spécificités
|
## Spécificités
|
||||||
|
|
||||||
@ -71,7 +90,13 @@ Temps de convergance : < 1s
|
|||||||
|
|
||||||
## Extensions
|
## Extensions
|
||||||
|
|
||||||
?
|
Nous avons implémenter l'aggrégation de TLV dans un paquet.
|
||||||
|
|
||||||
|
Nous vérifions la cohérence des _Node State_ ; si on reçoit un node state, on vérifie que son hash est cohérent.
|
||||||
|
|
||||||
|
Si notre pair as plusieurs adresses, nous communiquons sur toutes les adresses qu'il possède.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Commentaire
|
## Commentaire
|
||||||
|
|
||||||
@ -90,4 +115,4 @@ Ce que l'on as pensé du projet, les éventuelles difficultés ?
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
Comment est organiser le code ? Diagram UML ? Dépendances ?
|
Comment est organisé le code ? Diagram UML ? Dépendances ?
|
||||||
|
@ -1,5 +0,0 @@
|
|||||||
# dazibao
|
|
||||||
|
|
||||||
Le but de ce projet est d’implémenter un dazibao (« journal à grandes lettres »), semblable à
|
|
||||||
un « mur » de réseau social, mais de façon complètement distribuée. Le protocole est basé sur un
|
|
||||||
algorithme non-fiable d’inondation.
|
|
@ -4,7 +4,7 @@
|
|||||||
#include "node.h"
|
#include "node.h"
|
||||||
|
|
||||||
|
|
||||||
#define DEBUG_LEVEL 7
|
#define DEBUG_LEVEL 0
|
||||||
|
|
||||||
void welcome();
|
void welcome();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user