Ggardusi (discussão | contribs)
 
(61 revisões intermediárias por 5 usuários não estão sendo mostradas)
Linha 16: Linha 16:
<br>  
<br>  


Uma rede de telecomunicações é composta por diversos equipamentos interligados, formando uma estrutura que pode ser representada por um grafo. Essa complexa estrutura é capaz de enviar e receber milhares de informações, as quais podem ser utilizadas em diversas aplicações, porém é necessário um certo esforço desnecessário para obter, processar e utilizar.
Uma rede de telecomunicações é composta por diversos equipamentos interligados, formando uma estrutura que pode ser representada por um grafo. Essa complexa estrutura é capaz de enviar e receber milhares de informações, as quais podem ser utilizadas em diversas aplicações, porém ainda requer um esforço desnecessário para obter, processar e utilizar.
Ao esquematizar essa rede como um grafo, é possível visualisá-la da forma que for mais conveniente para cada objetivo, seja em forma de backups, ocorrências, monitoramento, etc.
 
Para isso, é necessário que exista um sistema capaz de percorrer por todos os mínimos detalhes de forma eficaz e precisa, caso contrário seria uma ferramenta inviável.
<br>
Ao esquematizar essa rede como um grafo, é possível utilizá-la da forma que for mais conveniente para cada objetivo, seja em forma de backups, ocorrências, monitoramento, etc.
 
<br>
Para isso, é necessário que exista um sistema capaz de percorrer por todos os mínimos detalhes de forma eficaz e precisa, caso contrário, seria uma ferramenta inviável.


<br>
<br>
Linha 26: Linha 30:
<br>  
<br>  


== Características&nbsp; ==
== Estudo Dirigido ==


<br>  
<br>  


Informe sobre as particularidades, aspectos e atributos desta idéia.
* Redes de computadores
** MPLS (Multiprotocol Label Switching)
** Túneis LSP (Label-Switched Paths)
** SSH
** Telnet
** SNMP
** Equipamentos
*** Juniper
*** Cisco
*** Huawei
* Teoria dos Grafos
** DFS (Depth-first search)
** BFS (Breadth-first search)
** Conectividade
** Ciclo
** Caminho
** Subgrafo
** Coloração
** Dijkstra
** Bipartição
** Árvores
** Grafos dinâmicos
** Fluxo máximo
*** Ford-Fulkerson
*** Edmonds-Karp
*** Dinic
*** Min cost max flow
* Programação:
** Raciocínio lógico (maratonas de programação)
** Estruturas de dados
** Programação dinâmica
** Processamento paralelo
** Processamento remoto
* Interface Gráfica:
** Gephi
* Inteligência artificial
** Redes neurais
** Deep Learning
** Machine Learning
<br>


<br>
==Esboços==


<br>
[[Arquivo:rascunho.png|center]]


== Estudo Dirigido  ==
<br>


<br>
[[Arquivo:rascunho2.png|center]]


* Roteadores
* MPLS
* Túneis LSP
* Teoria dos Grafos
* Gephi
* Processamento paralelo
* Processamento remoto
<br>
<br>
[[Arquivo:esboço3.PNG|center]]


= Fase II - Ensino  =
= Fase II - Ensino  =
Linha 55: Linha 93:
== Conteúdo  ==
== Conteúdo  ==


Desenvolva um conteúdo que possa transmitir o conhecimento adquirido para outros
Basicamente o projeto se baseia no conceito de realizar o acesso a uma interface gráfica, em que, a mesma contém informações a respeito de todos os equipamentos que constituem o backbone da rede Algar. Informações essas, que antes não eram tão simples a sua visualização, tornando assim a aplicação bastante importante, justamente pelo fato de ter em si um banco de dados com as principais informações dos equipamentos e dessa forma, essas informações serão filtradas da tabela de acordo com o que for solicitado pelo usuário da interface.
  Crie um material (Wiki, PDF, PPT, ...) que possa ser armazenado e facilmente atualizável
 
O projeto se constitui basicamente da estrutura mostrada logo abaixo:
 
  [[Arquivo:Flow.png|center]]
 
 
A aplicação utiliza de uma tabela base para acessar todas as informações necessárias a respeito dos equipamentos no backbone da rede, como por exemplo, a cidade onde se encontra, o site a qual está associado, seu determinado fabricante, seu respectivo IP e o seu modelo específico.
 
O projeto trará como resultado uma aplicação que por meio de uma interface com o usuário, o mesmo terá acesso a informações de maneira bastante otimizada e consequentemente um acesso facilitado ao usuário no backbone da rede. Segue a seguir um template da própria aplicação a ser desenvolvida:


<br>  
 
[[Arquivo:interfaceflow1.png|center]]
<br>


== Apresentação  ==
== Apresentação  ==


Apresente ao grupo (reunião, EAD, Blog, ...)
[[Arquivo:FlowGraphApresentação.pdf]]
Publique aqui
 
<br>
 
== Metodologia ==
<br>
 
 
*Scrum
<br>
Scrum é uma metodologia ágil para gestão e planejamento de projetos. No scrum os projetos são divididos em ciclos, com determinado tempo de execução, são os chamados sprints. As funcionalidades a serem implementadas em um projeto são mantidas em uma lista que é conhecida como Product Backlog.
 
<br>
 
Essa metodologia é marcada por reuniões constantes e com funções diversificadas dentro do projeto ao todo, como por exemplo as daily scrum, que são reuniões rápidas e diárias entre os participantes do projeto, com o intuito de especificar o que cada um têm feito e caso possui algum impedimento para execução do mesmo; outra reunião é a chamada sprint planning meeting, na qual se trata de uma priorização do que deve ser feito e também o planejamento das outras atividades para os próximos sprints, levando sempre em conta o que está especificado no Product Backlog; e por último e não menos importante temos a chamada sprint review meeting, onde a equipe apresenta todas as funcionalidades implementadas das sprints que decorrem do projeto.
 
<br>
 
Na metodoligia scrum, os participantes do projeto se dividem de acordo com a seguinte forma: Cliente, Product Owner, Scrum Master, Time Scrum.


<br>
<br>


== Metoldologia ==
*Trello
 
Trello é uma ferramenta conhecida por auxiliar no gerenciamento de projetos por meio de listas que se mostram extremamente versáteis e que são facilmente alteradas de acordo com a necessidade do usuário. Trata-se de um site que possui um layout específico capaz de dispor no mesmo informações necessárias relacionadas ao serviço. A aplicação é disposta por diferentes boards, que diz respeito a quadros que contém especificidades do projeto, dividos em o que se deve entregar, o que está sendo feito e o que já foi entregue. Um exemplo do utilizado em nosso projeto pode ser visto logo em seguida:
 
<br>
<br>
[[Arquivo:TRELLO.png|center]]
<br>
A interface do trello é um ambiente muito útil para o trabalho em equipe, em que, os quadros são compartilhados com todos os membros inseridos no projeto, e cada um recebe marcações em diversos cartões com respeito as suas respectivas funções para que o objetivo possa ser alcançado.


Descrevas as metodologias usadas. Alguns exemplos:
*GitHub
O GitHub é um sistema de gerenciamento de projetos e versões de códigos, assim como também, um tipo de rede social criado para os desenvolvedores. O GitHub permite trabalhar em projetos colaborativos com desenvolvedores de todo o mundo, além de planejar os projetos e acompanhar os trabalhos. No GitHub é possível uma interação grande com relação aos participantes de cada projeto no que diz respeito ao processo de desenvolvimento de um código e também da atualização do mesmo para diferentes versões.
<br>


Estratégia de Job Rotation
Estudos básicos para conhecimento do potencial
Estudos básicos para entendimento sobre o problema
Estudos para dar base aos pesquisadores
Benchmarking com empresas estrangeiras
Aceleradoras de empresas
Adoção de novas tecnologias
Utilização da proposta de soluções Open-source
Priorização no desenvolvimento interno
Foco na não dependência de fornecedores
Prática de formação dos talentos necessários
<br>
<br>


Linha 91: Linha 154:
== Benefícios para quem for oferecer esta solução  ==
== Benefícios para quem for oferecer esta solução  ==


    Descrever em tópicos os benefícios que uma pessoa ou uma empresa podem obter: ganhos, receitas, novos negócios, novos produtos, novas parcerias
*Praticidade na visualização de todos os equipamentos da rede backbone
*Atualização em tempo real dos dados da rede
*Possibilidade de inserção de novos equipamentos de maneira otimizada
*Conhecimento mais rápido a respeito dos elementos de rede
*Facilidade de acesso para mostrar a viabilidade do produto para quem for utilizar


<br>  
<br>  
Linha 99: Linha 166:
== Benefícios para o usuário  ==
== Benefícios para o usuário  ==


    Descrever em tópicos os benefícios para os usuários desta solução.
*Facilidade de acesso a informação a respeito da rede
    Pode se inspirar no Canvas.
*Otimização de esforço e tempo
*Análise rápida para soluções rápidas
*Configurações de maneira remota


<br>  
<br>


== Direcionadores chave para esta iniciativa  ==
== Direcionadores chave para esta iniciativa  ==


    Descrever em tópicos o que esta iniciativa pode proporcionar
A iniciativa do Flow Graph pode ser uma aplicação que venha a unificar as informações em uma única plataforma. As informações a respeito da rede são de extrema importância e muito utilizadas, dessa forma, com uma aplicação que otimize a interpretação dessas, seria de grande utilidade e garantiria uma maior eficiência em várias necessidades dentro da própria empresa, assim como também pesquisas científicas, que poderiam utilizar a tecnologia desenvolvida. A aplicação deste projeto pode ser bem ampla, desde um incentivo a uma unificação de todas as informações a respeito da rede em uma única plataforma, assim como, o auxílio às atividades rotineiras dos especialistas que precisam coletar e lidar com as informações que a interface fornece, além de, proporcionar a capacidade de alterações de maneira remota na rede em questão, como inserção de novos roteadores e possíveis outras propostas a serem desenvolvidas com o decorrer do tempo.


<br><br>  
<br><br>


== Possíveis modelos de negócios  ==
== Possíveis modelos de negócios  ==
Linha 123: Linha 192:
<br>
<br>


    Aponte aqui quais foram os principais obstáculos encontrados para o desenvolvimento desta solução
Ao longo do desenvolvimento do projeto, nos deparamos com as seguintes barreiras, ao passo que nos levaram a avaliar quais as possíveis soluções e caminhos alternativos que poderiam ser seguidos.
 
*Conseguir fazer um display (front) de um banco de dados em formato tabela HTML, usando um script JS para acessar o banco no servidor interno;
*A ferramenta do JavaScript não possui nativamente acesso ao host local, sendo necessário um framework para conseguir ter acesso ao banco;
*Uma ferramenta avaliada seria o Node Js, porém se trata de um side-server, ou seja, não é capaz de rodar em browser, onde seria o destino da informação;
* Exemplificando:
** A ferramenta que consegue usar o JS para buscar a informação no banco, não pode ser usada para exibir a informação que pegou.
<br>
<br>


Linha 249: Linha 324:
<br>  
<br>  


= Cronograma Macro =
= Kanban =
<br>


<br>  
* https://trello.com/b/SwbRrjI0/flow-graph
<br>


= Histórico  =
= Histórico  =
Linha 260: Linha 337:


= Pesquisadores  =
= Pesquisadores  =
 
* Paulo Latado
*<br>
* Gustavo Gardusi
* Pedro Diogo Machado
* Aymen Ghannouchi
* Hugo Barbosa Silva
* Paulo Vitor Costa Lima
<br>

Edição atual tal como às 22h50min de 24 de agosto de 2020

Título da Idéia

  • Portal de coletas


Objetivos

  • Criar uma solução que facilite a visualização de informações sobre os equipamentos e também realize configurações automáticas.
  • Criação de túneis LSP entre os roteadores.
  • Representar toda a planta da empresa por meio de técnicas como Graph Theory, Network Flow e Parallel computing.
  • Criar uma API capaz de executar uma série de comandos pré definidas em um conjunto de equipamentos, baseado na autenticação de uma lista de usuários.


Conceito


Uma rede de telecomunicações é composta por diversos equipamentos interligados, formando uma estrutura que pode ser representada por um grafo. Essa complexa estrutura é capaz de enviar e receber milhares de informações, as quais podem ser utilizadas em diversas aplicações, porém ainda requer um esforço desnecessário para obter, processar e utilizar.


Ao esquematizar essa rede como um grafo, é possível utilizá-la da forma que for mais conveniente para cada objetivo, seja em forma de backups, ocorrências, monitoramento, etc.


Para isso, é necessário que exista um sistema capaz de percorrer por todos os mínimos detalhes de forma eficaz e precisa, caso contrário, seria uma ferramenta inviável.


Fase I - Estudo


Estudo Dirigido


  • Redes de computadores
    • MPLS (Multiprotocol Label Switching)
    • Túneis LSP (Label-Switched Paths)
    • SSH
    • Telnet
    • SNMP
    • Equipamentos
      • Juniper
      • Cisco
      • Huawei
  • Teoria dos Grafos
    • DFS (Depth-first search)
    • BFS (Breadth-first search)
    • Conectividade
    • Ciclo
    • Caminho
    • Subgrafo
    • Coloração
    • Dijkstra
    • Bipartição
    • Árvores
    • Grafos dinâmicos
    • Fluxo máximo
      • Ford-Fulkerson
      • Edmonds-Karp
      • Dinic
      • Min cost max flow
  • Programação:
    • Raciocínio lógico (maratonas de programação)
    • Estruturas de dados
    • Programação dinâmica
    • Processamento paralelo
    • Processamento remoto
  • Interface Gráfica:
    • Gephi
  • Inteligência artificial
    • Redes neurais
    • Deep Learning
    • Machine Learning


Esboços



Fase II - Ensino


Conteúdo

Basicamente o projeto se baseia no conceito de realizar o acesso a uma interface gráfica, em que, a mesma contém informações a respeito de todos os equipamentos que constituem o backbone da rede Algar. Informações essas, que antes não eram tão simples a sua visualização, tornando assim a aplicação bastante importante, justamente pelo fato de ter em si um banco de dados com as principais informações dos equipamentos e dessa forma, essas informações serão filtradas da tabela de acordo com o que for solicitado pelo usuário da interface.

O projeto se constitui basicamente da estrutura mostrada logo abaixo:


A aplicação utiliza de uma tabela base para acessar todas as informações necessárias a respeito dos equipamentos no backbone da rede, como por exemplo, a cidade onde se encontra, o site a qual está associado, seu determinado fabricante, seu respectivo IP e o seu modelo específico.

O projeto trará como resultado uma aplicação que por meio de uma interface com o usuário, o mesmo terá acesso a informações de maneira bastante otimizada e consequentemente um acesso facilitado ao usuário no backbone da rede. Segue a seguir um template da própria aplicação a ser desenvolvida:



Apresentação

Arquivo:FlowGraphApresentação.pdf


Metodologia



  • Scrum


Scrum é uma metodologia ágil para gestão e planejamento de projetos. No scrum os projetos são divididos em ciclos, com determinado tempo de execução, são os chamados sprints. As funcionalidades a serem implementadas em um projeto são mantidas em uma lista que é conhecida como Product Backlog.


Essa metodologia é marcada por reuniões constantes e com funções diversificadas dentro do projeto ao todo, como por exemplo as daily scrum, que são reuniões rápidas e diárias entre os participantes do projeto, com o intuito de especificar o que cada um têm feito e caso possui algum impedimento para execução do mesmo; outra reunião é a chamada sprint planning meeting, na qual se trata de uma priorização do que deve ser feito e também o planejamento das outras atividades para os próximos sprints, levando sempre em conta o que está especificado no Product Backlog; e por último e não menos importante temos a chamada sprint review meeting, onde a equipe apresenta todas as funcionalidades implementadas das sprints que decorrem do projeto.


Na metodoligia scrum, os participantes do projeto se dividem de acordo com a seguinte forma: Cliente, Product Owner, Scrum Master, Time Scrum.


  • Trello

Trello é uma ferramenta conhecida por auxiliar no gerenciamento de projetos por meio de listas que se mostram extremamente versáteis e que são facilmente alteradas de acordo com a necessidade do usuário. Trata-se de um site que possui um layout específico capaz de dispor no mesmo informações necessárias relacionadas ao serviço. A aplicação é disposta por diferentes boards, que diz respeito a quadros que contém especificidades do projeto, dividos em o que se deve entregar, o que está sendo feito e o que já foi entregue. Um exemplo do utilizado em nosso projeto pode ser visto logo em seguida:



A interface do trello é um ambiente muito útil para o trabalho em equipe, em que, os quadros são compartilhados com todos os membros inseridos no projeto, e cada um recebe marcações em diversos cartões com respeito as suas respectivas funções para que o objetivo possa ser alcançado.


  • GitHub

O GitHub é um sistema de gerenciamento de projetos e versões de códigos, assim como também, um tipo de rede social criado para os desenvolvedores. O GitHub permite trabalhar em projetos colaborativos com desenvolvedores de todo o mundo, além de planejar os projetos e acompanhar os trabalhos. No GitHub é possível uma interação grande com relação aos participantes de cada projeto no que diz respeito ao processo de desenvolvimento de um código e também da atualização do mesmo para diferentes versões.


Fase III - Exemplo de Caso de Negócio


Benefícios para quem for oferecer esta solução

  • Praticidade na visualização de todos os equipamentos da rede backbone
  • Atualização em tempo real dos dados da rede
  • Possibilidade de inserção de novos equipamentos de maneira otimizada
  • Conhecimento mais rápido a respeito dos elementos de rede
  • Facilidade de acesso para mostrar a viabilidade do produto para quem for utilizar



Benefícios para o usuário

  • Facilidade de acesso a informação a respeito da rede
  • Otimização de esforço e tempo
  • Análise rápida para soluções rápidas
  • Configurações de maneira remota


Direcionadores chave para esta iniciativa

A iniciativa do Flow Graph pode ser uma aplicação que venha a unificar as informações em uma única plataforma. As informações a respeito da rede são de extrema importância e muito utilizadas, dessa forma, com uma aplicação que otimize a interpretação dessas, seria de grande utilidade e garantiria uma maior eficiência em várias necessidades dentro da própria empresa, assim como também pesquisas científicas, que poderiam utilizar a tecnologia desenvolvida. A aplicação deste projeto pode ser bem ampla, desde um incentivo a uma unificação de todas as informações a respeito da rede em uma única plataforma, assim como, o auxílio às atividades rotineiras dos especialistas que precisam coletar e lidar com as informações que a interface fornece, além de, proporcionar a capacidade de alterações de maneira remota na rede em questão, como inserção de novos roteadores e possíveis outras propostas a serem desenvolvidas com o decorrer do tempo.



Possíveis modelos de negócios

    Descrever em tópicos os possíveis modelos de negócios

Business Case

    Descrever um exemplo de negócio que permita avaliar a solução comercialmente


Barreiras encontradas


Ao longo do desenvolvimento do projeto, nos deparamos com as seguintes barreiras, ao passo que nos levaram a avaliar quais as possíveis soluções e caminhos alternativos que poderiam ser seguidos.

  • Conseguir fazer um display (front) de um banco de dados em formato tabela HTML, usando um script JS para acessar o banco no servidor interno;
  • A ferramenta do JavaScript não possui nativamente acesso ao host local, sendo necessário um framework para conseguir ter acesso ao banco;
  • Uma ferramenta avaliada seria o Node Js, porém se trata de um side-server, ou seja, não é capaz de rodar em browser, onde seria o destino da informação;
  • Exemplificando:
    • A ferramenta que consegue usar o JS para buscar a informação no banco, não pode ser usada para exibir a informação que pegou.


Fase IV - Protótipo orientado ao Negócio


Escopo


Explique o escopo deste protótipo


Product Backlog


  • https://docs.google.com/spreadsheets/d/1uMzWBxdoGnWcQ47jG-44_XluX4UdHEskFHr6UV0bHbU/edit?usp=sharing
    • 01 Estudar Teoria dos Grafos - Depth-first search, Breadth-first search, Subgrafos, Conectividade, Network Flow
    • 02 Estudar Gephi - Ferramenta utilizada como interface gráfica para representar os grafos
    • 03 Estudar Processamento Paralelo - Executar comandos simultaneamente em diversos equipamentos
    • 04 Estudar MPLS (Multiprotocol Label Switching) - Um dos protocolos utilizado para comunicação entre os equipamentos de transporte
    • 05 Estudar LSP (Label-switched path) - Criação de túneis entre roteadores (como arestas em um grafo)
    • 06 Estudar acesso remoto a sistemas - Executar comandos via SSH / Telnet / SNMP
    • 07 Estudar lógica de programação - Melhor conhecimento lógico ajuda em diversas atividades, recomendo praticar em maratonas de programação
    • 08 Estudar Github - Aprender como importar, exportar e usar o sistema git para versionamento. No caso utilizar github
    • 09 Implementar Gephi - Visualizar qualquer tipo de grafo com informações variadas
    • 10 Testar Gephi - Avaliar viabilidade da ferramenta
    • 11 Implementar Discovery - Mapear todos os equipamentos na planta da algar de forma automática e eficiente
    • 12 Testar Discovery - Avaliar viablidade da ferramenta
    • 13 Integração discovery com gephi - Representar as informações do discovery no Gephi
    • 14 Teste da integração - Avaliar viablidade da ferramenta
    • 15 Resolver identificação do tipo de roteador - P, PE ou BORDA
    • 16 Implementar criação de LSP tunnels - Implementar a criação de túneis de forma automática e eficaz, baseado na documentação
    • 17 Testar criação de LSP tunnels - Avaliar viablidade da ferramenta
    • 18 Implementar interface web para utilização da ferramenta de criação de túneis - Facilitar o uso
    • 19 Testar interface web - Avaliar viablidade da ferramenta
    • 20 Implementar API capaz de executar comandos simultaneamente - Executar comandos remotos de forma simultanea em diversos equipamentos com confiabilidade
    • 21 Testar API - Avaliar viablidade da ferramenta

Limitações


Informe sobre as limitações técnicas, comerciais, operacionais, recursos, etc.


PoC


Desenvolva um PoC (Proof of Concept)


Requisitos Funcionais


  • What it should do?
    • Input
      • List of IP prefixes
      • Credentials to enter in equipments
    • Output
      • List of equipments in network
        • Loopback IP
        • LSP
        • OS
  • What do I need to know?
    • Linux / Windows
      • Run commands mannually
    • Run local / remote command
      • SSH
      • Telnet
      • Ping
    • Files
      • Read
      • Write
      • Delete
      • Create
    • Threads / Process
      • Semaphore
      • Deadlock
      • ThreadPool
      • Sweet Spot in concurrent threads/processes
    • Data Structures
      • Arrays
      • Hash Table
    • Exceptions
      • Handle errors
      • Create Logs
    • Functions
      • Global variables
      • Local variables
    • Paramiko?
      • Help using SSH in python
  • What should I do?
    • some_constants
    • main()
    • ping(hostname)
    • run_local_command(command)
    • run_remote_command(hostname, command)
    • get_loopback_ip(hostname)
    • get_lsp(hostname)
    • get_os(hostname)
    • get_info(hostname)
    • build_ips_ping(prefixes)
    • build_database(credentials_path)

Detalhamento Técnico


Descreva especificamente os aspectos técnicos desta pesquisa





Kanban



Histórico



Pesquisadores

  • Paulo Latado
  • Gustavo Gardusi
  • Pedro Diogo Machado
  • Aymen Ghannouchi
  • Hugo Barbosa Silva
  • Paulo Vitor Costa Lima