47
Software-Defined Networks e Openflow: conceitos e tecnologias emergentes Semana de Computação – UFBA (SEMCOMP 2012) Universidade Federal da Bahia Italo Valcy <[email protected]> 05 de outubro de 2012

Software-Defined Networks e Openflow: conceitos e ...homes.dcc.ufba.br/~italo/cursos/semcomp2012/SEMCOMP2012-SDN... · Infraestrutura de redes atual: equipamentos proprietários,

  • Upload
    doque

  • View
    220

  • Download
    0

Embed Size (px)

Citation preview

Software-Defined Networks e Openflow: conceitos e tecnologias

emergentes

Semana de Computação – UFBA (SEMCOMP 2012)Universidade Federal da Bahia

Italo Valcy <[email protected]>

05 de outubro de 2012

2 / 31

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 disponibilizadopela comunidade Openflow.org, em especial no Tutorial Brasileiro, disponível em <http://www.openflow.org/wk/index.php/Brazil_tutorial>

3 / 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)

4 / 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?

5 / 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...

6 / 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?

7 / 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

8 / 31

Agenda

Arquitetura SDN Openflow: funcionamento e cenários Alguns detalhes técnicos Utilização do Openflow

TODO

9 / 31

A rede atual

Specialized Packet

Forwarding Hardware

OperatingSystem

Feature Feature

Roteamento, gerencia, mobilidade, controlede acesso, VPN, …

VerticalizaçãoFechado, proprietárioInovação lenta

10 / 31

A rede atual

Specialized Packet

Forwarding Hardware

Feature

Feature

Specialized Packet

Forwarding Hardware

Specialized Packet

Forwarding Hardware

Specialized Packet

Forwarding Hardware

OperatingSystem

OperatingSystem

OperatingSystem

OperatingSystem

OperatingSystem

Feature

Feature

Feature

Feature

Feature

Feature

Specialized Packet

Forwarding Hardware

Feature

Feature

Caixas pretasfechadas

11 / 31

Feature Feature

Network OS

A “Rede definida por software”

PacketForwarding

PacketForwarding

PacketForwarding

PacketForwarding

PacketForwarding

12 / 31

Feature Feature

Network OS

1. Interface aberta para acesso ao hardware (e.g. Openflow)

3. API aberta bem definida2. Pelo menos um SO de rede

(provavelmente muitos)Open- and closed-source

A “Rede definida por software”

OpenFlow

PacketForwarding

PacketForwarding

PacketForwarding

PacketForwarding

PacketForwarding

13 / 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.

14 / 31

Ethernet Switch/Router

Fonte: Nick McKeown (Stanford), SDN CIO Summit 2010

15 / 31

Data Path (Hardware)Data Path (Hardware)

Control Path (Software)Control Path (Software)

Fonte: Nick McKeown (Stanford), SDN CIO Summit 2010

16 / 31

Data Path (Hardware)Data Path (Hardware)

Control PathControl Path OpenFlowOpenFlow

OpenFlow ControllerOpenFlow Controller

OpenFlow Protocol (SSL)

Fonte: Nick McKeown (Stanford), SDN CIO Summit 2010

17 / 31

Exemplo do OpenFlow

18 / 31

Exemplo do OpenFlow

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

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]

21 / 31

Como funciona o Openflow?

22 / 31

“If header = x, send to port 4”“If header = y, overwrite header with z, send to ports 5,6”“If header = ?, send to me”

OpenFlow Switch

OpenFlow Switch

OpenFlow Switch

OpenFlow Switch

FlowTable

Network OS

Como Openflow funciona

OpenFlow/SSL/TCP

Fonte: Nick McKeown (Stanford), SDN CIO Summit 2010

23 / 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◦ ...

24 / 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

25 / 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

26 / 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

27 / 31

Tabela de fluxos

Fonte: OpenFlow Brazil Tutorial, SBRC 2010

28 / 31

Tabela de fluxos - Exemplos

Fonte: OpenFlow Brazil Tutorial, SBRC 2010

29 / 31

Cenários com Openflow Controle Centralizado vs Distribuído

30 / 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)

31 / 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

32 / 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) (...)

33 / 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)◦ ...

34 / 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)◦ …..

35 / 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

36 / 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

37 / 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

38 / 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

39 / 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.)

40 / 31

Protocolo Openflow – Contadores

Na versão 1.0:

41 / 31

SDN Stack

Fonte: Christian Esteve (CPqD), 13o WRNP

42 / 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.

43 / 31

Utilização de Openflow Grupo de Redes do DCC/UFBA em parceria com o PoP-

BA◦ Experimentação para algoritmos de roteamento em

redes mesh sem fio◦ Grupo de estudos e desenvolvimento

44 / 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

45 / 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

46 / 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.

47 / 31

Obrigado!!!:-)

Italo [email protected]