WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

La tolérance aux pannes des algorithmes de partage de ressources dans les systèmes répartis et les réseaux Ad Hoc (simulation par ns-2)

( Télécharger le fichier original )
par Sami et Abdelmadjid Oubbati et Benarfa
Université Amar Telidji Laghouat - Ingénieur d'état en informatique 2010
  

précédent sommaire suivant

Extinction Rebellion

B.2 LE SCRIPT TCL AD HOC

# =========================================================================
# Definition des options #
# =========================================================================

set val(chan) Channel/WirelessChannel ;# type de canal

set val(prop) Propagation/TwoRayGround ;# model de propagation

set val(netif) Phy/WirelessPhy ;# type d' interface reseau

set val(mac) Mac/802_11 ;# type de mac

set val(ifq) CMUPriQueue ;# type de file d' attente

set val(ll) LL ;# link layer type

set val(ant) Antenna/OmniAntenna ;# model d' antenne

set val(x) 500 ;# X dimension du topology

set val(y) 500 ;# Y dimension du topology

set val(ifqlen) 50 ;# Nbre max Packets-> file

set val(seed) 0.0 ;# grain random

set val(adhocRouting) DSR ;# protocole de routage

set val(sc) "/home/A/ns-allinone-2.32/ns-2.32/ t c l /mobility/scene/vitesse5 " set val(stop) 15 ;# temps de simulation ( duree ) #========================================================================== # Definition des procedures # # ========================================================================= # modification dans la portee de signal 300

Phy/WirelessPhy set RXThresh_ 1.76149e-10

# ========================================================================= # Creation d' instance de simulateur et topologie # # ========================================================================= set ns_ [new Simulator] ;# nouvelle simulation

$ns_ use-newtrace ;# nouveau f ic h i er trace

set topo [new Topography] ;# Nouvelle Topologie

# ========================================================================= # Creation des f i c hi e rs trace pour NS et NAM #

# =========================================================================

set tracefd [ open adhoc.tr w]

set namtrace [ open adhoc.nam w]

set bw nbr_msg_tps.txt ;# Ficher . t x t ( resultat simulation )

set mesure [ open $bw w]

$ns_ trace-all $tracefd

$ns_ namtrace-all-wireless $namtrace $val(x) $val(y)

# ========================================================================= # Procedure d' affichage concernant la simulation # # ========================================================================= proc Affichage { } {

global mesure nbr nbrk nbrequete ;# Declaration des variables globales puts $mesure " " puts $mesure " Les Resultats de la Simulation ( K--Exclusion Adhoc ) . " puts $mesure " " puts $mesure "============ Informations de Simulation ================" puts $mesure " . " puts $mesure "Le Nombre de Sites = $nbr "

puts $mesure "Le Nombre de Ressources K = $nbrk "

puts $mesure "Le Nombre de Requetes = $nbrequete "

puts $mesure " . "

puts $mesure "========================================================" puts $mesure "================================="

puts $mesure " Resultats pour chaque site : "

puts $mesure "================================="

}

#========================================================================== # Procedure de Terminaison de la simulation # # ========================================================================= proc finish { } {

global ns_ nf f0 nbr nbrequete tpatt nmsg p mesure ;# Variables globales

for { set i 0} {$i < $nbr} { incr i} {

set nmsg [ expr [$p($i) set nb_message_]+$nmsg] ;# Somme des messages

puts $mesure "================================= "

puts $mesure " Le NMM et le TAM.

}

"

puts $mesure "======================================================" puts $mesure " Messages total = $nmsg" ;# Calcul du nombre moyen

puts $mesure " "

puts $mesure "Le NMM = $nmsg/$nbrequete = [ expr $nmsg/$nbrequete ] " puts $mesure " "

set tpatt [ expr $tpatt/$nbrequete] ;# Calcul du TAM

puts $mesure "Le TAM = $tpatt " ;# Affichage du TAM

$ns_ flush-trace ;# Ecriture dans le f ic h i er TEXT

close $mesure ;# Fermer le f ic hi er des resultat

puts " running nam... " ;# Affichage de "Running NAM . . . "

exec nam adhoc.nam & ;# lancer le NAM automatiquement

exit 0 ;# Sortie de la procedure

}

#==========================================================================
# Procedure d' enregistrement des temps d' attente dans le f i c hi e r . t x t #

# ============================
proc
record {p n mutex hour} {

global f0 nbrequete tpatt mesure ;# Variables globales

set ns [Simulator instance] ;# Instancier la commande NS

set bw0 [$ns now] ;# bw0 est le temps actuelle

set bw0 [ expr $bw0- [$p set dem ] ] ;# bw0 := bw0 - Temps de la demande

puts $mesure "Temps d' attente pour le site N [ $n node-addr] =

$bw0 ==> ( ( Date_Requete = $hour ** Duree SC = $mutex ) ) "

puts$mesure "--------------------------------------------------------"

set tpatt [ expr $tpatt+$bw0] ;# Le temps d' attente

}

#========================================================================== # Procedure de Diffusion des demandes d' entrer en Section Critique # # ========================================================================= proc diffusion {p n mutex hour} {

global nbr ;# Variables globales

set ns_ [Simulator instance] ;# Instancier la commande NS

set nowe [$ns_ now] ;# Le temps actuelle

set nbrk [$p set nbracine] ;# nbrk := nbracine ;

$ns_ at $nowe " tester $p $n $mutex $hour" ;# execution de tester

$ns_ at $nowe "$p demander-sc" ;# execution de demander-sc

$ns_ trace-annotate " [ $n node-addr] demande la SC "

$ns_ at $nowe " colorLm $p $n" ;# Colorer noeud demandeur

}

#========================================================================== # Procedure de test d' entrer et la liberation de la Section Critique # # ========================================================================= proc tester {p n mutex hour} {

global nbr mesure ;# Variables globales

set ns_ [Simulator instance] ;# definir commande ns_

set time 0.01 ;# Temps de test pour SC

set now [$ns_ now] ;# Definir now

set a [$p set sc] ;# Affectation a := sc ;

set b [$p set racine] ;# b := racine ;

i f { $a == 1} { ;# Condition entrer en SC

$ns_ at $now " record $p $n $mutex $hour" ;# Record pour le TAM

$ns_ at $now " colorRd $p $n" ;# Colorer le noeud en SC

$ns_ at $now "$n label \"<SC> \" " ;# l ib el e <SC> au noeud

$ns_ at [ expr $now+$mutex] "$n label \" \" " ;# Effacer <SC>

$ns_ at [ expr $now+$mutex] "$p liberation-sc";# Appel de liberation-sc

$ns_ at [ expr $now+$mutex] "$p set sc -1" ;# sc := -1 pour so r ti r

i f { $b == -1} { ;# racine devient orange

$ns_ at [ expr $now+$mutex] " colorOr $p $n" ;# Colorer la racine } else { ;# Sinon

$ns_ at [ expr $now+$mutex] " colorBk $p $n" ;# Colorer noeud en noir

}

} else { ;# noeud veut entrer SC

$ns_ at [ expr $now+$time] "$p attendre " ;# attendre MAJ sc <- 1

$ns_ at [ expr $now+$time] " tester $p $n $mutex $hour"

}

}

# ========================================================================= # ========================================================================= # Le programme Principale # # =========================================================================

# ========================================================================= # ========================================================================= # Lecture des donnees a partir d'un f i c hi e r texte # # =========================================================================

set f [ open " les_demandes.txt " " r " ] ;# lire ( les_demandes.txt )

set nbr [ gets $f] ;# ( ( nbr ) ) <-- premier ligne

set nbrk [ gets $f] ;# ( ( nbrk ) )<-- deuxiemme ligne

set nbrequete [ gets $f] ;# ( nbrequete )<-- troisiemme ligne

for { set j 0} {$j < $nbrequete} { incr j} { ;# Boucle pour lire les Scenarios for { set k 0} {$k < 2} { incr k} {

set table($j,$k) [ gets $f] ;# Remplir par ( s i t e , heur, duree )

}

}

close $f ;# Enfin Fermer le f i c h i e r .

# ========================================================================= # Declaration des couleurs selon les numeros # # ========================================================================= $ns_ color 0 Blue ;# Le O est la Couleur Bleu ( tous messages) # ========================================================================= # Definition de la topologie # # ========================================================================= $topo load_flatgrid $val(x) $val(y)

# ========================================================================= # Creation du God ( voisinage ) # # ========================================================================= set god_ [create-god $nbr]

# =========================================================================
# Configuration globale d'un noeud #
# =========================================================================

$ns_ node-config -adhocRouting $val(adhocRouting) \

-llType $val(ll) \

-macType $val(mac) \ -ifqType $val(ifq) \ -ifqLen $val(ifqlen) \ -antType $val(ant) \ -propType $val(prop) \ -phyType $val(netif) \ -channelType $val(chan) \ -topoInstance $topo \ -agentTrace ON \

-routerTrace ON \

-macTrace OFF

# ========================================================================= # Creation des noeuds # # ========================================================================= for { set i 0} {$i < $nbr} { incr i} { ;# i=0 a i=nbr--1 --> creer ( nbr ) noeuds

set node_($i) [$ns_ node] ;# Creation d'un noeud

$node_($i) random-motion 0 ;# desactiver mouvement aleatoire

$node_($i) color Black ;# Colorer chaque noeud en noir

$god_ new_node $node_($i) ;# chaque god associe au noeud

set p($i) [new Agent/Kradhoc] ;# Creation d'un Agent KRAD HOC

$p($i) set nb_noeud_ $nbr ;# I n i t i a l i s e r (nb_noeud_ ) par ( nbr )

$p($i) set nbracine $nbrk ;# I n i t i a l i s e r ( nbracine ) par ( nbrk )

$ns_ at 0.0 "$p ( $i ) initial" ;# i n i t i a l i s e r chaque agent KRAD HOC

$ns_ attach-agent $node_($i) $p($i) ;# attacher les noeuds aux agents $p($i) set packetSize_ 1024 ;# La t a i l l e du paquet a envoyer

}

#

# La connexion des agents pour permettre la communication #

# ========================================================================= for { set i 0} {$i < $nbr} { incr i} {

for { set j [ expr $i+1]} {$j < $nbr} { incr j} {

$ns_ connect $p($i) $p($j) ;# Connecter les agents entre eux

}

}

# ========================================================================= # Coloration des noeuds a chaque couleur associe # # ========================================================================= proc colorRd {p node_ } {

set ns_ [Simulator instance]

set nowe [$ns_ now]

$ns_ at $nowe "$node_ color red" ;# Coloration avec le rouge <SC>

}

proc colorBl {p node_ } {

set ns_ [Simulator instance]

set nowe [$ns_ now]

$ns_ at $nowe "$node_ color blue" ;# Coloration avec le Bleu

}

proc colorBk {p node_ } {

set ns_ [Simulator instance]

set nowe [$ns_ now]

$ns_ at $nowe "$node_ color black" ;# Coloration avec le noir <Dehors>

}

proc colorLm {p node_ } {

set ns_ [Simulator instance]

set nowe [$ns_ now]

$ns_ at $nowe "$node_ color limegreen " ;# Coloration avec le vert <Demande>

}

proc colorOr {p node_ } {

set ns_ [Simulator instance]

set nowe [$ns_ now]

$ns_ at $nowe "$node_ color Orange" ;# Coloration avec l ' orange<racine >

}

# ========================================================================= # Coloration des racines # # ========================================================================= for { set i 0} {$i < $nbrk} { incr i} { ;# Boucle de coloration

$ns_ at 0.0 " colorOr $p ( $i ) $node_ ( $i ) " ;# Colorer racines avec l ' orange } ;# des le debut de la simulation # ========================================================================= # Appel des f i c hi e rs de mouvement # # ========================================================================= i f { $val(sc) == " " } {

puts " *** NOTE: no connection pattern specified. "

set val(sc) "none"

} else {

puts " Loading connection pattern..."

source $val(sc)

}

# =========================================================================
# Initialisation des variables globaux #
# =========================================================================

set nmsg1 0 ;# Initialisation de nmsg1

set nmsg 0 ;# Initialisation de nmsg

set tpatt 0 ;# Initialisation de tpatt

# =========================================================================
# Fixation de la duree de la Section Critique #

# ========================================================================= set duree 1 ;# la duree de la SC

# ========================================================================= # Initialisation des positions des noeuds #

# ========================================================================= for { set i 0} {$i < $nbr} { incr i} {

$ns_ initial_node_pos $node_($i) 25 ;# se fait apres la definition

} ;# du modele de mobilite

# ========================================================================= # Affichage du Menu dans le f i c hi e r des resultats #

# ========================================================================= $ns_ at 0.0 " Affichage " ;# Appel a la procedure Affichage

# ========================================================================= # L' execution des scenarios de la simulation #

# ========================================================================= for { set j 0} {$j < $nbrequete} { incr j} { ;# lire les Scenarios de la table set site $table($j,0) ;# lire l ' identificateur du site

set heure $table($j,1) ;# lire l ' heur de la demande

$ns_ at $heure "$p ( $site ) set sc 0" ;# sc <-- 0

$ns_ at $heure "$p ( $site ) set dem $heure " ;# aff ec ter la demande a l ' heur $ns_ at $heure " diffusion $p ( $site ) $node_ ( $site ) $duree $heure "

puts " $site" ;# Appel de diffusion pour

} ;# executer les demandes

# ========================================================================= # Finalisation de la simulation et debut du RUN # # ========================================================================= $ns_ at [ expr $val(stop) + 0.01] " finish";# Finir la Simulation apres (STOP)

puts " debut de la simulation . . . " ;# Ecrire " debut de la simulation.. "

$ns_ run ;# Debut du NAM

le Script TCL (AD HOC)

précédent sommaire suivant






Extinction Rebellion





Changeons ce systeme injuste, Soyez votre propre syndic





"Et il n'est rien de plus beau que l'instant qui précède le voyage, l'instant ou l'horizon de demain vient nous rendre visite et nous dire ses promesses"   Milan Kundera