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

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

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






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"Les esprits médiocres condamnent d'ordinaire tout ce qui passe leur portée"   François de la Rochefoucauld