Laboratoire de Réseau Local, LAN: SEG 3550
5 Février 2004
Fichiers à télécharger:
Quand vous decompressez le fichier LANLab.zip, et
commencez le processus Tau, ajoutez les fichiers suivant en utilisant
"Add existing".
Si vous cochez l'option “expand substructure”,
ceci devrait charger les fichiers restants.
Objectif
L'objectif de ce laboratoire est de modifier les travaux
précédents pour changer la connexion "point à point" avec
exactement deux stations, à une architecture de type bus LAN partagé entre
n'importe quel nombre de stations. En particulier, le but est de mettre en
application un trame filtrant, de style Ethernet, où les octets envoyés à
la couche physique apparaîtront à tous les stations du LAN. Quoique tous les
messages apparaissent à tous les stations, seulement la station de
destination devrait accepter le trame et le transmettre à sa couche supérieure.
Une adresse spéciale d'émission ( broadcast ) indique que tous les stations
devraient accepter le trame (station expéditrice y compris).
Dans ce laboratoire nous ne mettrons
pas en application la détection de collision ou l'action d'éviter de
collision (CSMA/CD ou CSMA/CA). Pour le moment, nous supposerons que seulement
une couche supérieure a un trame à envoyer à tout moment.
Contenu du paquet téléchargé
Le paquet contenu dans les fichiers à télécharger
fournit le service d'envoyer un octet (byte) a travers un bus simulé de LAN.
Le paquet prend l'octet, et l'envoie à tous les stations sur le LAN (
station expéditrice
y compris ). Le paquet est fiable; c'est-à-dire, aucun octet ne sera
perdu ou sera changé.
De plus dans le paquet à télécharger on a:
- Les
procédures des laboratoires précédents
- Définitions
de signal
- Un
fichier système qui a déjà l'architecture du système: une instance de la
couche physique appelée Hub
et un canal commun qui est connecte à une station ( type bloc)
qui est répétée 3 fois (c'est-à-dire, il y a trois instances simultanées.)
- Un
fichier contient LANHost
de type bloc. Le block contient un processus (vide) qui devrait
etre capable d'agir en tant qu'expéditeur ou récepteur pour la fonctionnalité
de ce niveau. Le processus vide devrait être remplacé par une copie de
votre précédent
processus Framer, mais alors il a besoin des options additionnels que vous
allez les ajouter.
- Un
valeur de type OCTET de la variable prédéfini broadcastID
qui, une
fois utilisé comme adresse de destination, laisse accepter un trame par
tous les stations. (la valeur est de
00 octet.)
- Un
fichier demo.msc
contient une démonstration de trace de Message Sequenciel (MSC) du système
mis en application.
Pour voir le contenu du paquet téléchargé comme
des pages
web, cliquetez ici
.
Qu'est ce que vous devez faire?
-
Le
processus LANFramer
à l'intérieur du LANHost type
bloc n'est pas presentement defini.
-
Votre tâche est de faire un copy du processus
Framer du laboratoires précédent, et le modifier de sorte qu'il
puisse fournir les services suivants:
- Initialisation
de système
- Au
démarrage, chaque instance du processus doit acquérir une adresse.
Ce sera une valeur de
type OCTET . Pour annoncer sa présence, pendant la transition
initiale, un
signal registerReq (sans paramètres) devrait être envoyé à
la couche physique. I'instance devrait donc attendre un
signal registerInd comme réponse. Le
signal registerInd a un paramètre
type OCTET, c'est l'adresse assignée a l'instance du processus. Cette
valeur devrait être sauvée pour le futur usage.
- Emission
- Le
processus peut recevoir de la couche supérieure (actuellement,
l'environnement de SDL), un string d'octets de longueur arbitraire
dans un signal a appelé frameReq . Ce signal est
modifié du laboratoire précédent:
- Le
processus construit un trame de structure suivante:
- un octet SOH,
- un octet d'adresse de destination,
- un octet d'adresse de l'expéditeur,
- puis octets pour les données, et
- l'octet
final devrait être l'octet
EOT.
Le format du trame est illustré ci-dessous:
|
SOH |
Adresse Souce |
Adresse de Destination |
Donnees (stuffed) |
EOT |
|
1 octet |
1 octet |
1 octet |
octets nbre variable |
1 octet |
- Employez
le "stuffing" des données pour s'assurer qu'aucune
présence de SOH ou d'EOT
n'apparaîtra dans le secteur de données du trame. (NOTE: Les
adresses de source et de données ne devraient pas être
"stuffed", car
l'affectation d'adresses garantit de ne pas affecter les octets 01
ou 04 en
tant qu'adresses. Ainsi, nous pouvons garantir que les adresses seront
exactement un octet.)
- Mettre
un octet dans l'"LAN" en envoyant un
signal octetReq au
processus Hub (concentrator ). Celui-ci est deja fourni en tant qu'élément du
paquet que vous avez telecharge.
Le Hub
diffuse (broadcast ) un
signal octetInd à tous les stations.
- L'envoi
continue aussi longtemps qu'il y a des octets dans buffer d'envoi.
- Réception
- Rassemblez
les octets qui arrivent du
Hub par l'intermédiaire des
signaux l'octetInd.
- Quand
un octet SOH
arrive, le processus devrait être prêt à recevoir un octet d'adresse de source, et puis un octet suivant
d'adresse de
destination.
- Si
l'octet d'adresse de destination correspond a l'adresse de recepteur, ou
c'est
l'adresse de diffusion (broadcast) qui est prédéfini par la valeur de la
variable broadcastID, le récepteur devrait continuer à rassembler les octets et
construit le trame.
- Si l'octet de destination
ne correspond pas a l'adresse du recepteur et il n'est pas l'adresse
de diffusion (broadcast), d'autres
octets devrait être reçue mais ignorée jusqu' à
l'arrive de l'octet EOT.
- Quand
l'octet EOT
arrive au station de destination, défait le "stuffing" de
données.
- Expédiez
le string d'octet à la couche supérieure a travers le signal
frameInd. Ce signal a maintenant deux paramètres: un
OCTET d'adresse de l'expéditeur du trame, et un
OCTET_STRING des données qui ont été transmises.
Notes:
- SDL
permet de specifier plus d'un état pour une transition. Vous pouvez mettre
une liste de noms d'état à l'intérieur du symbole d'état, et ceci
indique que l'événement devrait être manipulé pour un de
ces états. Vous pouvez également employer * pour représenter tous les états, ou * (liste d'état) pour représenter
tous les états excepté ceux dans la liste d'état.
- Quand
vous utilisez des états multiples, pour indiquer "reste dans le
même état", utilisez un tiret comme état de destination.

Note: Probleme d'affichage de
la figure: SVP consulter la
version originale anglaise pour l'affichage de cette figure.
.