INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E...

64
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA FLUMINENSE JOÃO PAULO SEIXAS ALVES E SILVA PATRICK RIBEIRO FARIA REDES DEFINIDAS POR SOFTWARE: Uma Abordagem Inicial ao Conceito e Prática CAMPOS DOS GOYTACAZES 2017

Transcript of INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E...

Page 1: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA FLUMINENSE

JOÃO PAULO SEIXAS ALVES E SILVA

PATRICK RIBEIRO FARIA

REDES DEFINIDAS POR SOFTWARE:

Uma Abordagem Inicial ao Conceito e Prática

CAMPOS DOS GOYTACAZES

2017

Page 2: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

João Paulo Seixas Alves e Silva

Patrick Ribeiro Faria

Redes Definidas por Software:

Uma Abordagem Inicial ao Conceito e Prática

Monografia apresentada ao Instituto Federal

de Educação, Ciência e Tecnologia

Fluminense, Campus Campos-Centro, como

requisito parcial para conclusão do Curso

Bacharel em Sistemas de Informação.

Orientador: Prof. Fábio Duncan de Souza

Campos dos Goytacazes

2017

Page 3: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

João Paulo Seixas Alves e Silva

Patrick Ribeiro Faria

Redes Definidas por Software:

Uma Abordagem Inicial ao Conceito e Prática

Monografia apresentada ao Instituto Federal

de Educação, Ciência e Tecnologia

Fluminense, Campus Campos-Centro, como

requisito parcial para conclusão do Curso

Bacharel em Sistemas de Informação.

Campos dos Goytacazes, ____ de

______________ de ____.

BANCA EXAMINADORA

___________________________________________

Prof. M.Sc. Fábio Duncan de Souza (Orientador)

IFF Campos

___________________________________________

Prof. M.Sc. Fernando Carvalho (Examinador)

IFF Campos

___________________________________________

Prof. M.Sc. Vinícius Barcelos da Silva (Examinador)

IFF Campos

Page 4: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

AGRADECIMENTOS

A realização deste trabalho só foi possível graças a todos os

compartilhadores de conhecimento de forma livre e espontânea, aos professores

que mesmo com tantas dificuldades ensinam por amor ao que fazem, aos amigos

que colaboraram com este projeto diretamente e indiretamente, ao nosso orientador

professor Fábio Duncan que nos acolheu e ao Campus Campos-Centro, que

apresenta como foco o melhor desempenho e sucesso dos alunos dentro e fora da

instituição.

Page 5: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

“Governos do mundo industrial!

Eu sou do ciberespaço, o novo lar da mente.

Em nome do futuro, peço que vocês do passado nos deixe em paz.

Vocês não são bem-vindos.

Não têm o direito de reinar aqui.

Não conhecem a nós, nem ao nosso mundo.

O ciberespaço não pertence a vocês.

Seus conceitos legais de propriedade, expressão, identidade, movimento e contexto, não se

aplicam a nós.

Eles se baseiam na matéria, e aqui, ela não existe.”

(John Perry Barlow)

Page 6: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

Resumo

A infraestrutura de rede que foi criada para a internet na década de 90,

possui limitações em diferentes tecnologias para atender as demandas atuais. Uma

possível solução para flexibilizar e potencializar esta infraestrutura pode estar nas

redes definidas por softwares. Estas apresentam um novo paradigma, a

possibilidade de programar redes de computadores. Este trabalho investigou a

viabilidade deste tipo de tecnologia e apresentou os seus conceitos e aplicação

básica. Testes foram realizados a fim de comprovar o funcionamento da tecnologia e

de criar uma documentação acessível na língua portuguesa.

Palavras chaves: Redes Definidas por Software, Openflow, Mininet

Page 7: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

Abstract

The network infrastructure that was created for the internet in the 90s, has

shown tremendous growth in a short time. A possible solution to the current network

problems generated due to its exponential growth, may be in the Software Defined

Networking (SDN). A paradigm that has been studied and experienced by a number

of universities and researchers. This work intends to investigate the feasibility of use

of such technology and present their concepts and basic application.

Keywords: Software Defined Networking, Openflow, Mininet

Page 8: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

LISTA DE TABELAS

Tabela 1: Exemplo de regras na tabela de fluxo openflow. Fonte: RKUO, 2015.......21

Page 9: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

LISTA DE FIGURAS

Figura 1: As duas camadas da arquitetura de rede. Fonte: (BRITO, 2013)..............15

Figura 2: Comparativo entre infraestrutura tradicional e SDN. Fonte: Adaptado de

(Hewlett-Packard, 2012)..............................................................................................17

Figura 3: Arquitetura Básica Openflow. Fonte: Adaptado de (MCKEOWN et al,

2008)............................................................................................................................18

Figura 4: Entrada de fluxo em uma tabela. Fonte: (DUQUE et al., 2012).................21

Figura 5: Componentes de uma rede baseada no NOX. Fonte: (COUTO, 2010).....24

Figura 6: Modelo de operação híbrido com VLANs entre tráfego tradicional e Open-

flow. Fonte: Adaptado de (ROTHENBERG et al, 2010).............................................26

Figura 7: Algoritmo da topologia simples personalizada da Mininet..........................37

Figura 8: Janela gráfica do miniedit.py......................................................................39

Figura 9: Tela do consoles.py....................................................................................40

Figura 10: Iniciando a topologia básica padrão na Mininet.......................................46

Figura 11: Tráfego capturado pelo Wireshark com Openvswitch..............................47

Figura 12: Resposta da rede dentro da Mininet.........................................................48

Figura 13: Desconectando de todos os controladores da Mininet.............................48

Figura 14: Sem resposta na rede da Mininet.............................................................49

Figura 15: Iniciando o componente do controlador POX na rede Mininet.................50

Figura 16: Tráfego capturado pelo Wireshark com controlador POX........................50

Figura 17: Topologia complexa de rede na Mininet...................................................53

Figura 18: Resultados da inserção da nova topologia no controlador da Mininet.....54

Figura 19: Tráfego capturado pelo Wireshark com controlador POX numa topologia

grande..........................................................................................................................57

Page 10: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

LISTA DE ABREVIATURAS E SIGLAS

ACL Access Control List

API Application Programming Interface

ARP Address Resolution Protocol

BGP Border Gateway Protocol

CLI Command-line Interface

CPU Central Process Unit

DHCP Dynamic host Configuration Protocol

DNS Domain Name System

FIB Forwarding Information Base

GPL General Public License

HTTP Hypertext Transfer Protocol

ICMP Internet Control Message Protocol

IP Internet Protocol version 4

IPv6 Internet Protocol version 6

JSON JavaScript Object Notation

JVM Java Virtual Machine

LACP Link Aggregation Control Protocol

LAN Local Area Network

MAC Media Access Control

NAT Network Address Translation

OF OpenFlow

ONF Open Networking Foundation

SPF Open Shortest Path First

RAM Random Access Memory

RIB Routing Information Base

RSPAN Remote switched Port Analyzer

SDN Software Defined Networking

SPAN switched Port Analyzer

SSH Secure Shell

SSL Secure Socket Layer

Page 11: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

STP Spanning Tree Protocol

TCP Transport Control Protocol

UDP User Datagram Protocol

VLAN Virtual Local Area Network

VM Virtual Machine

Page 12: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

SUMÁRIO

1 - Introdução..............................................................................................................12

1.1 - Justificativa......................................................................................................13

1.2 - Objetivo...........................................................................................................13

1.2.1 - Objetivos específicos...............................................................................13

2 - Revisão da Literatura.............................................................................................14

2.1 - Infraestruturas de Redes................................................................................14

2.1.1 - Rede Tradicional......................................................................................14

2.1.2 - Redes Definidas por Software.................................................................16

2.2 - Arquitetura Openflow......................................................................................18

2.2.1 - Tabela de Fluxo.......................................................................................20

2.2.2 - O Canal Seguro.......................................................................................22

2.2.3 - O Protocolo Openflow.............................................................................22

2.2.4 - O Controlador..........................................................................................23

2.2.5 - O funcionamento da Arquitetura Openflow.............................................24

2.2.6 - Aceitação da tecnologia..........................................................................26

2.3 - Máquina Virtual Mininet..................................................................................28

2.4 - Softwares controladores.................................................................................29

2.4.1 - Controlador NOX.....................................................................................30

2.4.2 - Controlador POX.....................................................................................30

2.4.3 - Controlador Beacon.................................................................................31

2.4.4 - Controlador FloodLight............................................................................31

3 - Metodologia............................................................................................................33

3.1 - Tecnologias Utilizadas....................................................................................33

3.2 - Criação de uma Infraestrutura de Rede Virtualizada com a Mininet..............34

3.2.1 - Requisitos Básicos..................................................................................34

3.2.2 - Inicialização da Mininet...........................................................................34

3.2.3 - Acesso à Mininet via SSH.......................................................................35

3.2.4 - Principais comandos da Mininet..............................................................35

3.2.5 - Topologias de rede na Mininet................................................................37

3.3 - Implementação da Infraestrutura SDN...........................................................41

Page 13: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

3.3.1 - Instalação do POX...................................................................................41

3.3.2 - Execução do POX...................................................................................41

3.3.3 - Componentes do POX.............................................................................42

3.3.4 - Pacotes do POX......................................................................................44

3.4 - Análise do tráfego SDN..................................................................................44

4 - Resultados dos experimentos................................................................................46

4.1 - Experimento com rede padrão Mininet...........................................................46

4.2 - Experimento com switch camada 2................................................................48

4.3 - Experimento com módulo spanning_tree no switch camada 2......................52

CONCLUSÃO..............................................................................................................59

REFERÊNCIAS...........................................................................................................60

Page 14: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

12

1 - Introdução

A rede mundial de computadores ou Internet, foi uma das grandes

responsáveis pelo avanço tecnológico no mundo. A quantidade de serviços,

produtos, conteúdos gerados devido ao aumento do uso desta arquitetura de rede,

fez com que se tornasse um assunto de ampla discussão nos últimos anos. É

através da internet que a globalização se faz cada vez mais presente nos dias

atuais. A expansão da infraestrutura da internet foi possível graças a evolução das

tecnologias de redes de computadores como, switches, gateways, roteadores dentre

outros. Contudo, esses equipamentos tornaram-se por vezes limitadores em casos

mais específicos de gerenciamento de redes.

Os atuais componentes que interligam as redes e tratam diferentes tráfegos,

são limitados a trabalhar da forma predeterminada pelo fabricante, impossibilitando

assim uma possível flexibilidade para tratar de problemas ou otimizações nos

segmentos de redes. As Redes Definidas por Software (SDN do inglês Software

Defined Networking) tem como proposta básica separar os planos de dados e de

controle (ROTHENBERG et al, 2010).

Esta solução pretende tratar problemas como a diversidade de dados que

circulam na rede, estruturas complexas devido aos diferentes dispositivos e

necessidade de maior e mais organizado controle sobre a rede (ROJAS, 2013). É

um possível avanço que está sendo estudado e experimentado em universidades

reconhecidas mundialmente, além de grandes empresas, como exemplo, o

Facebook©, que apresentou o uso desta nova tecnologia de redes definidas por

software em algumas de suas redes internas de Data Center (VANIAN, 2014).

Page 15: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

13

1.1 - Justificativa

As redes de telecomunicações têm um grande impacto social, estimulando a

comunidade científica a desenvolver estudos e soluções para melhorar a experiência

da inclusão digital. Um dos problemas das infraestruturas de redes atuais é a

limitação do hardware nos switches e roteadores dos fabricantes. Tal limitação é

atribuída ao fato dos equipamentos terem softwares proprietários, ou seja, código

fechado e protegidos por leis de copyright, limitando assim sua visualização e

alteração.

1.2 - Objetivo

Este trabalho tem por objetivo demonstrar uma possível solução para tornar

mais flexíveis e gerenciáveis as redes, apresentando os conceitos e práticas básicas

das redes definidas por software.

1.2.1 - Objetivos específicos

• Conceituar os componentes principais da estrutura SDN.

• Demonstrar a preparação do ambiente virtualizado para uso da SDN.

• Apresentar ferramentas em softwares livres que viabilizem o estudo na

prática.

• Visualizar os resultados do fluxo de dados da SDN utilizando softwares

livres no ambiente virtualizado.

• Disponibilizar uma literatura em língua portuguesa que viabilize ao leitor a

reprodução dos passos para a construção de exemplos simples de arquiteturas de

redes SDN.

Page 16: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

14

2 - Revisão da Literatura

2.1 - Infraestruturas de Redes

A internet é um grande conjunto de redes, muitas vezes conhecida como a

rede das redes, pois sua disponibilidade depende da conexão direta ou indireta entre

os vários segmentos de rede existentes (FRIEDERICKA, 2005).

A estrutura de redes de telecomunicações conceitualmente, se divide em 2

planos; o plano de controle (gerência) e o plano de dados (encaminhamento)

(FEAMSTER et al., 2014).

2.1.1 - Rede Tradicional

Na estrutura tradicional, ainda utilizada na maior parte das redes, os planos

de encaminhamento e controle são unidos em apenas um dispositivo. Não está

disponível um controle flexível destes planos, estando acessível ao profissional de

rede apenas as configurações liberadas pelo fabricante do dispositivo em questão.

As configurações mais avançadas, necessitam de algum equipamento específico

que disponibilize tal recurso.

Para administradores de redes e provedores de internet, as soluções para

problemas específicos das redes ficam restritas a soluções implementadas pelos

fabricantes, tornando-as dependentes e inflexíveis.

Page 17: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

15

A arquitetura atualmente utilizada pelos principais dispositivos de rede,

roteadores e switches, são comumente divididas em um plano de dados e o plano

de controle. As ações são determinadas pelo plano de controle, o qual é responsável

pela gerência ou implementação lógica. Já o encaminhamento dos pacotes entre os

dispositivos dá-se através do plano de dados (BRITO, 2013). A única forma de

interação entre estes dois planos dá-se através do software embarcado e de suas

interfaces, limitando assim o uso dos dispositivos às suas funcionalidades pré-

programadas pelo fabricante.

Então faz sentido pensar que nesta arquitetura como observa-se na Figura

1, os planos, não necessariamente precisariam estar unidos num mesmo dispositivo.

Caso um padrão estivesse disponível para se gerenciar o comportamento da

rede de forma remota, isto permitiria por exemplo que o plano de controle fosse

instalado em um servidor dedicado com capacidade de processamento suficiente

para se adequar ao volume de dados a serem processados (GORANSSON; BLACK,

2014, p. 59). Deste pensamento surgiu um consórcio, chamado de Openflow, que

visa manter aliado o alto desempenho do encaminhamento dos pacotes (via

hardware) aliado à flexibilidade de inserir, remover ou especializar aplicações em

softwares (ROTHENBERG et al, 2010).

Figura 1: As duas camadas da arquitetura de rede. Fonte: (BRITO, 2013).

Page 18: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

16

2.1.2 - Redes Definidas por Software

O conceito de redes definidas por software teve sua iniciativa bem-sucedida

com a definição da interface e do protocolo Openflow (MCKEOWN et al, 2008). Este

é considerado um dos primeiros padrões de rede definida por software. Definiu

originalmente o protocolo de comunicação em ambientes SDN que permite que haja

interação com o plano de encaminhamento de dispositivos de rede, como switches e

roteadores, tanto físicos como virtuais (SDXCentral, 2014). Com Openflow, os

elementos de encaminhamento oferecem uma interface de programação simples

que lhes permite, por exemplo, estender o acesso e controle da tabela de consulta

utilizada pelo hardware para determinar o próximo passo de cada pacote recebido

(COHESIVEFT, 2012). Dessa forma, o encaminhamento continua sendo eficiente,

pois a consulta a tabela de encaminhamento continua sendo tarefa do hardware,

mas a decisão sobre como cada pacote deve ser processado, pode ser transferida

para um nível superior, onde diferentes funcionalidades podem ser implementadas

(BRITO, 2013). Essa estrutura permite que a rede seja controlada de forma

extensível através de aplicações expressas em software. Com este novo conceito

proposto pelo paradigma SDN, diversos problemas de rede podem ser resolvidos,

tais como políticas de QoS (Quality of Service), tunneling, VLANs dentre outros, visto

que o administrador da rede poderá programá-la conforme necessário. O próprio

profissional poderá tratar os problemas de rede direto no controlador e com isso, não

precisará esperar uma solução do fabricante, nem adquirir um novo equipamento

(ROJAS, 2013).

Atualmente algumas empresas fabricam equipamentos híbridos, que

funcionam tanto pré-programados, quanto com sua camada lógica acessível

separadamente do plano de dados (Hewlett-Packard, 2013; CISCO, 2014).

As SDN são mantidas pela Open Networking Foundation (ONF), uma

entidade sem fins lucrativos criada em 2011 pela Deusche Telekom©, Facebook©,

Google©, Microsoft©, Verizon© e Yahoo© (RTI, 2014; SALISBURY, 2013).

A ideia é que as SDN sejam um padrão otimizável, de plataforma acessível

como as atuais tecnologias de código aberto, promovendo uma interoperabilidade

entre aplicações, switches e outros equipamentos de diversos fabricantes, que

provavelmente resultará em mudanças culturais no mercado (PICHINI, 2013).

Page 19: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

17

As Redes Definidas por Software vem com o propósito de otimizar o

funcionamento das redes, tornando-as mais eficientes e simplificadas. Com isso,

reduzirá a quantidade de dispositivos gerenciadores, centralizando-os no plano de

controle (GORANSSON; BLACK, 2014, p. 60). Como pode se observar na

comparação feita na Figura 2, onde por exemplo, vários planos de controles são

reduzidos a um apenas, ou seja, cada roteador deixa de ter seu próprio plano de

controle e terceirizam estes recursos a um componente externo de forma

centralizada. Isso também diminui a complexidade da comunicação da rede

(Hewlett-Packard, 2012).

Figura 2: Comparativo entre infraestrutura tradicional e SDN. Fonte: Adaptado de (Hewlett-Packard, 2012).

Page 20: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

18

2.2 - Arquitetura Openflow

A arquitetura Openflow é o conjunto de ferramentas e tecnologias que põe

em prática a ideia de redes programáveis, definindo um novo protocolo para

gerenciar as ações do plano de encaminhamento de pacotes dos dispositivos de

rede, sejam roteadores, switches ou pontos de acesso wireless. As regras e ações

anteriormente instaladas em um hardware fechado, agora serão administradas por

um elemento externo, chamado controlador.

Uma Arquitetura Openflow é composta basicamente por:

• Controlador que pode ser instalado em um servidor local e acessado

remotamente;

• Tabela de fluxo responsável por guardar as informações de cada fluxo da

rede, sendo composta por ações, regras e contadores;

• Um canal seguro por onde ocorre a comunicação do controlador e o hardware

responsável pelo encaminhamento de pacotes;

• E o Protocolo openflow que é a interface para a troca de mensagens.

Figura 3: Arquitetura Básica Openflow. Fonte: Adaptado de (MCKEOWN et al, 2008).

Page 21: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

19

A Figura 3 apresenta um exemplo de Arquitetura Openflow, os itens

identificados pelo item 1 são Switches Openflow resposáveis pela comunicação da

rede, compostos pelo Canal Seguro, Tabela de Fluxo, Plano de Dados (Hardware) e

o Plano de Controle (Software). O Item 2 é o Controlador, responsável por gerenciar

todo o Plano de Controle da rede. A comunicação entre os switches e o Controlador

acontece através do Canal Seguro (um tráfego sempre criptografado) pelo Protocolo

Openflow. Neste exemplo a criptografia utilizada é SSL. Os itens 3 e 4 são os

usuários finais da rede, apenas exemplos de um uso comum das redes de

computadores, como servidores de jogos ou uma rede wireless.

Em comparação com a tradicional Arquitetura TCP/IP que divide a rede em 4

camadas distintas, Acesso ao Meio, Rede, Transporte e Aplicação, a Arquitetura

Openflow possui três camadas. A primeira, e no topo, camada de Aplicação, que

possui aplicativos oferecendo serviços à rede como firewalls, virtualização e

balanceamento de fluxo. Logo abaixo, no meio, a camada de Controle, onde está o

controlador, o elemento mais pertinente da rede. Por último, a camada Física ou de

Infraestrutura, por onde trafega os fluxos da rede (Teletex, 2014).

O padrão Openflow propõe um caminho para os pesquisadores

programarem os dispositivos de rede de forma remota através da separação do

plano de controle e de encaminhamento, podendo assim experimentar novos

protocolos. O Openflow é baseado em um switch Ethernet, uma tabela de fluxo

interna e uma interface padronizada para adicionar e remover entradas nesta tabela

de fluxo. O objetivo é que os fabricantes de dispositivos de rede adicionem o

OpenFlow aos seus produtos e implantações.

O Openflow permite aos pesquisadores realizar experimentos em

comutadores de rede distintos de forma uniforme. Desta maneira, os fabricantes não

precisam expor o funcionamento interno de seus equipamentos além de permitir que

os pesquisadores avaliem suas idéias numa rede de tráfego real (SHENKER et al,

2008).

Naturalmente, o padrão Openflow poderá reutilizar as principais

funcionalidades do hardware já existente, como NAT, firewall ou VLANs. Uma rede

programável Openflow nada mais é do que comutadores de rede habilitados para

trabalhar com um controlador para gerenciar a tabela de fluxo de forma remota

através de um canal seguro.

Page 22: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

20

A proposta do padrão Openflow pretende manter uma especificação de

switch. Este padrão foi desenvolvido pela Open Networking Foundation (ONF) que é

um consórcio formado por um grupo de pesquisadores, administradores de rede e

universidades que acreditam que suas pesquisas serão aprimoradas com a

expansão do Openflow (OPEN NETWORK FOUNDATION, 2017).

O padrão openflow acarreta mudanças significativas na infraestrutura de

rede atual podendo gerar incompatibilidades e impactos negativos que precisam ser

avaliados e controlados durante sua adoção (MCKEOWN et al, 2008). Prevendo

este possível impacto, alguns dos grandes fornecedores destes equipamentos,

estão produzindo switches híbridos, que são ponto chave na transição entre as

infraestruturas.

Ao reconhecer o problema, comunidades de redes estão trabalhando

desenvolvendo redes programáveis. Um exemplo é o GENI, um mecanismo

proposto para experimentar novas arquiteturas de redes e distribuir sistemas (GENI,

2017). Estas redes programáveis requerem switches programáveis e roteadores

que, usando virtualização, podem processar pacotes para múltiplos testes

experimentais isolados simultaneamente. As redes programáveis virtualizadas

podem diminuir a barreira para a entrada de novas ideias, aumentando a taxa de

inovação na infraestrutura de rede.

A característica mais importante da arquitetura Openflow, é a emancipação

do plano de dados do hardware proprietário. Vale lembrar que qualquer modelo de

encaminhamento de dados, que tenha por base, a tomada de decisão baseada em

algum valor ou na combinação de valores dos campos dos cabeçalhos de cada

pacote, será suportado pelo controlador (ROTHENBERG et al, 2010).

2.2.1 - Tabela de Fluxo

A tabela de fluxo encontra-se no hardware da rede (switch) e é composta por

entradas que estão em fluxo neste equipamento, estas entradas são divididas em

contadores, ações e regras conforme a Figura 4.

Page 23: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

21

As regras são formadas tendo como base a definição de um valor de um ou

mais campos no cabeçalho do pacote, junto a esta existe um conjunto de ações que

definem o modo como os pacotes devem ser encaminhados e processados, já os

contadores são de uso somente para obter e manter estatisticamente a utilização do

fluxo e para sua possível remoção caso estejam inativos (GORANSSON; BLACK,

2014, p. 65). Cada entrada na tabela de fluxo é passível de interpretação pelo plano

de controle, sendo portanto umA tabela de fluxo encontra-se no hardware da rede

(switch) e é composta por entradas que estão em fluxo neste equipamento, estas

entradas são divididas em contadores, ações e regras conforme a unidade pequena

de informação exemplificada na Tabela 1 (RKUO, 2015).

Figura 4: Entrada de fluxo em uma tabela. Fonte: (DUQUE et al.,2012).

.

Fonte: RKUO, 2015.

Tabela 1 - Exemplo de regras na tabela de fluxo openflow.

Page 24: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

22

2.2.2 - O Canal Seguro

O Canal seguro tem como função garantir a confidencialidade na troca de

informações entre o controlador e o switch Openflow para que a rede não venha

sofrer ataques de pessoas mal-intencionadas (GORANSSON; BLACK, 2014, p. 86).

O canal seguro irá conectar o switch Openflow ao controlador, permitindo

assim uma conexão segura por onde passará os comandos e informações referente

ao fluxo da rede (ROTHENBERG et al, 2010).

2.2.3 - O Protocolo Openflow

O protocolo Openflow é definido pela arquitetura Openflow para trocar

mensagens entre os comutadores de redes (switches, hosts e controladores) através

de uma interface externa (controlador). Tais mensagens têm três naturezas:

síncronas (dependem de um retorno), assíncronas (não necessitam de retorno) e do

controlador (iniciadas somente por este). Os controladores da rede podem

programar as tabelas de fluxo dos switches através do protocolo openflow

(McKeown et al, 2010).

O protocolo Openflow está em camadas acima dos Protocolos de

Transporte, como TCP (Transmission Control Protocol) ou UDP (User Datagram

Protocol), e utiliza o TLS (Transport Layer Security) para criptografar as mensagens

trocadas (GORANSSON; BLACK, 2014, p. 85).

Page 25: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

23

2.2.4 - O Controlador

O Controlador funciona como o Sistema Operacional da rede, gerenciando e

controlando a tabela de fluxo, oferecendo assim, um sistema base para reutilização

de componentes programáveis e definindo os níveis de abstração do sistema

(ROTHENBERG et al, 2010). Aplicações e serviços da rede são gerenciados pelo

controlador que facilita a ação destes através de uma abstração da estrutura física.

Novas aplicações para a rede, podem ser desenvolvidas de forma livre por

profissionais com conhecimentos avançados em programação e redes de

computadores.

Já foram desenvolvidos alguns controladores em diferentes linguagens. Um

exemplo é o controlador NOX (COUTO, 2010) que foi desenvolvido para funcionar

com programas escritos em C++ e Python, este terá uma seção específica adiante.

A Figura 5 tem por objetivo demonstrar uma abstração de uma rede

Openflow gerenciada por um controlador NOX. O controlador executará algumas

aplicações. A forma como é vista a rede pelo controlador pode ser armazenada, por

exemplo, em um simples banco de dados local ou em um servidor remoto.

Page 26: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

24

2.2.5 - O funcionamento da Arquitetura Openflow

O funcionamento da arquitetura é sobre os fluxos da rede. Por definição,

fluxo é uma sequência de pacotes em um único sentido onde cada pacote

compartilha um conjunto de valores de cabeçalho em comum. Exemplos:

Fluxo 1: pacotes com destino 192.168.0.0/24

Fluxo 2: pacotes com interface de entrada 2 e VLAN ID 10

Fluxo 3: pacotes com MAC de origem X, MAC de destino Y, e porta TCP de

destino 80.

Ao chegar um pacote de um fluxo em um controlador Openflow, os

cabeçalhos são lidos e comparados às regras da tabela de fluxo, as ações definidas

pelas regras serão tomadas e seus contadores atualizados. Quando o controlador

Openflow recebe um pacote, os cabeçalhos deste são comparados às regras das

entradas das tabelas de fluxo, tais ações definidas por estas regras são tomadas e

os contadores são atualizados. Caso não haja correspondência entre alguma

entrada e o pacote, este último é encaminhado ao controlador. Caso contrário,

apenas o cabeçalho é enviado ao controlador mantendo assim o pacote

armazenado em buffer do equipamento (ROTHENBERG et al, 2010).

Figura 5: Componentes de uma rede baseada no NOX. Fonte:(COUTO, 2010).

Page 27: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

25

Por exemplo, têm-se um fluxo onde todos os pacotes de uma faixa de

endereço específica de IP (Internet Protocol), em uma conexão TCP passando por

uma porta específica, ou seja, uma VLAN, poderão ter algumas ações tomadas,

como: enviar o fluxo para uma porta (ou portas) específica; modificar campos do

cabeçalho; transmitir o pacote ao controlador; descartar os dados ou enviar o pacote

para o processamento normal. É comum que pacotes que chegam ao controlador

sejam correspondentes de um novo fluxo, necessitando então instalar novas regras

no switch para que todos os pacotes deste determinado fluxo sofram ações

específicas.

Page 28: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

26

Quando enviados para processamento normal o tráfego experimental da

rede (Openflow) não interfere no tráfego de produção padrão. Conforme ilustrado na

Figura 6, uma outra forma de garantir essa segmentação e não interferência entre

ambos é a criação de um conjunto de VLANs para o tráfego experimental e tráfego

padrão. Essa separação também favorece a utilização de equipamentos híbridos

que processam protocolos e funcionalidades embarcadas e ao mesmo tempo

tráfego baseado no padrão Openflow (ROTHENBERG et al, 2010).

2.2.6 - Aceitação da tecnologia

O Padrão Openflow distingue o plano de controle (ou gerência) do plano de

dados (ou encaminhamento), permitindo e inserindo o controlador em servidores

com sistemas operacionais que podem ser acessados remotamente. É de

responsabilidade do software controlador definir como será o fluxo de determinado

pacote e de que forma será processado na rede.

Figura 6: Modelo de operação híbrido com VLANs entre tráfego tradicional e Openflow. Fonte:Adaptado de (ROTHENBERG et al, 2010).

Page 29: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

27

Esta separação facilita a implementação e criação de código em linguagens

de programação comuns da área de tecnologia. Tal flexibilidade favorece

pesquisadores, desenvolvedores, administradores de rede, plataforma de serviços,

sistemas de gerenciamento de dados, serviços em nuvem e até servidores de

conteúdo independente a desenvolverem suas próprias aplicações. Sendo assim, o

controle da rede deixa de estar em softwares embarcados nos equipamentos dos

fabricantes e fica nas próprias aplicações desenvolvidas.

A forma como o Openflow é controlado atualmente nas redes via software

oferece um serviço de encaminhamento orientado a fluxos que reconhece mais de

20 cabeçalhos comuns nas redes tradicionais, proporcionando uma grande

compatibilidade. Uma rede Openflow garante isolamento entre os diferentes

controladores que estão operando na rede através da definição de fatias de rede,

conhecido como slices ou flow-spaces. Isso permite que o tráfego padrão ou dos

protocolos tradicionais, e o tráfego experimental openflow operem juntos

(ROTHENBERG et al, 2010).

As tecnologias para equipamentos programáveis para o padrão Openflow

vem se consolidando em conjunto com tecnologias similares. O padrão Openflow é

compatível com a Internet atual. O tráfego das redes tradicionais podem ser

operadas com facilidade em conjunto com o tráfego Openflow através do seu

modelo de fatias de rede. Este novo paradigma agrega inovação tecnológica,

gerência integrada e redes virtualizadas a fim de promover desenvolvimento em

protocolos e serviços de redes (ROTHENBERG et al, 2010).

Com o plano de controle movido para um servidor dedicado de alta

capacidade de processamento, a velocidade no encaminhamento de pacotes tende

a ser mais alta, pelo fato da performance de direcionamento do fluxo estar

diretamente ligada a capacidade de processamento do hardware da rede. Vale

ressaltar que apesar do controle estar fisicamente centralizado, este continua

distribuído logicamente. Sendo assim, não é necessária alteração dos protocolos de

roteamento já existentes (ROTHENBERG et al, 2010).

Page 30: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

28

2.3 - Máquina Virtual Mininet

Para a experimentação de uma rede definida por software, a princípio, é

necessário utilizar uma infraestrutura física de rede para a interligação dos

equipamentos compatíveis com a tecnologia. Porém, é comum que o pesquisador

não disponha de uma infraestrutura desta para realizar seus experimentos. Uma

alternativa é o uso de um ambiente virtualizado para emular uma rede. Um exemplo

de emulador que vem sendo utilizado na literatura é a máquina virtual Mininet.

A Mininet é um emulador de rede, ou mais precisamente um sistema de

orquestração de emulação de redes. Funciona como uma coleção de hosts,

switches, roteadores e links em um único kernel Linux. Mininet usa virtualização leve

para fazer um único sistema parecer uma rede completa, executando no mesmo

kernel, o sistema e códigos do usuário. Os hosts da Mininet se comportam como

uma máquina real podendo ser acessados via SSH, executando programas, e

incluindo qualquer software que esteja instalado no sistema Linux hospedeiro. Os

programas executados podem enviar pacotes através do que parece ser uma

verdadeira interface Ethernet, com uma certa velocidade de conexão e de atraso. Os

pacotes são processados pelo switches Ethernet, roteadores ou qualquer outro

comutador de rede virtualizado. Neste ambiente, hosts, switches, links, e

controladores implementados em software possuem a maior parte do seu

comportamento semelhante aos implementados em hardware (Mininet, 2016).

As principais características da Mininet são:

• Fornecer uma maneira simples e barata para a realização de testes em redes

para desenvolvimento de aplicações Openflow.

• Permitir que múltiplos pesquisadores possam trabalhar de forma

independente na mesma topologia de rede.

• Incluir ferramentas livres para depurar e executar testes em toda a rede.

• Agilizar a inicialização de uma rede simples para apenas alguns segundos.

• Criar topologias personalizadas com um único switch, ou topologias maiores

que se assemelham um centro de dados.

• Executar pacotes Linux desde servidores web a ferramentas de

monitoramento de rede.

Page 31: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

29

• Ser disponibilizado para notebooks, servidores, máquinas virtuais, sistemas

operacionais GNU Linux e sistemas de gerenciamento em nuvem como por exemplo

a Amazon EC2 (Mininet, 2016).

Mininet é um projeto Open Source, o que incentiva seus usuários a examinar

seu código-fonte, modificá-lo, corrigir bugs, resolver problemas de arquivos,

solicitações de recursos, entre outros (LANTZ, 2017).

Contudo, a Mininet também tem seus pontos negativos que devem ser

levados em consideração para uma boa experimentação do processo. A execução

em um único sistema é conveniente, mas impõe certos limites de recursos. Por

exemplo, se um servidor tem 3 GHz de capacidade de processamento e um switch

cerca de 10 Gbps de transferência de dados, esses recursos precisam ser

compartilhados e equilibrados entre os hosts e switches virtuais. Isso ocorre devido

aos recursos serem multiplexados em tempo real pelo kernel da máquina

simuladora, uma vez que a largura de banda total é limitada por restrições de CPU e

RAM. A Mininet usa um único kernel do Linux para todos os hosts virtuais, isso

significa que não se pode executar software que depende de plataformas BSD,

Windows, ou outros kernels de sistema operacionais distintos.

Estas informações e a própria Mininet podem ser encontradas e adquiridas

livremente no site oficial (Mininet, 2016).

2.4 - Softwares controladores

O principal componente das redes definidas por software é o controlador.

Este serve como uma camada de abstração para a criação serviços e aplicações

que gerenciarão as entradas dos fluxos nos switches Openflow. O controlador é o

componente responsável por concentrar a comunicação de todos os dispositivos

programáveis da rede, oferecendo assim uma visão unificada da mesma. Os

controladores também são conhecidos como sistemas operacionais de rede, em

uma analogia com os sistemas operacionais usados em computadores. A ideia do

controlador é a mesma dos Sistemas Operacionais, ou seja, oferecer uma interface

de alto nível para aplicações utilizarem os recursos de hardware e ao mesmo tempo

gerenciar as interações entre essas aplicações.

Page 32: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

30

2.4.1 - Controlador NOX

O NOX é uma proposta de controlador para redes definidas por software

aplicações desenvolvidas em Python e C++. As suas interfaces de alto nível

simplificam a programação isentando o profisional de connhecimentos específicos

do funcionamento de baixo nivel e viabilizando a portabilidade das aplicações para

diferentes arquiteturas. Em uma rede Openflow, é comum existir um ou mais

servidores executando NOX, cada um é responsável por ser um controlador

Openflow. Todos os controladores compartilham uma visão única da rede, que é

mantida através de uma base de dados em um dos seus servidores. A visão da rede

é construída através desta base de informações e usada na tomada de decisões

pelas aplicações de gerenciamento. Tais informações são, topologia da rede,

localização de elementos, serviços oferecidos entre outros. As aplicações criadas a

partir destas informações gerenciarão o tráfego através de comutadores Openflow

de forma remota. Essa gerência é realizada à nível de fluxo, ou seja, quando

determinada ação é realizada no primeiro pacote do fluxo todos os outros pacotes

deste mesmo fluxo seguirão a mesma ação (COUTO, 2010).

O NOX é um controlador simples para redes definidas por software, que

promove gerenciamento dos fluxos da rede através de eventos, bem como a

comunicação entre os switches da forma mais básica à avançada.

2.4.2 - Controlador POX

POX é um controlador para redes definidas por software escrito em Python.

No início foi construído para ser um controlador Openflow porém mais adiante pôde

funcionar como um switch Openflow sendo útil para escrever softwares em Python.

O POX necessita de Python 2.7 instalado previamente, sendo executado em

plataformas Linux, Mac OS e Windows.

Page 33: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

31

Atualmente o POX funciona com protocolo Openflow 1.0. O POX é uma

plataforma simples para desenvolvimento, testes e prototipação de aplicações de

redes utilizando Python. Este controlador veio para substituir o NOX em casos onde

o desempenho seja um requisito necessário. O POX é mais eficiente e oferece um

melhor desempenho que o NOX quando executado em Python, porém, o contrário

acontece quando a linguagem utilizada é o C++, neste o NOX leva vantagem

(McCauley, 2014).

2.4.3 - Controlador Beacon

O controlador Beacon foi desenvolvido em JAVA com o intuito de receber

operações de controle em função de eventos e threads. O Beacon vem sendo

desenvolvido pela Universidade de Stanford desde 2011 e suas principais

características são de ser um software livre com licença GPL (General Public

License), ser multithreaded e manter redes experimentais por meses mesmo com

inatividade (BEACON, 2011).

Uma característica peculiar neste controlador é que pode ser utilizado na

plataforma Android e pode ser atualizado em tempo de execução sem interrupção

do seu funcionamento.

2.4.4 - Controlador FloodLight

O Floodlight, baseado no Beacon, não é somente um controlador Openflow

mas também uma coleção de aplicações construídas em cima do controlador

Floodlight. Este controlador contém núcleo e módulos escritos principalmente em

Java, porém também é possível programar em Jython, que é uma implementação da

linguagem Python que gera bytecode para máquinas JVM (Java Virtual Machine),

sendo assim possível fazer aplicações híbridas unindo Java e Python.

A comunicação entre os módulos deste controlador é feita através de

serviços tendo em vista que sua arquitetura é formada por módulos que exportam

serviços.

Page 34: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

32

O Floodlight tem por características principais o descobrimento e

identificação do status da topologia da rede, possibilidade de integração com redes

que não são Openflow e também a compatibilidade com a máquina virtual de redes

Mininet (FLOODLIGHT, 2016).

Page 35: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

33

3 - Metodologia

Neste capítulo serão abordados os procedimentos práticos necessários para

a preparação de uma infraestrutura básica de a virtualização de uma rede definida

por software. Em conjunto serão explanados aspectos fundamentais para a

instalação das principais ferramentas utilizadas e a execução de comandos para

testes no controlador.

3.1 - Tecnologias Utilizadas

Mininet: Possibilitará a criação de um protótipo de rede virtual realista,

executada em um kernel real pois não serão utilizados switches físicos para testes.

Criará switches, hosts e possibilitará a execução de códigos de aplicações. Uma

máquina virtual capaz de gerar uma grande rede para experimentos Openflow.

Wireshark: Um sniffer de rede para a captura e visualização de pacotes

gerados em uma rede. A distribuição de referência Openflow inclui um Wireshark

Dissector nativo na máquina virtual Mininet. Este consegue analisar as mensagens

enviadas pela porta padrão do Openflow: 6634 ou de qualquer outra natureza

desejada

Terminal SSH: É utilizado para se conectar à máquina virtual através de uma

interface de rede virtual. Sendo possível copiar e colar por este terminal, compilar

módulos do controlador e inicializar o Wireshark nativo.

Terminal xterm: Utilizado para se conectar a um host da rede virtual, através

da Command-line Interface (CLI) da Mininet. Este se conectará a um componente da

rede virtual criada.

Switch Openflow: A Mininet contém três opções de switches para a rede

virtual; switches que utilizam o kernel-space, switches que usam o user-space, e

switches que simulam o Openvswitch. Este último será utilizado nas

experimentações por ser o padrão.

Page 36: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

34

3.2 - Criação de uma Infraestrutura de Rede Virtua-

lizada com a Mininet

3.2.1 - Requisitos Básicos

Para executar a Mininet, algumas configurações se fazem necessárias:

• Deve-se alocar pelo menos 512 MB de RAM para a máquina virtual.

• Necessita-se de duas placas de rede na máquina virtual, sendo uma para sua

própria rede interna (NAT) e outra para conexão entre a máquina virtual e máquina

física através do SSH, utiliza-se a configuração host-only network.

3.2.2 - Inicialização da Mininet

Ao iniciar a máquina virtual com a imagem da Mininet montada, são

utilizados os seguintes parâmetros para o login quando solicitado:

• Username: mininet

• Password: mininet

O usuário root não está ativo para login por padrão, sendo possível utilizar o

comando sudo para executar comandos como super usuário.

Primeiramente deverão ser encontrados os endereços IPs da máquina

virtual, no terminal, para isso executa-se o comando ifconfig.

Será possível observar algumas interfaces, exemplo eth0, eth1 e lo, desde

que tenham sido configuradas na máquina virtual. As duas primeiras interfaces são

placas de rede virtuais configuradas e criadas antes de executar a máquina virtual

no software de virtualização. Isto que possibilitará a conexão da internet com seu

computador hospedeiro. Caso não seja possível ver as interfaces, executa-se os

comandos a seguir ou em caso de não sucesso, devem ser revisadas as

configurações da máquina virtual:

sudo dhclient eth0

sudo dhclient eth1

Page 37: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

35

Executa-se novamente o comando ’ifconfig’ para verificar se as interfaces

estão visíveis. Normalmente encontra-se ethX, onde X é o número correspondente a

interface da placa. Com as interfaces ativas, é necessário anotar o endereço IP da

segunda interface (host-only network) que seguirá o padrão de IP da máquina

hospedeira. Logo em seguida não se faz necessário utilizar o terminal da VM

Mininet, pois com este IP, pode-se conectar à Mininet via o terminal SSH, tornando

trabalho mais flexível.

3.2.3 - Acesso à Mininet via SSH

Com os requisitos anteriormente configurados na VM Mininet, deve-se abrir

um terminal de comandos e em seguida digitar:

ssh -X mininet@[Endereço IP guardado]

Após isso será pedido o password, digita-se “mininet” (sem aspas). A opção

-X é para habilitar o servidor X Window na máquina virtual caso exista.

3.2.4 - Principais comandos da Mininet

Nesta seção serão apresentados os principais comandos utilizados dentro

da Mininet. Para iniciar a Command Line Interface (CLI) da Mininet no terminal basta

executar o comando:

$ sudo mn

Uma topologia mínima é criada por padrão. Esta topologia inclui dois hosts

comuns e um controlador interligado a um switch Openflow (Openvswitch) através

de um enlace ethernet. A confirmação de que o usuário se encontra na CLI da

Mininet será a identificação no prompt de cada linha de comando:

mininet>

A seguir serão apresentados alguns comandos básicos da Mininet.

Page 38: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

36

Ajuda e apresentação dos comandos:

mininet> help

Exibição dos nós de uma topologia:

mininet> nodes

Exibição dos links:

mininet> net

Apresentar informações sobre todos os nós de uma rede - mininet> dump

Caso a primeira palavra digitada na CLI da Mininet seja o nome de um dos

nós ou componentes da rede, seja um switch, host ou controlador, o comando à

frente será executado por este componente. Exemplo:

mininet> h2 ifconfig

Em resposta a este comando, serão informadas as configurações de IP do

host h2 logo em seguida. Outra opção para executar estes comandos por nós

distintos, é abrir uma janela de terminal adjacente para o nó desejado, para isso,

utiliza-se o emulador de terminal X ou terminal xterm. Exemplo:

mininet> xterm h2 h3 s1

O comando anterior abrirá três janelas, cada uma com o nome do seu respectivo nó.

Um comando para teste de alcance entre todos os nós da rede é o:

mininet> pingall

O comando pingall faz com que todos os componentes da rede enviem pings entre

si. Para encerrar a CLI da Mininet:

mininet> exit

Page 39: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

37

3.2.5 - Topologias de rede na Mininet

A Mininet traz uma topologia padrão, com um único switch ligado a dois

hosts. No entanto pode-se criar topologias diferentes, como por exemplo:

sudo mn --topo single, X

sudo mn --topo linear, X

sudo mn --topo tree, X,Y

Na primeira linha, cria-se uma topologia com um único switch ligado a X

hosts, onde X é a quantidade de hosts. Já na segunda linha, cria uma topologia

linear com X switches conectados entre si, ligados cada um a X hosts, sendo ainda

X o número de referente a quantidades. A terceira linha cria uma topologia em

formato de árvore, onde a altura é X e com o número Y de números de filhos por nó.

Figura 7: Algoritmo da topologia simples personalizada da Mininet.

Page 40: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

38

O algoritmo mostrado na Figura 7 cria uma classe com o nome "MyTopo"

para a topologia personalizada de exemplo. A classe iniciará uma função para criar

uma topologia adicionando dois hosts e dois switches interconectando-os. Os hosts

receberão o nome de "h1" e "h2" e os switches de "s3" e "s4". Para conectar os

hosts aos switches serão criados 3 links. Estes links conectarão os elementos da

rede de forma que fique o host h1 à esquerda do switch s3, o switch s3 conectado à

esquerda do switch s4 e do lado direito do switch s4 o host h3.

É possível criar topologias bem diferentes e personalizadas utilizando

módulos em python. O código custom/topo-2sw-2host.py que acompanha a Mininet

cria dois switches (Openvswitch), interligados entre si, conectados a um host cada.

Para executar a Mininet com uma topologia personalizada executa-se:

sudo mn --custom ~/Mininet/custom/minha_topologia.py --topo mytopo

A Mininet fornece API para a criação de novas configurações para uma

Rede Definida por Software. Alguns exemplos de uso podem ser encontrados no

diretório Mininet/examples, suas descrições encontram-se em

Mininet/examples/README. Destacam-se na Mininet duas ferramentas gráficas, que

produzem uma experiência menos abstrata:

O miniedit.py, pode ser executado através do comando:

sudo ./Mininet/examples/miniedit.py

Page 41: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

39

Este abrirá uma janela gráfica onde será possível desenhar uma topologia

de maneira fácil e simples conforme a Figura 8.

A topologia desenhada no exemplo anterior possui 3 switches conectados a

um controlador central e 4 hosts, estes conectados a 2 switches.

Com o consoles.py poderá ver uma janela gráfica através do comando:

sudo ./mininet/examples/consoles.py

O comando anterior abrirá uma janela gráfica com uma grade de janelas de

console conforme a Figura 9, uma para cada componente da rede, e permite a

interação e o acompanhamento de cada nó, incluindo monitoramento através de

gráficos e comandos ping.

Figura 8: Janela gráfica do miniedit.py.

Page 42: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

40

A Figura 9 mostra o console de 16 hosts e a taxa de transferência de cada

um. Alguns comandos podem ser utilizados através dos botões, como por exemplo

Ping e Clear. É possível também criar API própria para a Mininet. Uma API básica

utiliza das bibliotecas mininet.node, mininet.cli e mininet.net. A primeira contém os

módulos para se criar todos os nós virtuais de uma rede, a segunda por sua vez

serve para que se possa executar a CLI da Mininet e a terceira contém os módulos

necessários para se montar a rede virtual propriamente dita.

Figura 9: Tela do consoles.py.

Page 43: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

41

3.3 - Implementação da Infraestrutura SDN

Para fim de estudo foi escolhido o controlador POX por usar componentes

feitos em python, facilitando o entendimento das aplicações nos testes deste

trabalho. O controlador POX possui vários módulos pré configurados dentro do

diretório forwarding, para serem usados como controladores dos switches Openflow,

como exemplo tem-se os módulos forwarding.l2_learning.py;

forwarding.l3_learning.py; forwarding.hub.py, onde o primeiro configura o controlador

para operar como switch de camada 2, o segundo como switch de camada 3 e o

último como um HUB.

3.3.1 - Instalação do POX

Para executar o POX, é necessário ter o Python 2.7 ou superior instalado no

sistema operacional. Um Sistema Operacional indicado é dispensável pois por ser

uma aplicação interpretada, indicar um sistema operacional é irrelevante. O POX

está disponível como software livre no repositório Github (POX Controller, 2017),

desta forma, basta fazer o download do pacote e extraí-lo.

3.3.2 - Execução do POX

A inicialização do POX se faz através do comando “./pox.py” do módulo

pox.py no terminal. Na mesma linha de comando pode-se usar algumas opções de

inicialização conforme a seguir:

--verbose: Útil para depuração de problemas relacionados a inicialização, exibe

informações extras

--no-cli: Não deixa inicializar nenhuma interface interativa.

--no-openflow: Impede a inicialização automática do módulo openflow.

Page 44: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

42

O POX como é um controlador utilizado em sua maioria para pesquisa

(podendo ser utilizado em produção), não faz sentido executá-lo sem nenhum

módulo ou componente. Caso os pesquisadores queiram colocar em produção as

suas aplicações, deverão especificá-las na linha de comando após as opções

mencionadas anteriormente. Assim, após a chamada do módulo pox.py, a linha de

comando deve ficar conforme exemplo a seguir:

./pox.py --no-cli [nome da aplicação]

Pode-se executar vários módulos especificamente na linha de comando,

porém é esperado que alguns componentes não funcionem de forma adequada em

conjunto com outros, pois se os mesmos tendem a funcionalidades diferentes ou

pouco semelhantes, pode ser que venham interferir diretamente no funcionamento

um do outro. Há ainda componentes que dependem de outro para funcionar, isso

depende do tipo de trabalho desempenhado pelo pesquisador. Em seguida um

exemplo de mais de um componente executado ao mesmo tempo:

./pox.py --no-cli [módulo 1] --[opção] [módulo2] --[opção]

3.3.3 - Componentes do POX

O controlador POX vem com alguns componentes nativos, sendo alguns

convenientes para testes. Contudo, a intenção é que o pesquisador se inspire a criar

suas próprias aplicações.

Conforme dito em capítulos anteriores, o conceito de componentes nada

mais são do que programas que serão executados pelo controlador que fornecerão

funcionalidade e gerenciarão a rede a partir deste.

A seguir é apresentada uma lista com os principais componentes do POX,

juntamente a uma breve descrição de cada.

-py: Utilizado para depuração interativa ao se inicializar o interpretador Python.

Funciona somente se a opção --no-cli estiver desabilitada.

-forwarding.l2_learning: Atribui aos switches Openflow a funcionalidade de switches

de aprendizagem de camada dois. Porém, instala também fluxos extras para cada

conexão com origem e destino idênticos, fazendo com que fluxos com origens

diferentes e destinos iguais tenham fluxos distintos.

Page 45: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

43

-forwarding.l2_pairs: Faz o mesmo que “forwarding.l2_learning”, porém gerencia

regras com base em endereços MAC desconsiderando origem e destino.

-forwarding.l3_learning: Este é um componente que não é um roteador nem um

switch mas entende endereçamento MAC para IP, um tipo de switch L3.

-forwarding.l2_multi: Funciona como um switch de aprendizagem L2 mas está em

ambientes com vários switches. Quando um switch aprende um MAC todos os

outros também aprendem. Precisa do componente openflow.discovery.

-openflow.spanning_tree: Também necessita de um módulo de aprendizagem, este

componente descobre a topologia da rede e a transforma em árvore com o objetivo

de evitar inundação nas portas dos switches, evita o que são conhecidos como loops

lógicos da rede, semelhante ao Spanning Tree Protocol (STP).

-web.webcore: Inicializa um servidor web dentro do POX, desta forma outros

componentes da rede podem requisitar e fornecer conteúdos estáticos e dinâmicos.

-messenger: Este componente fornece uma interface a fim de realizar conexão e

troca de mensagens bidirecionais por meio de JavaScript Object Notation (JSON)1

(JSON, 2016).

-openflow.of_01: Componente inicializado por padrão quando não há referência por

nenhum outro ou quando não existe a opção --no-openflow. Faz comunicação com

switches Openflow.

-openflow.discovery: Serve para descoberta de topologia através de mensagens de

controle entre os switches Openflow.

-openflow.debug: Captura mensagens trocadas entre controlador e switches

Openflow na rede, semelhante ao Wireshark e tcpdump mas de forma resumida.

-openflow.keepalive: Faz avaliações do estado dos componentes da rede em

relação a sua conectividade com a rede através de mensagens de eco periódicas.

-misc.pong: Envia respostas pong para todas a requisições pings na rede.

-misc.arp_responder: O mesmo que o misc.pong com a diferença de responder a

requisições ARP.

-misc.dns_spy: Monitora e guardas as respostas DNS.

-misc.mac_blocker: Usado em conjunto com outros componentes de

encaminhamento permitindo bloquear endereços MAC específicos. Mostra interface

gráfica com informações sobre eventos de bloqueio.

1 JSON é um formato leve para intercâmbio de dados computacionais que pode ou não utilizar

JavaScript.

Page 46: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

44

-Log: Caso exista necessidade de Log, este componente é responsável opr criação

de logs com data e hora.

-Tk: Usado na construção de interfaces gráficas baseadas no POX.

3.3.4 - Pacotes do POX

Como o POX é um controlador para redes definidas por softwares, é natural

que venha interagir com diferentes tipos de pacotes e não somente com fluxos

Openflow. O controlador possui uma biblioteca exclusiva para a análise e construção

destes pacotes, a pox.lib.packet. Tal biblioteca possui suporte para diferentes tipos

de cabeçalhos e carga útil (payload). Normalmente o POX lida com pacotes Ethernet

que por sua vez trabalha com pacotes IP e contém ao mesmo tempo, pacotes TCP.

Alguns exemplos de pacotes suportados por esta biblioteca são: IP, TCP, DHCP,

LLDP, ARP, ICMP, UDP, DNS e VLAN.

3.4 - Análise do tráfego SDN

A Mininet vem com o Openflow Wireshark Dissector nativo. O Wireshark é

um software para captura de tráfego numa rede em produção, servindo para análise

de tráfego tanto Openflow quanto para depuração de outros pacotes. O comando

“sudo wireshark &” no terminal SSH inicializa-o.

Acessando no menu Capture e em seguida Interfaces, será aberta uma nova

janela e clica-se no botão Start. A partir deste momento, será apresentado a captura

de diversos pacotes em tráfego. Para filtrar somente tráfego Openflow faz-se

necessário a criação de um filtro. Na caixa de Filter coloca-se of, de Openflow, e

pressiona-se Apply para começar a capturar somente o tráfego escolhido.

Após inicializar o controlador o tráfego Openflow aparecem alguns tipos de

mensagens, estes são apresentadas abaixo:

Hello: Controlador envia o número da sua versão ao switch através do TCP

handshake.

Hello: Em retorno o switch envia o número das versões suportadas.

Page 47: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

45

Features Request: Controlador requisita ao switch quais portas estão

disponíveis.

Set Config: Controlador requisita ao switch quais fluxos estão expirando.

Features Reply: Resposta do switch ao controlado com as suas portas e

características.

Port Status: switch avisa o controlador das mudanças em relação a

velocidade de cada porta ou de alguma conexão.

Várias mensagens, por vezes repetidas, aparecerão durante a captura do

tráfego, isso pode deixar a análise confusa devido a uma grande quantidade de

componentes estarem se comunicando na rede. É notável também a aparição das

mensagens Echo Request/Echo Reply com frequência, pois as mesmas são

responsáveis por manter ativas as conexões entre switches e controladores.

Abaixo algumas mensagens Openflow ao se realizar um ping na rede:

Packet-In: Pacote enviado pelo switch ao controlador devido à inexistência

de uma entrada na tabela de fluxo.

Packet-Out: Controlador envia pacote de volta ao switch.

Flow-Mod ou Flow_Add: Controlador adiciona na tabela de fluxo do switch

uma nova entrada.

Flow-Expired: switch avisa ao controlador que expirou um fluxo devido à

inatividade.

Page 48: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

46

4 - Resultados dos experimentos

O experimento realizado foi feito em ambiente virtualizado utilizando a

Mininet, onde foram simulados topologias de rede com hosts e switches para testes.

Através do Wireshark pôde-se analisar os resultados obtidos, de acordo com as

mensagens trocadas pelos componentes virtuais.

O experimento foi executado sobre o hardware descrito a seguir.

● Processador Intel® Core™ i5-6500 CPU @ 3.20GHz × 4

● Gráfico Intel® Skylake DT GT2

● Sistema Operacional Ubuntu 15.10 64 bit

● Placa-Mãe Asus H170 Pro Gaming

● 8 GB RAM Corsair DDR 4

● SSD Samsung 850-EVO

4.1 - Experimento com rede padrão Mininet

Para realização da primeira parte do experimento foi criado a topologia de

rede virtual composta por 2 hosts, 1 switch, 1 controlador e 2 links conforme Figura

10:

Figura 10: Iniciando a topologia básica padrão na Mininet.

Page 49: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

47

Ao receber esta resposta da Mininet, observada na Figura 10, aplica-se o

comando pingall, e o Wireshark deverá capturar os seguintes tráfegos vistos na

Figura 11:

Após o Controlador e o switch trocarem requisições Hello, Features_Request,

Features_Reply, Set_Config e Port_status começam as mensagens de Packet-In

vindo de um endereço MAC para Broadcast. Em seguida uma mensagem Packet-

Out é enviada do controlador ao switch referente ao um pacote que não tinha

nenhuma entrada na tabela de fluxo. Próximo passo é a mensagem Flow_Add,

também vista em outras versões como Flow_Mod, ambas adicionam na tabela de

fluxo uma nova entrada para este novo fluxo.

Figura 11: Tráfego capturado pelo Wireshark com Openvswitch.

Page 50: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

48

Até próximos pings não existe participação do controlador na rede e a troca

de mensagens deve cessar até que a validade deste fluxo acabe e em seguida

aparecer a mensagem Flow_Expired, referente a expiração de fluxo.

4.2 - Experimento com switch camada 2

Neste experimento, continua-se com a mesma topologia básica da Mininet,

porém é carregado o componente forwarding.l2_learning no controlador, fazendo

com que esta rede trabalhe conforme um switch de autoaprendizado na segunda

camada. switches, por definição, operam na camada 2 (Enlace), onde protocolos de

camadas superiores não são suportados. switches L2 não entendem endereços IP,

roteamento IP, ou qualquer outra operação que envolva o protocolo IP. A seguir,

será apresentada uma demonstração dos comandos para o carregamento do

componente:

A Figura 12 mostra a resposta da Mininet com o controlador em

funcionamento onde os 2 hosts se comunicam.

Desconecte-se do controlador conforme a Figura 13.

Figura 12: Resposta da rede dentro da Mininet.

Figura 13: Desconectando de todos os controladores da Mininet.

Page 51: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

49

Com a interrupção do controlador, pode-se notar que não há comunicação

entre os hosts como mostra o retorno na Figura 14, pois não há um responsável

para encaminhar os dados.

Para resolver este problema e retornar o funcionamento da rede, torna-se

necessário um controlador ativo com suas regras funcionais, será feita a mudança

do openvswitch que é o padrão da Mininet, para o controlador POX, com o

componente forwarding.l2_learning do controlador de acordo com a Figura 15.

Figura 14: Sem resposta na rede da Mininet.

Page 52: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

50

Com o novo componente carregado no controlador, pode-se observar o

seguinte tráfego capturado na Figura 16:

Figura 15: Iniciando o componente do controlador POX na rede Mininet.

Figura 16: Tráfego capturado pelo Wireshark com controlador POX.

Page 53: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

51

Com o switch da rede se comportando neste momento com um switch

camada 2 de autoaprendizado observa-se o protocolo ARP aparecer no tráfego.

Este protocolo resolve endereços da camada de Internet em endereços da camada

de enlace, uma função crítica em redes de múltiplos acessos.

Na captura do tráfego feita pelo Wireshark são encontradas várias linhas que

caracterizam fluxos entres os componentes da rede. Para o experimento é

necessário atentar-se para algumas destas linhas. Após as ações nas linhas 5270,

5272, 5274, 5276, 5277, 5278, 5279, 5280, correspondente da coluna ‘No.’, o switch

adicionou os hosts da rede na tabela de fluxo. Nas linhas 5320 e 5323 mostram uma

requisição do protocolo ARP, na coluna ‘Protocol’. Esta requisição serve para

identificar os endereços físicos descritos na coluna ‘Source’. A identificação destes

endereços físicos é feita através do switch aos endereços IP conectados a ele.

Continuando nas mesmas linhas, a coluna Info mostra as mensagens enviadas pelo

switch aos hosts para o descobrimento dos seus MAC através do protocolo ARP.

Identificados os respectivos endereços físicos, o switch relaciona-os ao seu

respectivo endereço IP na tabela de fluxo. Esta é a mudança ocorrida do primeiro

experimento para este. No primeiro experimento pôde-se notar o funcionamento de

uma rede baseada no controlador padrão da Mininet, o Openvswitch. O

Openvswitch trabalha como um switch de multicamadas, porém este possui o

adicional de protocolos da arquitetura Openflow. Alguns destes protocolos são o

NetFlow, sFlow, SPAN, RSPAN, CLI, LACP e 802.1ag.

Page 54: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

52

4.3 - Experimento com módulo spanning_tree no

switch camada 2

Prosseguindo com a prática SDN, foram realizados vários testes de alguns

componentes que vem por padrão no controlador POX. Os componentes podem se

combinar para fazer o controlador da rede trabalhar de forma mais robusta e/ou

dedicado a algum serviço específico. O Wireshark utilizado para interceptar os

pacotes da rede e identificar mudanças no comportamento, não obteve o resultado

esperado, porém, trouxe análises satisfatórias para as conclusões. A justificativa

encontrada foi que a maioria destes componentes são para agregar algum serviço

que a rede possa oferecer e não mudar drasticamente sua estrutura, como, por

exemplo, o funcionamento de um hub para um switch. Entende-se componente e

modulo como a mesma coisa. Este último experimento foi realizado em cima de uma

topologia de 64 hosts, 9 switches, Um controlador e 72 links distribuída conforme a

Figura 17. Para criar a topologia digita-se o comando abaixo no terminal conectado a

Mininet via SSH:

$ sudo mn --switch ovs --controller ref --topo tree,depth=2,fanout=8

Page 55: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

53

Para adicionar os componentes openflow.spanning_tree e

samples.spanning_tree ao controlador, faz-se necessário que a linha de comando

seja executada:

./pox.py forwarding.l2_learning openflow.spanning_tree samples.spanning_tree

Estes componentes necessitam de um módulo de descoberta, por exemplo o

forwading.l2_learning usado no teste.

Este componente, openflow.spannning_tree tem duas opções que alteram o

comportamento de inicialização:

--no-floods desativa inundações em todas as portas assim que um switch se conecta

em uma destas portas em loop.

Figura 17: Topologia complexa de rede na Mininet.

Page 56: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

54

--hold-down impede alteração de controle de inundações até que um ciclo de

descoberta completa fosse concluída (e, portanto, todas as ligações tenham tido a

oportunidade de ser descobertas).

Assim, a mais segura (e provavelmente o mais sensível) invocação é

“openflow.spanning_tree --no-flood –hold-down”.

A Figura 18 mostra o resultado da inserção destes componentes no

controlador. Por padrão o componente openflow.of_01 e openflow.discovery são

carregados automaticamente.

Figura 18: Resultados da inserção da nova topologia no controlador da Mininet.

Page 57: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

55

O openflow.of_01 comunica com switches openflow 1.0 e pode-se iniciá-lo

manualmente para permitir que troque suas opções, por exemplo, para definir qual

interface ou porta ele está escutando.

Já o openflow.discovery envia mensagens LLDP especialmente construídas

para fora dos switches openflow, permitindo que este avalie a topologia da rede.

Este gera eventos (os quais pode-se capturar) quando os links levantam ou caem.

Na Figura 19 nota-se o componente openflow.of_01 conectando os switches

ao controlador e em seguida o módulo openflow.discovery detectando os links entre

os switches. Ao detectar as ligações entre os switches, o componente

openflow.spanning_tree reconhece alguns loops lógicos e muda algumas portas

para que não haja inundações e a topologia entre em loop. Este é o componente

principal desta análise. Parecido com o STP, este módulo evita loops lógicos na rede

que poderiam causar mal funcionamento e possivelmente a perda de conexão

daquela parte da rede em loop.

Para finalizar e demonstrar como mesmo em ambiente virtualizado a rede

possui plena eficiência, o host identificado como h1, foi escolhido para acessar a

Internet através do navegador Mozilla Firefox. Para acessar a Internet de dentro da

Mininet é necessário que o switch principal da rede s1 libere a interface de rede do

switch intermediário s2, e posteriormente que este switch 2 faça o mesmo com o

host 1. O host 2 é necessário para rodar o servidor web para que possam ser feitas

requisições HTTP em outro host.

Após toda topologia estar em funcionamento, através do terminal da Mininet,

deve-se iniciar os terminais X dos hosts h1 e h2, e dos switches s1 e s2 conforme

linha de comando a seguir:

mininet> xterm s1 s2 h1 h2

Digita-se no terminal s1:

ovs-vsctl add-port s1 s2-eth1

Para liberar a interface de rede eth1 do switch 2.

Digita-se no terminal s2:

Page 58: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

56

dhclient s1-eth1

Para ativar a interface eth1 do switch 2.

Digita-se no terminal h2:

python -m simpleHTTPServer 80 &

Para inicializar o servidor web para receber requisições http.

Digita-se no terminal do h1:

dhclient h1-eth0

apt-get update

apt-get install firefox

firefox &

Digita-se os comandos anteriores para ativar a interface de saída eth0,

atualizar a base de pacotes do sistema operacional, instalar o pacote firefox e iniciar

uma instância do firefox no X Window.

Page 59: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

57

Com o navegador aberto e sendo utilizado, a Figura 20 mostra uma parte do

tráfego interceptados pelo Wireshark:

A Figura 19 é uma parte do tráfego relacionada ao host 1, de IP 10.0.0.1,

com a página da Internet “http://www.google.com” , IP 216.58.222.3. É possível ver a

troca de pacotes entre o host e a página do Google na linha 2767 da coluna No.,

onde a máquina 10.0.0.1 envia um pacote of_packet_in para o endereço 216.58.22.3

utilizando protocolo Openflow 1.0 (OF 1.0, coluna Protocol). Também é possível ver

outras trocas de pacotes e mensagens nas linhas 2780 e 2805.

Figura 19: Tráfego capturado pelo Wireshark com controlador POX numa topologia grande.

Page 60: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

58

A Figura 20 é uma parte do tráfego relacionada ao host 1 de IP 10.0.0.1,

com a página da Internet “http://www.stanford.org”, IP 52.32.123.204. É possível ver

a troca de pacotes entre o host e a página da Universidade de Stanford na linha

2580 da coluna No., onde a máquina 10.0.0.1 envia um pacote of_packet_in para o

endereço 52.32.123.204 (stanford.org) utilizando protocolo Openflow 1.0 (OF 1.0,

coluna Protocol). Também é possível ver outras trocas de pacotes e mensagens nas

linhas e 2583, 2603, 2607 e 2614.

Com estes últimos testes de análise de tráfego através da ferramenta

Wireshark, pode-se concluir que houve tráfego efetivo de um host da rede

virtualizada pela Mininet e a internet, representada pelas páginas

“htttp://www.google.com” e “http://www.stanford.org”.

Page 61: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

59

CONCLUSÃO

As Redes Definidas por Software estão avançando através de pesquisa e

trabalho, entre empresas e universidades. A Arquitetura e o Protocolo Openflow

trazem essa ideia inovadora para a prática, estabelecendo mecanismos e

ferramentas para uma implementação sólida e com real potencial.

Este trabalho apresentou as Redes Definidas por Software e os seus

avanços em relação a rede tradicional. Através da Mininet pôde-se implementar uma

topologia de rede virtualizada com tráfego real e em seguida o carregamento do

componente forwarding.l2_learning no controlador da rede. Foi também em conjunto

com a ferramenta Wireshark que pôde-se constatar um tráfego em produção e a

mudança do comportamento da rede com o carregamento deste novo componente.

A ideia de retirar a parte programática das redes trouxe avanço da

infraestrutura da Internet e uma independência para o gerenciamento da rede.

Ferramentas como NOX, POX, Virtual Machine (VM) Mininet, VirtualBox e

outros facilitam as pesquisas daqueles que não tem a disponibilidade de um switch

Openflow físico.

As Redes Definidas por Software são uma grande oportunidade para

aprimorar o funcionamento da internet em aspectos como qualidade de serviço,

segurança da informação, escalabilidade e resiliência.

Conclui-se assim que para tratar os novos desafios que a Internet passará, a

inovação da sua infraestrutura deverá ser repensada, uma grande mudança já

começou, foram as Redes Definidas por Software.

Page 62: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

60

REFERÊNCIAS

ALENCAR, Felipe. Mininet: Uma rede virtual instantânea no seu PC, 2013. Disponível em: <http://www.felipealencar.net/2013/05/mininet-uma-rede-virtual-instantanea-no.html>. Acesso em: 15 Jul. 2015.

BEACON, 2011. Disponível em: <https://openflow.stanford.edu/display/Beacon/Home>. Acesso em: 29 Set. 2014.

BRITO, Samuel Henrique Bucke. Paradigma SDN de Redes Programáveis. LabCisco, 2013. Disponível em: <http://labcisco.blogspot.com.br/2013/07/paradigma-sdn-de-redes-programaveis.html>. Acesso em: 20 Mar. 2015.

CISCO. Open Network Environment: Bring the Network Closer to Applications, 2014. Disponível em: <http://www.cisco.com/c/en/us/products/collateral/switches/nexus-1000v-switch-vmware-vsphere/white_paper_c11-728045.html>. Acesso em: 07 Out. 2015.

COHESIVEFT. White Paper: Openflow is Software Defined Networking: Software Defined Networking is Not Only Openflow. 24 Set. 2012.

COUTO, Rodrigo de Souza. Openflow. UFRJ, 2010. Dinsponível em: <http://www.gta.ufrj.br/ensino/eel879/trabalhos_vf_2010_2/rodrigo/nox.html>. Acesso em: 22 Set. 2015.

DUQUE, Diego Henrique; COUTO, Edimilson Joaquim; PINTO, Marcelo Henrique et al. "Redes Definidas por Software", 2012. Disponível em <http://br.monografias.com/trabalhos3/redes-definidas-software/redes-definidas-software2.shtml>. Acesso em: 20 Dez. 2016.

FEAMSTER et al. Nick Feamster, Jennifer Rexford e Ellen Zegura. The road to sdn: An intellectual history of programmable networks, 2014.

FLOODLIGHT, Project. Floodlight is an Open SDN Controller, 2016. Disponível em: <http://www.projectfloodlight.org/floodlight/>. Acesso em: 12 Fev. 2016.

FRIEDERICKA, Anna. “Departamento de Ciência da Computação Universidade Federal da Bahia;” Curso de Inclusão Digital, 2005. Disponível em: <http://homes.dcc.ufba.br/~frieda/inclusaodigital/internet.htm>. Acesso em: 03 Mar. 2015.

GREENE, Kate. TR10: Software Defined Networking. MIT Technology Review, 2009. Disponível em: <http://www2.technologyreview.com/article/412194/tr10-software-defined-networking/> Acesso em: 02Dez. 2014.

HELLER, Brandon. Openflow Switch Specification. Version 1.0.0, Open Networking Foundation, 31 Dez. 2009.

Hewlett-Packard. SDN: Programmable network aligned to business applications delivers agility, 2013. Disponível em: <http://h17007.www1.hpe.com/docs/networking/solutions/sdn/4AA4-8807ENW.pdf>. Acesso em: 07 Out. 2015

Hewlett-Packard. Realizing the power of SDN with HT Virtual Application Networks, 2012. Disponível em: <h17007.www1.hpe.com/docs/interopny/4AA4-3871ENW.pdf>. Acesso em: 03 Jul. 2016.

IZARD, Ryan. Floodlight Documentation, 2016. Disponível em: <https://floodlight.atlassian.net/wiki/display/floodlightcontroller/>. Acesso em: 01 Abr. 2016.

JAIN, Raj; PAUL, Subharthi. “Network Virtualization and Software Defined Networking for Cloud Computing:” A Survey, 2013.

Page 63: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

61

JSON, 2016. Disponível em: <http://www.json.org/>. Acesso em: 22 Mai. 2016.

KLEIS, Elton Gastardelli. Redes Definidas por SW I: Aplicação para Diferenciação de Caminhos, 2015. Disponível em: <http://www.teleco.com.br/tutoriais/tutorialsw1/default.asp>. Acesso em: 16 Out.2015.

LeClerc, Marc. The basics of SDN and the Openflow Network Architecture. Noviflow, 2013. Disponívelem: <http://noviflow.com/the-basics-of-sdn-and-the-openflow-network-architecture/>. Acesso em: 20 Ago. 2015.

LINKLETTER, Brian. Using the POX SDN controller, 2015. Disponível em: <http://www.brianlinkletter.com/using-the-pox-sdn-controller/>. Acesso em: 06 Jun. 2016.

McCauley, Murphy. POX Wiki, 2014. Disponível em: <https://openflow.stanford.edu/display/ONL/POX+Wiki>. Acesso em: 13 Mar. 2016.

MCKEOWN, Nick; ANDERSON, Tom; BALAKRISHNAN, Hari; et al. Openflow: Enabling Innovation in Campus Networks. ACM SIGCOMM Computer Communication Review, Volume 38, Issue 2, p. 69-74,2008.

Mininet Team. An Instant Virtual Network on your Laptop (or other PC), 2016. Disponível em: <http://mininet.org/>. Acesso em: 25 Mar. 2016.

LANTZ, Bob. "Mininet Core Team". Emulator for rapid prototyping of Software Defined Networks, 2016. Disponível em: <https://github.com/mininet/mininet>. Acesso em: 10 Jan. 2017.

NetFPGA, 2011. Disponível em: <http://archive.openflow.org/wk/index.php/NetFPGA/>. Acesso em: 21 Set. 2015.

NOX. Disponível em: <https://sdn-wiki.fokus.fraunhofer.de/doku.php?id=nox>. Acesso em: 28 Set. 2014.

NUNES, Bruno A.; MENDONÇA, Marc; NGUYEN, Xuan-Nam et al. A survey of software-defined networking: Past, present and future of programmable networks, 2014.

OPEN NETWORK FOUNDATION: Our Mission. 2017. Disponível em: <https://www.opennetworking.org/mission/>. Acesso em: 02 Jul. 2017.

PICHINI, Paulo. SDN revoluciona mundo das redes. Baguete, 2013. Disponível em: <http://www.baguete.com.br/artigos/1237/paulo-pichini/22/05/2013/sdn-software-defined-network-revoluciona-mundo-das-redes>. Acesso em: 01 Jul. 2015.

POX. Disponível em: <https://openflow.stanford.edu/display/ONL/POX+Wiki>. Acesso em: 22 Set. 2014.

POX Controller. Disponível em: <https://github.com/noxrepo/pox>. Acesso em: 20 Set. 2017.

RKUO. ONS Tutorial - SDN Essential, 2015. Disponível em: <https://github.com/rkuo/NetworkOS/blob/master/ONS%20Tutorial-SDN%20Essential.md>. Acesso em: 24 Fev. 2017.

ROJAS, Marco Antonio Torrez. “LARC”, Campus Party BR 6, 2013.

ROTHENBERG, Christian Esteve; NASCIMENTO, Marcelo Ribeiro; SALVADOR, Marcos Rogério et al. Openflow e redes definidas por software. CpqD, 2010. Disponível em: <http://www.cpqd.com.br/cadernosdetecnologia/Vol7_N1_jul2010_jun2011/pdf/artigo6.pdf>. Acesso em: 22 Nov. 2014.

RTI: Redes, Telecomunicações e Instalações; Edição 173, Aranda Editora, p. 104-107, São Paulo, 2014.

Page 64: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E …bd.centro.iff.edu.br/bitstream/123456789/1934/1/Texto.pdf · circulam na rede, estruturas complexas devido aos diferentes dispositivos

62

SALISBURY, Brent. Inside Google's Software-Defined Network, 2013. Disponível em: <http://www.networkcomputing.com/networking/inside-googles-software-defined-network/a/d-id/1234201?>. Acesso em: 02 Jul. 2015.

SDXCentral. What is a Floodlight Controller?. 2015. Dinsponível em: <https://www.sdxcentral.com/sdn/definitions/sdn-controllers/open-source-sdn-controllers/what-is-floodlight-controller/>. Acesso em: 10 Fev. 2016.

SDXCentral. What is OpenFlow? Definition and how it relates to SDN. 2014. Disponível em: <https://www.sdxcentral.com/sdn/definitions/what-is-openflow/>. Acesso em Mar. 2017.

Teletex. Redes Definidas por Software: A tecnologia que chegou para ficar, 2014. Disponível em: <http://blog.teletex.com.br/post/97578909487/redes-definidas-por-software-a-tecnologia-que/> Acessoem: 21 Jun 2016.

VANIAN, Jonathan. Facebook shows the promise of SDN with new networking tech. Gigaom, 2014. Disponível em: <https://gigaom.com/2014/11/14/facebook-shows-the-promise-of-sdn-with-new-networking-tech/>. Acesso em: 02 Mar. 2015.

WIRESHARK, 2014. Disponível em: <https://www.wireshark.org/>. Acesso em: 02 Fev. 2015.