MC833A - 2019
Programação de Redes de Computadores

Exercício 7 - SDN e Openflow.

Critérios para entrega do exercício
Atividade
Passos:

Vamos utilizar a instância vm-netlabs para hospedar a seguinte topologia:

  1. Instalar e habilitar o OpenVSwitch.

    # iptables -F
    # dnf -y install openvswitch
    # systemctl start openvswitch

  2. Instalar e habilitar o Docker para iniciarmos o controlador SDN.

    # systemctl start docker
  3. Vamos criar a topologia para realizarmos os testes de um controlador SDN utilizando OpenFlow.

    NS-VM1 ---> ovsbr0 <--- NS-VM2

    Para criar uma bridge utilizando OpenVSwitch execute os seguinte comando:

    # ovs-vsctl add-br ovsbr0

    Criar os namespace com as interfaces veth:

    # ip netns add ns-vm1
    # ip netns add ns-vm2
    # ip link add vethHost1 type veth peer name vethNS1
    # ip link add vethHost2 type veth peer name vethNS2
    # ip link set vethNS1 netns ns-vm1
    # ip link set vethNS2 netns ns-vm2
    # ip netns exec ns-vm1 ifconfig lo up
    # ip netns exec ns-vm2 ifconfig lo up
    # ip netns exec ns-vm1 ifconfig vethNS1 10.0.0.10/24 up
    # ip netns exec ns-vm2 ifconfig vethNS2 10.0.0.20/24 up


    Precisamos incluir as interfaces na bridge ovsbr0 e habilitar.

    # ovs-vsctl add-port ovsbr0 vethHost1
    # ovs-vsctl add-port ovsbr0 vethHost2
    # ifconfig vethHost1 up
    # ifconfig vethHost2 up
    # ifconfig ovsbr0 up


  4. Vamos criar nosso controlador SDN utilizando docker.

    # docker pull opendaylight/odl
    # docker run -it --network host --name sdncontrol opendaylight/odl /opt/opendaylight/bin/karaf


    No console do sdncontrol do docker realize a seguinte configuração.

    opendaylight-user@root> feature:install odl-restconf odl-l2switch-switch odl-l2switch-switch-ui odl-dlux-core odl-dluxapps-nodes
    opendaylight-user@root> shutdown -f


    Reinicie novamente o container docker para reinicia-lo.

    # docker start -ai sdncontrol
  5. Em outro terminal vamos conectar a ovsbr0 com o controlador.

    # ovs-vsctl set bridge ovsbr0 protocols=OpenFlow13
    # ovs-vsctl set-controller ovsbr0 tcp:127.0.0.1:6633
    # ovs-vsctl set controller ovsbr0 connection-mode=out-of-band
    # ovs-vsctl list controller


    Abra no browser a seguinte URL http://127.0.0.1:8181/index.html
    Utilize admin como usuário e senha para acessar o ambiente.

    Abra a URL a seguir e responda http://127.0.0.1:8181/index.html#/topology

    Que elemento podemos visualizar em topology do controlador SDN ?

    Entre na pilha de rede da ns-vm1 e teste a comunicação até ns-vm2, existe comunicação entre ns-vm1 e ns-vm2 ?

  6. Vamos realizar a seguinte configuração via REST API no controlador SDN.

    Abra a seguinte URL: http://127.0.0.1:8181/apidoc/explorer/index.html

    Navegue até arp-handler-config e clique em PUT /config/arp-handler-config:arp-handler-config

    No campo (config)arp-handler-config inclua o seguinte conteudo.

    {
    "arp-handler-config":
    {
    "is-proactive-flood-mode":false
    }
    }


    Clique em [Try it out!]

    Teste a comunicação novamente entre ns-vm1 e ns-vm2, existe comunicação entre ns-vm1 e ns-vm2 ?

    Verifique a topologia novamente no controlador via browser, e descreva o que mudou.

  7. Navegue até http://127.0.0.1:8181/index.html e clique em [nodes].

    Que informações podemos obter nesta seção ?

Instituto de Computação
Universidade Estadual de Campinas
Av Albert Einstein 1251
13083-852 Campinas, SP - Brazil