Alternating bit protocol: FSM

Alternating bit protocol: FSM

di Van Hees Charles -
Numero di risposte: 2

Bonjour,

Dans la FSM de l'expéditeur pour le ABP, il est indiqué que ce-dernier attend la frame D(0/1, SDU, CRC) avant de l'envoyer. Cependant, si je ne me trompe pas, cette frame n'a pas encore été créée au moment de l'envoyer à l'entité de liaison de données. Celle-ci va recevoir le SDU et va ensuite créer la frame en attribuant un numéro de séquence et en calculant le CRC.

Figure made with TikZ

De même, pour le récepteur, celui-ci traiterait selon moi les SDU au lieu des D(0/1, SDU, CRC). Par ailleurs, pour le récepteur toujours, ne faudrait-il pas plutôt écrire dans les boucles recvd(D(0/1,SDU,CRC)) OR not is_ok(CRC,SDU) (j'ai l'impression que des actions ne sont pas traitées dans la version actuelle du schéma dans le syllabus) ?

Figure made with TikZ

Ai-je mal compris quelque chose ?

Merci d'avance pour votre réponse,

Cordialement,

Charles

In riposta a Van Hees Charles

Re: Alternating bit protocol: FSM

di Buchet Aurélien -
Bonjour,

Dans la syntaxe utilisée pour les FSMs chaque transition à une condition et une/des action(s) liée(s). Dans l'état Wait for D(0,...) du sender, la condition effectuer un changement d'état est Data.req(SDU). Il faut donc attendre d'avoir les données a envoyées qui sont typiquement crées à la couche supérieure. Une frame contenant le numéro de séquence (0 dans ce cas), les données et le CRC est ensuite envoyée et un timer est démarré. 

Pour le récepteur, celui-ci attend de reçevoir une frame 0/1 avec des données et un CRC, dans le cas ou le CRC de la frame est valide, il faut vérifier le bit de séquence, si c'est celui qu'on attend, on peut transmettre les données à la couche supérieure (Data.ind(SDU)) et envoyer une frame OK pour signaler qu'on attend la nouvelle frame. Dans le cas d'une retransmission, on renvoi une frame OK pour indiquer qu'on attend la frame suivante.

La mention All corrupted frames are discarded in all states implique une transition sans action depuis tous les états vers eux-même lors de la réception d'une frame invalide. La transition recvd(D(0/1,SDU,CRC)) AND not is_ok(CRC,SDU) est donc couverte par cela. A noté qu'il n'y a pas de frame OK envoyée suite à la reception du frame invalide. Pour la condition recvd(D(0/1,SDU,CRC)) OR not is_ok(CRC,SDU), elle ne fait pas vraiment de sens pour moi. Elle serait vraie en cas de reception d'une frame quelconque ou de la détection d'un CRC invalide mais quel CRC alors puisqu'on de doit pas forcément avoir reçu de frame ? 

J'espère que c'est plus clair.
Bonne journée,
Aurélien