TP bus de terrain : comparaison de
protocoles d'arbitrage.
Frank Singhoff
L'objectif du TP est de comparer les temps d'accès induits
par deux protocoles d'arbitrage d'un bus :
le protocole du réseau industriel FIP qui offre des
garanties temporelles sur la transmission des informations
et le protocole utilisé par Ethernet (IEEE 802.3)
qui n'offre pas de garantie
temporelle.
Station |
Message émis |
0 |
Périodique (période = 3 ms) |
1 |
Périodique (période = 9 ms) |
2 |
Apériodique |
Pour se faire,
on se propose de construire un petit simulateur
en C.
Le simulateur étudie le comportement temporel
d'une application répartie sur un bus
constitué de 3 stations maîtres (cad 3 émetteurs).
Les deux premières stations émettent
des messages périodiques
et la dernière, des messages apériodiques (cf. table ci-dessus).
Le délai entre la demande d'émission
de deux messages apériodiques
est généré de façon aléatoire (pour simplifier, la distribution
est uniforme). Le délai moyen entre deux messages apériodiques
est passé en paramètre du simulateur.
On vous demande de compléter deux
programmes C qui simulent l'arbitrage sur le bus
de la transmission de ces messages.
Vous pouvez utiliser ce
Makefile
pour les compiler.
On considère que les temps de transmission, de propagation
et de traversée des couches prennent en
tout une milli-seconde.
L'objectif de ce premier exercice consiste à simuler le
protocole d'arbitrage du réseau FIP. Pour ce faire, vous
disposez du fichier
suivant .
On rappelle que pour ce réseau, le protocole
d'arbitrage est caractérisé
par les élements suivants :
- Un arbitre centralisé exploite une table (dit table
d'arbitrage) qui indique
pour chaque instant les stations qui peuvent émettre
des messages.
- Le fonctionnement de l'arbitre est cyclique : il
arbitre d'abord l'émission des messages périodiques, puis,
s'il reste du temps, autorise l'émission du trafic
apériodique.
- La période de base utilisée par l'arbitre est le
microcycle. La durée d'un microcycle doit permettre l'émission
du trafic périodique, et éventuellement du
trafic apériodique.
- Le microcycle constitue l'unité de temps
sur laquelle la table d'arbitrage est construite.
La taille de cette
table est appellée macrocycle.
Questions :
- Déterminez le macrocycle, le microcyle et la table d'arbitrage
pour l'ensemble des messages du précédent tableau.
Calculer le temps d'accès maximum de chacun des messages.
- Etudiez le fonctionnement
du fichier fip.c et complétez
les zones indiquées par le mot ACOMPLETER.
- Exécutez le simulateur avec plusieurs
délais moyens différents (ex : 1, 2, 10, 100).
Que constatez vous pour les temps d'accès de la station 0, 1
et 2. Les contraintes temporelles des messages sont
elles respectées ?
Vérifiez que ces résultats correspondent bien à ceux
déterminés dans la question 1.
Nous regardons maintenant le cas du protocole CSMA/CD.
Ce protocole n'est pas déterministe mais probabiliste.
Son fonctionnement est le suivant (cf figure ci-dessus) :
- Lorsqu'une station souhaite émettre une trame, elle
écoute la porteuse. Si elle détecte que la porteuse est
libre, elle émet sa trame.
- Durant l'émission de sa trame, elle continue à écouter
la porteuse. Si elle détecte une collision (plusieurs
stations qui émettent simultanément), elle
suspend son émission, attend un délai variable, puis, fait
une nouvelle tentative d'émission (algorithme dit du
backoff)
- Au bout de 16 tentatives infructueuses, la trame est
perdue et les couches supérieures doivent faire
une
nouvelle demande d'émission de trame.
Vous trouverez
ici.
un fichier contenant la simulation du protocole décrit
ci-dessus.
Dans le simulateur
le délai aléatoire d'attente avant réémission
est un tirage aléatoire (distribution uniforme)
entre 1 et délais_max (cf figure ci-dessus).
Questions :
- Complétez le fichier csma.c en ajoutant
le code nécessaire à la simulation du protocole CSMA/CD.
La zone à compléter est signalée par le mot ACOMPLETER.
- Nous allons utiliser gnuplot pour visualiser
les temps d'accès de la station 0. Pour ce faire :
- Récuperez
le fichier
csma.cmd suivant.
- Exécutez la simulation codée dans le fichier
csma.c.
- Grâce au fichier csma.dta ainsi généré, visionnez
les résultats grâce à la commande :
gnuplot csma.cmd
ATTENTION : deux courbes sont affichées successivement : gnuplot
affiche la première et attend que vous frappiez une touche
pour présenter la seconde.
- Refaite les étapes précédentes avec des valeurs
différentes pour le temps moyen entre deux messages apériodiques
(ex : 1000, 100, 10).
- Que constatez vous concernant le temps d'accès des messages
de la station 0, le nombre de messages émis par
la station 0 et le respect des contraintes temporelles
de la station 0 ? Pourquoi ?
Concluez sur l'intérêt d'un tel protocole pour une application
temps réel.
Page maintenue par Frank Singhoff
(singhoff@univ-brest.fr)
Dernière mise à jour le 12 décembre 2000