A idéia é que o controlador seja capaz de fazer o balanceamento de uma conexão TCP sobre diversos caminhos distintos.
Isso poderia ser feito ao natural, por exemplo, em uma rede onde os roteadores, em razão da configuração do seus protocolos e esquemas de roteamento, decidissem encaminhar pacotes por caminhos distintos. Porém, mesmo nesse caso, não haveria um controle explícito do encaminhamento de pacotes por caminhos diferentes para uma dada conexão TCP. Esse balanceamento seria feito apenas baseado na chegada dos pacotes, independente do conteúdos dos mesmos.
Bom, como essa idéia de trabalho visa mostrar as potencialidades de uso das SDNs, vale a pena ir descrevendo o desenvolvimento do mesmo aqui.
Inicialmente (e apenas inicialmente), iremos considerar uma topologia de referência para começar o desenvolvimento.
A topologia em questão pode ser vista abaixo.
A partir dessa topologia, foi criado um script para iniciar o mininet, conforme indicado abaixo:
#!/usr/bin/python
#coding: utf-8
"""
Cria a topologia inicial para testes com o controlador SDN. A topologia segue a
descrição e modelo proposto e documentado como topologia inicial, consistindo
em 8 switches interconectados de modo específico, conforme o diagrama
rede_topologia_inicial.jpg. Cada switch possui dois hosts, seguindo a
nomenclatura indicada no mesmo diagrama.
Autor: Ricardo Balbinot
Data: junho/2014
"""
from mininet.topo import Topo
class Topologia_Inicial(Topo):
""" Cria a tpologia indicada"""
def __init__( self ):
""" Inicializa a topologia"""
# Inicializa a topologia
Topo.__init__(self)
# Adiciona os switches
sw1 = self.addSwitch('sw1')
sw2 = self.addSwitch('sw2')
sw3 = self.addSwitch('sw3')
sw4 = self.addSwitch('sw4')
sw5 = self.addSwitch('sw5')
sw6 = self.addSwitch('sw6')
sw7 = self.addSwitch('sw7')
sw8 = self.addSwitch('sw8')
# Adiciona os hosts
h1s1 = self.addHost('h1s1')
h2s1 = self.addHost('h2s1')
h1s2 = self.addHost('h1s2')
h2s2 = self.addHost('h2s2')
h1s3 = self.addHost('h1s3')
h2s3 = self.addHost('h2s3')
h1s4 = self.addHost('h1s4')
h2s4 = self.addHost('h2s4')
h1s5 = self.addHost('h1s5')
h2s5 = self.addHost('h2s5')
h1s6 = self.addHost('h1s6')
h2s6 = self.addHost('h2s6')
h1s7 = self.addHost('h1s7')
h2s7 = self.addHost('h2s7')
h1s8 = self.addHost('h1s8')
h2s8 = self.addHost('h2s8')
# Cria os enlaces dos hosts aos switches
self.addLink(sw1,h1s1)
self.addLink(sw1,h2s1)
self.addLink(sw2,h1s2)
self.addLink(sw2,h2s2)
self.addLink(sw3,h1s3)
self.addLink(sw3,h2s3)
self.addLink(sw4,h1s4)
self.addLink(sw4,h2s4)
self.addLink(sw5,h1s5)
self.addLink(sw5,h2s5)
self.addLink(sw6,h1s6)
self.addLink(sw6,h2s6)
self.addLink(sw7,h1s7)
self.addLink(sw7,h2s7)
self.addLink(sw8,h1s8)
self.addLink(sw8,h2s8)
# Cria os enlaces entre os switches
self.addLink(sw1, sw2)
self.addLink(sw1, sw4)
self.addLink(sw2, sw3)
self.addLink(sw3, sw4)
self.addLink(sw3, sw5)
self.addLink(sw4, sw5)
self.addLink(sw4, sw6)
self.addLink(sw5, sw8)
self.addLink(sw6, sw7)
self.addLink(sw6, sw8)
self.addLink(sw7, sw8)
topos = { 'topologia_inicial': ( lambda: Topologia_Inicial() ) }
Essa topologia inicial para o mininet foi criada a partir do próprio modelo oferecido na documentação do mininet (que pode ser visto aqui).

Nenhum comentário:
Postar um comentário