NetDiscovery: A Página do Cliente

Releases

Release 1

Stories

1. [Descobrimento SNMP] Quero um programa com interface simples a caractere que aceite como entrada um endereço IP e uma máscara de sub-rede e descubra os dispositivos presentes na subrede além de sua topologia IP (suas interconexões lógicas em nível IP, isto é: vizinho estão a um hop IP). O algoritmo usado deve ser SNMP. Pedir um roteador "semente" e ir lendo (usando SNMP) a tabela de roteamento dos roteadores para descobrir os roteadores da rede e suas interconexões. A saída pode estar em qualquer formato e deve incluir:

Referências: Discovery.pdf, Applications and Directions, Visio, Topos.

2. [Descobrimento ICMP] Quero o mesmo programa do story 1, mas usando o protocolo ICMP. Fazer um ping sequencial de todos os endereços de rede para descobrir hosts e fazer traceroute para descobrir rotas. O algoritmo poderá não identificar toda a informação pedida no story 1, mas deverá identificar todos os endereços IP existentes na subrede e suas interconexões. Também, ICMP deve ser usado para descobrir a máscara de rede de cada endereço IP descoberto.

Referências: Discovery.pdf, Applications and Directions, Visio, Fremont, Ined, Topos.

3. [Integração com editor] Quero que o resultado do descobrimento dos stories 1 e 2 seja visualizado graficamente. Para tanto, quero que os programas de descobrimento sejam integrados com o NetEditor sendo feito pela equipe Wesley/Bruno. O editor é responsável por chamar qualquer um dos dois algoritmos de descobrimento, fornecendo parâmetros adequados. O editor deve então ser informado, dinamicamente, pelo algoritmos de descobrimento, à medida em que o descobrimento está sendo feito. O editor se encarrega de mostrar os dispositivos descobertos, suas interligações e todos os atributos descobertos (especificado no story anterior). Deve ser possível parar o descobrimento a qualquer momento.

4. [Hosts com SNMP] Elaborar no story 1 para descobrir os hosts da rede, verificando a cache ARP dos roteadores. Além do mais, incluir a seguinte informação de cada interface:

5. [SNMP e ICMP] Juntar os dois algoritmos básicos (SNMP e ICMP) de forma a que atuem juntos e um ajudando o outro. Os dados descobertos devem ser únicos, mas ambos os algoritmos podem ser usados para alimentar a base de dados com informação.

6. [Transportabilidade] Deixar o descobridor funcionando em Windows e Linux. Uma vez esta story feita, o produto deve ser mantido funcional nas duas plataformas ao adicionar novas stories à funcionalidade.

7. [Velocidade] A rede 150.165.13.0 deve ser descoberta em menos de 1 minuto. Este tempo deve sempre ser mantido qualquer que seja a funcionalidade acrescentada ao produto.

8. [Subredes] Descobrir subredes e suas conexões. A topologia de roteamento deve agora incluir toda a informação de subredes e quais dispositivos pertencem a quais subredes.

9. [OSPF] Melhorar o descobrimento da topologia IP com informação da OSPF-MIB (mib-2 14) (RFC 1850)

10. [RIP] Melhorar o descobrimento da topologia IP com informação da RIP v2 MIB (RFC 1724)

11. [RMON] Melhorar o descobrimento da topologia com informação da MIB RMON

12. [RMON2] Melhorar o descobrimento da topologia com informação da MIB RMON2

13. [TKINED] Deixar nosso algoritmo pelo menos tão bom quanto o do tkined em ip_discover.tcl (em scotty-2.1.9.tar.gz)

14. [Multihome] Identificar máquinas multi-homed

15. [Banco de dados] Manter um banco de dados de topologia descoberta. Armazenar informação de topologia num BD e bolar uma API para acesso à informação. Possível registro para interface: MAC/IP/DNS/subnet mask/roteador de cada interface/tipo de interface. Roteadores: collection of interfaces. Subnet: roteadores attachados a um subnet. Timestamp de cada item descoberto com tempo de descoberta inicial, última mudança,  e última verificação. API com query language. Lookup por MAC, IP e nome DNS.

16. [Inclusão/Exclusão] Permitir manualmente incluir ou excluir informação de topologia que esteja presente no banco de dados. Também deve ser possível rodar o algoritmo de descobrimento inserindo certos endereços ou pedindo exclusão de certos endereços (dispositivos que dão problema, por exemplo).

17. [Classe] Descobrir o tipo de cada dispositivo (client, server, switch, hub, router, printer, ...). Usar sysObjectID, sysServices.

18. [Serviços] Descobrir serviços (mail, dhcp, dns, ...).

19. [Roteamento] Descobrir qual protocolo de roteamento está sendo usado por um roteador. Também descobrir os parâmetros usados e/ou a configuração total do protocolo.

20. [Spanning tree] Descobrir se o spanning tree está habilitado para cada switch e qual é a topologia do spanning tree. Também descobrir os parâmetros usados e/ou a configuração total do protocolo.

21. [MIBs] Indicar se o protocolo suporta SNMP e indicar quais MIBs são suportadas.

22. [VLANs] Descobrir toda a informação de VLANs nas switches.

23. [Capacidade] Descobrir e verificar velocidade de cada interface.

24. [Domínios] Descobrir e informar via API domínios de colisões e domínios de broadcast, incluindo o tamanho de cada um.

25. [Incremental] Descobrimento incremental. Verificar o BD de topologia para ver algo mudou (adds, replacements, changes). Descobrir mudanças de capacidade (ex. de 10 Mbps para 100 Mbps). Tentar capturar mudanças à rede muito rapidamente.

26. [Migração] Descobrir migração de dispositivo/porta de um equipamento automaticamente. Trocar um equipamento de porta não deve necessitar de mudança manual em nada.

27. [Inconsistências] Indicar inconsistências descobertas. Exemplos: IP suplicado, MAC duplicado, rotas default faltando, outros problemas de roteamento, máscaras conflitantes, endereços IP que não são mais usados, mudanças de hardware, hosts RIP promiscuous, ...

28. [Topologia Física] Descobrimento de Topologia Física (hubs, switches, bridge MIB, repeater MIB, RMON)

29. [Mapas] Desenho de Mapas no editor gráfico. Indicar subredes, etc. Ajudar a desenhar (ou até descobrir) topologia geográfica e administrativa. Pode pensar em classificar quem é mais importante (core, servidores importantes), assim:

30. [WebManager] Integração completa com WebManager. Empacotar funcionalidade em componentes para escolher algoritmos de discovery. Incluir na arquitetura WebManager (Bus de descobrimento?).

31. [XML] Produzir saída de descobrimento em formato XML adequado para uso dos resultados pelo WebManager. É aceitável fazer isso via editor gráfico.

Testes de aceitação (a serem refeitos para cada story)

Testes de aceitação

Requisitos Não Funcionais

Restrições e outras observações

Sobre Algoritmos de Descobrimento de Dispositivos e Topologia

Do paper "Applications & Directions"

Do produto VISIO

Do paper Discovery.pdf

Do paper Fremont

Do paper ined

Do paper topos