Escolar Documentos
Profissional Documentos
Cultura Documentos
Christopher Monsanto*, Joshua Reich*, Nate Foster, Jennifer Rexford*, David Walker* *Princeton Cornell
Diego R. Mafioletti
Entretanto:
As plataformas de controladores existentes (POX, NOX, Onix, Beacon, Maestro, Nettle) foram o programador a construir uma aplicao monoltica
Route + Monitor + FW + LB
(POX, NOX...) Interface do programador
Controller Platform
(OpenFlow) Interface de hardware Switches
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
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)
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
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]
...
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
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