TP4  Promela

Master 2 IISA (réseaux et protocoles)
IPST/ULP  2006 - 2007


Avant d'aborder ce TP, il convient de découvrir le langage de spécification de protocoles Promela. Le document PolyPromela vous permet d'en connaitre la syntaxe. L'archive PremiersTestsPromela contient 6 programmes à charger dans l'outil xspin, puis à exécuter (Run -> Run Simulation) de plusieurs manières (Run -> Set Simulation Parameters).

Après cette phase de familiarisation à Promela, vous devez écrire quatre protocoles de plus en plus complexes et les exécuter/tester à l'aide de l'outil xspin. La couche physique est matérialisé par des canaux (chan en Promela). 
Les protocoles devront être exécutés avec plusieurs valeurs de "seed" et testés lors d'une phase de vérification.

1. Protocole utopique

Dans un premier temps, on considère un émetteur et un récepteur qui transmettent leur données via un canal fiable : pas de perte, pas de duplication, pas d'erreur, pas de désequencement.

2. Protocole "Send and Wait" dans un cas sans perte

On suppose cette fois que le récepteur ne parvient pas forcément à traiter les trames au rythme d'envoi imposé par l'émetteur. Pour éviter de saturer le tampon du récepteur, l'émetteur attend, après l'envoi de chaque trame, un acquittement du récepteur indiquant que celui-ci est prêt à traiter un nouveau paquet.

3. Protocole "Send and Wait" dans un cas avec pertes

Cette fois, la couche physique peut perdre des données. Il s'agit alors d'adapter le protocole précédent en introduisant des retransmissions. La perte de paquet est réalisée par un processus Medium qui reçoit et retransmet les paquets avec d'éventuelles pertes. On pourra alors prévoir 4 canaux, deux canaux entre l'émetteur et le medium, un dans chaque sens de transmission, et deux canaux entre le récepteur et le médium.

4. Protocole piggybacking

Pour finir, on envisage un protocole dans lequel chaque coté est à la fois émetteur et récepteur. Les acquittements sont alors joints aux trames de données (piggybacking).