Skip to content

Derzet/mininet-ryu-topologia-anel

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 

Repository files navigation

MininetRyu

Este projeto realizado para a disciplina de Redes de Computadores consiste de criar uma Software-Defined Networking utilizando Ryu como controlador da rede e Mininet para criação da topologia, utilizamos o protocolo OpenFlow 1.3 para configurar os Switches.

O que é Mininet?

         Mininet é um emulador virtual de rede, permitindo a criação de diferentes topologias customizadas de redes, 
         a plataforma permite configurar e escolher a quantidade de  switches, roteadores, hosts, controladores e links que 
         serão utilizados para a construção da rede. Dessa forma permitindo a simulação de uma rede de ambiente real criando
         uma Software-Defined Networking. Mininet possui como uma das principais vantagem funcionar em um único Kernel do Linux 
         reduzindo custo de projetos e acelerando testes.
         Informações MININET: https://github.com/mininet/mininet

O que é Ryu?

          Ryu é um controle de Software-defined networking (SDN) podendo ajudar a gerenciar o tráfego da rede, aumentar a largura 
          da banda, alocar recursos, criar fluxos e entre outras demais funções de configurações. Utilizando o Ryu como controle torna 
          mais fácil o gerenciamento e adaptar tráficos, dessa forma o conceito de SDN torna-se mais consolidado nos tempos reais, aos 
          quais poderão ser gerenciado por um único controlador.
          Informações RYU: https://github.com/osrg/ryu

Estrutura Rede Mininet
A topologia consiste de 6 hosts(Sendo 3 Clientes e 3 Servidores), 3 switches e 1 controlador principal com limitação de banda em 30KB/s entre os links.

alt text

SW = Switch S = Servidor C = Cliente CO = Controlador

Políticas Estáticas

Para a criação das políticas estáticas alguns Controladores e APIs do RYU foram analisadas. Observando o controlador Simple_Switch_13.py foram necessárias algumas modificações. Devido a este controlador não suporta o loop dos pacotes Address Resolution Protocol (ARP) foram feitas mudanças para o funcionamento da mesma criando novas regras e inserção de código para fazer a correção, a princípio cogitou-se o uso do Spanning Protocol Tree sendo um protocolo de rede que permite resolver problemas de loops com lógica de portas. Devido algumas incompatibilidade de biblioteca optamos por utilizar uma solução mais simples, no qual através da memória verificamos se o ARP está em loop, caso estiver saia do loop descartando o pacote. Além disso, utilizamos a API de QOS fazendo uso da ryu.app.rest_qos e ryu.app.rest_conf_switch para configuração das Queues. Dessa forma a limitação da banda entre os links está em 30KB/s, equivalente a 240 Kb/s para efeito de comparação, realizando a restrição de banda. O novo controlador é denominado de mySwitch.py

Políticas Dinâmicas

Para definimos utilizamos ryu.app.rest_conf_switch, ryu.app.rest_qos e ryu.app.mySwitch. Primeiramente realizamos a configuração dos switches conectando as QOS adicionando a table_id=1. Através de alguns requests HTTP configuramos o restante das queues e regras restantes, definimos duas filas a fluxo normal configurada como sendo a queue Padrão [min:0 Kbp/s,max:240 Kbp/s] e a BackUP [min:160Kbps/s] equivalente a alocar os 20 KB/s . Através de uma verificação no tempo e entrada de valores utilizando o método reservaBanda() e alocaBanda() verificamos se devemos usar a queue padrão ou backup entre comunicação TCP entre os Servers. Quando estiver em horário de backup configuramos o fluxo para utilizar a queue de Backup, caso contrário utilizamos a queue padrão a regra é atualizada a cada 60 segundos

Releases

No releases published

Packages

No packages published

Languages