• No results found

4 Performance Improvement Plan

In document Improvements in System Safety (sider 125-128)

Esse capítulo descreve três mecanismos que são utilizados para realizar o mapeamento dos endereços em uma rede, utilizando o Protocolo IP para ilustrar cada caso. O primeiro mecanismo é utilizado no hardware de rede e consiste em uma tabela que contém todas as relações de endereços dos Hosts na rede. O segundo método utiliza funções matemáticas para realizar a tradução. O terceiro mecanismo é o mais interessante porque usa a comunicação entre dois computadores através da rede para determinar os endereços.

12.2 Protocolo de Endereçamento e Entrega de Pacotes

Quando um aplicativo gera dados para serem enviados através da Internet, o software encapsula os dados em um pacote, o qual contém o endereço do destinatário. O software em cada Host e Roteador usam este endereço para definir qual será o próximo passo para o pacote. Uma vez que esse passo é definido, o software transfere o pacote através da rede para o host ou roteador selecionado.

Assim, o software lida com o endereço IP quando esta enviando pacotes. Tanto o endereço do próximo passo ou pulo, e o endereço do destinatário são endereços IP. Infelizmente, este protocolo de endereços não pode ser usado quando se transmite pacotes através de uma rede física de hardware, pois o hardware não entende o endereçamento IP. Ao invés, um pacote enviado na rede deve usar o formato de pacote de hardware, e todos os endereços devem ser endereços de hardware.

12.3 Determinação dos Endereços

A tradução do endereço de protocolo de um computador para o equivalente endereço de hardware deste computador é conhecida como Address Resolution, ou determinação de endereço. Um computador pode determinar o endereço de outro computador apenas se estes computadores estão ligados na mesma rede física – um computador nunca determina o endereço de um computador que esta em uma rede remota.

Dizemos que a determinação de endereços é sempre restrita a uma única rede. Na figura acima, se um aplicativo no host A envia uma mensagem para um aplicativo no host F, o qual esta em uma rede remota, o software em A não determina o endereço do host F. Ao invés disso, o software em A primeiro determina que o pacote primeiro passe pelo roteador R1. O software em A então determina o endereço de R1, e envia o pacote para o roteador. O software em R1

determina que o pacote deva alcançar R2, determina o endereço de R2 e envia o pacote. Finalmente, R2 recebe o pacote, descobre que o destinatário F está ligado a rede a direta, então determina o endereço de F e entrega o pacote a F.

Resumindo:

Mapeamento entre um protocolo de endereços e o endereço de hardware é chamado de determinação de endereços (Address Resolution). Um host ou roteador utiliza a determinação de endereços quando precisa enviar um pacote para outro computador no mesmo enlace físico. Um computador nunca determina o endereço de um computador em uma rede remota.

12.4 Técnicas de Determinação de Endereços

Os algoritmos de determinação de endereços podem ser divididos em três categorias básicas:

 Busca em Tabelas. Os endereços ou mapeamentos são salvos em uma tabela memória, na qual o computador busca quando precisa determinar o endereço.  Computação de Forma fixa. O endereço de protocolo designado para um

computador é escolhido com cuidado assim o endereço de hardware do computador pode ser obtido usando funções booleanas e operações aritméticas.  Troca de Mensagens. Computadores trocam mensagens pela rede para definir

um endereço. Um computador envia uma mensagem que requisita o endereço, e outro computador responde com um mensagem que contém a informação requisitada.

12.5 Determinação de Endereços com Busca em Tabela

As tabelas de endereços requerem uma estrutura de dados que contém informações sobre os endereços de protocolo e hardware. A tabela consiste em um vetor. Cada entrada no vetor contem um par (P,H), onde P é o endereço de protocolo e H é o equivalente endereço de Hardware. A figura abaixo ilustra o método:

Para cada rede física, uma tabela de ligação de endereços é utilizada. Como conseqüência, todos os endereços de IP em uma tabela tem o mesmo prefixo.

A grande vantagem da tabela é a generalidade – uma tabela pode armazenar os endereços para um set de computadores arbitrários na rede. Em particular, um endereço de protocolo pode ser mapeado para um endereço de hardware arbitrário. Quando se tem o endereço N de IP do próximo salto, o software procura na tabela ate que encontre uma entrada com endereço N de IP. O software então extrai o endereço de hardware da entrada na tabela.

Para redes com grande número de host, uma busca seqüencial requer excessivo uso do tempo de processamento da CPU. Nesses casos o software pode utilizar duas implementações padrões para melhorar a eficiência computacional: hashing ou direct indexing.

Hashing é uma técnica de estrutura de dados, com vários propósitos e conhecida por muitos programadores. Já Direct Indexing é um pouco mais eficiente, mas menos geral. Em

particular, Direct Indexing é possível apenas em casos que o endereço de protocolo é determinado num conjunto compacto. Para utilizar Direct Indexing, o software mantém um vetor unidimensional de endereços de hardware, e utiliza o sufixo do IP do host para indexar o vetor. A figura abaixo ilustra a técnica.

12.6 Determinação de Endereços com Computação de forma

fixa

Este método utiliza funções matemáticas para mapear o endereço de IP ao endereço de hardware. Se a relação entre o endereço de IP e o correspondente endereço de hardware for direta, o mapeamento requer apenas poucas operações aritméticas.

Como um exemplo, suponha que uma rede configurável foi determinada como Classe C, com o endereço de rede 220.123.5.0. Assim que os computadores são adicionados à rede, cada computador tem seu sufixo do endereço IP determinado e igual ao endereço de hardware do mesmo. O primeiro host a se conectar tem o endereço de IP 220.123.5.1 e o endereço de hardware 1. O segundo host tem endereço de IP 220.123.5.2 e endereço de hardware 2. Os sufixos não precisam ser seqüenciais: se um roteador é ligado à rede, este tem endereço de IP 220.123.5.101, e logo endereço de hardware 101. Dando o endereço de IP de qualquer computador na rede, o endereço de hardware do computador pode ser determinado facilmente por uma operação booleana E :

Hardware_address = ip_address & 0xff

Esta formula é trivial para o programa, assim não requer uma tabela de valores, sendo computacionalmente mais eficiente.

12.7 Determinação de Endereços com Troca de Mensagens

Os métodos de determinação de endereços descritos acima podem ser computados utilizando apenas um computador a cada passo: as instruções e dados necessários para encontrar o endereço são mantidos no sistema operacional do computador. Uma alternativa para a computação local é um acesso distribuído, no qual um computador que necessite determinar o endereço de outro computador envia uma mensagem através da rede e recebe uma resposta. Esta mensagem leva uma requisição que especifica o endereço de protocolo, e a resposta leva o correspondente endereço de hardware.

Quando essa mensagem de requisição de endereços deve ser enviada? A maioria dos sistemas de protocolos escolhe um entre dois possíveis métodos. No primeiro método, a rede tem um ou mais servidores que tem a função de responder essas requisições de endereços. Quando um host precisa do endereço, a mensagem é enviada para um dos servidores, o qual enviara uma resposta. O host pode enviar a mensagem para cada servidor em seqüência até que receba uma resposta, ou envia em broadcast a requisição para todos servidores.

Em um segundo método, cada computador na rede participa na determinação de endereços concordando em responder a requisição para seu endereço. Quando um host precisa de um endereço, ele envia uma requisição em broadcast na rede. Todos os host recebem a requisição e examinam o endereço requisitado. Se a requisição for igual ao endereço do computador, este enviará uma resposta com seu endereço diretamente para o host que precisa do endereço.

A vantagem do primeiro método é a centralização. Como pouco servidores lidam com todas as requisições de endereços, o controle, configuração e gerenciamento das requisições ficam mais fáceis. A vantagem do segundo método é a distribuição computacional. Os servidores podem ser caros. Adicionando também custos adicionais de hardware (ex: memória extra), os servidores têm manutenção cara, pois as informações dos endereços de protocolo e de hardware têm quer ser armazenados no servidor e são atualizados quando novos computadores entram na rede ou endereços de hardware mudam. Fazendo com que cada computador responda por seu endereço, eliminam-se completamente os servidores.

12.8 Protocolo de Determinação de Endereços

O protocolo TCP/IP pode utilizar qualquer um dos três métodos de determinação de endereços. O método da Busca em Tabelas é usado para determinar endereços em uma WAN. O método computacional é utilizado em redes configuráveis, e a troca de mensagens é utilizada em uma LAN que tem endereçamento estático.

Para garantir que todos os computadores concordam no mesmo e exato formato e no significado das mensagens utilizadas para a determinação dos endereços, o protocolo TCP/IP inclui o Address Resolution Protocol (ARP). O padrão ARP define dois tipos básicos de mensagens: uma requisição e uma resposta. A mensagem de requisição contém o endereço de IP e requer o endereço de hardware; a resposta contém ambos os endereços de IP enviados na requisição e o endereço de hardware.

12.9 Entrega da Mensagem ARP

O padrão ARP especifica exatamente como as mensagens ARP devem ser enviadas através de uma rede. O protocolo especifica que a mensagem deve ser enviada em broadcast para todos os computadores na rede. Cada computador recebe a mensagem e examina o endereço de IP. O computador mencionado na requisição envia a resposta; todos outros computadores processam e descartam a requisição, sem enviar resposta alguma.

Quando um computador envia uma resposta ARP, essa resposta não é enviada em broadcast. Ao invés disso, é enviada diretamente para o computador que realizou a requisição. A figura abaixo ilustra o processo descrito acima.

12.10 Formato da mensagem ARP

Mesmo que o protocolo ARP contenha exatamente a especificação da mensagem ARP, o padrão não define um formato fixo que deve ser usado em todas as comunicações. Os projetistas do ARP notaram que não poderiam escolher um tamanho fixo para o campo de endereço de hardware porque novas tecnologias de rede poderiam ser inventadas, tendo endereço de hardware maior que o projetado. Conseqüentemente os projetistas incluíram um campo “fixed-size” no inicio da mensagem ARP para especificar o tamanho do endereço de hardware que será usado.

Para aumentar a generalidade do ARP, os projetistas incluíram um campo tamanho de endereço também para o endereço de protocolo. Assim, o ARP não se restringe ao protocolo IP ou a um endereço de hardware especifico.

A figura abaixo ilustra o formato da mensagem ARP, quando é utilizada com o protocolo de endereços IP e o protocolo de endereço de hardware Ethernet.

Cada linha na figura corresponde a 32 bits na mensagem ARP. Os dois primeiros campos de 16 bits contem o valor que especificam o tipo de endereçamento de hardware e protocolo estão sendo usados. Por exemplo, o campo HARDWARE ADDRESS TYPE contém 1 quando ARP é utilizado com a Ethernet, e o campo PROTOCOL ADDRESS TYPE contém 0x0800 quando o ARP é utilizado com IP. O segundo par de campos, HADDR LEN e PADDR LEN especificam o número de octetos no endereço de hardware e de protocolos. O campo OPERATION especifica se é uma mensagem de requisição (valor 1) ou resposta (valor 2).

12.11 Enviando a mensagem ARP

Quando um computador envia uma mensagem ARP, a mensagem ARP é transportada pelo hardware da rede. Esta mensagem é tratada como dados – o hardware de rede não entende o formato da mensagem ARP e não examina o conteúdo dos seus campos individuais.

12.12 Identificando a mensagem ARP

O campo type field no cabeçalho de um frame especifica que o frame contém uma mensagem ARP. Para a Ethernet, por exemplo, quando o campo type field tem o valor 0x806, este frame será composto de uma mensagem ARP. Assim, é desta maneira que um host identifica que a mensagem recebida é uma ARP.

In document Improvements in System Safety (sider 125-128)