OpenMdns: Design e Implementação - Christiano Farina Haesbaert

1.166 visualizações

Publicada em

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
1.166
No SlideShare
0
A partir de incorporações
0
Número de incorporações
1
Ações
Compartilhamentos
0
Downloads
10
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

OpenMdns: Design e Implementação - Christiano Farina Haesbaert

  1. 1. Os Problemas Os Protocolos OpenMdns Sumário OpenMdns - Design e Implementação Christiano Farina Haesbaert 28 de Agosto de 2010 - Tchelinux Pelotas Christiano Farina Haesbaert OpenMdns - Design e Implementação
  2. 2. Os Problemas Os Protocolos OpenMdns Sumário Roteiro 1 Os Problemas Endereçamento Na Rede Local Os Recursos Instáveis 2 Os Protocolos MDNS DNS-SD 3 OpenMdns Introdução Design e Implementação Christiano Farina Haesbaert OpenMdns - Design e Implementação
  3. 3. Os Problemas Os Protocolos Endereçamento Na Rede Local OpenMdns Os Recursos Instáveis Sumário Roteiro 1 Os Problemas Endereçamento Na Rede Local Os Recursos Instáveis 2 Os Protocolos MDNS DNS-SD 3 OpenMdns Introdução Design e Implementação Christiano Farina Haesbaert OpenMdns - Design e Implementação
  4. 4. Os Problemas Os Protocolos Endereçamento Na Rede Local OpenMdns Os Recursos Instáveis Sumário IPs Não São Suficientes Já parou para se perguntar como é chato decorar IPs ? Christiano Farina Haesbaert OpenMdns - Design e Implementação
  5. 5. Os Problemas Os Protocolos Endereçamento Na Rede Local OpenMdns Os Recursos Instáveis Sumário IPs Não São Suficientes Já parou para se perguntar como é chato decorar IPs ? Como você transfere arquivos entre duas pessoas em uma rede local ? Christiano Farina Haesbaert OpenMdns - Design e Implementação
  6. 6. Os Problemas Os Protocolos Endereçamento Na Rede Local OpenMdns Os Recursos Instáveis Sumário IPs Não São Suficientes Já parou para se perguntar como é chato decorar IPs ? Como você transfere arquivos entre duas pessoas em uma rede local ? Quantas vezes por dia você pergunta o IP de algum colega de trabalho ? Christiano Farina Haesbaert OpenMdns - Design e Implementação
  7. 7. Os Problemas Os Protocolos Endereçamento Na Rede Local OpenMdns Os Recursos Instáveis Sumário IPs Não São Suficientes Já parou para se perguntar como é chato decorar IPs ? Como você transfere arquivos entre duas pessoas em uma rede local ? Quantas vezes por dia você pergunta o IP de algum colega de trabalho ? E quando o IP dele muda (DHCP) ? Christiano Farina Haesbaert OpenMdns - Design e Implementação
  8. 8. Os Problemas Os Protocolos Endereçamento Na Rede Local OpenMdns Os Recursos Instáveis Sumário Opções Para Transferência de Arquivos 1 Email. 2 Instant Messenger interno. 3 FTP. 4 Diretório compartilhado (CIFS). 5 NFS. 6 Pendrive. Christiano Farina Haesbaert OpenMdns - Design e Implementação
  9. 9. Os Problemas Os Protocolos Endereçamento Na Rede Local OpenMdns Os Recursos Instáveis Sumário Opções Para Transferência de Arquivos 1 Email. 2 Instant Messenger interno. 3 FTP. 4 Diretório compartilhado (CIFS). 5 NFS. 6 Pendrive. Se você usa um Pendrive e não vê problema... Note que todas opções exigem um setup não trivial (Pensem nos Mortais). Christiano Farina Haesbaert OpenMdns - Design e Implementação
  10. 10. Os Problemas Os Protocolos Endereçamento Na Rede Local OpenMdns Os Recursos Instáveis Sumário Origem do Problema Mapeamento de nome -> ip é centralizado (DNS). Mortais não sabem configurar o bind/named. Integrar com dhclient/dhcpd pode ser um porre. Sem Network Browsing. Endereçamento dinâmico(DHCP) e numérico(IP). Christiano Farina Haesbaert OpenMdns - Design e Implementação
  11. 11. Os Problemas Os Protocolos Endereçamento Na Rede Local OpenMdns Os Recursos Instáveis Sumário Origem do Problema Mapeamento de nome -> ip é centralizado (DNS). Mortais não sabem configurar o bind/named. Integrar com dhclient/dhcpd pode ser um porre. Sem Network Browsing. Endereçamento dinâmico(DHCP) e numérico(IP). E se pudéssemos endereçar todos computadores por nome com custo zero ? Christiano Farina Haesbaert OpenMdns - Design e Implementação
  12. 12. Os Problemas Os Protocolos Endereçamento Na Rede Local OpenMdns Os Recursos Instáveis Sumário Roteiro 1 Os Problemas Endereçamento Na Rede Local Os Recursos Instáveis 2 Os Protocolos MDNS DNS-SD 3 OpenMdns Introdução Design e Implementação Christiano Farina Haesbaert OpenMdns - Design e Implementação
  13. 13. Os Problemas Os Protocolos Endereçamento Na Rede Local OpenMdns Os Recursos Instáveis Sumário O Que Chamamos de Recurso Instável ? Definition Um Recurso Instável é qualquer recurso, dispositivo ou serviço que não está necessariamente sempre disponível. Example Computador qualquer. Servidor HTTP/FTP/CIFS/NFS/NTP.... Roteador/NAS. Serviço de músicas (share do iTunes). Presença no IM (Online/Away/Offline...). Impressora. Christiano Farina Haesbaert OpenMdns - Design e Implementação
  14. 14. Os Problemas Os Protocolos Endereçamento Na Rede Local OpenMdns Os Recursos Instáveis Sumário Quantas Vezes... Quantas vezes por dia você “pinga” uma máquina para confirmar que ela está up ? Christiano Farina Haesbaert OpenMdns - Design e Implementação
  15. 15. Os Problemas Os Protocolos Endereçamento Na Rede Local OpenMdns Os Recursos Instáveis Sumário Quantas Vezes... Quantas vezes por dia você “pinga” uma máquina para confirmar que ela está up ? Quantas vezes você chegou em uma rede e perguntou como acessar um serviço X ? Christiano Farina Haesbaert OpenMdns - Design e Implementação
  16. 16. Os Problemas Os Protocolos Endereçamento Na Rede Local OpenMdns Os Recursos Instáveis Sumário Quantas Vezes... Quantas vezes por dia você “pinga” uma máquina para confirmar que ela está up ? Quantas vezes você chegou em uma rede e perguntou como acessar um serviço X ? Quantas vezes você já teve que colocar uma serial em um equipamento só para descobrir o IP. Christiano Farina Haesbaert OpenMdns - Design e Implementação
  17. 17. Os Problemas Os Protocolos Endereçamento Na Rede Local OpenMdns Os Recursos Instáveis Sumário Quantas Vezes... Quantas vezes por dia você “pinga” uma máquina para confirmar que ela está up ? Quantas vezes você chegou em uma rede e perguntou como acessar um serviço X ? Quantas vezes você já teve que colocar uma serial em um equipamento só para descobrir o IP. Quantas vezes você gostaria de ligar o computador e ver quem está online na rede local (independentemente do ambiente) ? Christiano Farina Haesbaert OpenMdns - Design e Implementação
  18. 18. Os Problemas Os Protocolos Endereçamento Na Rede Local OpenMdns Os Recursos Instáveis Sumário Quantas Vezes... Quantas vezes por dia você “pinga” uma máquina para confirmar que ela está up ? Quantas vezes você chegou em uma rede e perguntou como acessar um serviço X ? Quantas vezes você já teve que colocar uma serial em um equipamento só para descobrir o IP. Quantas vezes você gostaria de ligar o computador e ver quem está online na rede local (independentemente do ambiente) ? Quantas vezes você teve que perguntar como acessar impressora X ? Christiano Farina Haesbaert OpenMdns - Design e Implementação
  19. 19. Os Problemas Os Protocolos Endereçamento Na Rede Local OpenMdns Os Recursos Instáveis Sumário Quantas Vezes... Quantas vezes por dia você “pinga” uma máquina para confirmar que ela está up ? Quantas vezes você chegou em uma rede e perguntou como acessar um serviço X ? Quantas vezes você já teve que colocar uma serial em um equipamento só para descobrir o IP. Quantas vezes você gostaria de ligar o computador e ver quem está online na rede local (independentemente do ambiente) ? Quantas vezes você teve que perguntar como acessar impressora X ? E se você pudesse fazer tudo isso com zero esforço ? Christiano Farina Haesbaert OpenMdns - Design e Implementação
  20. 20. Os Problemas Os Protocolos Endereçamento Na Rede Local OpenMdns Os Recursos Instáveis Sumário Já Pensou Como Isto é Implementado ? Lista de jogos na rede local. Lista de impressoras da rede local. Lista dos serviços de música na rede local. Lista dos compartilhamentos na rede local. Lista dos... agora você percebe o padrão ? Christiano Farina Haesbaert OpenMdns - Design e Implementação
  21. 21. Os Problemas Os Protocolos Endereçamento Na Rede Local OpenMdns Os Recursos Instáveis Sumário Já Pensou Como Isto é Implementado ? Lista de jogos na rede local. Lista de impressoras da rede local. Lista dos serviços de música na rede local. Lista dos compartilhamentos na rede local. Lista dos... agora você percebe o padrão ? Agora pense que cada um desenvolve seu próprio protocolo. Assustado ? Que bom :-). Chamaremos isto de Network Browsing. A Apple resolveu isto na década de 80. Christiano Farina Haesbaert OpenMdns - Design e Implementação
  22. 22. Os Problemas Os Protocolos MDNS OpenMdns DNS-SD Sumário Roteiro 1 Os Problemas Endereçamento Na Rede Local Os Recursos Instáveis 2 Os Protocolos MDNS DNS-SD 3 OpenMdns Introdução Design e Implementação Christiano Farina Haesbaert OpenMdns - Design e Implementação
  23. 23. Os Problemas Os Protocolos MDNS OpenMdns DNS-SD Sumário Introdução Multicast DNS. Criado pela Apple por Stuart Chesnire (yeeei ! finalmente devolvendo algo). Transição do Appletalk -> IPv4. Ainda um Draft, expira em Setembro de 2010. A maioria de vocês usa e não sabe (Avahi). Resolve o problema do Endereçamento na Rede Local. Faz parte da suíte ZeroConf. Opera na porta UDP 5353. Christiano Farina Haesbaert OpenMdns - Design e Implementação
  24. 24. Os Problemas Os Protocolos MDNS OpenMdns DNS-SD Sumário Quem usa ? O Apple Bonjour é a mais antiga implementação. O Avahi é a implementação da Freedesktop. O OpenMDNS é a implementação inacabada deste que vos fala :-). Praticamente toda distribuição de Linux vem com o Avahi já instalado e rodando (isso, hora do pgrep avahi). Voltaremos as implementações existentes ao final... Christiano Farina Haesbaert OpenMdns - Design e Implementação
  25. 25. Os Problemas Os Protocolos MDNS OpenMdns DNS-SD Sumário O Que é Multicast ? Figura: unicast x multicast x broadcast Christiano Farina Haesbaert OpenMdns - Design e Implementação
  26. 26. Os Problemas Os Protocolos MDNS OpenMdns DNS-SD Sumário Por Que DNS ? MDNS = forma de usar DNS via Multicast. DNS como um banco de dados distribuído. Não guarda só nomes ! Pacotes na mesma estrutura de DNS Unicast. Reaproveita um protocolo que funciona. Suporta “legacy clients”, clientes de DNS Unicast. Christiano Farina Haesbaert OpenMdns - Design e Implementação
  27. 27. Os Problemas Os Protocolos MDNS OpenMdns DNS-SD Sumário Dois Atores... Definition (Querier) Qualquer dispositivo fazendo perguntas de MDNS é dito um Querier. Definition (Responder) Qualquer dispositivo respondendo perguntas de MDNS é dito um Responder. Quase sempre o dispositivo é tanto um Querier quanto Responder. Christiano Farina Haesbaert OpenMdns - Design e Implementação
  28. 28. Os Problemas Os Protocolos MDNS OpenMdns DNS-SD Sumário Funcionamento .local = domínio do MDNS. Apenas para rede local (L2). Querier fazem perguntas via Multicast. Responders respondem as perguntas via Multicast. “Fate-sharing”. Tenta ser o menos “chatty” possível. Christiano Farina Haesbaert OpenMdns - Design e Implementação
  29. 29. Os Problemas Os Protocolos MDNS OpenMdns DNS-SD Sumário Funcionamento, Exemplo Seja foo.local e bar.local dois computadores. 1 foo.local: Qual o IP de bar.local ? (Q=bar.local T=A) 2 bar.local: Soy jo, meu IP é 192.168.8.1 (Q=bar.local T=A RDATA=192.168.8.1) ! 1 foo.local: Qual o HINFO de bar.local ? (Q=bar.local T=HINFO) 2 bar.local: CPU: Sparc64 OS: OpenBSD(Q=bar.local T=HINFO RDATA=CPU/OS) ! Pergunta e Resposta via Multicast. Todos se beneficiam da resposta (Fate-sharing). Todo mundo faz cache. Christiano Farina Haesbaert OpenMdns - Design e Implementação
  30. 30. Os Problemas Os Protocolos MDNS OpenMdns DNS-SD Sumário Tipos de Query Definition (One Shot) É enviado uma Query e esperado uma resposta. Definition (One Shot, Accumulating) É enviado uma Query e esperado múltiplas respostas. Definition (Continuous) São feitas Queries de tempo em tempo, acumulando múltiplas respostas. Christiano Farina Haesbaert OpenMdns - Design e Implementação
  31. 31. Os Problemas Os Protocolos MDNS OpenMdns DNS-SD Sumário Resource Record 1 Name, exemplo elendil.local. 2 Type, A (IP), AAAA(IPV6), SRV(Serviço), PTR(Ponteiro). 3 Class, Classe é sempre IN. 4 Rdata, O dado do RR, um IP, IPv6, um nome, é definido pelo Type. Definition (RR Unique) Records que são exclusivos de algum host (ex: myname.local) Definition (RR Shared) Podem existir vários com mesmo Name/Type/Class, porém com RDATA diferentes. Christiano Farina Haesbaert OpenMdns - Design e Implementação
  32. 32. Os Problemas Os Protocolos MDNS OpenMdns DNS-SD Sumário pkill problem1 Resolvemos o primeiro problema (Problema do Endereçamento Numérico). Podemos agora referenciar hosts por nome. Não gastamos nada com isso, só precisamos ter o protocolo. Todos programas se beneficiam automaticamente. Você agora pode ter certeza que seumadruga.local é o host que não paga o aluguel. Christiano Farina Haesbaert OpenMdns - Design e Implementação
  33. 33. Os Problemas Os Protocolos MDNS OpenMdns DNS-SD Sumário OpenMDNS é Hora de Morfar ! Go go Power....chega. # A normal lookup elendil:mdnsctl: ./mdnsctl lkup anonymous.local Address: 192.168.8.100 # A reverse lookup elendil:mdnsctl: ./mdnsctl lkup -a 192.168.8.100 Hostname: anonymous.local Christiano Farina Haesbaert OpenMdns - Design e Implementação
  34. 34. Os Problemas Os Protocolos MDNS OpenMdns DNS-SD Sumário Roteiro 1 Os Problemas Endereçamento Na Rede Local Os Recursos Instáveis 2 Os Protocolos MDNS DNS-SD 3 OpenMdns Introdução Design e Implementação Christiano Farina Haesbaert OpenMdns - Design e Implementação
  35. 35. Os Problemas Os Protocolos MDNS OpenMdns DNS-SD Sumário Introdução DNS Service Discovering. Pode ser usado com MDNS e DNS. Ganhou popularidade quando usado com MDNS. Draft pequeno (40 páginas). Também criado por Stuart Chesnire. É o que faz as coisas da Apple parecerem legais. Christiano Farina Haesbaert OpenMdns - Design e Implementação
  36. 36. Os Problemas Os Protocolos MDNS OpenMdns DNS-SD Sumário O Que Faz ? Resolve o nosso Problema 2: Os Recursos Instáveis, ou podemos dizer que nos fornece Network Browsing. Christiano Farina Haesbaert OpenMdns - Design e Implementação
  37. 37. Os Problemas Os Protocolos MDNS OpenMdns DNS-SD Sumário O Que Faz ? Resolve o nosso Problema 2: Os Recursos Instáveis, ou podemos dizer que nos fornece Network Browsing. Ta ta ta ta, palavras bonitas, mas o que faz ? Christiano Farina Haesbaert OpenMdns - Design e Implementação
  38. 38. Os Problemas Os Protocolos MDNS OpenMdns DNS-SD Sumário O Que Faz ? Resolve o nosso Problema 2: Os Recursos Instáveis, ou podemos dizer que nos fornece Network Browsing. Ta ta ta ta, palavras bonitas, mas o que faz ? Faz com que quando tu de dois cliques no botão coloridinho Network, apareça todas impressoras, todos servidores de web, todos computadores ligados, todos os compartilhamentos, todos os issos e aquilos, como eu disse, fornece Network Browsing. Christiano Farina Haesbaert OpenMdns - Design e Implementação
  39. 39. Os Problemas Os Protocolos MDNS OpenMdns DNS-SD Sumário O Que Faz ? Resolve o nosso Problema 2: Os Recursos Instáveis, ou podemos dizer que nos fornece Network Browsing. Ta ta ta ta, palavras bonitas, mas o que faz ? Faz com que quando tu de dois cliques no botão coloridinho Network, apareça todas impressoras, todos servidores de web, todos computadores ligados, todos os compartilhamentos, todos os issos e aquilos, como eu disse, fornece Network Browsing. Só isso ? Isso o Netbios/CIFS e cia já faziam. Christiano Farina Haesbaert OpenMdns - Design e Implementação
  40. 40. Os Problemas Os Protocolos MDNS OpenMdns DNS-SD Sumário O Que Faz ? Resolve o nosso Problema 2: Os Recursos Instáveis, ou podemos dizer que nos fornece Network Browsing. Ta ta ta ta, palavras bonitas, mas o que faz ? Faz com que quando tu de dois cliques no botão coloridinho Network, apareça todas impressoras, todos servidores de web, todos computadores ligados, todos os compartilhamentos, todos os issos e aquilos, como eu disse, fornece Network Browsing. Só isso ? Isso o Netbios/CIFS e cia já faziam. Parecido, mas este funciona. Christiano Farina Haesbaert OpenMdns - Design e Implementação
  41. 41. Os Problemas Os Protocolos MDNS OpenMdns DNS-SD Sumário O Que Faz ? Resolve o nosso Problema 2: Os Recursos Instáveis, ou podemos dizer que nos fornece Network Browsing. Ta ta ta ta, palavras bonitas, mas o que faz ? Faz com que quando tu de dois cliques no botão coloridinho Network, apareça todas impressoras, todos servidores de web, todos computadores ligados, todos os compartilhamentos, todos os issos e aquilos, como eu disse, fornece Network Browsing. Só isso ? Isso o Netbios/CIFS e cia já faziam. Parecido, mas este funciona. E este é genérico e aberto. E mais que isso, ao clicar na impressora ele já te diz como usar a mesma. Christiano Farina Haesbaert OpenMdns - Design e Implementação
  42. 42. Os Problemas Os Protocolos MDNS OpenMdns DNS-SD Sumário Exemplos ! Exemplos ! Ui ui ui coloridinho, no proximo slide uma coisa mais séria. Christiano Farina Haesbaert OpenMdns - Design e Implementação
  43. 43. Os Problemas Os Protocolos MDNS OpenMdns DNS-SD Sumário Exemplos ! Exemplos ! elendil:mdnsctl: ./mdnsctl browse all +++ servico teste teste teste numero 1 http tcp +++ servico teste teste teste numero 2 http tcp +++ servico teste teste teste numero 3 http tcp +++ servico teste teste teste numero 4 http tcp +++ servico teste teste teste numero 10 http tcp +++ ubuntu810desktop [00:0c:29:4d:22:ce] workstation tcp elendil:mdnsctl: ./mdnsctl browse -r all +++ ubuntu810desktop [00:0c:29:4d:22:ce] workstation tcp Name: ubuntu810desktop.local Priority: 0 Weight: 0 Port: 9 Address: 192.168.8.26 Txt: +++ servico teste teste teste numero 1 http tcp Name: ubuntu810desktop.local Priority: 0 Weight: 0 Port: 80 Address: 192.168.8.26 Txt: LALALA=LIXO Christiano Farina Haesbaert OpenMdns - Design e Implementação
  44. 44. Os Problemas Os Protocolos MDNS OpenMdns DNS-SD Sumário Network Browsing (Enumeration) Neste passo enumeramos todos os serviços, não sabemos ainda como acessa-los, mas sabemos da sua presença. Cada serviço é um RR PTR, com Name=srvtype.proto e RDATA=nomedosrv.local. Fazemos Continuous Querying e populamos nossa lista. Mas depois de escolhido qual serviço, como o acessamos ? Christiano Farina Haesbaert OpenMdns - Design e Implementação
  45. 45. Os Problemas Os Protocolos MDNS OpenMdns DNS-SD Sumário Network Browsing (Resolving) Busca-se o SRV e TXT do serviço anunciado pelo PTR. Estes dois RR nos dizem como acessar o serviço. Note que só buscamos estes quando o usuário decide acessar o serviço. Christiano Farina Haesbaert OpenMdns - Design e Implementação
  46. 46. Os Problemas Os Protocolos MDNS OpenMdns DNS-SD Sumário Nem Tudo São Rosas Protoco extremamente complexo. Timers muito rigidos. Muitos casos especiais. Coerencia de cache. Suportar clientes legados. Draft confuso algumas vezes (no geral bem escrito). Falta de uma API padrão. Multicast ainda possue suas chatices (achei um bug no Kernel). Retransmissões, eventos assíncronos. Ainda um draft. Christiano Farina Haesbaert OpenMdns - Design e Implementação
  47. 47. Os Problemas Os Protocolos Introdução OpenMdns Design e Implementação Sumário Roteiro 1 Os Problemas Endereçamento Na Rede Local Os Recursos Instáveis 2 Os Protocolos MDNS DNS-SD 3 OpenMdns Introdução Design e Implementação Christiano Farina Haesbaert OpenMdns - Design e Implementação
  48. 48. Os Problemas Os Protocolos Introdução OpenMdns Design e Implementação Sumário Motivação 1 Absoluta falta do que fazer. 2 Maldito DLINK cheio de bugs. 3 O Avahi tem 40K+ linhas, pensem a respeito. 4 O Bonjour tem 60K+ linhas, pensem a respeito. 5 Licensas, Bonjour = Apache2, Avahi=LGPL. 6 Autor tende a não gostar de coisas da GNU e Freedesktop. 7 Trabalho de Conclusão. 8 Feito para o OpenBSD. Christiano Farina Haesbaert OpenMdns - Design e Implementação
  49. 49. Os Problemas Os Protocolos Introdução OpenMdns Design e Implementação Sumário OpenBSD ? Descendente direto do BSD 4.4. (1974 - 1992). Fork do NetBSD em 1995, briga do Theo. Focado em security e correctness. Política de “peer review”. Documentação realmente levada a sério. Código absurdamente bem escrito e limpo. OpenBSD > Linux > * Da onde vem o Open do OpenSSH ? Matou o telnet no mundo. Outros OSes estão anos atrás em termos de Networking. Que tal Packet Filter (PF), OpenBGPD, OpenRIPD, OpenOSPFD ? Quem trouxe softraid para o OpenSource ? Possivelmente o sistema mais seguro do mundo. Christiano Farina Haesbaert OpenMdns - Design e Implementação
  50. 50. Os Problemas Os Protocolos Introdução OpenMdns Design e Implementação Sumário Requisitos 1 Daemon implementando a pilha MDNS/DNS-SD (mdnsd). 2 Biblioteca para as aplicações (libmdns). 3 Controlador para debug e testes (mdnsctl). 4 Tempo, paz, amor... Christiano Farina Haesbaert OpenMdns - Design e Implementação
  51. 51. Os Problemas Os Protocolos Introdução OpenMdns Design e Implementação Sumário Requisitos 1 Daemon implementando a pilha MDNS/DNS-SD (mdnsd). 2 Biblioteca para as aplicações (libmdns). 3 Controlador para debug e testes (mdnsctl). 4 Tempo, paz, amor... 5 A coisa fica mais ou menos assim.... Christiano Farina Haesbaert OpenMdns - Design e Implementação
  52. 52. Os Problemas Os Protocolos Introdução OpenMdns Design e Implementação Sumário Arquitetura Christiano Farina Haesbaert OpenMdns - Design e Implementação
  53. 53. Os Problemas Os Protocolos Introdução OpenMdns Design e Implementação Sumário Roteiro 1 Os Problemas Endereçamento Na Rede Local Os Recursos Instáveis 2 Os Protocolos MDNS DNS-SD 3 OpenMdns Introdução Design e Implementação Christiano Farina Haesbaert OpenMdns - Design e Implementação
  54. 54. Os Problemas Os Protocolos Introdução OpenMdns Design e Implementação Sumário Design Licensa ISC. mdnsd e mdnsctl no padrão do OpenBSD. Código limpo e simples. Sem threads (threads são estúpidas). IMSG framework para IPC. AF_ROUTE socket. Niel’s Provos libevent, tree.h e queue.h. Processo não privilegiado. style(9). 6000 linhas. Testado em i386/amd64/alpha/sparc64. Christiano Farina Haesbaert OpenMdns - Design e Implementação
  55. 55. Os Problemas Os Protocolos Introdução OpenMdns Design e Implementação Sumário Design - IPC IMSG framework de Henning Brauer. Framework utilizado entre os aplicativos e o daemon (abstraído na libmdns). Unix socket, SOCK_STREAM. Incrivelmente simples e bem feito. Utilizado por diversos daemons (OpenBGPD, OpenOSPFD, OpenRIPD, Tmux...) Christiano Farina Haesbaert OpenMdns - Design e Implementação
  56. 56. Os Problemas Os Protocolos Introdução OpenMdns Design e Implementação Sumário Design - Estruturas Cache como uma Red-Black Tree, de Niel’s Provos. Cada nodo segura um NAME/TYPE/CLASS com uma lista de RRs. Todos controllers (aplicativos usando a biblioteca), são guardados em uma lista. Controllers possuem refêrencias para Queries, multiplos controllers podem segurar a mesma query. Pacotes são criados como uma forma de objeto, então são serializados e deserializados. Christiano Farina Haesbaert OpenMdns - Design e Implementação
  57. 57. Os Problemas Os Protocolos Introdução OpenMdns Design e Implementação Sumário Estado Atual Querier praticamente completo. É possível fazer browsing/resolving e etc... Biblioteca ainda hardcoded em mdnsl.c Pouco trabalho feito no Publisher, parte que publica os servicos pela biblioteca. Revisado de vez em quando por Nicholas Marriot(tmux) e Marco Peereboom(ACPI/softraid). Sofrendo uma pequena mudança na arquitetura... Christiano Farina Haesbaert OpenMdns - Design e Implementação
  58. 58. Os Problemas Os Protocolos Introdução OpenMdns Design e Implementação Sumário Futuro Ser incluso na base do OpenBSD. Suporte na libc, gethostbyname(3) e getaddrinfo(3). Implementar Negative-Responses (Bonjour compat). Implementar funções de publishing. Melhorar o parser de DNS (algumas partes yuuuk!). Fazer comparações com Avahi e Bonjour. Compatibilidade binaria com Avahi. IPv6. Christiano Farina Haesbaert OpenMdns - Design e Implementação
  59. 59. Os Problemas Os Protocolos Introdução OpenMdns Design e Implementação Sumário Drafts MDNS Draft http://files.multicastdns.org/draft-cheshire-dnsext-multicastdns.txt DNS-SD Draft http://files.dns-sd.org/draft-cheshire-dnsext-dns-sd.txt DNS RFC1035 www.ietf.org/rfc/rfc1035.txt Christiano Farina Haesbaert OpenMdns - Design e Implementação
  60. 60. Os Problemas Os Protocolos Introdução OpenMdns Design e Implementação Sumário Ajudando Colaborando em OpenMDNS - github.com/haesbaert/mdnsd Fornecendo um ambiente de testes, tipo uma faculdade... em Pelotas... com vários arquiteturas bizonhas... Testando, reclamando, e reportando bugs, criticas são sempre bem vindas. Doando hardware, atualmente preciso de um: HPPA(HP PA-RISC), ARM, LOONGSON, PowerPC(da ibm), VAX... Divulgando o MDNS em geral. Comprando as releases do OpenBSD e garantindo a sanidade do mundo OpenSource. Não comprando hardware de empresas que se recusam a fornecer documentação. Christiano Farina Haesbaert OpenMdns - Design e Implementação
  61. 61. Os Problemas Os Protocolos OpenMdns Sumário Sumário MDNS/DNS-SD nos fornecem 2 importantes conceitos. 1 Endereçamento local por nomes com custo zero. 2 Network Browsing, ou browsing the serviços. O OpenMDNS é uma implementação com licensa ISC para o OpenBSD. Christiano Farina Haesbaert OpenMdns - Design e Implementação
  62. 62. Os Problemas Os Protocolos OpenMdns Sumário Perguntas ? Obrigado por aguentarem firme até aqui ! OpenMDNS - github.com/haesbaert/mdnsd Christiano Farina Haesbaert <haesbaert@haesbaert.org> Christiano Farina Haesbaert OpenMdns - Design e Implementação

×