Você está na página 1de 18

Composing Software-Defined Networks

Christopher Monsanto*, Joshua Reich*, Nate Foster, Jennifer Rexford*, David Walker* *Princeton Cornell
Diego R. Mafioletti

Redes Definidas por Software(SDN)


Simplificar o gerenciamento de redes:
Visibilidade de toda a rede Controle direto via interface aberta (OpenFlow)

Entretanto:
As plataformas de controladores existentes (POX, NOX, Onix, Beacon, Maestro, Nettle) foram o programador a construir uma aplicao monoltica

Mltiplas Tarefas de Rede


Aplicao monoltica

Route + Monitor + FW + LB
(POX, NOX...) Interface do programador

Controller Platform
(OpenFlow) Interface de hardware Switches

Difcil de escrever, testar, depurar e reutilizar.


3

Composio Paralela
Monitor srcip = 5.6.7.8 count Route dstip = 10.0.0.1 fwd(1) dstip = 10.0.0.2 fwd(2)

srcip = 5.6.7.8 count Compiled Prioritized Rule Set for Monitor |a contagem, Route Faz dstip =dstip 10.0.0.1 fwd(1) srcip = 5.6.7.8, = 10.0.0.1 count,fwd(1) mas no encaminha dstip = 10.0.0.2 fwd(2) srcip = 5.6.7.8, dstip = 10.0.0.2 count,fwd(2) srcip = 5.6.7.8 count dstip = 10.0.0.1 fwd(1) Encaminha, dstip = 10.0.0.1 fwd(1) dstip = 10.0.0.2 fwd(2) mas no faz a contagem dstip = 10.0.0.2 fwd(2) srcip = 5.6.7.8 count

Modularidade a Chave!
Route Route Monitor + Monitor +FW FW + LBLB
Um mdulo para cada tarefa
Cada mdulo afeta o processamento do mesmo trfego

Controller Platform

Mais fcil de programar, testar e depurar. Maior reusabilidade e portabilidade.

A Linguagem Pyretic
Monitor srcip = 5.6.7.8 count Route dstip = 10.0.0.1 fwd(1) dstip = 10.0.0.2 fwd(2)

(srcip = 5.6.7.8) [fwd(B)]

(dstip = 10.0.0.1) [fwd(1)] | (dstip = 10.0.0.2) [fwd(2)]

return monitor | route

Predicados de lgica booleana

Aes primitivas Operadores de composio


6

Polticas de Alto Nvel


Poltica uma funo que toma um pacote de entrada, a partir de algum local, e produz um multiconjunto de pacotes, em algum conjunto de locais.

Polticas Estticas (NetCore)


Aes: primitivas bsicas de processamento de pacotes
A ::= drop(p) | id(p) | fwd(port) | flood | push(h=v) | pop(h) | move(h1=h2)

Predicados : usados para selecionar certos subconjuntos de pacotes


P ::= all_packets | no_packets | match(h=v) | ingress | egress | P & P | (P | P) | ~P

Consultas: usados para observar os pacotes atravessando a rede


Q ::= packets(limit,[h]) | counts(every,[h])

Polticas: usadas para mixar aes, predicados e consultas, para criar polticas sofisticadas a partir de componentes simples
C ::= A | Q | P[C] | (C | C) | C >> C | if_(P,C1,C2)
8

Aplicaes Dinmicas
Definindo uma poltica esttica, o programador pode usar essa poltica para criar uma aplicao no Pyretic. Exemplo de uma aplicao completa no Pyretic: hub.py
from pyretic.lib.corelib import * def main(): return flood()
9

Objetos de Rede
Devido a limitaes dos controladores atuais, os programadores devem especificar polticas nos termos da topologia fsica a ser usada. A linguagem Pyretic rompe essa restrio, atravs de objetos de rede, permitindo a criao de uma nova rede derivada no topo da rede subjacente.

10

Abstrao de Topologia com Objetos de Rede

Muitos-para-um: muitos switches fsicos para um switch virtual


11

Abstrao de Topologia com Objetos de Rede

Um-para-muitos: Um switch fsico para muitos virtuais


12

Modelo de Pacote Abstrato


Field srcmac dstmac Value

Pacote OpenFlow
Conjunto de campos fixos Um (ou zero) valores por campo

eth_type
vlan vlan_tos srcip dstip ip_proto ip_tos srcport dstport
13

Field switch inport srcmac dstmac eth_type vlan vlan_tos srcip dstip

Value[0]

Value[1]

...

Modelo de Pacote Abstrato


Pacote do Pyretic
Campos de cabealho pr-definidos
Campos de cabealho virtual Localizao fsica Comunicao entre os mdulos Propriedades abstratas Contem objetos arbitrrios Pilhas de valores til para abstrao de rede

ip_proto ip_tos
srcport dstport vswitch vinport usertype

14

Transformando Polticas
Ingress: sobe o pacote da rede subjacente para a nova rede derivada, acrescentando as identificaes de porta e switch na pilha de valores abstrata do Pyretic Egress: desce o pacote da rede derivada para a rede subjacente, removendo as identificaes de porta e switch da pilha de valores abstrata do Pyretic Fabric: implementa o repasse entre as portas adjacentes na rede derivada usando os switches e conexes da rede subjacente
15

Abstrao de Topologia: Muitos-para-um

ingress_policy = ( match(switch=S1, inport=1) [push(vswitch=V, vinport=1)] | match(switch=S2, inport=1) [push(vswitch=V, vinport=2)])

egress_policy = match(vswitch=V) [if_(match(switch=S1, voutport=1) | match(switch=S2, voutport=2), pop(vswitch, vinport, voutport), id)]

fabric_policy = match(vswitch=V)[ ( match(switch=S1, voutport=1)[fwd(1)] | match(switch=S1, voutport=2)[fwd(2)] | match(switch=S2, voutport=1)[fwd(2)] | match(switch=S2, voutport=2)[fwd(1)])]
16

Concluso
O nvel correto de abstrao para programar em SDN no est em interfaces de baixo-nvel, mas sim em linguagens de alto-nvel para escrever e compor mdulos. Pyretic uma nova linguagem que permite a construo de grandes e sofisticas aplicaes, usando poucas linhas de cdigo, com uma linguagem simples e composta de mdulos autnomos.
17

Referncias
http://www2.dc.ufscar.br/~marcondes/POS20 13/paper31.pdf http://frenetic-lang.org/pyretic/ http://www.youtube.com/watch?v=1jEkoHAp qKQ

18

Você também pode gostar