Skip to content

JSon Messages

caioviel edited this page Oct 22, 2011 · 29 revisions

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:

Mensagem Request

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.

Request getTopology

Deve ser respondida com uma mensagem do tipo topology.

{"request" : {"id" : 0, "action" : "getTopology"} }

Request getCompleteGroup

Deve ser respondida com uma mensagem do group contendo todos os hosts do grupo multicast.

{"request" : {"id" : 0, "action" : "getCompleteGroup"} }

Request getGroup

Deve ser respondida com uma mensagem do group contendo somente os hosts do grupo multicast ativos.

{"request" : {"id" : 0, "action" : "getGroup"} }

Request registerForEvents

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"} }

Request waitStart

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"} }

Request Start

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"} }

Mensagem Topology

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": [
   ]
  }
}

Mensagem Group

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": [  
    ]
  }
}

Mensagem Event

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": [  
    ]
  }
}

Objetos

As mensagens trocadas pelas aplicações possuem alguns elementos em comuns, como link, router e host.

Routers

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": [
    ]
  }
}

Links

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
  }
}

Hosts

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
  }
}

Clone this wiki locally