-
Notifications
You must be signed in to change notification settings - Fork 17
JSon Messages
As mensagens json trocadas que serão utilizadas para a comunicação entre o servidor de topologia e a aplicação NOX e o mininet são as seguintes:
As mensagens do tipo request são enviadas pela aplicação NOX e pelo script do mininet para o servidor de topologia. Através delas se é possível requisitar serviços ou informações para o servidor de topologia.
Todas as mensagens de resquest possuem um id que pode ser utilizado pelo servidor de topologia para controle interno. Também existe o atributo action que é utilizado pelo servidor para saber como responder ao request.
Deve ser respondida com uma mensagem do tipo topology.
{"request" : {"id" : 0, "action" : "getTopology"} }
Deve ser respondida com uma mensagem do group contendo todos os hosts do grupo multicast.
{"request" : {"id" : 0, "action" : "getCompleteGroup"} }
Deve ser respondida com uma mensagem do group contendo somente os hosts do grupo multicast ativos.
{"request" : {"id" : 0, "action" : "getGroup"} }
Ao enviar uma mensagem de request registerForEvents, a aplicação NOX se registra como uma observadora dos eventos que podem acontecer na arquitetura. Deste modo, sempre que um evento de entrada ou saida de hosts do grupo multicast acontecer, o servidor de topologia deve enviar para a aplicação NOX uma mensagem event.
{"request" : {"id" : 0, "action" : "registerForEvents"} }
A mensagem de request waitStart é enviada pelo script do mininet para servidor de topologia após terminar de montar a rede virtual e iniciar os clientes iperf. Após enviar essa mensagem, o script fica parado, esperando receber uma mensagem do tipo request start.
{"request" : {"id" : 0, "action" : "waitStart"} }
Mensagem enviada pela aplicação NOX para o servidor de topologia após realizar todas as instalações de rotas, pedindo para que o teste inicie. O Servidor de Topologia envia outra mensagem de request start para o script do mininet para que o iperf servidor seja iniciado.
{"request" : {"id" : 0, "type" : "start"} }
A mensagem do tipo topology é utilizada para enviar a configuração inicial da topologia de rede para todas as aplicações. Ela é constituida por uma lista de routers, hosts e links.
{
"topology": {
"routers": [
],
"hosts": [
],
"links": [
]
}
}
A mensagem do group é enviada pelo servidor de topologia para as demais aplicações no começo do processo para especificar quais hosts fazem parte do grupo multicast e quais seus papéis. Ela possui como atributos source, que apresenta o identificador do host que irá enviar mensagens multicast, e hosts, que apresenta a lista dos hosts que fazem parte do grupo multicast. Dependendo da requisição, podem ser enviados todos os hosts do grupo ou somente os hosts ativos.
{
"group": {
"source": 4,
"hosts": [
]
}
}
A mensagem do tipo event é enviada pelo servidor de topologia para as demais aplicações para notificar a saida ou entrada de algum host no grupo multicast. Ela possui como atributos o identificador (id) do event; o type do evento, que pode ser "entry" ou "exit"; e hosts, uma lista com os host que participam daquele evento.
{
"event": {
"id": 0,
"type": "entry",
"hosts": [
]
}
}
As mensagens trocadas pelas aplicações possuem alguns elementos em comuns, como link, router e host.
Os objetos do tipo router possuem como atributos o identificador (id) do roteador e ports, uma lista que armazena que armazenam o identificador dos nó (router ou host) ligado ao roteador. A posição do identificador dentro da lista representa a número da porta em que o nó está ligado. Por exemplo, o primeiro elemento da lista está ligado na porta 1.
{
"router": {
"id": 0,
"ports": [
]
}
}
Os objetos do tipo lin possuem como atributos o identificador (id) do link e também node1 e node2, que armazenam o identificador do nó (router ou host) que estão ligados através do link.
{
"link": {
"id": 0,
"node1": 0,
"node1": 1
}
}
Os objetos do tipo host possuem como atributos o identificador (id) do host e router, que armazena o identificador do router onde o host está conectado.
{
"host": {
"id": 4,
"router": 0
}
}