tp rli 2010 2011

Upload: sof-ouni

Post on 25-Feb-2018

222 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/25/2019 TP RLI 2010 2011

    1/5

    Rseaux Locaux industriels

    TP 1 : Communication Dterministe sur Ethernet

    Objectif Emulation du protocole des Bus jeton sur Ethernet Evaluer les bons paramtres de configuration du jeton Programmation des Sokects avec JAVA

    Travail demand!utilisation d!Ethernet dans le domaine des r"seau# industriels pr"sente l!innovation de l!utilisation de m"thode d!accs nond"terministe$ En effet %S&A'%( est une politi)ue probabiliste )ui ne garantie pas des temps de transmission pr"visibles$!aspect de pr"dictibilit" est important pour les messages des applications temps r"el criti)ues$ Pour r"aliser cet objectif* unesolution int"ressante est d!utiliser ou d!impl"menter les protocoles Jeton$ (ans le cadre de ce +P* il est demand" de r"aliser ,

    impl"mentation simplifi"e du protocole Jeton similaire celui des bus jeton$ (ans ce +P* on ne traite pas des

    aspects de perte de jeton* ni des aspects de priorit"* ni aspect de gestion des ajouts'suppressions des stations -lesstations sont connue et fi#es.$ Simuler l!arriver des messages en supposant une charge p"riodi)ue bien d"termin"e sur le r"seau$ /n suppose la

    connaissance l!avance du nombre de messages* leurs sites sources* destinations et leurs tailles$ es messages sontp"riodi)ues de p"riodes d!arriv"es d"finis$ !utilisateur doit pouvoir introduire ces paramtres afin de commencerl!e#"cution du protocole Jeton sur l!arriv"s de ces messages$

    Afin de valider et visualiser les r"sultats de l!impl"mentation du protocole jeton* on doit pouvoir visualiser lesarriv"es'd"parts des messages* la station )ui possde le jeton* la communication du jeton$

    En relation avec la simulation de la charge* on doit pouvoir calculer les temps de r"ponse des messages dans le pirecas* le meilleurs des cas et dans le mo0en cas$ es temps de r"ponse des messages repr"sentent la diff"rence entre letemps d!arriv"e du message destination et le temps de sa cr"ation dans le site source$

    BackgroundI) Protocole daccs de Bus Jeton

    Ph0si)uement* le bus jeton est constitu" d1un c2ble pr"sentant une topologie lin"aire ou arborescente sur le)uel sontraccord"es les stations$ 3onctionnellement* les stations sont organis"es selon un anneau logique* chacune d1elles connaissantl1adresse de ses voisines* en amont et en aval* sur l1anneau logi)ue$ (s )ue l1anneau logi)ue est initialis"* c1est la stationd1adresse la plus "lev"e )ui a autorit" pour transmettre une premire trame sur le r"seau$ Ensuite* elle transmet le droitd1"mettre sa voisine en aval en lui adressant nomm"ment une trame sp"ciale appel"e jeton-token.$ e jeton se propage ainsitout au long de l1anneau logi)ue* avec pour rgle fondamentale )ue seule la station propri"taire du jeton a le droit detransmettre une trame$ %omme* cha)ue instant* une seule station est propri"taire du jeton* il ne peut pas 0 avoir de collisionsentre trames du r"seau$

    Protocole MAC 802.4ors)ue l1anneau logi)ue est initialis"* les stations sont ins"r"es au sein de l1anneau dans l1ordre de leur adresse* de la plushaute la plus basse$ e transfert du jeton d1une station l1autre s1effectue "galement selon la m4me s")uence$ %ha)ue fois)u1une station ac)uiert le jeton* elle peut transmettre pendant une dur"e de temps limit"e d"termin"e* contr5l"e par un compteurde temps de transmission$ Puis elle doit passer le jeton sa voisine$

    e bus jeton d"finit un s0stme de priorit" )uatre niveau#* r"f"renc"s 6* 7* 8 et 9* le niveau 6 a0ant la priorit" la plus faibleet le niveau 9* la plus "lev"e$ :l est facile d1imaginer )ue cha)ue station est subdivis"e sur le plan interne en )uatre sous;stations* chacune d1elles disposant d1un niveau de priorit"$ A mesure )ue les trames transmettre sont propos"es la couche&A%* on les affecte* en fonction de leur niveau de priorit"* l1une des 8 sous;stations* de sorte )ue cha)ue sous;station greune file d1attente des trames de m4me priorit"$

    ors)u1une station prend possession du jeton* elle transfre imm"diatement ce droit "mettre la sous;station de niveau de

    priorit" 9 )ui peut alors commencer transmettre ses trames en attente$

  • 7/25/2019 TP RLI 2010 2011

    2/5

    =+8 :>SA+ 766'766Cson tour transmettre jus)u1 ce )ue son compteur de temps de transmission e#pire* puis elle passe le jeton la sous;station deniveau de priorit" 7$ %e processus se reproduit dans les m4mes conditions pour le niveau de priorit" 6$ e jeton est ensuitetransf"r" la station suivante sur l1anneau logi)ue$

    II) lment de !rogrammation J"#" $ %estion des tableau&' de c(anes et desfic(iers

    - java.util.Vector

    %ette classe gre une collection d1objet dans un tableau d0nami)ue$

    Vectorv = newVector();

    v.addElement("une chaine");

    v.addElement(new date()); v.addElement(new String[]); v.addElement(new Vector());

    v.setElementAt("abcde", 2);

    System.out.rint!n(v.elementAt(2)); ##$ abcde

    - java.util.Hashtable

    %ette classe gre une collection d1objets au travers d1une table de hachage dont les cl"s sont des Stringet lesvaleurs associ"es des %b&ect$

    Hashtableht = new Hashtable();

    ht.put("noe!", new 'ate("2 'ec **+"));

    ht.put("un vecteur", new Vector());

    Vector v = (Vector)ht.get("un vecteur");

    or(-numeration e = ht.keys(); e.hasore-!ements();)/

    String 0ey = (String)e.ne1t-!ement; ...

    - java.util.Stringo!eni"er

    %ette classe permet de d"couper une Stringselon des s"parateurs$String str = "avion, bateau ; train ";

    StringTokenizerst = new StringTokenizer(str, ";, ");

    System.out.rint!n(st.nextToken()); ##$ avion

    System.out.rint!n(st.nextToken()); ##$ bateau

    System.out.rint!n(st.nextToken()); ##$ train

    - java.io.#ata$%n&ut'(ut&ut)Strea*

    %es classes permettent de lire et d1"crire des t0pes primitifs et des lignes sur des flu#$3i!e4nutStream is = new 3i!e4nutStream("source.t1t");

    ata!nputStreamdis = new ata!nputStream(is);

    int i = dis.read!nt(); doub!e d = dis.readouble(); String s = dis.read"ine();

    3i!e%ututStream os = new 3i!e%ututStream("cib!e.t1t");

    ata#utputStreamdos = new ata#utputStream(os);

    dos.$rite!nt(25); dos.$riteouble(25.67); dos.$rite%hars("8ne chaine");

    - java.io.(bject$%n&ut'(ut&ut)Strea*

    %es classes permettent de lire et d1ecrire des objets* impl"mentant &ava.io.seria!i9ab!e* sur des flu#$

    +P ="seau# ocau# :ndustriels >?7 7'

  • 7/25/2019 TP RLI 2010 2011

    3/5

    =+8 :>SA+ 766'766C -criture

    3i!e%ututStream os = new 3i!e%ututStream("tm");

    %b&ect%utut oos = new #b&ect#utputStream(os);

    oos.$rite#b&ect(":oday"); oos.$rite#b&ect(new 'ate()); oos.!ush();

    ecture

    3i!e4nutStream is = new 3i!e4nutStream("tm");

    %b&ect4nutStream ois = new #b&ect!nputStream(is);

    String today = (String)ois.read#b&ect();

    'ate date = ('ate)ois.read#b&ect();

    %%) M+canis*e ,es Soc!ets avec AVA

    :l 0 a deu# protocoles de transport dans l1:nternet ,

    +%P -Transmission Control Protocol. offre un service de transport fiable en mode connect" D les classes Soc0et etServerSoc0et impl"mentent un service de transport bas" sur +%P

    (P -User Datagram Protocol. offre un service de transport non fiable en mode non connect" D les classes

    'atagram?7 F'

  • 7/25/2019 TP RLI 2010 2011

    4/5

    =+8 :>SA+ 766'766Cr"alise la conne#ion demand"e avec le socket client$ %ontrairement au socket c5t" client* celui c5t" serveurn1est pas cr"" par un constructeur$imort &ava.net.C; imort &ava.io.C;

    ub!ic c!ass Serveur'ate /

    ina! static int

  • 7/25/2019 TP RLI 2010 2011

    5/5

    =+8 :>SA+ 766'766Cserveur.receive(pa0uet)/

    Client #P

    e programme suivant communi)ue avec le port @F@ d1une machine "ventuellement sp"cifi"e sur la ligne de commande* l1aide d1un 'atagramSoc0et$ cha)ue ligne entr"e par l1utilisateur* constituant la re)u4te* il pr"pare un pa)uet contenant lare)u4te* l1envoie sur ce 'atagramSoc0et * puis reGoit un pa)uet contenant la r"ponse sur ce m4me 'atagramSoc0et$

    imort &ava.io.C; imort &ava.net.C;

    c!ass !ient-cho8'< / ub!ic static void main(String[] args) throws 8n0nownJost-1cetion, 4%-1cetion /

    String nomJote = args.!ength$B K args[B] E "!oca!host";

    4net>ddress adresse = 4net>ddress.get?y@ame(nomJote);

    ina! int