Você está na página 1de 10

SDN

Introdução às Práticas

1
Ferramenta - Mininet (1)

• Grande ferramenta de testes e desenvolvimento, ideal para


fase de prototipação. Google usa algo como mininet antes da
implantação.
• Rede Virtual na Comodidade da sua Maquina (Espaço do
usuário => leve)
• Topologias e Quantidades de Nós Arbitrárias

mininet.org:
“Mininet is distributed as a virtual machine (VM) image with all
dependencies pre-installed, runnable on common virtual
machine monitors such as VMware, Xen and VirtualBox. This
provides a convenient container for distribution; once a
prototype has been developed, the VM image may be
distributed to others to run, examine and modify.”
2
Ferramenta - Mininet (2)

• Introdução ao Mininet:
• https://github.com/mininet/mininet/wiki/Introduction-
to-Mininet

• http://mininet.org/walkthrough/

• Vantagem: Emular comportamentos de uma rede SDN sem


dispor do equipamento de fato. Análise rápida de resultados.

• Limitação: Recursos compartilhados com a máquina, dificil


reproduzir desempenho real.

3
Ferramenta - Mininet (3)
• Há uma versão de máquina virtual Mininet na página do
curso: http://www.comp.ita.br/~cecilia/ces-35/mininet-
2.2.0-150106-ubuntu-14.04-server-amd64.zip

• Colocar em C:\Users\ITA\VirtualBox VM e extrair o .zip.

• No VirtualBox criar a máquina Virtual Mininet2-2.


Na criação colocar opção de máquina Linux, Ubuntu, com
disco rígido virtual existente. A imagem é a extraída do .zip:
mininet-vm-x86_64.vmdk.

• Nesta máquina, configure dois Adaptadores de Rede:


Adaptador 1: NAT – para acesso a Internet – vamos baixar
pacotes;
Adaptador 2: HostOnly – para acesso a maquina Windows. 4
Ferramenta - Mininet (4)
• Ative a Mininet2-2.
• A VM não tem interface gráfica. Atribua IP a interface HostOnly se
ela não tiver ainda (sudo dhclient eth1 ou
ifconfig eth1 192.168.56.102 ). Pingue o Windows.

• Ative o Mininet criando uma rede virtual de 3 nós:


$ sudo mn --topo single,3 --mac --controller remote --
switch ovsk, protocols=OpenFlow13

• Este comando cria uma topologia simples com um switch e 3 nós


ligados a ele, com mac.... E um controlador na porta default 6633.
Utiliza um switch virtual

5
Ferramenta - Mininet (4)
• Alguns comandos para investigar a topologia criada:

• > nodes
• > ports
• > links
• > dump
• > h1 ping h2

• Não vai funcionar ainda pois não há controlador ativado e


portanto o switch não aprendeu ainda o que fazer quando chega
um pacote

6
Ferramenta - Mininet (5)
• Para trabalhar com várias janelas simultaneamente, vamos ativar
a interface gráfica do X11.

• Rodar o XMing como admin no Windows. Este programa vai


aceitar a saída gráfica no Windows.

• Faça um ssh da hospedeira para o Mininet (endereço fornecido


pelo dhclient). No programa putty, coloque o IP do HostOnly e
marque na opção X11 -> forwarding como Enable , isto quer dizer
que a saída x11 será enviada para o Xming. Faça novamente o
login como usuário mininet, senha mininet.

• Na janela aberta pelo ssh, chame o emulador de terminal em


background: xterm&. Pode ativar várias janelas simultaneamente.
7
Controlador Ryu (1)
• Subir o controlador Ryu.
• Se já estiver instalado python e Ryu:
• No diretório /home/mininet/ryu digite
• $ sudo ./bin/ryu-manager –verbose
ryu/app/simple_switch_13.py

• Ao repetir o slide 5 – ativação do Mininet – o ping deve funcionar.


O script simple_switch_13.py manipula o evento de chegada de
pacote desconhecido e cria a regra de encaminhamento
adequada.

• Inspecione o simple_switch_13.py

8
Controlador Ryu (2)
• Se não estiver instalado, comece pelo Python:
sudo apt-get install python-eventlet python-routes
python-webob python-paramiko
• Em seguida o Ryu:
git clone git://github.com/osrg/ryu.git
cd ryu; python ./setup.py install
• Algumas maquinas nao rodaram diretamente, foi preciso instalar
o pip para instalar um modulo complementar:
sudo apt-get update
sudo apt-get install python-pip
pip install `oslo.config<2.0.0`
• Site de referência do Ryu:
• https://osrg.github.io/ryu/
• Um tutorial simples:
• https://github.com/osrg/ryu/wiki/OpenFlow_Tutorial 9
Script de Ativação

• É possível escrever scripts para ativar o mininet:

A API de Mininet permite criar redes customizadas com


algumas poucas linhas de Python:
from mininet.net import Mininet
from mininet.topolib import TreeTopo
tree4 = TreeTopo(depth=2,fanout=2)
net = Mininet(topo=tree4)
net.start()
h1, h4 = net.hosts[0], net.hosts[3]
print h1.cmd('ping -c1 \%s' \% h4.IP())
net.stop()
Cria uma pequena rede (4 hosts, 3 switches), e realiza pings de
um host para o outro (por cerca de 4 segundos)
10

Você também pode gostar