Você está na página 1de 18

Projeto de Desenvolvimento em OpenFlow

Prof. Cesar Marcondes 1o Semestre 2011


Tutorial de OpenFlow March 19, 2011.

Introdu c ao

OpenFlow e uma interface aberta para controlar remotamente tabelas de encaminhamento dos switches de rede, roteadores e pontos de acesso. Atuando sob primitivas de baixo n vel, os pesquisadores podem construir novas redes com propriedades de alto n vel. Por exemplo, OpenFlow permite ter seguran ca em redes que por default n ao tem seguran ca, realizar a troca de ponto de acesso sem o de maneira suave (hando), redes escal aveis em data centers, mobilidade de hosts, redes mais ecientes em termos energ eticos e novas redes de longa dist ancia - s o para citar alguns exemplos. Este tutorial e a sua oportunidade de ganhar experi encia com m ao na massa em plataformas e ferramentas de depura c ao u teis para o desenvolvimento de aplica c oes de controle de rede em OpenFlow.

Como o Processo do Openow Funciona?

Em um roteador ou switch cl assico, o encaminhamento de pacotes r apido (data path) e as decis oes de roteamento de alto n vel (control path) ocorrem no mesmo dispositivo. Um Switch OpenFlow separa estas duas fun c oes. A fun c ao de data path ainda reside no switch, enquanto que as decis oes de roteamento de alto n vel s ao movidas para um Controlador, normalmente localizado em um servidor. Os Switches OpenFlow e o Controlador se comunicam atrav es do protocolo OpenFlow, que dene mensagens como: packet-received, send-packet-out, modify-forwarding-table, e get-stats.. O OpenFlow nos permite controlar os uxos - escolhendo as rotas que seus pacotes v ao seguir e o processamento que eles devem receber. Desta forma, o OpenFlow torna poss vel experimentar com novos protocolos, novos modelos de seguran ca, e/ou novos esquemas de endere camento. O data path de um Switch OpenFlow consiste no que e chamado Flow Table, e as a c oes associadas com cada entrada de uxo. 1

Entradas na Tabela de Fluxo

Cada entrada de uxo (ow-entry) na Tabela de Fluxos do Switch tem uma a c ao simples associada a ela. Existem tr es a c oes b asicas: Encaminhar os pacotes deste uxo para uma determinada porta (ou portas). Isso permite que os pacotes sejam roteados atrav es da rede. Na maioria dos switches essa a c ao espera ser efetuada a taxa de linha (na velocidade do hardware). Encapsula e transmite pacotes deste uxo para um controlador. Os pacotes s ao enviados usando um Canal Seguro (Secure Channel), onde ele e encapsulado e enviado a um controlador. Normalmente, isso e utilizado para o primeiro pacote de um novo uxo, de modo que um controlador possa decidir se o uxo dever a ser adicionado ` a tabela de uxo. Ou, em alguns cen arios, ele pode ser usado para redirecionar todos os pacotes para um controlador para realizar algum processamento. Descartar pacotes deste uxo. Isso pode ser usado por motivos de seguran ca, para conter ataques de nega c ao de servi co (DoS), ou para reduzir a transmiss ao de mensagens esp urias de descoberta enviadas a partir de hosts. Cada entrada na tabela de uxo possui tr es campos: 1. Uma regra que dene o uxo, isto e, como os pacotes s ao classicados como parte do uxo. A regra consiste principalmente em fazer o match dos campos de cabe calho do pacote. 2. A a c ao, que dene como os pacotes devem ser processados e 2

3. Estat sticas, que mant em registrado o n umero de pacotes e bytes para cada uxo, e o tempo decorrido desde o u ltimo pacote que fez match com o uxo (para ajudar com a remo c ao de uxos inativos). O cabe calho de uxos e uma tupla de 10 itens conforme mostrado abaixo. Cada campo de cabe calho pode ser denido como um curinga para permitir a agrega c ao de uxos.

Alguns exemplos de entradas da tabela de uxo e a c oes s ao mostradas abaixo.

Em um dos exemplos, um uxo TCP (HTTP com porta 80) pode ser especicado atrav es de todos os dez campos (o exemplo do meio), enquanto que um switch L2 pode inserir uxos que incluem apenas o campo de dst MAC.

3.1

Como o OpenFlow Processa os Pacotes?

Para processar os pacotes no OpenFlow, a maneira mais simples e for car todos os pacotes de um uxo (ou cabe calhos de pacotes na tupla-10) passar pelo Con3

trolador. Para fazer isso, um Controlador n ao precisa adicionar novas entradas de uxos no Switch OpenFlow - ele s o deixa o switch redirecionar por default todos os pacotes para o controlador. Isto tem a vantagem da exibilidade em detrimento do desempenho. Isso pode proporcionar uma maneira u til para testar a funcionalidade de um novo protocolo, mas e pouco prov avel que seja de muito interesse de implanta c ao em uma grande rede. Alternativamente, podemos denir uma entrada da tabela de uxo no switch, assim que o controlador decidir sobre a a c ao correspondente (baseado no protocolo que vamos implementar). Quando pacotes subsequentes chegarem ao Switch, ele ser ao rapidamente processados (na velocidade f sica da linha) pela Tabela de Fluxos.

3.2

O Que e o Controlador OpenFlow?

Um Controlador adiciona e ou remove entradas da tabela de uxos em nome da aplica c ao. Por exemplo, um controlador est atico pode ser uma aplica c ao simples rodando em um PC para estaticamente estabelecer uxos que interliguem um conjunto de computadores de teste durante um experimento. Outro caso que podemos imaginar seriam controladores mais sosticados que podem dinamicamente adicionar / remover uxos enquanto a experi encia progride.

Vis ao Geral do Tutorial

Neste tutorial, voc e vai transformar um controlador de hub que ser a fornecido em um switch de auto-aprendizado baseado em controlador, em seguida em um switch com auto-aprendizado baseado em uxos, e nalmente estender a partir de uma rede com um u nico switch para uma rede de m ultiplos hosts e m ultiplos switches. Voc e tamb em poder a encontrar aqui orienta c oes para novas extens oes.

Ao longo do caminho, voc e vai aprender o conjunto completo de ferramentas de debugging OpenFlow. Voc e tamb em poder a fazer: Ver as tabelas de uxos com dpctl Dissecar as mensagens OpenFlow com o Wireshark Simular uma rede multi-switch, multi-host com a Mininet

Realizar a tarefa de benchmark do controlador usando o cbench Ap os o tutorial, voc e pode aplicar o que aprendeu com redes f sicas baseados em switches de software, NetFPGAs, ou switches em hardware comerciais. Para que possa come car rapidamente, forneceremos uma m aquina virtual pr econgurada com todo o software necess ario.

Pr e-requisitos

Voc e vai precisar de um computador com pelo menos 1 GB (de prefer encia 2GB +) de RAM e pelo menos 5GB de espa co livre no disco r gido (preferencialmente). Um processador mais r apido pode acelerar o tempo de boot da m aquina virtual, e uma tela maior pode ajudar a gerenciar m ultiplas janelas de terminal. Estas instru c oes consideram Linux, OS X e Windows. Linux e OS X s ao os sistemas preferidos - pois h a menos componentes a instalar. Voc e precisa ter acesso administrativo (como root) a m aquina, para instalar software nela. As instru c oes desse tutorial n ao exigem nenhum conhecimento pr evio de OpenFlow !!! Travado em algum problema? Encontrou um bug? Perguntas? Email [OpenFlowdiscuss - at - lists.stanford.edu] se voc e estiver preso em algum problema, se voc e encontrou um bug, ou se quiser enviar algum feedback. Se relatar um bug, tente incluir o m aximo de detalhes sobre o setup assim que poss vel, incluindo o seu Sistema Operacional, software de virtualiza c ao, tamanho de mem oria, e os passos que geram o bug.

Instalando o Software Necess ario

preciso fazer o download destes arquivos individualmente. E Nos arquivos incluem software de virtualiza c ao, um terminal capaz de conectar via SSH, um servidor X, e a imagem da M aquina Virtual. A imagem desse tutorial e distribu da como uma imagem comprimida de VirtualBox (vdi). VirtualBox permite que voc e execute uma m aquina virtual dentro de uma m aquina f sica, e e gratuito e est a dispon vel para Windows, Mac e Linux. Voc e pode exportar a imagem do VirtualBox para o formato vmdk e us a-la com o software VMWare. As instru c oes a seguir pressup oem o uso do VirtualBox.

6.1

Download de Arquivos

preciso baixar os arquivos correspondentes ao seu sistema operacional, al E em da m aquina virtual contendo o tutorial. Comece agora mesmo fazendo o download da imagem da M aquina Virtual do tutorial a partir do Moodle. Isso pode levar algum tempo - pois o tamanho do arquivo da imagem e da ordem de 1GB. Em seguida, realizar o download das outras ferramentas: OS Type Windows Windows Mac Linux OS Version 7 XP OS 10.5 Leopard Ubuntu 10.04 Virtualization Software Virtualbox Virtualbox Virtualbox Virtualbox X Server Xming Xming X11 Servidor X j a instalado Terminal Putty Putty Terminal.app gnome terminal +SSH

Voc e precisa ter cada item das colunas (servidor X, software de virtualiza c ao, e um terminal SSH) instalados em sua plataforma, al em da imagem da M aquina Virtual (cs244-VM.zip).

6.2

Congurando a M aquina Virtual

Descompacte a Imagem de Disco da M aquina Virtual. Pois ele vem comprimido. Vamos precisar descompactar primeiro. Aviso: Esta etapa pode levar um certo tempo - o arquivo vdi descompactado tem cerca de 3GB. Usu arios de Windows: descompactem a imagem a partir do Windows Explorer. Usu arios Linux (e usu arios OS X que preferem linha de comando) a partir de um terminal, descompacte a imagem da m aquina virtual assim: $ unzip cs244-VM.zip

Iniciando a M aquina Virtual


Abrir o VirtualBox. Selecione New Pressione o bot ao Continue para o prompt seguinte. Coloque um nome na sua MV openow, escolher Sistema Operacional Linux, vers ao Ubuntu. Clique em Continue. Aloque 512MB de mem oria e clique em Continue

preciso congurar uma nova m E aquina virtual (MV) no Virtualbox.

Nesse ponto o Virtualbox deve pedir se deseja criar um novo disco r gido, ou usar um j a existente. Selecione Use existing hard disk. Clique no cone para selecionar o disco r gido. Isto ir a abrir o Virtual Media Manager Window. Pressione Add e localize o arquivo cs244.vdi extra do nas etapas anteriores. Clique em Select e, em seguida Continue. Sua instala c ao da MV est a completa. Pressione Done. Voc e precisa de mais uma passo antes de terminar a congura c ao da MV. Selecione a sua VM no virtualbox e v a at e a aba Settings. V a para Network>Adapter 2. Selecione a caixa Enable adapter, e coloque a op c ao host-only network. Isto far a com que voc e consiga acessar facilmente a sua m aquina virtual a partir da m aquina host (sua m aquina f sica). Nesse ponto, voce deve estar pronto para iniciar a sua MV. Pressione Run ou de um duplo-clique na MV a partir da janela do VirtualBox. Ao realizar o boot, entre com o username e password, que s ao ambos openow. Observe que o usu ario openow e um sudoer (capaz de executar opera c oes administrativas no Linux).

7.1

Escolher o Editor preferido

Nano, Vim, Emacs, o Gedit j a vem instalados na MV OpenFlow. Uma breve introdu c ao para cada um dos editores segue: Nano: Voc e pode modicar um arquivo imediatamente. E quando terminar, pressione ctrl-x, ent ao diga Yes no prompt para salvar e sair. Vim: modicar um arquivo, digite i para entrar no modo de Inser c ao, em seguida, use as setas do teclado para navegar e editar. Quando terminar, pressione a tecla esc, e ent ao digite :wq, ent ao pressione Enter para salvar e sair. Emacs: voc e pode modicar um arquivo imediatamente. Ao terminar, pressione ctrl-x, ctrl-s, e ent ao pressione ctrl-x, ctrl-c para sair. Gedit: o editor de texto gr aco, nenhum instru c ao e necess aria. Eclipse: O Eclipse n ao vem instalado. Eclipse e suas depend encias v ao exigir cerca de 500MB de espa co extra na imagem da MV, por isso n ao e inclu do. Se voc e tiver instalado o Eclipse no host, e utilizar o recurso Remote Systems Explorer pode ser uma maneira conveniente de acessar e modicar arquivos de texto na MV, com outras v arias vantagens do Eclipse, como destaque para highlight da sintaxe. Se voc e tiver outro editor de texto preferido, sinta-se livre para instalar: $ sudo apt-get install editor

7.2

Notas sobre o Prompt de Comando

Neste tutorial, os comandos s ao mostrados juntamente com um prompt de comando para indicar o subsistema que se destinam. Por exemplo, $ ls indica que o comando ls deve ser digitado em um prompt de comando do sistema Unix (Linux ou OS X) o que signica um prompt $, se voc e e um usu ario normal ou # se voc e for root, do Linux. Outros prompts usados neste tutorial incluiem mininet> onde s ao digitados comandos de console para o Mininet e C:> para comandos que s ao feitos via prompt de comandos do Windows (cmd.exe).

7.3

Congurando o Acesso a Rede

A MV do tutorial n ao tem um ambiente gr aco de trabalho (KDE, Gnome) para reduzir seu tamanho. Entretanto, todos os exerc cios poder ao ser feitos por meio de redirecionamento X dos displays gr acos dos programas atrav es do servidor X, que est a rodando no sistema operacional hospedeiro (ex. Xming no caso do Windows). Para iniciar o encaminhamento do servidor X (X forwarding), primeiramente e preciso descobrir o endere co IP da MV. 7.3.1 VirtualBox

A MV possui duas interfaces de rede. Ele usa uma interface para acessar a Internet, e a outra e para comunicar diretamente com a m aquina hospedeira. Ambas as interfaces s ao conguradas com o DHCP, portanto ao inicializar elas j a devem ter um endere co IP associado a elas. Nenhuma congura c ao adicional ser a necess aria.

7.4

Acessando a MV via SSH

Nesta etapa, voc e poder a vericar se pode conectar do seu computador host (o seu laptop f sico, por exemplo) para a MV guest (Tutorial OpenFlow) via SSH. Em primeiro lugar, a partir do console da m aquina virtual fa ca o LOGIN como o usu ario openow com senha openow, e DEPOIS de logar, digite: $ ifcong Voc e dever a ver tr es interfaces (eth0, eth1, lo), ambas eth0 e eth1 devem ter endere cos IP atribu dos. Se este n ao for o caso, por algum problema, digite: $ sudo dhclient Tome nota do endere co IP atribu do a eth1; voc e vai precisar dele mais tarde. 8

O pr oximo passo e fazer o login via SSH, o que vai depender do seu sistema operacional. 7.4.1 Mac OS X e Linux

Abra um terminal (Terminal.app no Mac, Gnome terminal no Ubuntu). A partir desse terminal, digite: $ ssh -Y openFlow @ [Endere co IP do Guest] Substitua [Endere co IP do Guest] com o endere co IP que voc e acabou de anotar. Entre com a senha openow. A op c ao -Y e para Habilitar um X11 forwarding com aspectos de seguran ca. E em seguida, teste se o encaminhamento do servidor X11 (X11 forwarding) est a rodando na m aquina local, com o comando: $ xterm e uma nova janela do terminal deve aparecer. Se voc e tiver sucesso, ent ao est a feita a congura c ao b asica. Feche o xterm. Feche o xterm. Se voc e receber uma mensagem Display not set error, verique a instala c ao do servidor X nas se c oes acima. 7.4.2 Windows

Iniciar Xming com a op c ao X forwarding (clique no Xming para congur a-lo. Para ativar o X Forwarding, clique em PuTTY-> Connection->SSH->X11, e em seguida, clique em Forwarding->Enable X11 Forwarding, conforme demonstrado na gura abaixo:

Ap os essa congura c ao (clicando em OK) nada de emocionante deve acontecer, mas voc e deve ver um cone do lado direito da barra de ferramentas do Putty. Abra um terminal no Windows: Clique no bot ao do Windows Iniciar, depois Executar Digitar cmd. Mude para o diret orio onde voc e salvou o putty. C:> cd diretorio E ent ao executar: C:> putty.exe -X openow @ [Endere co IP do Guest] Substitua [Endere co IP do Guest] com o endere co IP que voc e acabou de anotar. Uma nova janela se abrir a, digite a senha openow. E agora, digite: $ xterm Uma janela com um terminal branco deve aparecer. Se voc e tiver sucesso, est a pronta a congura c ao b asica. Feche o xterm.

10

Aprendendo as Ferramentas de Desenvolvimento

Nesta se c ao, voc e se familizar a com o ambiente de desenvolvimento. Nesse processo, ser ao apresentadas as ferramentas, que mais tarde ser ao u teis para transformar o HUB fornecido para um self-learning SWITCH. Cobriremos tanto as ferramentas de debug gerais quanto as espec cas de OpenFlow. Vamos denir os termos, come cando com os tipos de terminal: terminal console do VirtualBox: conex ao com o tutorial OpenFlow. Esse e o console criado quando voc e iniciou a MV. N ao e poss vel copiar e colar a partir desse documento PDF para este terminal de console. Mas, n ao ser a muito necess ario uma vez que voc e conseguir congurar a rede. terminal SSH: permite conectar-se ao Tutorial OpenFlow. Ele e criado a partir do putty no Windows ou SSH no Mac OS X/Linux, conforme poss descrito na se c ao anterior. E vel copiar e colar a partir desse terminal. terminal xterm: conecta-se a um host virtual da rede virtual. Criado na se c ao seguinte, quando voc e inicia a rede virtual. Ele e identicado por um r otulo no topo da janela contendo o nome do host. A MV do Tutorial OpenFlow inclui uma s erie de utilit arios de rede, pr einstalados, sejam gerais ou espec cos de OpenFlow (OF). Seguem algumas descri c oes curtas dessas: Controlador OpenFlow: situa-se acima da interface Openow. A distribui c ao de refer encia do OpenFlow inclui um controlador que age como um self-learning Switch Ethernet em combina c ao com um switch OpenFlow. Voc e vai execut a-lo e olhar as mensagens sendo enviadas. Ent ao, na pr oxima se c ao, voc e ir a escrever o seu pr oprio controlador usando ou NOX ou Beacon (que s ao plataformas de programa c ao para voce escrever suas pr oprias aplica c oes controladoras). Switch OpenFlow: situa-se abaixo da interface OpenFlow. A distribui c ao de refer encia OpenFlow inclui uma op c ao de switch em software em user-space. Open vSwitch e uma outra op c ao de switch em software, mas baseado no kernel, al em disso existe um n umero de op c oes dispon veis a partir de hardware Broadcom (como a vers ao Indigo de Stanford), HP, NEC e outros. dpctl: utilit ario de linha de comando que envia mensagens r apidas do protocolo OpenFlow, u til para visualizar porta do switch e estat sticas de uxo, al em de manualmente inserir entradas de uxo. Wireshark: utilit ario gr aco geral para a visualiza c ao de pacotes (n ao e espec co de OF). A distribui c ao de refer encia OpenFlow inclui um Wireshark dissector, que disseca e analisa as mensagens OpenFlow enviado pela porta padr ao do OpenFlow (6633), de forma convenientemente leg vel. 11

iperf : utilit ario geral de linha de comando para testar a velocidade de uma u nica conex ao TCP. Mininet: plataforma de emula c ao de rede. Mininet cria uma rede virtual OpenFlow - com controlador, switches, hosts e links - em uma u nica m aquina real ou m aquina virtual. Existe uma p agina de Mininet na Web. cbench: utilit ario que testa a taxa de instala c ao de uxos (ow setup rate) em controladores OpenFlow. Desse ponto em diante, certique-se de que est a digitando o comando correto! Por exemplo, digitar manualmente sudo dpctl show nl:0 pode parecer correto, mas pode causar um erro; pois nl e a abrevia c ao de NetLink e n ao n junto com um 1.

8.1

Iniciando a Rede

A rede que usaremos para o primeiro exerc cio inclui tr es hosts e um switch (e, eventualmente, um controlador OpenFlow, mas vamos chegar nesse mais tarde):

Para criar esta rede na VM, no terminal SSH, digite: $ sudo mn topo single,3 mac switch ovsk controller remote uma topologia contendo 3 hosts e um u nico switch (do tipo openvSwitch), congurar os endere cos MAC de cada host igual ao seu IP, e apontar para um controlador remoto cujo o padr ao e o localhost. Aqui est ao os passos que o Mininet acabou de fazer:

12

Criou 3 hosts virtuais, cada uma contendo um endere co IP separado. Criou um u nico switch em software OpenFlow no kernel com 3 portas. Conectou cada host virtual ao switch com um cabo ethernet virtual. Deniu o endere co MAC de cada host sendo parecido com o seu IP. Congurou o switch OpenFlow para se conectar a um controlador remoto.

8.2

Breve Introdu c ao ao Mininet

Como voc e estar a trabalhando com o Mininet para todo esse tutorial, vale a pena aprender alguns comandos espec cos de Mininet ($ sudo mn -c): Para ver a lista de n os dispon veis, no console do Mininet, digite: mininet> nodes Para ver a lista de comandos dispon veis, no console do Mininet, digite: mininet> help Para executar um u nico comando em um n o virtual, e s o prexar o comando com o nome do n o. Por exemplo, para vericar o endere co IP de um host virtual, no console do Mininet, digite: mininet> h2 ifcong Uma alternativa a esse comando acima - e que e melhor para executar comandos interativos e assistir a sa da de debugging - e gerar um xterm para cada host virtual (seja um ou mais hosts virtuais) e depois digitar os comandos diretamente nos xterm equivalentes. Para isso, digite no console do Mininet: mininet> xterm h2 h3 Se Mininet n ao estiver funcionando corretamente (ou deixou de funcionar e precisa ser reiniciado), primeiro use o comando exit ou control-D e tente limpar todo o estado residual ou processos por meio do comando: $ sudo mn -c o que faz o Mininet executar novamente. O Mininet tem uma innidade de outros comandos e op c oes de inicializa c ao que podem ajudar na depura c ao. Por em esse pequena introdu c ao e suciente para este tutorial. Se voc e estiver curioso sobre outras op c oes, procure o manual do Mininet na Web. 13

8.3

Exemplo de Uso do Comando dpctl

dpctl e um utilit ario que vem com a distribui c ao de refer encia OpenFlow e permite visibilidade e controle sobre uma tabela de uxos de um u nico switch. Ele e especialmente u til para debugging, por permite exibir o estado dos uxo e os contadores de uxo. A maioria dos switches OpenFlow come ca com uma porta de escuta passiva (em sua congura c ao atual essa e a porta 6634), na qual e poss vel interagir com o switch, sem ter que adicionar c odigo de debugging no controlador. Crie uma segunda janela SSH se voc e ainda n ao tiver uma, e execute: $ dpctl show tcp:127.0.0.1:6634 O comando show conecta ao switch e descarrega o estado de suas portas e capacidades. Aqui est a um comando ainda mais u til: $ dpctl dump-ows tcp:127.0.0.1:6634 Como ainda n ao iniciamos nenhum controlador, a sua tabela de uxos (owtable) deve estar vazia.

8.4

Teste de Ping

Agora, volte ao console Mininet e tente fazer ping entre h2 e h3. Portanto, digite no console do Mininet: mininet> h2 ping -c3 h3 Note que o nome do host h3 e automaticamente substitu do quando s ao executados comandos no console do Mininet aparecendo o seu endere co IP (10.0.0.3). E a ? Voc e conseguiu obter alguma resposta do ping? Por qu e? Por que n ao? Como voc e viu antes, a tabela de uxos do switch est a vazia. Al em disso, n ao h a nenhum controlador ligado ao switch e, portanto, o switch Openow n ao sabe o que fazer com o tr afego de entrada, levando a falha do comando ping. Vamos usar o dpctl para manualmente instalar os uxos necess arios. Ent ao no seu terminal SSH: $ dpctl add-ow tcp:127.0.0.1:6634 in port=1,actions=output:2 $ dpctl add-ow tcp:127.0.0.1:6634 in port=2,actions=output:1 Isto ir a transmitir pacotes vindos na porta 1 para a porta 2 e vice-versa. E

14

poss vel vericar essa congura c ao, analisando a tabela de uxos. $ dpctl dump-ows tcp:127.0.0.1:6634 Execute novamente o comando ping a partir do console do Mininet. mininet> h2 ping -c3 h3 Dessa vez voc e obteve as respostas? Verique a tabela de uxos novamente isso que voc e agora observe as estat sticas para cada uxo de entrada. E e esperava ver baseado no tr afego ping? OBS: se voc e n ao observar qualquer respostas de ping chegando, talvez seja o caso de que as entradas de uxos terminaram antes de voc e come car a executar o teste de ping. Quando voc e digita um dump dpctl-ows voc e poder a observar uma op c ao para cada entrada chamada idle timeout, cujo padr ao e 60. Isso signica que HOUVER nenhum tr que o uxo ir a expirar ap os 60 secs SE NAO afego de entrada. Tente executar novamente o comando respeitando esse limite, ou instale uma entrada de uxo com um tempo de timeout maior. $ dpctl add-ow tcp:127.0.0.1:6634 in port=1,idle timeout=120,actions=output:2

8.5

Iniciando o Wireshark

A imagem da MV inclui o Wireshark com OpenFlow dissector pr e-instalado. O Wireshark e extremamente u til para assistir as mensagens do protocolo OpenFlow, bem como no debugging em geral. Inicie um novo terminal SSH e se conecte a MV usando X forwarding, se voc e estiver usando Mac OS X ou Linux e s o digitar: $ ssh -X openFlow @ [Endere co IP do Guest] Se voc e estiver usando putty.exe, digite: C:> putty.exe -X openow @ [Endere co IP do Guest] Agora abra o Wireshark: $ sudo wireshark & Voc e provavelmente vai receber uma mensagem de aviso que est a usando o wireshark como superusu ario (root). Pressione OK. Clique em Capture->Interfaces na barra de menu. Clique no bot ao Start ao 15

lado de lo, que e a interface de loopback. Voc e vai come car a ver alguns pacotes passando. Agora, crie um ltro para o tr afego de controle do OpenFlow, atrav es da digita c ao of na Filter box perto do topo: of Pressione o bot ao Apply para aplicar o ltro para todo o tr afego que estiver passando.

8.6

Iniciando o Controlador e Observando as Mensagens de Inicializa c ao no Wireshark

Agora que voc e esta com o Wireshark na escuta do tr afego, iniciar o Controlador de refer encia OpenFlow. Digitando no seu terminal SSH: $ controller ptcp: Isso vai iniciar um Controlador simples que atua como um switch de autoaprendizado sem instalar quaisquer entradas na tabela de uxos. Voc e vai ver um monte de mensagens exibidas no Wireshark, a partir da troca de mensagens Hello. Como exemplo, no Wireshark busque a mensagem Features Reply. Clique no tri angulo da linha escrita OpenFlow Protocol na se c ao central que permite expandir os campos de mensagem. Clique no tri angulo contendo Switch Features para mostrar as capacidades de datapath - sinta-se a vontade para explorar os campos. A tabela a seguir inclui estas mensagens trocadas: Mensagem Hello Tipo Descri c ao Controller->Switch em seguida ao handshake TCP, o controlador envia o seu n umero de vers ao para o switch. Hello Switch->Controller o switch responde dizendo o seu n umero de vers ao. Features RequestController->Switch o controlador pede para ver quais portas est ao dispon veis. Set Cong Controller->Switch neste caso, o controlador pede ao switch para enviar uxos que expirarem. Features Reply Switch->Controller o switch responde com uma lista de portas, velocidades de portas, e tabelas e a c oes suportadas. Port Status Switch->Controller permite ao switch informar ao controlador sobre mudan cas em velocidades das portas e conectividade. Ignore essa mensagem por agora, e um recurso inst avel. Como todas as mensagens s ao enviadas ao localhost quando estamos usando o Mininet, determinar o remetente de uma mensagem pode ser confuso, espe16

cialmente quando estamos emulando um monte de switches. No entanto, isso n ao ser a um problema, uma vez que o controlador est a no porta padr ao OpenFlow (6633), enquanto que cada switch na resposta usa uma porta diferente de n vel de usu ario.

8.7

Vendo as Mensagens OpenFlow geradas pelo Ping

Agora, n os veremos as mensagens geradas em resposta aos pacotes ICMP. Antes de atualizar o seu ltro do Wireshark para ignorar as mensagens OF echorequest/reply (que s ao utilizadas para manter a conex ao entre o switch e controlador viva): Digite o seguinte no seu ltro do Wireshark, e em seguida pressione Apply: of && (of.type != 3) && (of.type != 2) Execute um ping para ver as mensagens OpenFlow sendo usadas. Na console do Mininet execute: mininet> h2 ping -c1 h3 Na janela Wireshark, voc e observar a uma s erie de novos tipos de mensagens: Mensagem Packet-In Tipo Descri c ao Switch->Controller um pacote foi recebido e ele n ao fez match com nenhuma entrada na tabela de uxos do switch, o que causa ao pacote ser enviado ao controlador. Packet-Out Controller->Switch o controlador envia um pacote atrav es de uma ou mais portas do switch. Flow-Mod Controller->Switch instrui o switch a adicionar um uxo em particular na sua tabela de uxos. Flow-ExpiredSwitch->Controller ocorreu um time out de um uxo ap os um per odo de inatividade. Primeiramente, voc e ver a uma requisi c ao ARP que n ao ter a match na tabela de uxo, essa ir a gerar uma mensagem broadcast Packet-Out. Em seguida, a resposta ARP volta; com ambos os endere cos MAC dos hosts agora conhecidos pelo Controlador, ele ent ao pode empurrar uma entrada de uxo para o switch atrav es da mensagem Flow-Mod. O switch ent ao, empurra entradas de uxos para os pacotes ICMP. Requisi c oes ping subsequentes v ao direto pelo datapath, e n ao geram mais mensagens extras; com as entradas de uxos conectado H2 e H3 j a descarregados no switch, n ao h a mais envolvimento do controlador. Re-execute o comando ping novamente a partir do console do Mininet (basta pressionar a tecla para cima, pois o console do Mininet tem um buer de hist orico):

17

mininet> h2 ping -c1 h3 Se o ping levar a mesma quantidade de tempo de novo, execute o ping mais uma vez (a id eia e ver o ganho em tempo por causa do datapath estabelecido). Este e um exemplo do uso em modo reativo do OpenFlow, quando os uxos s ao descarregados do controlador para baixo em resposta a pacotes individuais. Outra alternativa, os uxos podem ser descarregados para baixo, antes dos pacotes aparecerem, este e um modo pr o-ativo, para evitar o tempo de ida e volta ao controlador e os atrasos de inser c ao de uxo.

8.8

Fazendo o Benchmark do Controlador com o iperf

iperf e uma ferramenta de linha de comando para verica c ao de velocidade de transferencia entre dois computadores. Aqui, voc e far a o benchmark do Controlador de refer encia, mais tarde, voc e vai comparar o Controlador hub fornecido, e sua implementa c ao de um switch baseado em uxos. Para fazer o experimento, no console do Mininet execute: mininet> iperf Este comando do Mininet executa um servidor iperf TCP em um virtual host, e em seguida, executa um cliente iperf em um segundo host virtual. Uma vez conectados, eles geram uma rajada de pacotes entre si e comunicam os resultados. Agora vamos comparar o resultado com o switch em user-space. No console do Mininet digite para sair e depois inicie o mesmo Mininet com a op c ao de switch em user-space: mininet> exit $ sudo mn topo single,3 mac controller remote switch user Execute mais um teste usando iperf com o controlador de refer encia: mininet> iperf Viu a diferen ca? Com o switch em user-space, os pacotes precisam cruzar o user-space para o kernel-space e vice-versa em cada hop, ao inv es de permanecer no espa co do kernel aos pacotes atravessarem o switch. O switch de user-space e mais f acil de modicar (n ao temos nenhum kernel oops para lidar), mas ele e mais lento para simula c ao. Saia do Mininet: mininet> exit 18

Você também pode gostar