Proceso completo
El proceso que me gustaria automatizar
[define] -->
[generate] -->
[run] -->
[Results] (--> [validate])
define: todo lo que haga falta para especificar el modelo de simulacion.
Hoy en dia --> Topologia con esteroides
generate: a partir de la definicion genera todo lo necesario para el simulador
Hoy en dia --> pdm, parametros, (cpp con flujos), metricas, (results plots?)
run: compile and execute (¿de donde sale el T final? -> .stm )
Results: view plots for the results
validate: validate results are as expected.
Define
La especificacion que necesitamos hoy es ppalmente una topologia.
- La definicion tiene que estar toda en un mismo lugar (1 metodo), facil de entender y cambiar.
- Por ejemplo, si quiero agregar un nodo o un flujo, cambiar un parametro/priopiedad, etc.
- Poder tener varias definiciones guardadas para despues elegir cual genero.
- por ejemplo un TopologyA.rb y otra TopologyB.rb
Como especificar?Por ejemplo como lo hace mininet (add host, add link, etc):
http://mininet.org/walkthrough/#custom-topologiesOMNET++ definieron un lenguaje (.ned)
Muy similar a los intent tambien.
Por ejemplo:
# Routers
router1 =
@topology.add_router 'MyRouter1'
router2 =
@topology.add_router 'MyRouter2'
router2.ip = "127.43.52.6"
router2.bufferCapacity_bytes = 5*M
# Hosts
for i in 1..3
host =
@topology.add_host "Host#{i}"
host.mac= "FF:FF:FF:FF"
end
#Links
link1 =
@topology.add_link 'Link0', router1, 0, router2, 0
link1.bandwidth_bits_s = 10*G
# Flows
flow1 =
@topology.add_flow [("Host1", 0), ("MyRouter1", 1), ("Host2", 0) ]
flow1.bits_per_s = 5*M
flow1.priority = 6
define con SDNs
Los controles de SDNs van a poder proveer algunas de las cosas necesarias para la especificacion (nodos, links, flujos, etc).
Otras cosas no las van a poder proveer (capacidad de los links, rate de los flujos, etc)
Si armamos la herramienta con cuidado entonces podemos tener:
Yo tomaria como decision:
- todas las propiedades que son esperables que me pueda dar un SDN, que sean obligatorias definir.
- Las que no, que sean propiedades opcionales con un valor por defecto
Ejemplos: - El nombre de un nodo es obligatorio
- el source y el dst de un link es obligatorio
- el path de un flow es obligatorio
- la capacidad del link es opcional, default: 1Gbps?
- la capacidad de los buffers es opcional, default: INF=-1?
- el rate/prioridad de los flows es opcional, defaul=Exponential(0); priority=1
(por obligatorio quiero decir que no puedo crear una objeto sin definir esas propiedades)
(por opcional quiero decir que se pueden crear las entidades sin especificar estas propiedades y se les da un valor por defecto
Generate
generacion de los resources necesarios para correr la simulacion. Hoy en dia --> pdm, parametros, (cpp con flujos), metricas, (results plots?)
En general se los puede ver como archivos de texto
- Los archivos generados tiene que ser simples de cambiar
- por ejemplo que sea facil cambiar la estructura del pdm que se genera. Los nombres con los que se generan los parametros, etc.
Expected outcome / tests
Tener 3-4 topologias definidas (
TopologyA,
TopologyB,
TopologyC..). Por ejemplo:
-
TopologyA --> 1Felix:1SwRod
-
TopologyB --> 2Felix:1SwRod
-
TopologyC --> con un gran router central
- etc
Cada una con 2-3 set de parametros.
Por ejemplo:
TopologyA.1 -> sin
QoS (todos los weight en 1)
TopologyA.2 -> con
QoS (weight en las prioQueues)
TopologyA.3 -> nodos de control generando usando una Pareto
Para cada una de esas configuraciones (
TopologyA.1, ....
TopologyC.3) definir que metricas me interesan:
- latencia percibida en los SWROD
- latencia para los flujos de control, DCS, etc
- tamanio de las colas (maximo y avg)
--
MatiasAlejandroBonaventura - 2016-09-30