seaux(:(Configuration(&(Programmation!
Introduction*à*la*plateforme*Mininet!
!"#$%&'()*%
&+$,-)./"0%1)%.)%23%)4/%1)%.$55)#.)6%7%8$94%0:5";":6"4)6%:8).%;:%(;:/)0$65)%<"#"#)/=%<"#"#)/%)4/%9#%$9/";%
>9"%()65)/%1)%1?(;$@)6%9#%6?4):9A%.$5($4?%1)%5:.B"#)4%8"6/9);;)4%CVMs%(:6%4)4%4".;)4%)#%:#D;:"4E%$9%
6?);;)4A% )F?.9/)6% ;)% 86:"% .$1)% 1)4% 5:.B"#)4A% 9/";"4)6% 1)4% 86:"4% .$559/:/)964% C5:/?6");% $9% ;$D".");EA% 7%
;+:"1)%1+9#%#$5,6)%6?19"/%1)%.$55:#1)4=%
&$64>9)% ;)% 6?4):9% 1?(;$@?%)4/% .$5($4?% 9#">9)5)#/% (:6% 1)% G<4% )/% 1)% .$559/:/)964% ;$D".");A% );;)%
($966:"/%H/6)%1?(;$@?%7%;+"#/?6")96%1+9#)%4)9;)%5:.B"#)%C9#%$61"#:/)96%($6/:,;)A%(:6%)F)5(;)E=%
<"#"#)/%9/";"4)%1)4%/).B#$;$D")4%/6I4%:8:#.?4%J%&"#9F%K$#/:"#)64%)/%.$559/:/)964%L!M=%
Exercice'0'
public class JavaClassExample{
private String name;
public void setName(String n){
if ( n != null) {
name = n;
} else {
return;
}
}
public String getName(){
return name;
}
public static void main(String args[]){
JavaClassExample javaClassExample = new JavaClassExample();
javaClassExample.setName("Visitor");
System.out.println("Hello " + javaClassExample.getName());
}
}
N= 26:19"4)*%;)%.$1)%."O1)4494%)#%3@/B$#=%&:%.$#1"/"$#%P%if ( n != null ) »%()9/%H/6)%/6:19"/%
.$55)%P%if n »%)#%3@/B$#=%
Premier'contacte'avec'Mininet'
&)4% )F)6.".)4% "."% (6$($4?4% 4$#/% "#4("6?4% 19% /9/$6");% 19% 4"/)% $00".");% 1)% <"#"#)/%
B//(JQQ5"#"#)/=$6DQR:;S/B6$9DBQ%
36)5"I6)5)#/A%6)/)#)*%,")#%>9)%8$94%1)8)*%)F?.9/)6%<"#"#)/%:8).%;)4%16$"/4%1+:15"#"4/6:/)96%C"=)=%:8).%
;:%.$55:#1)%491$E=%
$ sudo mn
L"%/$9/%4+)4/%,")#%(:44?A%7%;:%0"#%8$94%1)8)*%8$"6%;+"#8"/)%1)%.$55:#1)%<"#"#)/%C;)%5$1)%K&T%1)%<"#"#)/E%
P%5"#"#)/U%VA%)/%9#)%/$($;$D")%6?4):9%1)86:"/%H/6)%.6??)=%&:%/$($;$D")%(:6%1?0:9/%)4/%:(();?%5"#"5:;=%
2$9/)4%;)4%.$55:#1)4%1"4($#",;)4%1:#4%;:%K&T%5"#"#)/%()98)#/%H/6)%;"4/)%:8).%;:%.$55:#1)%P%B);(%V%
mininet> help
&)4%.;")#/4%>9"%$#/%?/?%.6??4%1:#4%#$/6)%6?4):9%8"6/9);%()98)#/%H/6)%;"4/?4%:8).%;:%.$55:#1)%P%#$1)4%V%
mininet> nodes
3:6% .$#8)#/"$#A% ;)4% .;")#/4% 19% 6?4):9% 4$#/% :(();?4% BNA% BWA% X% BY=% &)4% 4R"/.B)4% C.$559/:/)964E% 4$#/%
:(();?4%4NA%4WA%X%4YA%)/A%7%$9,;")6%($96%;+"#4/:#/A%;)4%.$#/6Z;)964%1)4%4R"/.B)4%4$#/%:(();?4%.[A%.NA%X%.Y=%
N=%K$5,")#%1)%4R"/.B)4%)/%.;")#/4%4$#/%1"4($#",;)4%1:#4%8$/6)%6?4):9%8"6/9);%\%
&)4%"#0$65:/"$#4%;"?)4%7%.B:>9)%#]91%.6??%()98)#/%H/6)%;"4/?%:8).%;:%.$55:#1)%P%195(%V=%
W=%!?.6"8)*%.)%>9)%8$94%$,/)#)*%.$55)%"#0$65:/"$#%1)4%4R"/.B)4%)/%.;")#/4%19%6?4):9=%
&)4%;")#4%.6??4%()98)#/%H/6)%;"4/?4%:8).%;:%.$55:#1)%P%#)/%V%
^=%!)44"#)*%;:%/$($;$D")%.6??)=%
&:%(9"44:#.)%1)%<"#"#)/%6?4"1)A%)#/6)%:9/6)4A%496%;)%0:"/%>9)%;)4%.;")#/4%4$#/%1)4%"5:D)4%1)%;:%5:.B"#)%
BZ/)%C;7%$_%<"#"#)/%)4/%"#4/:;;?E%)/%";4%$#/%:..I4%7%;+)4(:.)%4@4/I5)%1)%4$#%9/";"4:/)96=%T;%)4/%1$#.%($44",;)%
1+)F?.9/)6%P%7%;+"#/?6")96%V%1)4%.;")#/4%(;94")964%.$55:#1)4%1"4($#",;)4%1:#4%;+`L=%3$96%.);:A%8$94%1)8)*%
(6?.?1)6% ;:% .$55:#1)% (:6% ;)% #$5% 1)% ;:% 5:.B"#)% 8"6/9);% >9"% ;+)F?.9/)6:=% 3:6% )F)5(;)A% ($96% 8$"6% ;:%
.$#0"D96:/"$#%1)4%"#/)60:.)4%6?4):9F%1"4($#",;)4%1:#4%;)%.;")#/%BNA%$#%)F?.9/)%
mininet> h1 ifconfig a
a=%b-$9/)*%7%8$/6)%1)44"#%1)%;:%/$($;$D")%6?4):9%;)4%:16)44)4%T3%:44$."?)4%7%.B:>9)%.;")#/A%:"#4"%>9)%;)%
5:4>9)%1)%6?4):9=%
T5($6/:#/%J%4"%;$64%1+9#%/)4/A%;:%/$($;$D")%#+:%(:4%?/?%.6??)%.$66)./)5)#/A%$9%
4"%<"#"#)/%:%0"#"4%:8).%9#%.$1)%1+)66)96A%8$94%1)8)*%;)%P%#)//$@)6%V%:8).%;:%
.$55:#1)%
$ sudo mn c
c=%&)%.;")#/%BW%()9/%H/6)%://)"#/%(:6%;)%.;")#/%BN%\%G?6"0")*O;)%(:6%;:%.$55:#1)%("#D=%!$##)*%;+"#4/69./"$#%
.$5(;I/)%>9)%8$94%:8)*%9/";"4?)=%
3$96%4$6/"6%1)%5"#"#)/A%9/";"4)*%;:%.$55:#1)%P%)F"/%V=%%
3$96%?8"/)6%1+"#1">9)6%7%.B:>9)%0$"4%>9+);;)%5:.B"#)%1$"/%)F?.9/)6%>9);;)%.$55:#1)A%)/%4"%8$94%8$9;)*%
/6:8:";;)6%:8).%9#)%.$#4$;)%(6$.B)%1)%.);;)%1)4%5:.B"#)4%6?);;)4A%8$94%($98)*%
N= dF?.9/)6%<"#"#)/%:8).%;+$(/"$#%P%OF%V%
$ sudo mn x%
W= dF?.9/)6%;:%.$55:#1)%F/)65%)/%"#1">9)6%;)%.;")#/%7%://:.B)6=%
5"#"#)/U%F/)65%BN%
&:% (6)5"I6)% $(/"$#% $986"6:% :9/$5:/">9)5)#/% 9#)% 0)#H/6)% F/)65% ($96% .B:>9)% .;")#/A% 4R"/.B% )/%
.$#/6Z;)96%(6?4)#/%1:#4%;:%/$($;$D")=%
D’autres'topologies'réseaux'
<"#"#)/%0$96#"/A%)#%(;94%1)%;:%/$($;$D")%P%5"#"5:;%VA%;:%/$($;$D")%P%4"#D;)%VA%P%;"#):6%V%)/%P%/6))%V=%3$96%
.B:6D)6%;+9#)%1)%.)4%/$($;$D")4A%9/";"4)*%;+$(/"$#%P%OO/$($%V=%3:6%)F)5(;)%J%
$ sudo mn --topo single
P%4"#D;)V% /$9/% .$96/% 1$##)% ;:% 5H5)% /$($;$D")% >9)% 5"#"5:;A% 5:"4% $#% ()9/% :-$9/)6% ?D:;)5)#/% .$55)%
:6D95)#/%9#%.B"006)A%>9"%"#1">9)%;)%#$5,6)%1)%.;")#/4%7%.6?)6=%3:6%)F)5(;)%4"#D;)A^=%
N=%dF?.9/)*%;)4%.$55:#1)4%49"8:#/)4%)/%1)44"#)*%;:%/$($;$D")%.6??)%J%
N= e%491$%5#%OO/$($%;"#):6%
W= e%491$%5#%OO/$($%;"#):6A^%
^= e%491$%5#%OO/$($%/6))%
a= e491$%5#%OO/$($%/6))AW%
c= e491$%5#%OO/$($%/6))A1)(/BfWA0:#$9/f^=%g%>9$"%4)68)#/%;)4%(:6:5I/6)4%1)(/B%)/%0:#$9/%\%
Topologies'personnalisées'
d/%4"%$#%4$9B:"/:"/%/6:8:";;)6%:8).%9#)%/$($;$D")%:9/6)%>9)%tree,(linear($9(simple%\%h")#A%1:#4%.)%.:4%;7A%";%
0:9/%.6?)6%9#)%/$($;$D")%()64$##:;"4?)%7%;+:"1)%1)%;+b3T%3@/B$#%1)%<"#"#)/=%L9(($4)*%>9)%8$94%8$9;)*%
.6?)6%9#%.;")#/%BN%.$##)./?%1"6)./)5)#/%:9%.;")#/%BW%)/%.)%1)6#")6%.$##)./?%7%9#%4R"/.B%4N=%G$"."%;)%.$1)%
3@/B$#%7%?.6"6)%
from
mininet.topo
import
Topo
class
Test_Topo(Topo):
def
__init__(self):
"Create P2P topology"
# Initialize topology
Topo.__init__(self)
# Add hosts and switches
h1 = self.addNode('h1')
h2 = self.addNode('h2')
s1 = self.addSwitch('s1')
# Add links
self.addLink(h1, s1)
self.addLink(h2, s1)
topos = {
'toptest': (
lambda
: Test_Topo())
}
1.#Sauvegardez*dans*un*fichier*toptest.py*le*code*précédent.!Ensuite(exécutezOle#avec#la#commande%
$"sudo"mn"OOcustom'/chemin/vers/toptest.py(OOtopo$toptest%
2.#Si#le#réseau#est#créé#correctement,!ouvrez!un#terminal#pour#chaque#client#et#explorez#la#configuration#
des$cartes$réseaux.%
3.#rifiez&par&la&commande&ping&la&connectivité&entre&les&machines&h1&et&h2.%
Exécution*automatiques*de*commandes'
3$98$"6%.6?)6%9#%6?4):9%()64$##:;"4?%)4/%9#)%,$##)%.B$4)A%5:"4%1)8$"6%)F?.9/)6%7%.B:>9)%0$"4%7%;:%5:"#%
;)4%1"00?6)#/4%.$55:#1)4%($96%)F?.9/)6%#$4%)F(?6")#.)4%C(:6%)F)5(;)A%)F?.9/)6%9#%("#D%($96%8?6"0")6%;:%
.$##)./"8"/?%)#/6)%W%5:.B"#)4EA%#+)4/%(:4%/6I4%.$#0$6/:,;)=%
3$96%6?4$916)%.)%(6$,;I5)%;7A%$#%9/";"4)6:%)#.$6)%;+b3T%3@/B$#=%&)%.$1)%49"8:#/%C5:"4%"#.$5(;)/E%)F?.9/)%
9#%("#D%1)(9"4%;:%5:.B"#)%BN%8)64%;:%5:.B"#)%BW=%K$55)%8$94%($98)*%;+:((6?.")6A%($96%)F?.9/)6%9#)%
.$55:#1)% >9);.$#>9)% 496% 9#)% 5:.B"#)% :8).% ;+b3TA% $#% 0:"/% :(();% 7% ;:% 5?/B$1)% .51CE% )/% $#% 1$##)%
.$55)%:6D95)#/%;:%.$55:#1)%7%)F?.9/)6%4$94%;:%0$65)%1+9#)%.B:"#)%1)%.:6:./I6)4=%
from
mininet.net
import
Mininet
from
mininet.topo
import
Topo
from
mininet.node
import
Node
from
mininet.cli
import
CLI
from
mininet.link
import
TCLink
from
mininet.log
import
setLogLevel
class
Test_Topo(Topo):
topos = {
'toptest': (
lambda
: Test_Topo())
}
def
topTest():
topo = Test_Topo()
net = Mininet(topo=topo, link=TCLink)
net.start()
h2 = net.get('h2')
h2int1 = h2.intf('h2-eth0')
print h1.cmd('ping -c 3 %s' % h2.IP(h2int1))
CLI(net) ;
# sans cette ligne, on ne verrait jamais le CLI
net.stop() ;
# ne pas oublier de détruire le réseau
if
__name__ == '__main__':
setLogLevel('info')
topTest()
Cependant,) notez) bien) que) pour% exécuter( l’ensemble% du% code% ajou,% on% fera% appelle% directement) à"
Python!cette$foisOci.%
$"sudo$python$/chemin/vers/fichier.py%
Note%:%Si#lors#de#l’exécution#de#code#Python,#vous#tombez#sur#un#message#qui#indique#que#le#contrôleur$
n’a$pas$pu$être$contacté,$créez$un$lien,$appelé$«(controller(»" vers"la" commande"ovs/!"#$%"&&'%()'*+*(&#(/s"
/usr/bin/ovs/controller(/usr/bin/controller).(
N= Lisez&et&analysez&le&code&ciOdessus%afin%de%trouver%quel(s)%ligne(s)%de%code%doivent%être%ajouté(s)!
afin%de%pouvoir%exécuter!le#programme(correctement."EstOce#que#le#client#h1#arrive%à%atteindre%le%
client'h2'?%
W= Créez&un&script&shell!qui$reçoit$comme$argument$un$chiffre$entier$N,$et$qui$ensuite$écrit$N$fois$
sur$le$terminal$«%Hello%World%X%»,#où#X#est#le#nombre#de#fois#que#la#chaine#de#caractères#a#été#
écrite.%
#!/bin/bash
for ((i=0; i<$1; i++))
do
echo "Hello World $i"
done%
N= Faites'que'le'host'h1'exécute'votre'script'shell'automatiquement'(i.e.'depuis'votre'script'python)%
1 / 7 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !