La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Le Routeur Programmable Click u Présentation de Click : Routeur Programmable Logiciel n MIT 2003 Toujours maintenu (vour site Web :

Présentations similaires


Présentation au sujet: "Le Routeur Programmable Click u Présentation de Click : Routeur Programmable Logiciel n MIT 2003 Toujours maintenu (vour site Web :"— Transcription de la présentation:

1

2 Le Routeur Programmable Click u Présentation de Click : Routeur Programmable Logiciel n MIT 2003 Toujours maintenu (vour site Web : n Diverses fonctionnalités n efficace uTrouver exemples Click sous : users/enseig/genius/click-1.4.3/elements

3 Qu est-ce Click ? u Routeur programmable u Acheminer les paquets vers la bonne sortie en faisant ou non des traîtements u Quelques fonctinnalités de base (regroupés dans les éléments de Click = briques de base) n Analyse de len-tête n Mécanisme de branchement n consultation d une table de routage

4 Historique u MIT puis Berkeley 2000-?? n Thèse de Eddie Kohler dirigé par Robert Morris et Frans Kaashoek uImplémentation dun routeur Multiprocesseur n annoncé dans un article by Benjie Chen et Eddie Kohler n limplémentation na pas été rendu publique

5 Le Langage CLICK u Décrire l'architecture d'une application de routage des paquets u Language haut niveau, simple, configurable et efficace u Configuration langage fonctionnal u Elements : Classes C++, Ports Paramétres de configurations Méthodes d'interfaces Paquets

6 Le Langage CLICK uConnections : n définissent un graphe orienté n lient les éléments entre eux en passant d'un port de sortie a un port d'entrée. uExemple Syntaxe : FromDevice(eth0) -> Counter -> Discard ;

7 Quelques simples éléments u branchement sans modification du paquet : tee uModification de len-tête : strip(8) enlève 8 bits uVérification de len-tête : Check IP header CheckIPHeader( ) Strip(8) Chaîne de configuration CheckIPHeader(…) Tee(2) Chaîne de configuration Port dentrée Ports de sortie Port de sortie Chaîne de configuration

8 Communications en CLICK uTechnique de transfert de paquets entre éléments: n PUSH :L'élément source initie le transfert paquet et l'envoie à l'élément destination (downstream). n PULL : L'élément destination initie le transfert paquet en demandant a l'élément source de retourner un paquet (upstream). u Implémenté par des appels de fonctions virtuels : efficacité u Il y a trois classes des connecteurs : PUSH, PULL et AGNOSTIC. Cette dernère change le caractère de ses ports pour sadapter aux élements précédents/suivants mais doit être push ou pull pour tous les ports dun élement u Transition push-pull, pull-push : Fifo

9 Communications en CLICK Contrôle du flot de paquets

10 Les Fifos de CLICK u Stockage des paquets : FIFO Elément : Queue ( elements/stadard/queue.hh ) n Port d'entrée de type PUSH n Port de sortie de type PULL u FIFO non bloquante en écriture n Indique qu'elle est vide aux éléments concernés n Indique l'arrivée du premier paquet aux éléments concernés n Jète des paquets selon une politique définie (dropping policy) Queue

11 Interdits de Click u cet image comporte 4 erreurs n sortie push de FromDevice est connecté à lentrée pull de PullDevice n sortie push de FromDevice comporte plusieurs connexions n plusieurs connexions aboutissent à lentrée de ToDevice n élément agnostique dans un contexte push/pull u limage d en bas est correct n la file compense le différence de contexte

12 Conçevoir des éléments u Cest du C++ u Attention aux appels des fonctions virtuelles u Exemple : Code C++ pour lélément vide

13 Un élément composé u Modularité par moyen de C++ uEnfilement juste stochastique (stochastic fair queueing) composé de n élémént de base HashSwitch n élément de base RoundRobin

14 Sources et cibles de traffic u InfiniteSource u RatedSource u FromLinux u FromDevice u Discard u ToDevice u Voir documentation sur les éléments (il y manquent quelques- uns) et éléments fournis avec la distribution push

15 Flow-based router context u Recherche en largeur/en profondeur danns le graphe des configurations u Extension importante de la communication par appel des fonctions virtuels u Important entre autres pour RED dropping u Robuste en absence des cycles u Permet entre autres n de suivre le chemin des paquets n de notifier du côte de la fifo lélément précédent du fait de sa remplissage

16 Politique des Fifos (Dropping Policies) u Les fifos sont évidemment non-bloquantes; ceci est une assumption de base dans le monde des réseaux u Jeter des paquets n en-tête de la fifo n à la queue de la fifo u Stratégies de dropping fournies n RED (Random Early Detection) Dropping : laisser tomber un paquet au choix n Weighted RED : les paramètres indiquent les priorités différentes

17 Un Simple Classifieur u Trois priorités u Jeter des paquets selon la stratégie RED u cherchez l erreur

18 Ordonnancement en Click u Deux stratégies sont implementées parmi des éléments n Round-Robin n Priority-based u Des stratégies plus compliquées sont imaginables mais pas implémentées

19 Ordonnancement en CLICK u Ordonnancement : les initiateurs sont ordonnancés n Algorithme d'ordonnancement : Stride scheduling n Un élement qui initie de façon autonôme une requête PUSH ou PULL est ordonnancable et doit être mis dans la file d'attente n Tous les autres éléments sont ordonnancé implicitement u En général, un programme Click s'éxecute en un seul thread u Un appel à une méthode PUSH ou PULL doit retourner à son appelant avant qu'une autre tâche ne commence

20 Algorithme déterministe d'ordonnancement des tâches Stride Scheduling

21 Routage IPv4 en Langage Click u Analyser une configuration déjà existante uAlgorithme de Routage IPv4 u Le Langage Click u Communications en Click u Ordonnancement en Click u Protocole de résolution d adresses ARP u IPv4 codé en Click u Evaluation

22 Un premier routeur : IPv 4

23 Algorithme de Routage IPv4 uEnlever un paquet de la file de sortie uVérifier si il sagit version 4 ou 6 uVérifier laddresse destination uVérifier checksum n Stocker champ checksum et effacer n En-tete prise comme serie des entiers 16 bit n Calculer complement-1 du complement-1 de la somme de ces entiers n Comparer a la checksum uLookup route: n chercher laddresse destination dans table de routage n Recupérer laddresse IP du hop prochain uMise à jour temps de survie (time-to-live TTL) : decrémenter champ TTL et modifier champ checksum uInsérer paquet dans une des files de sortie

24 IPv4 en Click u Aspects pratiques: n OS: Linux n Routage IPv4 (simplifié) est la plus grande application disponible en Click actuellement n Userlevel l Paquets sont générés par Click l Eléments InfiniteSource et Discard au lieu dune entrée et sortie sur Ethernet n ASIM : Kernel patch: paquets entre deux/plusieurs machines l Eléments FromDevice et ToDevice l Deux (vieilles) cartes Ethernet de la marque Tulip

25 IPv4 Code en Click c0 :: Classifier(12/ /0001, 12/ /0002, 12/0800, -); c1 :: Classifier(12/ /0001, 12/ /0002, 12/0800, -); Idle -> [0]c0; InfiniteSource(DATA \< // Ethernet header c0 ae 67 ef // IP header c // UDP header d6 41 // UDP payload b a e e d >, LIMIT , BURST 5, STOP true) -> [0]c1; out0 :: Queue(200) -> Discard; out1 :: Queue(200) -> Discard; tol :: Discard; // An "ARP querier" for each interface. fake_arpq0 :: EtherEncap(0x0800, 00:00:c0:ae:67:ef, 00:00:c0:4f:71:ef); //ARPQuerier( , 00:00:C0:AE:67:EF); fake_arpq1 :: EtherEncap(0x0800, 00:00:c0:4f:71:ef, 00:00:c0:4f:71:ef); //ARPQuerier( , 00:00:C0:4F:71:EF); // Deliver ARP responses to ARP queriers as well as Linux. t :: Tee(3); c0[1] -> t; c1[1] -> t; t[0] -> tol; t[1] -> fake_arpq0; // was -> [1]arpq0 t[2] -> fake_arpq1; // was -> [1]arpq1 // Connect ARP outputs to the interface queues. fake_arpq0 -> out0; fake_arpq1 -> out1; // Proxy ARP on eth0 for , as well as cone's IP address. ar0 :: ARPResponder( :00:C0:AE:67:EF, /24 00:00:C0:AE:67:EF); c0[0] -> ar0 -> out0; // Ordinary ARP on eth1. ar1 :: ARPResponder( :00:C0:4F:71:EF); c1[0] -> ar1 -> out1; // IP routing table. Outputs: // 0: packets for this machine. // 1: packets for // 2: packets for // All other packets are sent to output 1, with as the gateway. rt :: StaticIPLookup( /32 0, /32 0, /32 0, /32 0, /32 0, /32 0, /24 1, /24 2, / ) // Hand incoming IP packets to the routing table. // CheckIPHeader checks all the lengths and length fields // for sanity. ip :: Strip(14) -> CheckIPHeader( ) -> [0]rt; c0[2] -> Paint(1) -> ip; c1[2] -> Paint(2) -> ip; // IP packets for this machine. // ToHost expects ethernet packets, so cook up a fake header. rt[0] -> EtherEncap(0x0800, 1:1:1:1:1:1, 2:2:2:2:2:2) -> tol; // These are the main output paths; we've committed to a // particular output device. // Check paint to see if a redirect is required. // Process record route and timestamp IP options. // Fill in missing ip_src fields. // Discard packets that arrived over link-level broadcast or multicast. // Decrement and check the TTL after deciding to forward. // Fragment. // Send outgoing packets through ARP to the interfaces. rt[1] -> DropBroadcasts -> cp1 :: PaintTee(1) -> gio1 :: IPGWOptions( ) -> FixIPSrc( ) -> dt1 :: DecIPTTL -> fr1 :: IPFragmenter(300) -> [0]fake_arpq0; rt[2] -> DropBroadcasts -> cp2 :: PaintTee(2) -> gio2 :: IPGWOptions( ) -> FixIPSrc( ) -> dt2 :: DecIPTTL -> fr2 :: IPFragmenter(300) -> [0]fake_arpq1; // DecIPTTL[1] emits packets with expired TTLs. // Reply with ICMPs. Rate-limit them? dt1[1] -> ICMPError( , 11, 0) -> [0]rt; dt2[1] -> ICMPError( , 11, 0) -> [0]rt; // Send back ICMP UNREACH/NEEDFRAG messages on big packets with DF set. // This makes path mtu discovery work. fr1[1] -> ICMPError( , 3, 4) -> [0]rt; fr2[1] -> ICMPError( , 3, 4) -> [0]rt;

26 En-tête du paquet IP c0 :: Classifier(12/ /0001, 12/ /0002, 12/0800, -); c1 :: Classifier(12/ /0001, 12/ /0002, 12/0800, -); Idle -> [0]c0; InfiniteSource(DATA \< // Ethernet header c0 ae 67 ef // IP header c // UDP header d6 41 // UDP payload b a e e d >, LIMIT , BURST 5, STOP true) -> [0]c1;

27 ARP (Address Resolution Protocol) n Comment établir le lien adresse IP / adresse physique ? n Mise en place dans TCP/IP dun protocole de bas niveau appelé Address Resolution Protocol (ARP) l Rôle de ARP : fournir à une machine donnée l'adresse physique d'une autre machine située sur le même réseau à partir de l'adresse IP de la machine destinataire l Fournit a la couche liaison un mapping des addresses IP (logiques) aux addresses physiques n Comparable au fonctionnement de la table de routage l Donner un addresse IP, rendre laddresse physique l Si laddresse IP nexiste pas, générer une requête en utilisant un protocole de contrôle l Enfiler le paquet

28 Type de serviceLongueur totale (en octets) Identification Déplacement fragment Adresse IP Source Adresse IP Destination Options IP 4 versionHLEN 19 Fanions Durée de vieProtocoleTotal de contrôle en-tête Padding Données... Le datagramme ARP n Unité de transfert de base est le datagramme, constituée d'un en-tête et d'un champ de données (de 1,5Ko à 64Ko)

29 Fake (Faux, simulé) ARP en Click out0 :: Queue(200) -> Discard; out1 :: Queue(200) -> Discard; tol :: Discard; // An "ARP querier" for each interface. fake_arpq0 :: EtherEncap(0x0800, 00:00:c0:ae:67:ef, 00:00:c0:4f:71:ef); //ARPQuerier( , 00:00:C0:AE:67:EF); fake_arpq1 :: EtherEncap(0x0800, 00:00:c0:4f:71:ef, 00:00:c0:4f:71:ef); //ARPQuerier( , 00:00:C0:4F:71:EF); // Deliver ARP responses to ARP queriers as well as Linux. t :: Tee(3); c0[1] -> t; c1[1] -> t; t[0] -> tol; t[1] -> fake_arpq0; // was -> [1]arpq0 t[2] -> fake_arpq1; // was -> [1]arpq1 // Connect ARP outputs to the interface queues. fake_arpq0 -> out0; fake_arpq1 -> out1;

30 Fake ARP // Proxy ARP on eth0 for , as well as cone's IP address. ar0 :: ARPResponder( :00:C0:AE:67:EF, /24 00:00:C0:AE:67:EF); c0[0] -> ar0 -> out0; // Ordinary ARP on eth1. ar1 :: ARPResponder( :00:C0:4F:71:EF); c1[0] -> ar1 -> out1; // IP routing table. Outputs: // 0: packets for this machine. // 1: packets for // 2: packets for // All other packets are sent to output 1, with as the gateway. rt :: StaticIPLookup( /32 0, /32 0, /32 0, /32 0, /32 0, /32 0, /24 1, /24 2, / ) // Hand incoming IP packets to the routing table. // CheckIPHeader checks all the lengths and length fields for sanity. ip :: Strip(14) -> CheckIPHeader( ) -> [0]rt; c0[2] -> Paint(1) -> ip; c1[2] -> Paint(2) -> ip; // IP packets for this machine. // ToHost expects ethernet packets, so cook up a fake header. rt[0] -> EtherEncap(0x0800, 1:1:1:1:1:1, 2:2:2:2:2:2) -> tol;

31 Sorties // These are the main output paths; we've committed to a // particular output device.Check paint to see if a redirect is required. // Process record route and timestamp IP options. // Fill in missing ip_src fields. // Discard packets that arrived over link-level broadcast or multicast. // Decrement and check the TTL after deciding to forward.Fragment. // Send outgoing packets through ARP to the interfaces. rt[1] -> DropBroadcasts -> cp1 :: PaintTee(1) -> gio1 :: IPGWOptions( ) -> FixIPSrc( ) -> dt1 :: DecIPTTL -> fr1 :: IPFragmenter(300) -> [0]fake_arpq0; rt[2] -> DropBroadcasts -> cp2 :: PaintTee(2) -> gio2 :: IPGWOptions( ) -> FixIPSrc( ) -> dt2 :: DecIPTTL -> fr2 :: IPFragmenter(300) -> [0]fake_arpq1; // DecIPTTL[1] emits packets with expired TTLs. // Reply with ICMPs. Rate-limit them? dt1[1] -> ICMPError( , 11, 0) -> [0]rt; dt2[1] -> ICMPError( , 11, 0) -> [0]rt; // Send back ICMP UNREACH/NEEDFRAG messages on big packets with DF set. // This makes path mtu discovery work. fr1[1] -> ICMPError( , 3, 4) -> [0]rt; fr2[1] -> ICMPError( , 3, 4) -> [0]rt;

32 Differentiated Services (DiffServ) Meter(12500) RatedSplitter(7500) SetIPDSCP(D)

33 DiffServ(2) Il sagit dune des implémentations possibles de Nouveaux éléments ©SetIPDSCP changes le tag. Il modifie le champ DSCP (DiffServ code point field) à valeur fixe puis lincrémente successivement ©RatedSplitter(rate) classifie les paquets par rapport à leur taux darrivée. Au maximum rate paquets sont transmis à la première sortie, le reste au deuxième ©Meter(rate) envoye le flux entier à sa deuxième sortie une fois le taux rate atteint ©Shaper(rate) : connexions pull! Il s occupe de la régulation des temps de départ des paquets : maximum rate requêtes par seconde

34 DiffServ(3) uLes éléments aux fonctionnalités de Classification, ordonnancement, déchargement, files dattente ont déjà été présentés avant uLe flôt entrant est partagé en quatre, basé sur DSCP uLes trois premiers flux sont limités en taux, le quatrième est soumis à une transmission best effort (le mieux possible) uLes flots limités ont la priorité au flot normal uLimitation seffectue differément n A : dropping flots dépassant le 7500 paquets/sec n B : shaped (taillé) sur un taux de 10000, laissant les paquets restants dans la file n C: reclassement des paquets dépassant paquets/sec comme best-effort

35 Règles de filtrage pour le Pare-feu

36 Pare-Feu

37 Pare-Feu (3) //détermine avec l'entete ethernet si j'ai encapsulé de l'IP classifier::Classifier(12/0800,-); rr::RoundRobinSched; CIPH:: CheckIPHeader( , 14); IPF::IPFilter(allow ip src ); rrfirewall::RoundRobinSched; d::Discard; //encapsule de l'ip eIP0::EtherEncap(0x0800, 1:2:3:4:5:6, A:B:C:D:E:F); eIP1::EtherEncap(0x0800, 1:2:3:4:5:6, A:B:C:D:E:F); eIP2::EtherEncap(0x0800, 1:2:3:4:5:6, A:B:C:D:E:F); eIP3::EtherEncap(0x0800, 1:2:3:4:5:6, A:B:C:D:E:F); eIP4::EtherEncap(0x0800, 1:2:3:4:5:6, A:B:C:D:E:F); eIP5::EtherEncap(0x0800, 1:2:3:4:5:6, A:B:C:D:E:F); //n'encapsule pas de l'ip e0::EtherEncap(0x3514, 1:2:3:4:5:6, A:B:C:D:E:F); e1::EtherEncap(0x3514, 1:2:3:4:5:6, A:B:C:D:E:F); nul0::Null; nul1::Null; //IpEncap argument => protocole, src, dest ip0 :: IPEncap(0, , ); ip1 :: IPEncap(0, , ); ip2 :: IPEncap(0, , ); ip3 :: IPEncap(0, , ); ip4 :: IPEncap(0, , ); ip5 :: IPEncap(0, , );

38 Pare-Feu (4) /*********************************** Génération de paquets IP vers l'entrée d'un classifier IP ***********************************/ TimedSource(0.1) -> ip0 -> eIP0 -> Queue(5) -> [0]rr; TimedSource(0.2) -> ip1 -> eIP1 -> Queue(5) -> [1]rr; TimedSource(0.3) -> ip2 -> eIP2 -> Queue(5) -> [2]rr; TimedSource(0.5) -> ip3 -> eIP3 -> Queue(5) -> [3]rr; TimedSource(0.8) -> ip4 -> eIP4 -> Queue(5) -> [4]rr; TimedSource(0.2) -> ip5 -> eIP5 -> Queue(5) -> [5]rr; TimedSource(0.1) -> nul0 -> e0 -> Queue(5) -> [6]rr; TimedSource(0.4) -> nul1 -> e1 -> Queue(5) -> [7]rr; rr-> Unqueue(5) -> classifier; /*********************************/ //les paquets ip sont checkés puis filtrés classifier[0] -> CIPH -> IPF; //les paquets corrects sont mis en file IPF -> Queue -> [0]rrfirewall; //les paquets non ip sont mis en file classifier[1] -> Queue -> [1]rrfirewall; // sortie du firewall rrfirewall -> Unqueue -> Print("data_out\t")-> d;

39 Evaluation Click (I) uSimple a configurer, reconfigurable à chaud uriche bibliothèque des éléments ufacile à créer des nouveaux éléments upermet de se concentrer sur la partie fonctionelle de son code uDifficile dentrer dans limplémentation si besoin de modifier Click n Documentation relativement insuffisante n Algorithme dordonnancement peu visible n Marche seulement avec une carte Tulip ule côté SMP nest pas suffisamment maîtrisé unotre choix de système dexploitation (Mutek) a exclu lutilisation directe de click (lapplication a du être réecrite en thread POSIX)

40 Evaluation Click (II) uExpériences (confirmés) : On cherche à saturer le système uEfficace!

41 Mini-passerelle uSimplifications : n tous paquets arrivent sur une entrée n le éseau est relié à deux réseaux locaux n chaque réseau a trois machines dont l adresse IP et l adresse MAC sont connus de la passerelle n il existe une adresse de sortie pas défaut où l on envoye les paquets dont l adresse ne correspond pas

42 Mini-Passerelle (2)

43 Mini-Passerelle(3) u Parties de l application : n Dèsencapsulation des trames Ethernet entrantes n Analyses des en-têtes l Quel sus-réseau? l Quelle machine dans un LAN?

44 Mini-Passerelle (4)

45 Mini-Passerelle (5) Declaration ***********************************/ d::Discard; rr:: RoundRobinSched; rr_S1 :: RoundRobinSched; rr_S2:: RoundRobinSched; rr_S1_0 :: RoundRobinSched; rr_S1_1 :: RoundRobinSched; rr_S1_2 :: RoundRobinSched; rr_S1_3 :: RoundRobinSched; rr_S2_0 :: RoundRobinSched; rr_S2_1 :: RoundRobinSched; rr_S2_2 :: RoundRobinSched; rr_S2_3 :: RoundRobinSched; t_S1 :: Tee(4); t_S2 :: Tee(4);

46 Mini-Passerelle (6) e :: EtherEncap(0x0800, 1:2:3:4:5:6, A:B:C:D:E:F); e10 :: EtherEncap(0x0800, 1:1:1:1:1:1, A:A:A:A:A:A); e14 :: EtherEncap(0x0800, 1:1:1:1:1:1, 4:4:4:4:4:4); e15 :: EtherEncap(0x0800, 1:1:1:1:1:1, 5:5:5:5:5:5); e16 :: EtherEncap(0x0800, 1:1:1:1:1:1, 6:6:6:6:6:6); e20 :: EtherEncap(0x0800, 2:2:2:2:2:2, B:B:B:B:B:B); e27 :: EtherEncap(0x0800, 2:2:2:2:2:2, 7:7:7:7:7:7); e28 :: EtherEncap(0x0800, 2:2:2:2:2:2, 8:8:8:8:8:8); e29 :: EtherEncap(0x0800, 2:2:2:2:2:2, 9:9:9:9:9:9); e30 :: EtherEncap(0x0800, 3:3:3:3:3:3, 0:0:0:0:0:0); ip0 :: IPEncap(0, , ); ip1 :: IPEncap(0, , ); ip2 :: IPEncap(0, , ); ip3 :: IPEncap(0, , ); ip4 :: IPEncap(0, , ); ip5 :: IPEncap(0, , ); ip6 :: IPEncap(0, , ); ip7 :: IPEncap(0, , ); ip8 :: IPEncap(0, , ); ip9 :: IPEncap(0, , ); ip10:: IPEncap(0, , ); ip11:: IPEncap(0, , );

47 Mini-Passerelle (7) S::StaticIPLookup( /24 1, /8 2, /0 0 ); S1::StaticIPLookup( /32 1, /32 2, /32 3, /32 4, //adresse Broadcast /0 0 ); S2::StaticIPLookup( /32 1, /32 2, /32 3, /32 4, //adresse Broadcast /0 0 );

48 Mini-Passerelle (8) /*********************************** Passerrelle ***********************************/ /* Génération des données */ TimedSource(0.1) -> ip0 -> Queue(5) -> [0]rr; TimedSource(0.2) -> ip1 -> Queue(5) -> [1]rr; TimedSource(0.3) -> ip2 -> Queue(5) -> [2]rr; TimedSource(0.1) -> ip3 -> Queue(5) -> [3]rr; TimedSource(0.8) -> ip4 -> Queue(5) -> [4]rr; TimedSource(0.2) -> ip5 -> Queue(5) -> [5]rr; TimedSource(0.5) -> ip6 -> Queue(5) -> [6]rr; TimedSource(0.4) -> ip7 -> Queue(5) -> [7]rr; TimedSource(0.9) -> ip8 -> Queue(5) -> [8]rr; TimedSource(0.8) -> ip9 -> Queue(5) -> [9]rr; TimedSource(0.6) -> ip10-> Queue(5) -> [10]rr; TimedSource(0.7) -> ip11-> Queue(5) -> [11]rr; rr-> Unqueue(5) -> e; /* Decapsulage des Paquets Ethernet */ e -> Strip(14) -> S;

49 Mini-Passerelle (9) rr_S1_0 -> Unqueue(5) -> e10 -> Print("ss réseau1, machine par défault\t\t") -> Queue(5) -> [0]rr_S1; rr_S1_1 -> Unqueue(5) -> e14 -> Print("ss réseau1, machine 1 : \t") -> Queue(5) -> [1]rr_S1; rr_S1_2 -> Unqueue(5) -> e15 -> Print("ss réseau1, machine 2 : \t") -> Queue(5) -> [2]rr_S1; rr_S1_3 -> Unqueue(5) -> e16 -> Print("ss réseau1, machine 3 : \t") -> Queue(5) -> [3]rr_S1; rr_S2_0 -> Unqueue(5) -> e20 -> Print("ss réseau2, machine par défault\t\t") -> Queue(5) -> [0]rr_S2; rr_S2_1 -> Unqueue(5) -> e27 -> Print("ss réseau2, machine 1 : \t") -> Queue(5) -> [1]rr_S2; rr_S2_2 -> Unqueue(5) -> e28 -> Print("ss réseau2, machine 2 : \t") -> Queue(5) -> [2]rr_S2; rr_S2_3 -> Unqueue(5) -> e29 -> Print("ss réseau2, machine 3 : \t") -> Queue(5) -> [3]rr_S2; /* Sortie */ rr_S1 -> Unqueue(5) -> d; rr_S2-> Unqueue(5) -> d; /* Si n'est pas dans le masque de sous réseaux ou est dans le masque l'adresse IP ne correspond pas a une machine => sortie par défaut*/ S[0] -> e30 -> Print("Sortie par défault \t\t\t") -> d;

50 Mini-Passerelle (10) /* Sous réseaux */ S[1]-> S1; S[2]-> S2; /* Transmission au Sous Réseau 1 et 2 */ S1[4] -> Print("ss réseau1 (Brodcast)\t\t\t") -> t_S1; S2[4]-> Print("ss réseau2 (Brodcast)\t\t\t") -> t_S2 S1[0] -> Queue(5) -> [0]rr_S1_0; t_S1[0] -> Queue(5) -> [1]rr_S1_0; S1[1]-> Queue(5) -> [0]rr_S1_1; t_S1[1] -> Queue(5) -> [1]rr_S1_1; S1[2]-> Queue(5) -> [0]rr_S1_2; t_S1[2] -> Queue(5) -> [1]rr_S1_2; S1[3]-> Queue(5) -> [0]rr_S1_3; t_S1[3] -> Queue(5) -> [1]rr_S1_3; S2[0]-> Queue(5) -> [0]rr_S2_0; t_S2[0] -> Queue(5) -> [1]rr_S2_0; S2[1]-> Queue(5) -> [0]rr_S2_1; t_S2[1] -> Queue(5) -> [1]rr_S2_1; S2[2]-> Queue(5) -> [0]rr_S2_2; t_S2[2] -> Queue(5) -> [1]rr_S2_2; S2[3]-> Queue(5) -> [0]rr_S2_3; t_S2[3] -> Queue(5) -> [1]rr_S2_3;


Télécharger ppt "Le Routeur Programmable Click u Présentation de Click : Routeur Programmable Logiciel n MIT 2003 Toujours maintenu (vour site Web :"

Présentations similaires


Annonces Google