OpenFlow Protocolo Baseado em: • Material de treinamento do Prof. Cesar Marcondes (UFSCAR) • OpenFlow Switch Specification v1.0.0 (Stanford) Nível Aplicação 1 Arquitetura Openflow Alguns aplicativos de controle estão no topo do controlador emulando o comportamento dos aplicativos de controle tradicionais. Nível Aplicação 2 OF - Protocolos Os protocolos do OpenFlow estão divididos em duas partes: • Um protocolo com fio (atualmente versão 1.3.x) para estabelecer uma sessão de controle definindo a estrutura da mensagem para trocar modificações nos fluxos (flowmods), coletar estatísticas, e definir a estrutura fundamental de portas e tabelas de um switch. • Um protocolo para configuração e gerência (atualmente na versão 1.1) baseado no NETCONF para alocar portas físicas do switch para um particular controlador definindo alta disponibilidade e comportamentos em caso de falha na conexão com o controlador. OBS: NETCONF – protocolo de gerência conhecido. Nível Aplicação 3 Operação Nível Aplicação 4 OF Fluxo Fluxo é uma ideia mais abstrata do que apenas IPOrigem, IPDestino, portaOrigem, portaDestino. Possíveis opções de fluxo: • Fluxo de uma aplicação • Todas as requisições HTTP • Trafego de Jim • Todos os pacotes do Canada • ... Estes fluxos podem ser agregados e podem haver ações associadas: • Permitir / Negar Fluxo • Rotear & Re-Rotear Fluxo • Isolamento do Fluxo • Tornar os Fluxos Privados • Remover Fluxo • ... Nível Aplicação 5 Fluxo - Encaminhamento Um stream de um usuário pode ser enviado por unicast ou por multicast: escolho roteadores do caminho e mando replicar. Multicast puro sem protocolos distribuído É possível dividir o fluxo do usuário em múltiplos caminhos ou Forçar a passagem em determinado ponto para processá-lo (waypoint). Nível Aplicação 6 FlowSpace (1) Define a coleção de bits utilizada para encaminhar o fluxo. Se OF 1.0 só há esta opção (Coringa – usar * para não verificar). OFs mais modernos permitem que o usuário defina os bits de seu interesse, que pode utilizar novos bits de novos protocolos. Nível Aplicação 7 FlowSpace (2) É possível visualizar os fluxos no espaço geométrico À esquerda, a maneira clássica de identificar um fluxo: IP source, IP destination. À direita, uma definição mais geral de fluxo. Nível Aplicação 8 FlowSpace (3) É possível generalizar a ideia pegando mais campos de interesse Assim, há compatibilidade com as versões legadas e é possível evoluir. Pode-se fazer um hardware rápido para fazer os casamentos, com forte isolamento entre os fluxos. Nível Aplicação se há ou não isolamento. Geometricamente é possível verificar 9 Tabela de Fluxo O controlador se comunica em canal seguro (SSL ou TLS) com o switch em geral na porta TCP 6633. O switch se identifica para o controlador deixando a conexão TCP aberta. Na Figura há uma regra definida para o host 5.6.7.8, encaminhar para a porta 1. Nível Aplicação 10 Entradas na tabela de fluxo Rule: Regra que define o fluxo, consiste principalmente em fazer o match dos campos de cabeçalho do pacote. Action: Ação que define como os pacotes devem ser processados. Stats: Estatísticas, que registram o numero de pacotes e bytes para cada fluxo, e o tempo decorrido desde o ultimo pacote que fez match (para ajudar a remoção de fluxos inativos). Nível Aplicação 11 OF - Actions As ações básicas: 1) Encaminhar os pacotes deste fluxo para uma determinada porta (ou portas). Isso permite que os pacotes sejam roteados através da rede. Na maioria dos switches essa ação espera ser efetuada a taxa de linha (na velocidade do hardware). 2) Encapsula e transmite pacotes deste fluxo para um controlador, usando um Canal Seguro. Normalmente, utilizado para o primeiro pacote de um novo fluxo, de modo que um controlador possa decidir se o fluxo devera ser adicionado a tabela de fluxo, ou, em alguns cenarios, pode ser usado para redirecionar todos os pacotes para um controlador para realizar algum processamento. Nível Aplicação 12 OF - Actions As ações básicas: 3) Descartar pacotes deste fluxo. Isso pode ser usado por motivos de segurança, ou para reduzir a transmissão de mensagens espúrias de descoberta enviadas a partir de hosts. 4) Se switch híbrido pode enviar o pacote para o processamento normal 5) É possível alterar campos. Para rotear é preciso alterar os MACs, também precisa alterar TTL. Nível Aplicação 13 OF – Rule example Função normal de switching Um fluxo específico Deixa passar um serviço Nível Aplicação 14 OF - Opções Roteamento por Fluxo vs Por Agregação • Flow-Based Cada fluxo é gerenciado individualmente pelo controlador. Entradas na tabela de fluxos com "exact-match“. Tabelas de Fluxo contem uma entrada por fluxo. Bom para controle fino do trafego, ex. rede de campus • Aggregated Uma entrada na tabela de fluxos cobre grande grupo de fluxos; Entradas "Coringa"na tabela de fluxo; Tabelas de Fluxos contem somente uma entrada para cada categoria de fluxos. Bom para Gerenciar um grande numero de fluxos, e.g. backbone Nível Aplicação 15 OF - Opções Modelo Reativo versus Modelo Pró-Ativo (pré-populado) • Reativo Primeiro pacote do fluxo aciona o controlador para inserir uma entrada na tabela de fluxo. Uso eficiente e sob demanda da tabela de fluxos. Cada fluxo gera um pequeno atraso de setup adicional por fluxo. Se houver perda de conexão com o controle, o switch tem utilidade limitada (tudo depende do controlador). • Pró-ativo Controlador pré-popula a tabela de fluxos no switch. Atraso de Setup por fluxo zero. Perda de controle da conexão não impacta o trafego. Essencialmente requer regras para agregação (coringas). Nível Aplicação 16 OF - RoadMap • OF v1.0 (antigo) usa 14 campos fixos, fatiamento da banda, faz o match em VLAN PCP (Point Code Priority), IP ToS. • OF v1.1: Extensões para WAN multiplas tabelas: permite reusar tabelas adicionais tuneis, agregação de interfaces • OF v1.2: Flexibilidade em Manipular Bits uso de bitmask para match e reescrita tb por bitmask • OF v1.3: Mais funcionalidades importantes: IPv6 • OF v2+: (futuro) ? uma linguagem de matching e ações mais generalizadas: um 'instruction set' para redes Nível Aplicação 17 OF – Canal Seguro • Trata-se de um canal de controle entre switch e controlador mensagens são enviadas de acordo com o protocolo OpenFlow permite ao controlador gerenciar e inspecionar o switch os switches podem enviar mensagem não-solicitadas ao controlador (eventos). Ex.: chegada de pacotes, mudanca de estado de porta, erros, etc. • Switch é configurado com um endereco IP & numero de porta do controlador • Uma conexão segura usando TLS é estabelecida entre o switch e o controlador; inicialmente o switch autentica via certificado assinado com 18 a chave privada do site Nível Aplicação OF – Mensagens Tipos de Mensagens • Controlador para o Switch: inspeciona e configura o switch; pergunta quais as capacidades são suportadas (tem x portas de tantos Gbps cada); manipula fluxos via entradas na tabela de fluxos, obtem estatísticas. • Comunicação Assíncrona (switch para o controlador): switch envia mensagens não solicitadas em resposta a certos eventos; pacote que chega e não faz match com nenhuma entrada da TF mudanca de status do switch (fluxo removido, porta down) • Comunicação Simétrica (em ambas as direções): Nível Aplicação específicas do fabricante 19 hello, echo request/reply, mensagens OF – Mensagens Mensagens trocadas na inicialização: Por alguma condição, depois de tanto tempo expire. Nível Aplicação 20 OF – Mensagens Mensagens Trocadas no Caso de Eventos e Ações Controlador quer fazer por ex. um ping, e diz ao controlador : este pacote mande pela porta 20. A mais importante: Nível Aplicação regra, ação. 21 Mininet Inicialmente, estude a ferramenta através do link: https://github.com/mininet/mininet/wiki/Introduction-to-Mininet Você consegue enxergar as mensagens do protocolo OpenFlow sendo trocadas entre os elementos da topologia que criou no Mininet? Use o Wireshark em uma janela a parte. Nível Aplicação 22 Wireshark Captura pacotes, permitindo enxergar o protocolo em ação. Nível Aplicação 23