Sistemas Distribuídos Capítulo 3 Nomes Nuno Valero Ribeiro Gab. F269 [email protected] 1 Objectivos da Gestão de Nomes Associação entre um nome e um objecto • Identificar os objectos • Localizar os objectos • Partilhar os objectos • Simplificar a interface com os utilizadores • Simplificar a gestão do sistema Nuno Valero Ribeiro Gab. F269 [email protected] 2 Nomes e Identificadores • Nome: representação de um objecto, normalmente na forma de uma cadeia de caracteres – Atribuído pelo utilizador – Um objecto pode ser designado por vários nomes – Cada objecto tem que ter pelo menos um nome • Identificador: nome sistema de um objecto, normalmente em formato binário – Atribuído por uma autoridade – Permite discriminar e aceder ao objecto • Autoridade: gere o objecto, suporta a sua implementação Nuno Valero Ribeiro Gab. F269 [email protected] 3 Exemplos de Identificadores e Autoridades Identificador Autoridade Endereço de memória virtual Endereço IP Endereço Ethernet Endereço do controlador do disco Bloco de Disco Gestão da memória virtual no S.O. Autoridade Internet Xerox e fabricante da interface Configurador do computador Inicialização do sistema de ficheiros Nuno Valero Ribeiro Gab. F269 [email protected] 4 Conceitos de Base • Espaço de Nomes: conjunto de regras que define os nomes admissíveis • Contexto: conjunto de associações pertencentes a um dado espaço de nomes • Directório: tabela que num contexto descreve as associações entre nomes e objectos Nuno Valero Ribeiro Gab. F269 [email protected] 5 Conceitos de Base Contexto objectos Contexto objectos Directório Directório Nuno Valero Ribeiro Gab. F269 [email protected] 6 Hierarquia das Associações A associação nomeobjecto é lógica, sendo frequentemente entre nomes pertencentes a diferentes níveis de abstracção: Ficheiro Unix : a/b/c inode 1056 dispositivo - número do bloco disco; Nó da rede Internet : [email protected] endereço IP 146.193.20.12 endereço Ethernet. Nuno Valero Ribeiro Gab. F269 [email protected] 7 Propriedades do Espaço de Nomes • • • • Unicidade referencial Âmbito de um nome Homogeneidade dos nomes Pureza dos nomes Nuno Valero Ribeiro Gab. F269 [email protected] 8 Unicidade Referencial • Unicidade referencial: num determinado contexto, um nome está associado a um só objecto – Caso contrário, haveria ambiguidade referencial – A situação inversa não é verdadeira, pode haver vários nomes para o mesmo objecto – Nome simbólico: referencia outro nome do objecto Nuno Valero Ribeiro Gab. F269 [email protected] 9 Âmbito de um Nome • Global (absoluto): um nome tem o mesmo significado em todos os contextos – Independentes da localização do utilizador – Simples de transferir entre contextos • Local (relativo): O contexto apenas engloba parte do sistema, os nomes são válidos só nesse contexto – Nomes são atribuídos independentemente em cada contexto – Permite representação eficiente de nomes (ex: apontador) – Nomes têm que ser traduzidos para transferir para outro contexto Nuno Valero Ribeiro Gab. F269 [email protected] 10 Nomes Globais • Difíceis de realizar garantindo a unicidade referencial: – Atribuídos centralmente: fraca escalabilidade, grande latência, ponto único de falha – Difundidos por todos os contextos: impracticável em larga escala – Nomes com grande amplitude referencial: podem ser atribuídos independentemente • Nomes “grandes” gerados pseudo-aleatoriamente – Ex: Identificadores com 128 bits • Nomes hierárquicos: nomes globais compostos pela concatenação de nomes locais – Ex: Números de telefone – Ex: Nomes Internet – Ex: Nomes de ficheiros Nuno Valero Ribeiro Gab. F269 [email protected] 11 Homogeneidade dos Nomes Hierárquicos • Homogéneos: todas as componentes do nome têm o mesmo espaço de nomes – Ex: Sistema de ficheiros Unix – Ex: Nomes Internet • Heterogéneos: o espaço de nomes é diferente para certas componentes do nome – Ex: URL http://hostport/[path][?search] Nuno Valero Ribeiro Gab. F269 [email protected] 12 Pureza de um Nome • Nomes puros: o algoritmo de resolução do nome não utiliza qualquer informação presente no nome para inferir da localização do objecto ou da autoridade que o controla – Nome não contém identificadores físicos – Vantagens: flexibilidade, facilidade de reconfiguração – Desvantagens: impracticável em larga escala • Nomes impuros: a informação contida no nome é utilizada no algoritmo de resolução – Nome contém identificadores físicos e/ou topologia do sistema – Vantagens: realização fácil, extensível, escalável – Desvantagens: reconfiguração difícil Nuno Valero Ribeiro Gab. F269 [email protected] 13 Exemplos de Estruturas de Nomes Global Local Puro UUID do DCE/RPC Endereço Ethernet Identificador da rede no endereço IP Servidor SUN-RPC Nomes de ficheiros num directório Impuro Nomes de ficheiros no AFS Portos TCP/UDP URL Nomes de ficheiros no NFS i-nodes nos discos Unix Nuno Valero Ribeiro Gab. F269 [email protected] 14 Funcionalidade do Serviço de Nomes • Registo das associações – Verifica que a sintaxe do nome está de acordo com o espaço de nomes – Armazena a associação • Distribuição das associações – Actualização dos directórios nos contextos onde a associação deve ser válida • Resolução dos nomes – Tradução do nome noutro nome ou num identificador – Normalmente feita sem conhecimento da estrutura do nome – Processo pode ser repetido recursivamente em vários níveis • Resolução inversa – Dado um identificador, devolve o seu nome Nuno Valero Ribeiro Gab. F269 [email protected] 15 Características dos Nomes em Sistemas Distribuídos • • • • • • Larga escala Distribuição geográfica Necessidade de grande disponibilidade Heterogeneidade de nomes e protocolos Consistência fraca Estabilidade, nomes variam pouco Nuno Valero Ribeiro Gab. F269 [email protected] 16 Dificuldades da Realização da Gestão de Nomes • Escala – Grande número de máquinas – Gestão independente – Acelerado crescimento e evolução • Disponibilidade – Serviço básico em muitas operações sistema (comunicação entre processos, etc) • Desempenho – Importante na latência dos serviços que neecssitam da gestão de nomes Nuno Valero Ribeiro Gab. F269 [email protected] 17 Evolução da Arquitectura do Serviço de Nomes • Ficheiros replicados em todas as máquinas • Pedido em difusão, respondendo o nó que contém a autoridade do objecto • Arquitectura cliente-servidor Nuno Valero Ribeiro Gab. F269 [email protected] 18 Arquitectura da Gestão de Nomes • Agente do serviço de nomes – Efectua o processamento do cliente – Oferece uma interface ao utilizador ou ao programador • Servidores de nomes – Realizam o serviço de nomes • Base de dados de nomes – Mecanismo de armazenamento persistente da informação nos servidores Nuno Valero Ribeiro Gab. F269 [email protected] 19 Arquitectura da Gestão de Nomes Acesso a outros domínios Cliente Contexto Aplicação Agente RPC Servidor de Nomes Servidor de Nomes Servidor de Nomes Armazenamento da Informação Nuno Valero Ribeiro Gab. F269 [email protected] 20 Agente do Serviço de Nomes • Conjunto de utilitários e rotinas de adaptação (stubs) que efectuam os pedidos aos servidores • Inicialização: – Porto do servidor é fixo (well-known) – Difusão periódica do endereço dos servidores – Pedido em difusão na inicialização do cliente Nuno Valero Ribeiro Gab. F269 [email protected] 21 Resolução dos Nomes • Recursiva: o servidor resolve a parte do nome que conseguir e reenvia o pedido a outro servidor, até completar a resolução do nome • Iterativa: o servidor resolve a parte do nome que conseguir e devolve o restante ao cliente, que reencaminha o pedido para o próximo servidor • Transitiva: o servidor resolve a parte do nome que conseguir e reenvia o pedido a outro servidor, que responde ao cliente Nuno Valero Ribeiro Gab. F269 [email protected] 22 • • • • Arquitectura dos Servidores de Nomes Nomes replicados em todas as máquinas Um servidor centralizado Um servidor centralizado e caches nos clientes Múltiplos servidores e caches Nuno Valero Ribeiro Gab. F269 [email protected] 23 Técnicas Usadas nos Servidores de Nomes • Replicação: informação replicada por diversos servidores – Nomes não variam muito depressa, as inconsistências são raras – O sistema consegue normalmente detectar nomes obsoletos – Uso de nomes obsoletos não é normalmente catastrófico • Domínios: espaços autónomos de administração onde os nomes são traduzidos localmente • Interligação: diferentes domínios, possivelmente com protocolos diferentes, podem ser interligados de forma hierárquica Nuno Valero Ribeiro Gab. F269 [email protected] 24 Servidores de Nomes • Arquitectura relativamente simples: – Servidor verifica se o nome pertence ao seu contexto – Se pertencer, traduz e devolve a resposta – Se não pertencer, • Reencaminha para o servidor certo, ou • Devolve ao cliente, ou • Envia para o nível hierárquico superior • Caches nos servidores • Replicação de servidores • Bases de dados simples Nuno Valero Ribeiro Gab. F269 [email protected] 25 DNS - Domain Name Server Protocolo de gestão de nomes da Internet (RFC 1034, RFC 1035, RFC 974) • Domínio: entidade administrativa de um subconjunto do espaço de nomes • Autoridade: entidade que tem autoridade para gerir a base de dados de nomes, dentro de um domínio • Espaço de nomes: miguelina.inesc.pt. Nuno Valero Ribeiro Gab. F269 [email protected] 26 Exemplo de Árvore de Nomes do DSN "" com mit edu gov usc org gb inesc Nuno Valero Ribeiro Gab. F269 [email protected] pt ist 27 Nomes DNS • Nomes hierárquicos • Gestão de topo efectuada pelo Internet Network Information Center • Gestão dos subdomínios delegada em autoridades regionais – Portugal: Fundação para o Cálculo Científico Nacional (FCCN) • Gestão dos subdomínios locais delegada nas organizações • Entradas no DNS associam a cada nome informação sobre o objecto (registos RR, Resource Register) Nuno Valero Ribeiro Gab. F269 [email protected] 28 Tipos de Registos no DNS Tipo de Registo Conteúdo A Endereço IP CNAME Nome simbólico para outro nome DNS HINFO Arquitectura e sistema operativo do nó NS Servidores de uma zona MX Máquina ou domínio do servidor preferencial decorreio electrónico SOA Parâmetros que definem a zona. PTR Nome DNS para a resolução inversa de um endereço IP TXT Texto arbitrário WKS Descrição de um serviço com os respectivos nomes e protocolos Nuno Valero Ribeiro Gab. F269 [email protected] 29 Organização do DNS • Árvore de nomes dividida em sub-árvores denominadas zonas – A zona define realmente quem tem a responsabilidade de instalar e gerir os servidores de nomes – Um domínio está sempre contido numa zona – Uma zona pode abranger vários domínios • Cada zona é gerida por uma autoridade – A autoridade corresponde à capacidade de alterar os ficheiros no servidor primário Nuno Valero Ribeiro Gab. F269 [email protected] 30 Servidores DNS • Associado a uma zona existe sempre um servidor – Contém a base de dados com os nomes desse conjunto de domínios • Servidor sempre replicado – Primário: mantém a base de dados, onde se efectuam as actualizações – Secundário: contém uma cópia da informação do primário, actualizada periodicamente com um protocolo dedicado • Todos os servidores mantêm caches – Validade indicada pelo parâmetro TTL Nuno Valero Ribeiro Gab. F269 [email protected] 31 BIND Berkeley Internet Name Domain • Implementação do DNS para Unix • Contém 2 componentes: – resolver: conjunto de rotinas cliente • Integradas na biblioteca de C (/lib/libc.a) • Usadas pelas rotinas de resolução de nomes (gethostbyname, gethostbyaddr) – named: servidor de nomes Nuno Valero Ribeiro Gab. F269 [email protected] 32 Servidores de Nomes • Master: autoridade no domínio – Mantém todos os dados do domínio – Primary master: carrega a base de dados de disco – Secondary master: na inicialização recebe a base de dados do primary server. Periodicamente contacta o primary master para a actualizar – Um servidor pode ser master para mais que um domínio, sendo primary para um e secondary para outros • Caching: apenas mantém dados em cache – Contacta os outros servidores para obter a informação – Não é autoridade para nenhum domínio • Remote: servidor remoto • Slave: redirige os pedidos que não consegue servir para uma lista de servidores, e não para os master Nuno Valero Ribeiro Gab. F269 [email protected] 33 Exemplo de Arquitectura do BIND Programa Utilizador Pedido resolve Servidor de Reencaminhamento Resposta Servidor Primário Actualização Servidor Secundário Nuno Valero Ribeiro Gab. F269 [email protected] 34 Portmap: Serviço de Nomes do SUN RPC • Um servidor por máquina • Os servidores SUN RPC registam no portmapper local os programa que servem • Na associação ao servidor de RPC (binding), os clientes especificam o nome da máquina e o número do programa – Efectuado RPC ao portmap – Este devolve o porto do servidor de RPC • A informação entre os vários portmap pode ser mantida coerente com o NIS Nuno Valero Ribeiro Gab. F269 [email protected] 35