SDN - Introdução

Download Report

Transcript SDN - Introdução

SDN
Introdução
Baseado em:
• SDN: Software Defined Networks
by Thomas D. Nadeau and Ken Gray
• Material de treinamento do Prof. Cesar Marcondes (UFSCAR)
•Livro do Tanenbaum: Sistemas Operacionais
Nível Aplicação
1
Motivação - 1
Conceitos motivacionais:
• Estamos entrando na era da computação elástica: A
flexibilidade na operação da computação, armazenamento e
recursos de rede .
• Com a virtualização de SOs, é possível mover ou expandir
servidores para data centers em qualquer localização com
uma simples operação.
• As empresas programam o crescimento e adquirem recursos
previamente para atender as demandas, todavia, parte do
recurso fica em desuso se não houver flexibilização.
Nível Aplicação
2
Motivação - 2
• Caso Amazon: dobrava a cada seis meses, investia para ter
recursos à altura, mas eles não eram eficientemente utilizados:
comercializar recursos não utilizados até atingir
aproximadamente 100% de uso - arrumar inquilinos e atribuir
recursos à demanda. O livro chama esta flexibilização de hyper
virtualization.
• Máquinas Virtuais devem ter endereços IPs dedicados aos
respectivos SOs, válidos e roteáveis e a flexibilização implica em
gerir estes endereços.
• A utilização de protocolos específicos com a flexibilização
também requer que os mesmos protocolos estejam disponíveis
em todos os ambientes.
• Gerência de flexibilização enquanto no interno de apenas um
data-center não é crítico, mas
quando cresce...
Nível Aplicação
3
Parênteses: Máquinas Virtuais
Virtualização: Diferentes servidores funcionam em
diferentes máquinas virtuais (VM) que podem estar
hospedadas em um único computador, mantendo o
modelo de falha parcial a baixo custo e fácil manutenção.
É a base da chamada computação elástica.
O computador no qual o chamado hipervisor roda uma ou
mais máquinas virtuais, chama-se computador
hospedeiro. Cada máquina virtual é chamada hóspede.
Virtualização (1)
Motivação: Pode acontecer de uma empresa ter múltiplos
servidores (e-mail, web, ftp…) não porque a carga é excessiva,
mas por segurança: se um serviço falhar, os outros continuam a
funcionar. Deseja-se flexibilizar as configurações de serviços e
distribuir a potência computacional facilmente.
Justificativas:
1. A maioria das interrupções nos serviços não é por hardware,
mas pelo conjunto de software inchado, não confiável e com
erros (em especial SOs!)
Virtualização (2)
Justificativa (ainda):
2. O único software que rodaria no modo núcleo seria o
hipervisor que tem menos linhas de código que o SO, e
portanto menos erros.
3. Economia em hardware (menos máquinas) implica também
economia de energia;
4. Cada aplicação leva consigo seu próprio ambiente; um dos
benefícios é permitir rodar aplicações mais antigas e novas;
outro benefício é não precisar particionar o disco e assim ter
que reiniciar o computador para mudar de SO.
Virtualização (3)
Conceito utilizado:
• Emulação: as instruções são executadas via software
permitindo emular um hardware totalmente diferente do
hardware da máquina real. Ex: emuladores de consoles de
video-games emulam o hardware do video-game onde o jogo
“pensa” estar executando no video-game mas na verdade esta
sendo executado por um emulador no computador. Através da
emulação pode-se executar programas para outras
arquiteturas, como por exemplo emular um MACintosh no PC,
ou um hardware totalmente diferente.
• A emulação tem desempenho pior do que a execução no
ambiente nativo.
Hipervisores Tipo 1
Ele é o SO, o único no modo núcleo, gerencia máquinas virtuais e
processos.
O SO hóspede acredita estar no modo núcleo, mas de fato está no
modo usuário (Modo Núcleo virtual). Em CPUs com Virtualization
Technology (VT), quando uma instrução falha, dispara uma
armadilha para o núcleo (hipervisor) que inspeciona a origem da
instrução (SO ou processo do user), permitindo ou não sua
execução, emulando ou não.
Hipervisores Tipo 2
Hipervisor do tipo 2 é um programa de usuário sobre um SO
hospedeiro.
VMWare: carrega um SO hóspede; na carga varre o binário
procurando blocos de instruções que terminem com instruções que
alterem o fluxo de controle: (jump, call, trap…). Acontece uma
tradução binária: substitui instruções sensíveis (q só podem ser
executadas no modo núcleo) por instruções do VMWare que as
emula. v
Hipervisores Tipo 2
Após executar um bloco básico o controle retorna ao VMWare
que localiza o próximo bloco. Blocos vão sendo traduzidos,
armazenados e executados. Nenhuma instrução vinda do SO
hóspede é executada pelo hardware real, mas emuladas.
Máquinas que não tem VT podem usar este tipo de
virtualização.
Estudos mostram que máquinas com VT também tem seu custo
como problemas de cache, TLBs… e dependendo da carga de
trabalho pode ter desempenho pior.
VirtualBox
Uma das ferramentas de virtualização disponíveis (Oracle):
https://www.virtualbox.org/
“Presently, VirtualBox runs on Windows, Linux, Macintosh, and
Solaris hosts and supports a large number of guest operating
systems including but not limited to Windows (NT 4.0, 2000,
XP, Server 2003, Vista, Windows 7, Windows 8), DOS/Windows
3.x, Linux (2.4, 2.6 and 3.x), Solaris and OpenSolaris, OS/2, and
OpenBSD.”
Uma máquina virtual (Virtual Machine – VM) pode ser , definida
como “uma duplicata eficiente e isolada de uma máquina real”.
A IBM define uma máquina virtual como uma cópia isolada de
um sistema físico, e esta cópia está totalmente protegida.
VirtualBox
Esta cópia pode ser importada , exportada, configurada para
atender a demanda.
A extensão .VDI é o formato nativo do VirtualBox e significa
apenas Imagem de Disco Virtual.
A extensão .VMDK é o formato original da VMWare, aceito pelo
VirtualBox.
Paravirtualização
SO Paravirtualizado: instruções sensíveis foram removidas e
substituídas por uma chamada de uma API para realizar
operações como E/S, modificação de registros internos, etc.
O hipervisor pode ter parte que faz emulação e parte que é
apenas um micronúcleo.
Virtualização de Rede (1)
Infra-estrutura tradicional
de rede
http://www.ibm.com/developerworks/linux/lib
rary/l-virtual-networking/
Infra-estrutura de rede
virtualizada.
OBS: Linux incorpora um
switch de nível 2 simples
dentro do kernel.
Nível Aplicação
14
Virtualização de Rede (2)
Switch virtual distribuído: Liga vNics e vNics a Nics.
“Enables cross-server bridging , making the underlying server
architecture transparent. A virtual switch within one server can
transparently join with a virtual switch in another server making
migration of VMs between servers (and their virtual interfaces) much
simpler, because they can attach to the distributed virtual switch in
another server and transparently join its virtual switched network”.
OpenvSwitch foi comprado pela VMWare . É muito utilizado por cloud
Nível Aplicação
15
Fecha Parênteses... Motivação - 3
• Um dispositivo de rede é constituído por um plano de dados
que liga as várias portas de rede e um plano de controle que
é o cérebro de um dispositivo (implementa um protocolo).
• Como concebidos os equipamentos de rede, exigem que
determinada função seja implementada de forma
distribuída, onde o controle está em cada um dos
equipamentos. Roteadores e switches são muito caros
principalmente devido aos componentes de controle;
• Ao mesmo tempo que cresce a computação elástica, o custo
da potência computacional estava diminuindo ao ponto de
ter milhares de processadores à disposição.
Nível Aplicação
16
Motivação - 4
Ideia: A potência de processamento pode ser aproveitada para
executar um plano de controle logicamente centralizado e
usar hardware de comutação barato:
SDN – Software Defined Networks ou
Redes Definidas por Software
• Os propositores de SDN perceberam que os fornecedores de
equipamentos de rede não atendiam suas necessidades,
particularmente quanto a inovação e desenvolvimento.
• Se alguém quisesse experimentar um novo protocolo , como o
firmware não suportava, fazia-se uma requisição ao fabricante
e esperava-se todas as etapas do desenvolvimento (meses,
anos…).
Nível Aplicação
17
Motivação - 5
ONF – Open Network Foundation – suporta comercialmente os
esforços de SDN e é a autoridade de padronização.
Previsão de crescimento de SDN
ao redor do mundo, divulgada pela
ONF em Abril/2013.
( em $Millions )
Nível Aplicação
18
Motivação - 6
• Alguns engenheiros de Stanford criaram um protocolo –
Openflow – que implementou esta ideia.
• Baseado nesta arquitetura básica, imagina-se o quão rápido e
fácil seria projetar um novo protocolo apenas implementando no
data center usando hardware em preço de commodities.
• Ainda melhor, é possível implementar isto em um ambiente de
computação elástica em uma máquina virtual.
• A motivação para SDN e OpenFlow foi a flexibilidade de como
programar o dispositivo de rede e não onde está a programação.
Nível Aplicação
19
Motivação - 7
OpenFlow foi arquitetado para ter diversos dispositivos contendo
apenas planos de dados que respondem a comandos enviados
para eles de um controlador centralizado que hospeda um
único plano de controle para aquela rede;
A função de data-path ainda
reside no switch, enquanto que
as decisões de roteamento de
alto nível são movidas para um
Controlador, normalmente
localizado em um servidor. Os
Switches e o Controlador se
comunicam através do protocolo
OF. Um Controlador adiciona e
ou remove entradas da tabela de
fluxos em nome da aplicação.
Nível Aplicação
20
Motivação - 6
• Joga fora o que foi feito até hoje ?
É mais provável uma abordagem híbrida:
– pelo qual uma parte das redes sejam operadas por um
controlador logicamente centralizado;
– outras partes seria executadas pelo plano de controle
distribuído mais tradicional.
Isso implica que esses dois mundos devem interagir uns com
os outros.
Nível Aplicação
21
Espectro da Distribuição
Revolucionário:
Para novas redes
Evolucionário:
Dispositivos mantém
Nívelfunções
Aplicação
algumas
22
Motivação - 7
• O esforço de empresas (Juniper, Cisco, Level3…) está
direcionado para desenvolver programação de rede
chamada Interface to the Routing System (I2RS).
• Há discussões com IETF e os primeiros rascunhos do IETF
estão surgindo.
• Ideia básica do I2RS: criar um protocolo e componentes
para programar a base de informação de roteamento do
dispositivo (routing information base - RIB) usando um
protocolo rápido para permitir interação em tempo-real da
RIB com o gerente que a controla.
• Estudam-se conceitos chaves para acelerar o feedback dado
pelos elementos de rede. A chave do sucesso do SDN está na
otimização desta comunicação.
Nível Aplicação
23
Definição SDN
• Software-defined networks (SDN)
Uma abordagem arquitetônica que otimiza e simplifica as
operações de redes ligando intimamente aplicações e
serviços de rede reais ou virtuais. Para este objetivo
emprega um ponto de controle central – o controlador SDN
– que media e facilita a comunicação entre aplicações que
pretendem interagir com os elementos de rede e os
elementos de rede que querem transmitir informações a
estas aplicações. O controlador expõe e abstrai funções de
rede e operações via uma interface programável,
bidirecional, moderna e application-friendly.
Nível Aplicação
24
Plano de Controle
No alto nível, o plano de controle estabelece os dados locais a
serem utilizados para criar as tabelas de encaminhamento
que serão utilizadas pelo plano de dados para encaminhar o
tráfego entre portas de entrada e saída de um dispositivo.
• Routing Information Base (RIB): conjunto de dados utilizado
para armazenar a topologia da rede
• Forwarding Information Base (FIB) : tabela com entradas dos
encaminhamentos . A FIB é programada uma vez que a RIB
for considerada consistente e estável.
Nível Aplicação
25
Plano de Dados
Um datagrama correto é processado no plano de dados
realizando buscas na FIB que são programadas
antecipadamente pelo plano de controle.
• Ações resultantes da pesquisa de encaminhamento do plano
de dados são: Encaminhar (ou replicar em casos como
multicast), descartar, remarcar, contar, enfileirar. Algumas
destas ações podem ser combinadas.
Nível Aplicação
26
Controle e Dados em Rede típica
Situação no interno de um
switch:
Chegou um pacote no plano
de dados (1) que não se
sabe o MAC – é passado
para o plano de controle (4):
aprende informação,
atualiza RIB (C). Devolve ao
plano de dados (2),
eventualmente alterando a
FIB, encaminha o pacote (3).
OBS: Esquema semelhante
para tratar questões do
Nível 3.
Nível Aplicação
27
Control and Data planes: not a new concept
Qualquer roteador ou
switch moderno multislot
tem seu plano de
controle rodando em
processador dedicado e o
plano de dados
executando
independente em uma
ou mais linhas, cada uma
com um processador
dedicado. O processador
do roteador e as linhas
estão conectados sobre
uma rede pequena
interna de alta
velocidade.
Nível Aplicação
28
Benefícios da Separação
Fatores beneficiados com a separação:
• Escalabilidade e inovação: cada parte pode crescer e inovar
independente da outra (com menos amarras);
• Custo: deve ser reavaliado – hardware mais barato pois menos
especializado, software mais sofisticado.
• Evolução: possibilidade de desenvolver novas soluções
independentes de fabricante.
• Estabilidade: código em expansão se torna “colcha de retalho”,
sendo complexo e frágil; espera-se código menor e portanto mais
estável.
• Complexidade: o número de “executores” de protocolo em um
modelo consistente de controle distribuído pode criar
complexidade de gerência e operações. ( quanto tempo vai levar
para o plano de controle estabilizar a respeito de uma rede livre
Nível Aplicação
29
de loops? )
Planos Distribuídos/Centralizados
• Modelo distribuído: os elementos participam para desenvolver
uma visão local consistente (livre de loops). Pelo tempos de
propagação envolvidos com as atualizações de alcance, o modelo
é chamado de consenso eventual, pois, a menos de uma rede
caseira, formam-se grafos complexos que por alguns instantes
podem conter inconsistências.
• O modelo distribuído de controle existe em parte por que não
existiam características disponíveis nas bases de dados, e seria
difícil conseguir a sincronização exigida para alta disponibilidade
entre dois ou mais pontos de controle.
• Com a abordagem centralizada, uma rede grande que tenha uma
mudança não precisa tocar individualmente cada elemento, mas
interage com poucos pontos de controle que cuidam dos
detalhes.
Nível Aplicação
30
Lógico x Literal
A centralização literal traz as dificuldades:
• Escalabilidade: como um ponto central daria conta de sessões
com cada equipamento gerenciado?
• Alta disponibilidade: se um único ponto falhar, a rede toda
falhará;
• Distância geográfica: Manter um ponto próximo facilita operação
e minimiza atrasos.
Plano de controle centralizado logicamente faz mais sentido que
centralizado literalmente: algum protocolo deve sincronizar os
controladores fisicamente distribuídos.
Nível Aplicação
31
Arquitetura Openflow
Alguns aplicativos de
controle estão no
topo do controlador
emulando o
comportamento dos
aplicativos de
controle tradicionais.
Nível Aplicação
32
OF - Operation
Nível Aplicação
33
Controlador
No mundo OF, o controlador é o rei! Um Controlador adiciona e ou
remove entradas da tabela de fluxos em nome da aplicação:
• Controladores estáticos: estaticamente estabelecem fluxos que
interliguem um cjto de comps de teste durante um experimento.
• Controladores dinâmicos: mais sofisticados adicionam / removem
fluxos enquanto a experiência progride.
Existem diversas maneiras para customizar o experimento OF:
• Fazer o Download, e configurar um controlador existente.
• Ler as Especificações do OpenFlow e fazer tudo do zero :
Escrever o seu proprio controlador para manipular cerca de 20
mensagens do protocolo OpenFlow;
• Mais Recomendavel: extender um controlador existente.
Ex. Escrever um Modulo para NOX : www.noxrepo.org
Nível Aplicação
34
Controladores disponíveis
Outras informações (Reunião Semestral da ANSP - RSA4):
• MUL – O melhor: em C, focado em performance;
• Maestro – segundo melhor, em Java
• Floodlight – Java – terceiro melhor.
• Ryu – python - ruim: o programador tem que conhecer a
especificidade do OF
Nível Aplicação
35
Ferramenta - Mininet (1)
• Grande ferramenta de testes e desenvolvimento, ideal para
fase de prototipação. Google usa algo como mininet antes da
implantação.
• Rede Virtual na Comodidade da sua Maquina (Espaço do
usuário => leve)
• Topologias e Quantidades de Nós Arbitrárias
mininet.org:
“Mininet is distributed as a virtual machine (VM) image with all
dependencies pre-installed, runnable on common virtual
machine monitors such as VMware, Xen and VirtualBox. This
provides a convenient container for distribution; once a
prototype has been developed, the VM image may be
distributed to others to run, examine and modify.”
Nível Aplicação
36
Mininet (2)
•
É possível escrever scripts para ativá-lo:
A API de Mininet permite criar redes customizadas com
algumas poucas linhas de Python:
from mininet.net import Mininet
from mininet.topolib import TreeTopo
tree4 = TreeTopo(depth=2,fanout=2)
net = Mininet(topo=tree4)
net.start()
h1, h4 = net.hosts[0], net.hosts[3]
print h1.cmd('ping -c1 \%s' \% h4.IP())
net.stop()
Cria uma pequena rede (4 hosts, 3 switches), e realiza pings de
um host para o outro (por cerca de 4 segundos)
Nível Aplicação
37
Virtualização do OF com VLANs
Alguns equipamentos permitem usar VLANs com diferentes
controladores.
Nível Aplicação
38
Virtualização com FlowVisor (1)
https://openflow.stanford.edu/display/DOCS/Flowvisor:
“FlowVisor is a special purpose OpenFlow controller that acts as a
transparent proxy between OpenFlow switches and multiple
OpenFlow controllers.
FlowVisor creates rich ''slices'' of network resources and delegates
control of each slice to a different controller
Slices can be defined by any combination of switch ports (layer
1), src/dst ethernet address or type (layer 2), src/dst IP address
or type (layer 3), and src/dst TCP/UDP port or ICMP code/type
(layer 4).
FlowVisor enforces isolation between each slice, i.e., one slice
cannot control another's traffic”
Nível Aplicação
39
Virtualização com FlowVisor (2)
A rede física pode ser separada entre os 3
controladores oferecendo uma parte do controle
para cada um, de acordo com a política.
Nível Aplicação
40
VLAN e FlowVisor
Um equipamento que tem VLAN de Produção normal, VLAN
com o uso de OpenFlow, VLAN para uso do FlowVisor
Nível Aplicação
41
Tarefas do Bimestre - 1
Áreas de Pesquisa a escolha do aluno:
1. SDN for sharing resources: QoS, load balancing, admission
control...
2. SDN in Wireless: (Mininet manipula? ) Abordagem atual: usar
Linux para Sistemas Embarcados (OpenWrt) inserindo OF;
3. SDN and Security;
4. SDN controllers: estudar como centralizar logicamente,
estratégias para hierarquizar controladores, flowvisor.
Passos da primeira tarefa do bimestre:
1. Escolha uma área de seu interesse entre estas 4 acima;
2. Faça um levantamento bibliográfico do tema: procure entender
o estado da arte nesta área. Que problemas existem? Que
soluções já foram encontradas? Quais as melhores soluções?
3. Monte uma apresentação contendo uma visão geral da área e a
melhor solução que encontrou.
Nível Aplicação
42
Tarefas do Bimestre - 2
Parte Prática:
1. Instale o VirtuallBox com uma máquina Ubuntu e estude-o;
2. Instale o mininet e crie uma minirede - estude-o;
3. “Enxergue” o protocolo OF em operação;
4. Instale um controlador de seu gosto e crie regras a serem
discutidas ao longo do bimestre, de acordo com a área
escolhida.
Nível Aplicação
43