Tópicos Especiais em Redes de Telecomunicações Redes definidas por software e Computação em Nuvem Prof. Rodrigo de Souza Couto
PARTE 1 REDES DEFINIDAS POR SOFTWARE (SDN) 2
Bibliografia Esta aula é baseada nos seguintes trabalhos: [1] Diego Kreutz, Fernando M. V. Ramos, Paulo Verissimo, Christian Esteve Rothenberg, Siamak Azodolmolky, Steve Uhlig. Software-Defined Networking: A Comprehensive Survey. Proceedings of the IEEE, 2015. [2] N. McKeown, T. Anderson, H. Balakrishnan, G. Parulkar, I. Peterson, J. Rexford, S. Shenker, J. Turner. OpenFlow: Enabling Innovation in Campus Networks. ACM SIGCOMM Computer Communication Review, 2008. [3] Adrian Lara, Anisha Kolasani, Byrav Ramamurthy.Network Innovation using OpenFlow: A Survey. IEEE Communications Surveys & Tutorials, 2014. 3
Bibliografia Esta aula é baseada nos seguintes trabalhos: [4] Especificação do OpenFlow v1.0.0 https://www.opennetworking.org/images/stories/downloads/ sdn-resources/onf-specifications/openflow/openflow-specv1.0.0.pdf 4
Visão Geral da Arquitetura SDN Figura adaptada de [1] 5
Visão Geral da Arquitetura SDN Southbound Interface Figura adaptada de [1] 6
Plano de Dados: Southbound Interface É a ponta que conecta o Plano de Controle ao Plano de Dados Elemento crucial para prover a separação entre os planos Também chamada de Southbound API 7
OpenFlow Southbound API mais utilizada em SDNs Padrão aberto Diferentes fabricantes podem implementá-lo em seus comutadores Inicialmente proposto para experimentos acadêmicos Redes de universidades Ideia de configurar fluxos para separar tráfego de produção de tráfego experimental Industria posteriormente começou a adotá-lo para aumentar a funcionalidade da rede, mas reduzindo custos e complexidade do hardware 8
OpenFlow Sistemas Operacionais de Rede (NOSs) o utilizam para configurar os comutadores da rede Diferentes tipos de mensagem podem ser trocados Provê três fontes de informação para os Sistemas Operacionais de Redes Mensagens baseadas em eventos Enviadas pelos comutadores para indicar mudanças na rede (p.ex. enlace se desconectou) Estatísticas para cada fluxo P.ex. número de bytes e pacotes enviados Mensagens enviadas ao controlador quando novo fluxo é detectado 9
Versões do OpenFlow Versão 1.0.0-2009 A mais utilizada atualmente Versão considerada nos próximos slides, quando não mencionado diferente Versão 1.1.0 2011 Versão 1.2 2011 Versão 1.3.0 2012 Versão 1.4.0 2013 Versão 1.5.0 2014 10
Componentes de uma Comutador OpenFlow Tabela de fluxos Lista de ações correspondentes Canal Seguro Conexão entre comutador e Controlador Protocolo OpenFlow Figura adaptada de [2] 11
Implementação da Tabela de Fluxos Plano de Dados Específico do Fabricante OpenFlow foi idealizado para poder ser implementado com apenas com atualizações de firmware do fabricante Figura adaptada de [3] 12
Implementação da Tabela de Fluxos Abstração para o Controlador Plano de Dados Específico do Fabricante OpenFlow foi idealizado para poder ser implementado com apenas com atualizações de firmware do fabricante Figura adaptada de [3] 13
Implementação da Tabela de Fluxos Figura adaptada de [3] 14
Definição de fluxos no OpenFlow v.1.0.0 Campos do protocolos dos pacotes 12 possíveis campos Podem ser utilizados um ou mais campos O fluxo não precisa ser definido por todos os campos Porta de Entrada MAC de Origem MAC de Destino Ether Type VLAN id VLAN priority CoS IP de Origem IP de Destino IP Proto IP ToS bits Porta de origem TCP/UDP Porta de destino TCP/UDP Tabela adaptada de [3] 15
Algumas ações de um comutador OpenFlow v.1.0.0 FORWARD (encaminhar) Porta física específica ALL Envie o pacote para todas as interfaces, à exceção daquela na qual o pacote chegou CONTROLLER Encapsule o pacote e mande-o para o Controlador DROP (descartar) ENQUEUE (enfileirar função opcional) Envia o pacote para uma fila ligada a uma porta Utilizado para fins de QoS 16
Algumas ações de um comutador OpenFlow v.1.0.0 MODIFY-FIELD (modifica algum campo do cabeçalho função opcional) IP de origem/destino MAC de origem/destino Porta de origem/destino Entre outras... Apesar de não ser obrigatória, aumenta as funcionalidades possíveis de um comutador OpenFlow. 17
Exemplos de Estatísticas Por tabela Entradas ativas Correspondências de pacotes Por fluxo Bytes enviados Pacotes enviados Duração (segundos) Por porta Bytes recebidos Bytes transmitidos Erros de recepção Erros de transmissão 18
Exemplos de Estatísticas Por fila Pacotes transmitidos Bytes transmitidos 19
Canal Seguro Interface que conecta cada comutador ao Controlador Envio de configurações, pacotes e notificações de eventos Comunicação do Canal Seguro com datapath do comutador pode ser específica para cada fabricante Entretanto mensagens devem seguir o protocolo OpenFlow Mais detalhes do protocolo e de outras informações do canal seguro serão vistas adiante no curso 20
Processamento de Pacotes no OpenFlow v.1.0.0 1- Quadro Ethernet entra no comutador e é analisado 2 - Cabeçalhos do quadro são extraídos e geram um packet lookup header Conjunto de todos os cabeçalhos extraídos 3 - Packet lookup header é enviado para um sistema que realiza a correspondência dos quadros 4- OPacket lookup header é comparado com as regras da tabela de fluxos Regras são colocadas em ordem decrescente de prioridade na tabela Primeira regra encontrada será executada 21
Processamento de Pacotes no OpenFlow v.1.0.0 5A A lista de ações referente a regra encontrada é executada 5B Se não foi encontrada nenhuma regra para os cabeçalhos selecionados, os primeiros 200 bytes do quadro são enviados ao Controlador Controlador decide o que fazer com o pacote e instala novas regras no Comutador 22
Exemplo de interação com um Controlador
Exemplo de interação com um Controlador Envio de Pacotes por um Cliente Fluxo Desconhecido A B C
Exemplo de interação com um Controlador Encapsulamento e envio para o Controlador A B C
Exemplo de interação com um Controlador Controlador configura a Tabela de Fluxos do Comutador A F A B C
Exemplo de interação com um Controlador Todos os pacotes do fluxo que chegam em A irão para B F A B C
Exemplo de interação com um Controlador Após definido o fluxo, o pacote irá para B F A B C
Exemplo de interação com um Controlador Pacote encapsulado para o Controlador F A B C
Exemplo de interação com um Controlador Controlador configura comutador B com o fluxo F F A B C
Exemplo de interação com um Controlador Fluxo configurado no Comutador B F F A B C
Exemplo de interação com um Controlador Após procedimento semelhante, C é configurado F F A B F C
Exemplo de interação com um Controlador Pacotes do Fluxo são encaminhados sem a utilização do Controlador F F F
OpenFlow 1.1.0 Algumas características novas Mais de uma tabela de fluxo Processamento em pipeline Tabelas de fluxo operam em cadeias Quando pacote chega no comutador, é enviado para a primeira tabela do pipeline Se a entrada apontar para outra tabela, pacote é enviado para essa tabela Lembre-se: cada tabela de fluxo é implementada em hardware. Assim, o pipeline pode melhorar o desempenho do comutador Tabela de Grupo Realiza operações comuns múltiplos fluxos 34
OpenFlow 1.1.0 Comutador OpenFlow 35
OpenFlow 1.1.0 Definição de fluxo Porta de Entrada MAC de Origem MAC de Destino Ether Type VLAN id VLAN priority CoS IP de Origem IP de Destino IP Proto IP ToS bits Porta de origem TCP/UDP Porta de destino TCP/UDP Suporte a MPLS Metadados MPLS Label MPLS EXP traffic class Campo de metadados é utilizado para passar informações entre as tabelas do pipeline Tabela adaptada de [3] 36
Outras versões OpenFlow 1.2 Suporte a IPv6 Possibilidade de conectar um comutador a múltiplos controladores Recuperação rápida de falhas Balanceamento de carga OpenFlow 1.3 Possibilidade de controlador a taxa de pacotes por fluxo 37
Afinal, o OpenFlow é especificação, protocolo ou arquitetura? [3] Especificação Um comutador OpenFlow é construído seguindo o padrão especificado Protocolo Comunicação entre o comutador e o controlador Arquitetura Demais componentes para o OpenFlow funcionar P.ex. controladores Confusão entre OpenFlow SDN OpenFlow não é SDN! OpenFlow é uma (dentre muitas) formas de os componentes se comunicarem numa SDN 38