Created
June 22, 2010 09:55
-
-
Save qsorix/448261 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
TODO: reprezentacja krawędzi w model i network musi umożliwiać jednoznaczne | |
mapowanie portów. Jak nazwać krawędzie? Czy wprowadzić porty już w | |
konfiguracji model? | |
TODO: a jak w model przedstawić port, w sytuacji, kiedy trzeba na nim założyć | |
jakąś konfigurację (np. packet-loss). | |
#v+ | |
model Foo | |
{ | |
host Alice | |
host Bob | |
link [ Alice, Bob ] | |
} | |
#v- | |
#v+ | |
model Bar { | |
host S[4] | |
host R[4] | |
host Router | |
port Router.p0 { | |
delay = 10ms | |
loss = 0.05 | |
} | |
port Router.p1 { | |
delay = 10ms | |
loss = 0.05 | |
} | |
link_all [ Router.p0, R ] | |
link_all [ Router.p1, S ] | |
} | |
#v- | |
Builders dla konfiguracji model tworzą byty typu: | |
- ModelHost | |
- ModelPort (zawsze przypisany do Host) | |
- ModelLink | |
Za ich pośrednictwem prezentują zbiór dostępnych węzłów oraz graf połączeń | |
między nimi. Zarówno ModelHost jak i ModelLink mogą zawierać dodatkowe | |
atrybuty. | |
#v+ | |
network Krowoderska | |
{ | |
host A { | |
ip = 192.168.0.1 | |
hostname = defteros | |
ports = [ eth0, wlan1 ] | |
} | |
host B { | |
ip = 192.168.0.2 | |
hostname = marvin | |
ports = [ eth0 ] | |
} | |
hostrange Swarm { | |
# FIXME: tu nie ma portów | |
ip_range = [ 192.168.1.1, 192.168.1.32 ] | |
} | |
} | |
#v- | |
Builders dla konfiguracji network tworzą byty typu: | |
- NetworkHost | |
NetworkHost opisują zastaną konfigurację sieci. Opisywanie krawędzi nie ma | |
tutaj znaczenia ponieważ: | |
- wystepują one w rzeczywistości, | |
- nie można ich programowo zmieniać. | |
Co ważne, NetworkHost zawiera nazwy dostępnych portów -- interfejsów | |
sieciowych, dzięki którym można nawiązać komunikację. | |
#v+ | |
mapping M1 model Foo network Krowoderska | |
{ | |
map [ Alice, A ] | |
map [ Bob, B ] | |
} | |
#v- | |
#v+ | |
mapping M2 model Bar network Krowoderska | |
{ | |
map [ S, Swarm ] | |
map [ R, Swarm ] | |
map [ Router, A ] { | |
p0 = "eth0" | |
p1 = "wlan1" | |
} | |
} | |
Algorytmy mapping mają na wejściu model oraz network. Na ich podstawie mają | |
przypisać ModelHost do NetworkHost oraz wybrać taki zestaw portów każdego | |
NetworkHost, aby realizować graf połączeń zadany przez ModelLink. | |
NOTE: skoro w model nie ma nic o portach, to po co je mapować? Wystarczy przed | |
testem sprawdzić, że każda para hostów z linkiem może się komunikować. | |
#v+ | |
schedule iperf model Foo { | |
duration { | |
time = "10s" | |
} | |
flow Tcp<A, B> { | |
start = "iperf -tcp @{A.ip} @{B.ip}" | |
} | |
at Alice { | |
time = "5s" | |
every = "10s" | |
cmd = "ping @{Bob.ip}" | |
} | |
at Alice start_flow Tcp<Bob, Alice> | |
... | |
... | |
... | |
} | |
#v- |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment