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
Download

SDN