Software-Defined Networks e Openflow: conceitos e tecnologias emergentes Semana de Computação UFBA (SEMCOMP 2012) Universidade Federal da Bahia Italo Valcy <italo@dcc.ufba.br> 05 de outubro de 2012
Licença de uso e atribuição Todo o material aqui disponível pode, posteriormente, ser utilizado sob os termos da: Creative Commons License: Atribuição - Uso não comercial - Permanência da Licença http://creativecommons.org/licenses/by-nc-sa/3.0/ O conteúdo desta apresentação foi baseado no material disponibilizado pela comunidade Openflow.org, em especial no Tutorial Brasileiro, disponível em <http://www.openflow.org/wk/index.php/brazil_tutorial> 2 / 31
Rede ossificada Infraestrutura de redes atual: equipamentos proprietários, fechados e de alto custo; circuitos dedicados (ASIC); camada de software de controle Necessário: especialização da lógica de controle para cada tipo e objetivo de rede Padronização dos protocolos (RFCs, ISOs, padrões IEEE) Problema: As funcionalidades são engessadas (ossificadas) pelos protocolos existentes (BGP, OSPF, IEEE802.1, IEEE802.3, QinQ, Vlan, Vlan Translation, MPLS/VPLS, etc.) Mudança, especialização ou inserção na lógica de controle está sujeita ao clico de desenvolvimento e testes restritos ao fabricante! (HAMILTON, 2009) 3 / 31
Rede ossificada No âmbito da pesquisa, essas exigências são ainda maiores: Experimentação de novos protocolos e funcionalidades da rede em condições reais Idealmente experimentar em ambientes espelhados da rede em operação Como criar uma rede de experimentação sem interferir na rede de produção? 4 / 31
Rede ossificada Redes de produção mais complexas precisam de soluções específicas: Proprietárias -> Pre-stantard -> draft -> RFC Exemplo: TRILL (Transparent Interconnection of Lots of Links) Paper Radia Joy Perlman (2004) RFC 6325 (2011) Exemplo: IPv6 RFC 2460: dez/1998 (obsoletes rfc1883, dez/1995) Todo esse processo leva tempo... 5 / 31
Solução em software Algumas redes complexas poderiam ter soluções mais fáceis de administrar se baseadas em software: E se usarmos um Linux? (network namespaces, netfilter, quagga, etc.) Como fazer isso sem perder a velocidade das implementações em hardware dos switches/routers? 6 / 31
Solução centralizada Trocar um critério de decisão local (router) por um controle centralizado global!!!! Com replicação para tolerância a falhas e desempenho 7 / 31
Agenda Arquitetura SDN Openflow: funcionamento e cenários Alguns detalhes técnicos Utilização do Openflow TODO 8 / 31
A rede atual Roteamento, gerencia, mobilidade, controle de acesso, VPN, Feature Feature Operating System Specialized Packet Forwarding Hardware Verticalização Fechado, proprietário Inovação lenta 9 / 31
A rede atual Featu re Featur e Caixas pretas fechadas Operating System Specialized Packet Forwarding Hardware Featu re Featu re Operating System Specialized Packet Forwarding Hardware Featur e Operating System Specialized Packet Forwarding Hardware Featu re Featu re Featur e Featur e Featur e Operating System Specialized Packet Forwarding Hardware Operating System Specialized Packet Forwarding Hardware 10 / 31
A Rede definida por software Feature Feature Network OS Packet Forwarding Packet Forwarding Packet Forwarding Packet Forwarding Packet Forwarding 11 / 31
A Rede definida por software 3. API aberta bem definida Feature Feature 2. Pelo menos um SO de rede (provavelmente muitos) Open- and closed-source Network OS 1. Interface aberta para acesso ao hardware (e.g. Openflow) Packet Forwarding OpenFlow Packet Forwarding Packet Forwarding Packet Forwarding Packet Forwarding 12 / 31
Openflow Openflow é uma interface aberta para controlar remotamente a tabela de encaminhamento de equipamentos de rede como switches, roteadores e access points. A partir dessa primitiva de baixo nível, pesquisadores podem construir redes com novas propriedades de alto nível. 13 / 31
Ethernet Switch/Router Fonte: Nick McKeown (Stanford), SDN CIO Summit 2010 14 / 31
Control Path (Software) Data Path (Hardware) Fonte: Nick McKeown (Stanford), SDN CIO Summit 2010 15 / 31
OpenFlow Controller OpenFlow Protocol (SSL) Control Path OpenFlow Data Path (Hardware) Fonte: Nick McKeown (Stanford), SDN CIO Summit 2010 16 / 31
Exemplo do OpenFlow 17 / 31
Exemplo do OpenFlow 18 / 31
OpenFlow é um protocolo, SDN é uma arquitetura Redes Definidas por Software (SDN) refatoram o relacionamento entre os dispositivos de rede e o software que os controla OpenFlow é uma interface aberta que permite um controle mais flexível e previsível da rede, tornando fácil estender sua função. [HotSDN'12 CFP] 19 / 31
OpenFlow é um protocolo, SDN é uma arquitetura Redes Definidas por Software (SDN) refatoram o relacionamento entre os dispositivos de rede e o software que os controla OpenFlow é uma interface aberta que permite um controle mais flexível e previsível da rede, tornando fácil estender sua função. [HotSDN'12 CFP] 20 / 31
Como funciona o Openflow? 21 / 31
Como Openflow funciona If header = x, send to port 4 Network OS If header = y, overwrite header with z, send to ports 5,6 If header =?, send to me OpenFlow/SSL/TCP OpenFlow Switch OpenFlow Switch Flow Table OpenFlow Switch OpenFlow Fonte: Nick McKeown (Stanford), SDN CIO Summit 2010 Switch 22 / 31
Como Openflow funciona Definição: fluxo É uma sequência unidirecional de pacotes na qual todos os pacotes compartilham um conjunto de valores de cabeçalho 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... 23 / 31
Como Openflow funciona Quando o switch recebe um pacote ele deve compará-lo com sua tabela de fluxo Fonte: Leandro Bertholdo (PoP-RS), 13o WRNP 24 / 31
Como Openflow funciona Se o cabeçalho não for compatível com nenhum fluxo em sua tabela, o switch deve encaminhar o cabeçalho (ou pacote todo) para o controlador Fonte: Leandro Bertholdo (PoP-RS), 13o WRNP 25 / 31
Como Openflow funciona Ao receber o pacote, o controlador deve tomar uma decisão e Enviar uma requisição de mudança da tabela de fluxos do switch Devolver o pacote (ou o cabeçalho + buffer-id) Indicar uma ação para o pacote Ou.. descartar Fonte: Leandro Bertholdo (PoP-RS), 13o WRNP 26 / 31
Tabela de fluxos Fonte: OpenFlow Brazil Tutorial, SBRC 2010 27 / 31
Tabela de fluxos - Exemplos Fonte: OpenFlow Brazil Tutorial, SBRC 2010 28 / 31
Cenários com Openflow Controle Centralizado vs Distribuído 29 / 31
Cenários com Openflow Encaminhamento de fluxos individual vs Agregado Fluxos individuais Cada fluxo individual é criado pelo controlador Coincidência exata dos campos do fluxo (1:1) Controle granular da rede (ex: redes de campus) Fluxos agregados Uma entrada na tabela cobre um grupo de fluxos Entrada coringa de fluxo Bom para controlar uma grande quantidade de fluxos (ex: backbone) 30 / 31
Cenários com Openflow Tabela de fluxos dinâmica vs estática Dinâmica O primeiro pacote dispara uma inserção de fluxos pelo controlador Delay adicional para configuração por fluxo Adaptatividade da rede Se perder a comunicação com o controller, o comutador tem utilidade limitada Estática O controlador popula previamente a tabela de fluxos Requer regras essencialmente agregadas (coringas) Rede com topologia fixa 31 / 31
Exemplo (tiny-switch.py) def datapath_join_callback(dpid, stats): logger.info('switch %x has joined the network' % dpid) if dpid == 1: inst.install_datapath_flow(dpid, { core.in_port : 1 }, openflow.ofp_flow_permanent, openflow.ofp_flow_permanent, [[openflow.ofpat_output, [0, 3]]], priority=1) inst.install_datapath_flow(dpid, { core.in_port : 3 }, openflow.ofp_flow_permanent, openflow.ofp_flow_permanent, [[openflow.ofpat_output, [0, 1]]], priority=1) (...) 32 / 31
Protocolo Openflow Versões: v1.0 (December 31, 2009) 12 campos para matching de flows Suporte à múltiplas filas por porta Estatísticas por portas v1.1 (February 28, 2011) Múltiplas tabelas Grupos (abstração para conjunto de portas) Tags de VLAN e MPLS (QinQ, add/del/modify) Tratamento na falha de conexão com o controller Portas virtuais (útil para LAG, tunnels)... 33 / 31
Protocolo Openflow Versões: v1.2 (December 5, 2011) Suporte a matching de campos mais flexível Simplificação de funcionalidades Suporte à IPv6... v1.3 (June 25, 2012).. 34 / 31
Protocolo Openflow Tipos de mensagem O protocolo Openflow suporta três tipos de mensagem (cada um com outros sub-tipos): Controller-to-switch: iniciadas pelo controller e usadas para gerenciar ou inspecionar o estado do switch Asynchronous: iniciadas pelo switch e usadas para atualizar o controller dos eventos da rede e mudanças no switch Symmetric: podem ser iniciadas pelo controller ou pelo switch sem solicitação 35 / 31
Protocolo Openflow Tipos de mensagem Controller-to-switch (algumas): Features: quais capabilities o switch suporta? Modify-state: add/delete/modify flows na tabela de flows do switch Read-State: obter estatísticas da tabela de flows, portas ou flows individuais Send-Packet: usado pelo controller para enviar pacotes para uma porta do switch 36 / 31
Protocolo Openflow Tipos de mensagem Asynchronous (algumas): Packet-in: switch encaminha pacote (ou cabeçalho) para o controller se não houver uma entrada correspondente previamente instalada na tabela de flows Flow-removed: quando o timeout do flow expirou e ele foi removido da tabela de flows Port-Status: switch informa ao controller sobre mudanças na configuração do estado das portas Error: informa ao controller sobre erros diversos 37 / 31
Protocolo Openflow Tipos de mensagem Symmetric (algumas): Hello: usados no estabelecimento da conexão do switch com o controller Echo: Echo request/reply usado para checar latência, largura de banda e/ou conexões ativas 38 / 31
Protocolo Openflow Ações Na versão 1.0: Required: Forward (ALL, CONTROLLER, IN_PORT) Drop Optional: Enqueue Forward (NORMAL) Modify-field (set VLAN ID, strip VLAN header, modify src/dst MAC, modify src/dst IPv4, modify src/dst transport port, etc.) 39 / 31
Protocolo Openflow Contadores Na versão 1.0: 40 / 31
SDN Stack Fonte: Christian Esteve (CPqD), 13o WRNP 41 / 31
Utilização de Openflow Openflow auxiliou o Google a melhorar a performance do seu backbone e a reduzir seu custo e complexidade... Todd Underwood/Google (RIPE 64, Abr/2012) Stanford University Especificação / Eventos Implantação na rede de campus Trabalho com Slices da rede No Brasil: estudos, utilização, desenvolvimento Universidades e Centros de pesquisa, FIBRE, RNP, CPqD, etc. 42 / 31
Utilização de Openflow Grupo de Redes do DCC/UFBA em parceria com o PoPBA Experimentação para algoritmos de roteamento em redes mesh sem fio Grupo de estudos e desenvolvimento 43 / 31
Considerações finais SDN (Software-Defined Networking) é uma arquitetura Promete fomentar inovação aberta e competição Evolução da rede mais fácil e rápida Separação do plano de controle e encaminhamento Openflow é um protocolo A partir do openflow é possível definir, modificar, testar e avaliar uma gama de protocolos e cenários de rede 44 / 31
Considerações finais Cuidado! Openflow não é uma tecnologia fim. Ele não resolve os problemas, apenas pode ser usado como ferramenta para tal Software sempre está sujeito a bugs! É preciso definir com cuidado a arquitetura que será usada, diminuindo ou eliminando os pontos de falha 45 / 31
Referências McKeown N., Parulkar G. et al. (2010). Software Defined Networks and Openflow, Stanford University. SDN CIO Summit 2010. McKeown, N., Anderson, T., Balakrishnan, H., Parulkar, G., Peterson, L., Rexford, J., Shenker, S., and Turner, J. (2008). Openflow: enabling innovation in campus networks. SIGCOMM Comput. Commun. Rev., 38:69 74. Bertholdo L. (2012). Tecnologias, conceitos e serviços emergentes: Openflow. 13o WRNP HAMILTON, J. Networking: The last bastion of mainframe computing. 2009. 46 / 31
Obrigado!!! :-) Italo Valcy italo@dcc.ufba.br 47 / 31