• Nenhum resultado encontrado

3.2 Arquitetura SDN

3.2.1 Plano de dados

Existem dois elementos principais na infraestrutura SDN, o(s) controlador(es) e os dispositivos de encaminhamento. Os dispositivos de encaminhamento são hardware ou softwares com a propriedade de transmissão de pacotes de dados e, diferentemente do que ocorria nas redes tradicionais, não são capazes de tomar decisões autônomas sobre o roteamento do tráfego. Um aspecto importante é que essa infraestrutura é criada sob interfaces de padrões abertos (e.g., protocolo OpenFlow), cruciais para manter a intero- perabilidade entre os diferentes dispositivos do plano de dados, bem como a comunicação desses com o controlador.

O envio de pacotes continua sendo baseado nas tabelas de encaminhamento, armazenadas no próprio dispositivo. Regras de como pacotes específicos devem ser trans- mitidos podem ser acrescentadas, atualizadas e removidas por um controlador usando mensagens OpenFlow tanto de maneira reativa (em resposta a pacotes) quanto proa- tivamente. Para que isso seja possível, o dispositivo deve fornecer suporte ao protocolo, caracterizando-o como um equipamento OpenFlow-enabled ou simplesmente switch Open- Flow. O caminho de dados dentro de um switch OpenFlow consiste de um pipeline, for- mado por uma ou mais tabelas de fluxos ligadas, que possuem entradas configuradas pelo controlador. Cada entrada de fluxo possui sete partes [64], como pode ser visto na Figura 3.2. Nela é apresentada a definição usada na versão 1.5.1 do protocolo OpenFlow, lançada em 2015. Nessa versão, cada entrada da tabela de encaminhamento contém:

∙ Campos de correspondência (match fields): usados para confrontar com as in- formações de identificação dos pacotes para decidir a ação a ser tomada sobre eles. Consiste na porta de ingresso no switch e cabeçalho de pacotes IP. Opcionalmente outros campos, como metadados fornecidos por outra tabela do switch, podem ser

Capítulo 3. Software-defined Networking (SDN) 40

utilizados;

∙ Prioridade: indica a precedência atribuída ao pacote que combina com os campos de correspondência. O pacote é comparado com entradas de fluxo na tabela de fluxo e somente a entrada de prioridade mais alta que corresponde ao pacote deve ser selecionada;

∙ Contadores: mantêm estatísticas dos pacotes que combinam com os campos de correspondência;

∙ Instruções: são aplicadas aos pacotes que combinam com os campos de correspon- dência;

∙ Tempos de espera (Timeouts): quantidade máxima (hard timeout) de tempo ou tempo ocioso (idle timeout), antes que o fluxo expire e seja removido da tabela de encaminhamento;

∙ Cookie: pode ser usado pelo controlador para filtrar entradas na tabela de switches; ∙ Flags: alteram a forma como as entradas de fluxo são gerenciadas. Por exemplo, quando a flag OFPFF_SEND_FLOW_REM está ativa, uma mensagem é enviada ao con- trolador para notificar a remoção da entrada correspondente.

Dentro de um switch OpenFlow, um caminho através de uma sequência (pi-

peline) de tabelas de fluxo define como os pacotes devem ser manipulados. A estrutura

interna do switch é representada na Figura 3.3. Quando o switch recebe um pacote, ele executa as funções apresentadas na Figura 3.4. As informações do cabeçalho de pacote e porta de ingresso são comparadas com os campos de correspondência das entradas de fluxo da primeira tabela. Caso não seja encontrada uma correspondência, a busca procede para a tabela seguinte. Quando nenhuma regra é encontrada para esse pacote em todo o

Capítulo 3. Software-defined Networking (SDN) 41 Entrada do pacote Começo na Tabela 0 Correspondência na Tabela n Não Existe Table-miss? Descartar o pacote Sim Ir à Tabela n? Sim Atualizar os contadores; Executar as instruções: Atualizar o action-set Atualizar campos do pacote; Atualizar metadados.

Não

Sim

Não Executar action-set

Figura 3.4 – Fluxograma simplificado detalhando o fluxo de pacotes através de um switch OpenFlow. Adaptado de [65].

pipeline de tabelas de encaminhamento tem-se o chamado table-miss. Se nenhuma regra

padrão foi definida para lidar com essa situação, o pacote pode ser descartado. Entretanto, a alternativa mais empregada é instalar nas tabelas de encaminhamento uma entrada con- tendo uma regra padrão que obriga o switch a enviar o pacote ao controlador e esse, por sua vez, deverá responder com mensagens OpenFlow indicando a ação a ser tomada com o pacote em questão e todos os demais que pertencem ao mesmo fluxo. Essa resposta é decodificada e armazenada na tabela de encaminhamento como uma nova entrada. Uma entrada table-miss tem prioridade zero e é criada omitindo-se todos os campos de corres- pondência. Assim, sob qualquer pacote que não combine com nenhuma regra específica é aplicada a ação definida pela entrada table-miss.

Como mencionado anteriormente, as entradas de fluxo têm um conjunto de instruções que são executadas quando um pacote combina com a regra de correspondên- cia dessa entrada. Essas instruções podem alterar o pacote, o conjunto de ações (action

set) que pode ser aplicado ao pacote e ainda modificar o processamento do pipeline. As

instruções que switches OpenFlow podem suportar são:

∙ Clear-Actions: Elimina todas as ações do action set imediatamente. Essa instru- ção é necessária apenas às entradas de fluxo table-miss, sendo opcional para outras entradas de fluxos;

∙ Write-Actions: Ações que vão se adicionando no action set e só serão executadas ao final da última tabela;

Capítulo 3. Software-defined Networking (SDN) 42

pacote;

∙ Apply-Actions (opcional): Indica que as ações devem ser executadas imediata- mente, sem modificar o conjunto de instruções. Essa instrução pode ser usada para modificar o pacote entre uma tabela e outra;

∙ Write-Metadata (opcional): Permite a transmissão de informações adicionais en- tre tabelas do pipeline;

∙ Stat-Trigger (opcional): Gera um evento para o controlador caso alguma estatís- tica do fluxo ultrapasse um limiar.

Um switch deve rejeitar uma entrada de fluxo se não for possível executar as instruções ou parte das instruções associadas a essa entrada [64]. Além disso, ele não precisa oferecer suporte para todos os tipos de ações e, por isso, o controlador pode indagá- lo para descobrir quais delas o switch consegue executar. A seguir são listadas todas as ações que podem ser realizadas pelo switch na medida em que seja necessário.

∙ Output: Essa ação encaminha um pacote para uma porta específica do switch, onde se inicia o processamento de egresso;

∙ Group: Processa o pacote por meio de um grupo específico. A interpretação exata depende do tipo de grupo. Nessa ação, diferentes entradas de fluxos na mesma ou em diferentes tabelas podem ter a mesma ação de grupo;

∙ Drop: Não há ação explícita para representar o descarte. Em vez disso, os pacotes cujo actions set não tem ação de saída (output) definida e nenhuma ação de grupo (group) devem ser descartados;

∙ Set-Queue (opcional): Indica qual fila de saída irá processar o pacote, permitindo ainda aplicar políticas de priorização de tráfego;

∙ Set-Field (opcional): Usado para reescrever uma variedade de campos do cabeçalho de pacotes;

∙ Push-Tag/Pop-Tag (opcional): Permite o manuseio de tags, tanto para identifi- cação em VLAN (Virtual Local Area Network) quanto para rótulo MPLS (Multi-

Protocol Label Switching);

∙ Change-TTL (opcional): Provê funcionalidades como modificação e cópia dos va- lores de time to live (TTL) do protocolo IPv4 e MPLS assim como o Hop limit do IPv6.

Capítulo 3. Software-defined Networking (SDN) 43