openmdns: design e implementação - christiano farina haesbaert

62
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

Upload: tchelinux-slides

Post on 06-Dec-2014

1.434 views

Category:

Technology


1 download

DESCRIPTION

 

TRANSCRIPT

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

Os ProblemasOs Protocolos

OpenMdnsSumário

OpenMdns - Design e Implementação

Christiano Farina Haesbaert

28 de Agosto de 2010 - Tchelinux Pelotas

Christiano Farina Haesbaert OpenMdns - Design e Implementação

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

Os ProblemasOs Protocolos

OpenMdnsSumário

Roteiro

1 Os ProblemasEndereçamento Na Rede LocalOs Recursos Instáveis

2 Os ProtocolosMDNSDNS-SD

3 OpenMdnsIntroduçãoDesign e Implementação

Christiano Farina Haesbaert OpenMdns - Design e Implementação

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

Os ProblemasOs Protocolos

OpenMdnsSumário

Endereçamento Na Rede LocalOs Recursos Instáveis

Roteiro

1 Os ProblemasEndereçamento Na Rede LocalOs Recursos Instáveis

2 Os ProtocolosMDNSDNS-SD

3 OpenMdnsIntroduçãoDesign e Implementação

Christiano Farina Haesbaert OpenMdns - Design e Implementação

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

Os ProblemasOs Protocolos

OpenMdnsSumário

Endereçamento Na Rede LocalOs Recursos Instáveis

IPs Não São Suficientes

Já parou para se perguntar como é chato decorar IPs ?

Como você transfere arquivos entre duas pessoas em umarede local ?Quantas vezes por dia você pergunta o IP de algumcolega de trabalho ?E quando o IP dele muda (DHCP) ?

Christiano Farina Haesbaert OpenMdns - Design e Implementação

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

Os ProblemasOs Protocolos

OpenMdnsSumário

Endereçamento Na Rede LocalOs Recursos Instáveis

IPs Não São Suficientes

Já parou para se perguntar como é chato decorar IPs ?Como você transfere arquivos entre duas pessoas em umarede local ?

Quantas vezes por dia você pergunta o IP de algumcolega de trabalho ?E quando o IP dele muda (DHCP) ?

Christiano Farina Haesbaert OpenMdns - Design e Implementação

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

Os ProblemasOs Protocolos

OpenMdnsSumário

Endereçamento Na Rede LocalOs Recursos Instáveis

IPs Não São Suficientes

Já parou para se perguntar como é chato decorar IPs ?Como você transfere arquivos entre duas pessoas em umarede local ?Quantas vezes por dia você pergunta o IP de algumcolega de trabalho ?

E quando o IP dele muda (DHCP) ?

Christiano Farina Haesbaert OpenMdns - Design e Implementação

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

Os ProblemasOs Protocolos

OpenMdnsSumário

Endereçamento Na Rede LocalOs Recursos Instáveis

IPs Não São Suficientes

Já parou para se perguntar como é chato decorar IPs ?Como você transfere arquivos entre duas pessoas em umarede local ?Quantas vezes por dia você pergunta o IP de algumcolega de trabalho ?E quando o IP dele muda (DHCP) ?

Christiano Farina Haesbaert OpenMdns - Design e Implementação

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

Os ProblemasOs Protocolos

OpenMdnsSumário

Endereçamento Na Rede LocalOs Recursos Instáveis

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

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

Os ProblemasOs Protocolos

OpenMdnsSumário

Endereçamento Na Rede LocalOs Recursos Instáveis

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

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

Os ProblemasOs Protocolos

OpenMdnsSumário

Endereçamento Na Rede LocalOs Recursos Instáveis

Origem do Problema

Mapeamento de nome -> ip é centralizado (DNS).Mortais não sabem configurar o bind/named. Integrarcom 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 pornome com custo zero ?

Christiano Farina Haesbaert OpenMdns - Design e Implementação

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

Os ProblemasOs Protocolos

OpenMdnsSumário

Endereçamento Na Rede LocalOs Recursos Instáveis

Origem do Problema

Mapeamento de nome -> ip é centralizado (DNS).Mortais não sabem configurar o bind/named. Integrarcom 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 pornome com custo zero ?

Christiano Farina Haesbaert OpenMdns - Design e Implementação

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

Os ProblemasOs Protocolos

OpenMdnsSumário

Endereçamento Na Rede LocalOs Recursos Instáveis

Roteiro

1 Os ProblemasEndereçamento Na Rede LocalOs Recursos Instáveis

2 Os ProtocolosMDNSDNS-SD

3 OpenMdnsIntroduçãoDesign e Implementação

Christiano Farina Haesbaert OpenMdns - Design e Implementação

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

Os ProblemasOs Protocolos

OpenMdnsSumário

Endereçamento Na Rede LocalOs Recursos Instáveis

O Que Chamamos de Recurso Instável ?

DefinitionUm Recurso Instável é qualquer recurso, dispositivo ou serviçoque não está necessariamente sempre disponível.

ExampleComputador 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

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

Os ProblemasOs Protocolos

OpenMdnsSumário

Endereçamento Na Rede LocalOs Recursos Instáveis

Quantas Vezes...

Quantas vezes por dia você “pinga” uma máquina paraconfirmar que ela está up ?

Quantas vezes você chegou em uma rede e perguntoucomo acessar um serviço X ?Quantas vezes você já teve que colocar uma serial em umequipamento só para descobrir o IP.Quantas vezes você gostaria de ligar o computador e verquem está online na rede local (independentemente doambiente) ?Quantas vezes você teve que perguntar como acessarimpressora X ?E se você pudesse fazer tudo isso com zero esforço ?

Christiano Farina Haesbaert OpenMdns - Design e Implementação

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

Os ProblemasOs Protocolos

OpenMdnsSumário

Endereçamento Na Rede LocalOs Recursos Instáveis

Quantas Vezes...

Quantas vezes por dia você “pinga” uma máquina paraconfirmar que ela está up ?Quantas vezes você chegou em uma rede e perguntoucomo acessar um serviço X ?

Quantas vezes você já teve que colocar uma serial em umequipamento só para descobrir o IP.Quantas vezes você gostaria de ligar o computador e verquem está online na rede local (independentemente doambiente) ?Quantas vezes você teve que perguntar como acessarimpressora X ?E se você pudesse fazer tudo isso com zero esforço ?

Christiano Farina Haesbaert OpenMdns - Design e Implementação

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

Os ProblemasOs Protocolos

OpenMdnsSumário

Endereçamento Na Rede LocalOs Recursos Instáveis

Quantas Vezes...

Quantas vezes por dia você “pinga” uma máquina paraconfirmar que ela está up ?Quantas vezes você chegou em uma rede e perguntoucomo acessar um serviço X ?Quantas vezes você já teve que colocar uma serial em umequipamento só para descobrir o IP.

Quantas vezes você gostaria de ligar o computador e verquem está online na rede local (independentemente doambiente) ?Quantas vezes você teve que perguntar como acessarimpressora X ?E se você pudesse fazer tudo isso com zero esforço ?

Christiano Farina Haesbaert OpenMdns - Design e Implementação

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

Os ProblemasOs Protocolos

OpenMdnsSumário

Endereçamento Na Rede LocalOs Recursos Instáveis

Quantas Vezes...

Quantas vezes por dia você “pinga” uma máquina paraconfirmar que ela está up ?Quantas vezes você chegou em uma rede e perguntoucomo acessar um serviço X ?Quantas vezes você já teve que colocar uma serial em umequipamento só para descobrir o IP.Quantas vezes você gostaria de ligar o computador e verquem está online na rede local (independentemente doambiente) ?

Quantas vezes você teve que perguntar como acessarimpressora X ?E se você pudesse fazer tudo isso com zero esforço ?

Christiano Farina Haesbaert OpenMdns - Design e Implementação

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

Os ProblemasOs Protocolos

OpenMdnsSumário

Endereçamento Na Rede LocalOs Recursos Instáveis

Quantas Vezes...

Quantas vezes por dia você “pinga” uma máquina paraconfirmar que ela está up ?Quantas vezes você chegou em uma rede e perguntoucomo acessar um serviço X ?Quantas vezes você já teve que colocar uma serial em umequipamento só para descobrir o IP.Quantas vezes você gostaria de ligar o computador e verquem está online na rede local (independentemente doambiente) ?Quantas vezes você teve que perguntar como acessarimpressora X ?

E se você pudesse fazer tudo isso com zero esforço ?

Christiano Farina Haesbaert OpenMdns - Design e Implementação

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

Os ProblemasOs Protocolos

OpenMdnsSumário

Endereçamento Na Rede LocalOs Recursos Instáveis

Quantas Vezes...

Quantas vezes por dia você “pinga” uma máquina paraconfirmar que ela está up ?Quantas vezes você chegou em uma rede e perguntoucomo acessar um serviço X ?Quantas vezes você já teve que colocar uma serial em umequipamento só para descobrir o IP.Quantas vezes você gostaria de ligar o computador e verquem está online na rede local (independentemente doambiente) ?Quantas vezes você teve que perguntar como acessarimpressora X ?E se você pudesse fazer tudo isso com zero esforço ?

Christiano Farina Haesbaert OpenMdns - Design e Implementação

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

Os ProblemasOs Protocolos

OpenMdnsSumário

Endereçamento Na Rede LocalOs Recursos Instáveis

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óprioprotocolo. Assustado ? Que bom :-). Chamaremos isto deNetwork Browsing.A Apple resolveu isto na década de 80.

Christiano Farina Haesbaert OpenMdns - Design e Implementação

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

Os ProblemasOs Protocolos

OpenMdnsSumário

Endereçamento Na Rede LocalOs Recursos Instáveis

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óprioprotocolo. Assustado ? Que bom :-). Chamaremos isto deNetwork Browsing.A Apple resolveu isto na década de 80.

Christiano Farina Haesbaert OpenMdns - Design e Implementação

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

Os ProblemasOs Protocolos

OpenMdnsSumário

MDNSDNS-SD

Roteiro

1 Os ProblemasEndereçamento Na Rede LocalOs Recursos Instáveis

2 Os ProtocolosMDNSDNS-SD

3 OpenMdnsIntroduçãoDesign e Implementação

Christiano Farina Haesbaert OpenMdns - Design e Implementação

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

Os ProblemasOs Protocolos

OpenMdnsSumário

MDNSDNS-SD

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

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

Os ProblemasOs Protocolos

OpenMdnsSumário

MDNSDNS-SD

Quem usa ?

O Apple Bonjour é a mais antiga implementação.O Avahi é a implementação da Freedesktop.O OpenMDNS é a implementação inacabada deste quevos fala :-).Praticamente toda distribuição de Linux vem com oAvahi já instalado e rodando (isso, hora do pgrep avahi).Voltaremos as implementações existentes ao final...

Christiano Farina Haesbaert OpenMdns - Design e Implementação

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

Os ProblemasOs Protocolos

OpenMdnsSumário

MDNSDNS-SD

O Que é Multicast ?

Figura: unicast x multicast x broadcastChristiano Farina Haesbaert OpenMdns - Design e Implementação

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

Os ProblemasOs Protocolos

OpenMdnsSumário

MDNSDNS-SD

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

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

Os ProblemasOs Protocolos

OpenMdnsSumário

MDNSDNS-SD

Dois Atores...

Definition (Querier)Qualquer dispositivo fazendo perguntas de MDNS é dito umQuerier.

Definition (Responder)Qualquer dispositivo respondendo perguntas de MDNS é ditoum Responder.

Quase sempre o dispositivo é tanto um Querier quantoResponder.

Christiano Farina Haesbaert OpenMdns - Design e Implementação

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

Os ProblemasOs Protocolos

OpenMdnsSumário

MDNSDNS-SD

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

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

Os ProblemasOs Protocolos

OpenMdnsSumário

MDNSDNS-SD

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.localT=HINFO)

2 bar.local: CPU: Sparc64 OS: OpenBSD(Q=bar.localT=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

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

Os ProblemasOs Protocolos

OpenMdnsSumário

MDNSDNS-SD

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últiplasrespostas.

Christiano Farina Haesbaert OpenMdns - Design e Implementação

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

Os ProblemasOs Protocolos

OpenMdnsSumário

MDNSDNS-SD

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émcom RDATA diferentes.

Christiano Farina Haesbaert OpenMdns - Design e Implementação

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

Os ProblemasOs Protocolos

OpenMdnsSumário

MDNSDNS-SD

pkill problem1

Resolvemos o primeiro problema (Problema doEndereçamento Numérico).Podemos agora referenciar hosts por nome.Não gastamos nada com isso, só precisamos ter oprotocolo.Todos programas se beneficiam automaticamente.Você agora pode ter certeza que seumadruga.local é ohost que não paga o aluguel.

Christiano Farina Haesbaert OpenMdns - Design e Implementação

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

Os ProblemasOs Protocolos

OpenMdnsSumário

MDNSDNS-SD

OpenMDNS é Hora de Morfar !

Go go Power....chega.

# A normal lookupelendil:mdnsctl: ./mdnsctl lkup anonymous.localAddress: 192.168.8.100

# A reverse lookupelendil:mdnsctl: ./mdnsctl lkup -a 192.168.8.100Hostname: anonymous.local

Christiano Farina Haesbaert OpenMdns - Design e Implementação

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

Os ProblemasOs Protocolos

OpenMdnsSumário

MDNSDNS-SD

Roteiro

1 Os ProblemasEndereçamento Na Rede LocalOs Recursos Instáveis

2 Os ProtocolosMDNSDNS-SD

3 OpenMdnsIntroduçãoDesign e Implementação

Christiano Farina Haesbaert OpenMdns - Design e Implementação

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

Os ProblemasOs Protocolos

OpenMdnsSumário

MDNSDNS-SD

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

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

Os ProblemasOs Protocolos

OpenMdnsSumário

MDNSDNS-SD

O Que Faz ?

Resolve o nosso Problema 2: Os Recursos Instáveis, oupodemos 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ãocoloridinho Network, apareça todas impressoras, todosservidores de web, todos computadores ligados, todos oscompartilhamentos, todos os issos e aquilos, como eudisse, 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 naimpressora ele já te diz como usar a mesma.

Christiano Farina Haesbaert OpenMdns - Design e Implementação

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

Os ProblemasOs Protocolos

OpenMdnsSumário

MDNSDNS-SD

O Que Faz ?

Resolve o nosso Problema 2: Os Recursos Instáveis, oupodemos 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ãocoloridinho Network, apareça todas impressoras, todosservidores de web, todos computadores ligados, todos oscompartilhamentos, todos os issos e aquilos, como eudisse, 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 naimpressora ele já te diz como usar a mesma.

Christiano Farina Haesbaert OpenMdns - Design e Implementação

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

Os ProblemasOs Protocolos

OpenMdnsSumário

MDNSDNS-SD

O Que Faz ?

Resolve o nosso Problema 2: Os Recursos Instáveis, oupodemos 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ãocoloridinho Network, apareça todas impressoras, todosservidores de web, todos computadores ligados, todos oscompartilhamentos, todos os issos e aquilos, como eudisse, 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 naimpressora ele já te diz como usar a mesma.

Christiano Farina Haesbaert OpenMdns - Design e Implementação

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

Os ProblemasOs Protocolos

OpenMdnsSumário

MDNSDNS-SD

O Que Faz ?

Resolve o nosso Problema 2: Os Recursos Instáveis, oupodemos 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ãocoloridinho Network, apareça todas impressoras, todosservidores de web, todos computadores ligados, todos oscompartilhamentos, todos os issos e aquilos, como eudisse, 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 naimpressora ele já te diz como usar a mesma.

Christiano Farina Haesbaert OpenMdns - Design e Implementação

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

Os ProblemasOs Protocolos

OpenMdnsSumário

MDNSDNS-SD

O Que Faz ?

Resolve o nosso Problema 2: Os Recursos Instáveis, oupodemos 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ãocoloridinho Network, apareça todas impressoras, todosservidores de web, todos computadores ligados, todos oscompartilhamentos, todos os issos e aquilos, como eudisse, 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 naimpressora ele já te diz como usar a mesma.

Christiano Farina Haesbaert OpenMdns - Design e Implementação

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

Os ProblemasOs Protocolos

OpenMdnsSumário

MDNSDNS-SD

O Que Faz ?

Resolve o nosso Problema 2: Os Recursos Instáveis, oupodemos 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ãocoloridinho Network, apareça todas impressoras, todosservidores de web, todos computadores ligados, todos oscompartilhamentos, todos os issos e aquilos, como eudisse, 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 naimpressora ele já te diz como usar a mesma.

Christiano Farina Haesbaert OpenMdns - Design e Implementação

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

Os ProblemasOs Protocolos

OpenMdnsSumário

MDNSDNS-SD

Exemplos ! Exemplos !

Ui ui ui coloridinho, no proximo slide uma coisa mais séria.

Christiano Farina Haesbaert OpenMdns - Design e Implementação

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

Os ProblemasOs Protocolos

OpenMdnsSumário

MDNSDNS-SD

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 tcpName: ubuntu810desktop.localPriority: 0Weight: 0Port: 9Address: 192.168.8.26Txt:+++ servico teste teste teste numero 1 http tcpName: ubuntu810desktop.localPriority: 0Weight: 0Port: 80Address: 192.168.8.26Txt: LALALA=LIXO

Christiano Farina Haesbaert OpenMdns - Design e Implementação

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

Os ProblemasOs Protocolos

OpenMdnsSumário

MDNSDNS-SD

Network Browsing (Enumeration)

Neste passo enumeramos todos os serviços, nãosabemos ainda como acessa-los, mas sabemos da suapresença.Cada serviço é um RR PTR, com Name=srvtype.proto eRDATA=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

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

Os ProblemasOs Protocolos

OpenMdnsSumário

MDNSDNS-SD

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 decideacessar o serviço.

Christiano Farina Haesbaert OpenMdns - Design e Implementação

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

Os ProblemasOs Protocolos

OpenMdnsSumário

MDNSDNS-SD

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 noKernel).Retransmissões, eventos assíncronos.Ainda um draft.

Christiano Farina Haesbaert OpenMdns - Design e Implementação

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

Os ProblemasOs Protocolos

OpenMdnsSumário

IntroduçãoDesign e Implementação

Roteiro

1 Os ProblemasEndereçamento Na Rede LocalOs Recursos Instáveis

2 Os ProtocolosMDNSDNS-SD

3 OpenMdnsIntroduçãoDesign e Implementação

Christiano Farina Haesbaert OpenMdns - Design e Implementação

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

Os ProblemasOs Protocolos

OpenMdnsSumário

IntroduçãoDesign e Implementação

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

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

Os ProblemasOs Protocolos

OpenMdnsSumário

IntroduçãoDesign e Implementação

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

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

Os ProblemasOs Protocolos

OpenMdnsSumário

IntroduçãoDesign e Implementação

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

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

Os ProblemasOs Protocolos

OpenMdnsSumário

IntroduçãoDesign e Implementação

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

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

Os ProblemasOs Protocolos

OpenMdnsSumário

IntroduçãoDesign e Implementação

Arquitetura

Christiano Farina Haesbaert OpenMdns - Design e Implementação

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

Os ProblemasOs Protocolos

OpenMdnsSumário

IntroduçãoDesign e Implementação

Roteiro

1 Os ProblemasEndereçamento Na Rede LocalOs Recursos Instáveis

2 Os ProtocolosMDNSDNS-SD

3 OpenMdnsIntroduçãoDesign e Implementação

Christiano Farina Haesbaert OpenMdns - Design e Implementação

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

Os ProblemasOs Protocolos

OpenMdnsSumário

IntroduçãoDesign e Implementação

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

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

Os ProblemasOs Protocolos

OpenMdnsSumário

IntroduçãoDesign e Implementação

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

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

Os ProblemasOs Protocolos

OpenMdnsSumário

IntroduçãoDesign e Implementação

Design - Estruturas

Cache como uma Red-Black Tree, de Niel’s Provos.Cada nodo segura um NAME/TYPE/CLASS com uma listade RRs.Todos controllers (aplicativos usando a biblioteca), sãoguardados em uma lista.Controllers possuem refêrencias para Queries, multiploscontrollers podem segurar a mesma query.Pacotes são criados como uma forma de objeto, então sãoserializados e deserializados.

Christiano Farina Haesbaert OpenMdns - Design e Implementação

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

Os ProblemasOs Protocolos

OpenMdnsSumário

IntroduçãoDesign e Implementação

Estado Atual

Querier praticamente completo.É possível fazer browsing/resolving e etc...Biblioteca ainda hardcoded em mdnsl.cPouco trabalho feito no Publisher, parte que publica osservicos pela biblioteca.Revisado de vez em quando por Nicholas Marriot(tmux) eMarco Peereboom(ACPI/softraid).Sofrendo uma pequena mudança na arquitetura...

Christiano Farina Haesbaert OpenMdns - Design e Implementação

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

Os ProblemasOs Protocolos

OpenMdnsSumário

IntroduçãoDesign e Implementação

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

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

Os ProblemasOs Protocolos

OpenMdnsSumário

IntroduçãoDesign e Implementação

Drafts

MDNS Drafthttp://files.multicastdns.org/draft-cheshire-dnsext-multicastdns.txt

DNS-SD Drafthttp://files.dns-sd.org/draft-cheshire-dnsext-dns-sd.txt

DNS RFC1035www.ietf.org/rfc/rfc1035.txt

Christiano Farina Haesbaert OpenMdns - Design e Implementação

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

Os ProblemasOs Protocolos

OpenMdnsSumário

IntroduçãoDesign e Implementação

Ajudando

Colaborando em OpenMDNS -github.com/haesbaert/mdnsdFornecendo um ambiente de testes, tipo uma faculdade...em Pelotas... com vários arquiteturas bizonhas...Testando, reclamando, e reportando bugs, criticas sãosempre bem vindas.Doando hardware, atualmente preciso de um: HPPA(HPPA-RISC), ARM, LOONGSON, PowerPC(da ibm), VAX...Divulgando o MDNS em geral.Comprando as releases do OpenBSD e garantindo asanidade do mundo OpenSource.Não comprando hardware de empresas que se recusam afornecer documentação.

Christiano Farina Haesbaert OpenMdns - Design e Implementação

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

Os ProblemasOs Protocolos

OpenMdnsSumá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 ISCpara o OpenBSD.

Christiano Farina Haesbaert OpenMdns - Design e Implementação

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

Os ProblemasOs Protocolos

OpenMdnsSumário

Perguntas ?

Obrigado por aguentarem firme até aqui !OpenMDNS - github.com/haesbaert/mdnsdChristiano Farina Haesbaert <[email protected]>

Christiano Farina Haesbaert OpenMdns - Design e Implementação