quinta-feira, 8 de setembro de 2011
sábado, 20 de agosto de 2011
TCP e Protocolos de Janelas Deslizantes
:: TCP e Protocolos de Janelas Deslizantes |
Prof. Especialista José Mauricio Santos Pinheiro - 29/04/2010
|
Protocolos de Janela Deslizante ou Sliding Window são recursos usados na camada de enlace de dados do modelo OSI, bem como no protocolo TCP (equivalente à camada de transporte do modelo OSI). Janela deslizante é uma característica de alguns protocolos que permite que o remetente transmita mais que um pacote de dados antes de receber uma confirmação. Depois de receber a confirmação para o primeiro pacote enviado, o remetente desliza a janela e manda outra confirmação. O número de pacotes transmitidos sem confirmação é conhecido como o tamanho da janela; aumentando o tamanho da janela melhora-se a vazão.
Em sistemas distribuídos, supõe-se que uma mensagem enviada por um nó chegue integralmente ao seu destino, e que a ordem dos pacotes de informação é preservada entre os dois nós num meio de comunicação ideal. Entretanto, perdas de pacotes e erros de comunicação ocorrem no meio de comunicação real. Entretanto, protocolos que enviam um frame e aguardam sua confirmação são ineficientes do ponto de vista de um canal de comunicação full duplex. Com o uso de um sistema de janelas deslizantes esse problema pode ser contornado. O emissor mantém uma janela de transmissão dos frames enviados mas, ainda, não confirmados. Assim, é possível ao transmissor enviar um número maior de frames enquanto aguarda a confirmação do receptor. Essa técnica de retardar temporariamente as confirmações e enviá-las junto com o próximo quadro de dados é conhecida pelo nome depiggybacking (superposição). À medida que o receptor recebe os frames, envia para o emissor a confirmação até qual frame recebeu corretamente. Com base nas informações recebidas do receptor, o emissor desloca a janela de envio os frames já confirmados e transmite novos frames. Entretanto, o emissor deve manter um controle de timeout para cada frame transmitido. Esse timeout define o limite de tempo em que a confirmação deve chegar do receptor. Se a confirmação não chegar dentro desse tempo, o emissor assume que o frame não foi enviado ou não chegou ao seu destino.
O TCP é um protocolo orientado à conexão que permite a entrega sem erros de um fluxo de bytes originados de uma determinada máquina para qualquer outra máquina da inter-rede. Esse protocolo atua na camada de transporte oferecendo um serviço de transferência de bytes fim a fim, de modo confiável, em uma inter-rede não-confiável. Considerando que na camada de rede o IP não oferece qualquer garantia de que os datagramas serão entregues da forma apropriada, cabe ao protocolo TCP administrar os temporizadores e retransmitir os datagramas sempre que necessário. Os datagramas também podem chegar fora de ordem e o TCP também terá de reorganizá-los em mensagens na seqüência correta. Resumindo, o TCP deve fornecer a confiabilidade que o IP não oferece. O protocolo básico utilizado pelas entidades TCP é o protocolo de janelas deslizantes usado para manter um registro do quadro de sequências enviadas e os respectivos reconhecimentos recebidos pelos usuários. Nas transmissões com controle de fluxo, temos uma janela de duração variável, a qual permite que um remetente possa transmitir determinado número de unidades de dados antes que uma confirmação seja recebida ou que um evento especificado ocorra. Consequentemente, o objetivo da janela deslizante é aumentar a taxa de transferência de pacotes melhorando a utilização do meio de transmissão. No TCP, o protocolo da janela deslizante é usado para envio de arquivos de dimensão superior ao pacote (Max ≈ 64KB). O emissor numera cada pacote, guardando os números do último pacote enviado e reconhecido. Para cada pacote enviado, a largura da janela aumenta. Se a distância for superior à largura da janela, o emissor suspende o envio de pacotes. A solução consiste no envio e recebimento do sinal de ACK (Acknowledge), sinal eletrônico de reconhecimento usado em transmissões de dados para informar o status de recebimento dos pacotes. O emissor envia um número de pacotes w que representa o tamanho da janela, ou seja, o número de pacotes que podem ser enviados sem qualquer ACK do receptor. O tamanho de janela é conhecido tanto pelo emissor como pelo receptor, até porque este último tem de reservar inicialmente um buffer com capacidade para os w pacotes que espera receber. O receptor usa um buffer finito para armazenar temporariamente os dados até que as camadas superiores possam processá-los. Como se trata de um buffer finito sempre existe a probabilidade de este atingir sua capacidade máxima, com consequente "estouro" e perda de dados. Para evitar esta situação o receptor deve informar ao emissor o estado do seu buffer através de ummecanismo simples de controle de fluxo conhecido por stop & wait:
Para garantir o funcionamento do mecanismo das janelas deslizantes, tanto os pacotes como os ACK são numerados de 0 a w, isto evita que o receptor tenha de enviar ACK individuais para todos os pacotes. Quando um pacote é enviado, o transmissor aciona um temporizador e quando esse pacote chega ao destino, a entidade TCP receptora retorna um segmento (com ou sem dados, de acordo com as circunstâncias) com um número de confirmação igual ao próximo número de seqüência que espera receber. O transmissor cria uma espécie de tabela, onde cada posição é uma janela, em que são gravadas todas as mensagens que foram enviadas. Por exemplo, se o receptor envia ACK-8 quer dizer que já retirou do buffer todos os pacotes até o 8º pacote; nesta situação o emissor sabe que pode manter sem ACK os w pacotes depois do pacote de número 8 (PAC-8). Se o temporizador do transmissor expirar antes de a confirmação ser recebida, o segmento será retransmitido. A principal vantagem dessa técnica de superposição em relação ao envio de quadros de confirmação distintos é a melhor utilização da largura de banda disponível para o canal. O campo ACK do cabeçalho de quadro precisa de apenas alguns bits, enquanto um quadro separado precisaria de um cabeçalho, da confirmação e de um total de verificação. Além disso, um número menor de quadros enviados significa menor quantidade de interrupções de "chegada de quadro", e menor quantidade debuffers no receptor, dependendo da forma como o software do receptor está organizado.
Os Protocolos de janelas deslizantes são usados para a entrega confiável e ordenada de mensagens. Trata-se de protocolos orientados a conexão (primeiro garante que a conexão está ativa, para depois iniciar o envio das mensagens) que garantem que todas as mensagens enviadas serão entregues aos destinatários integralmente e na ordem correta de envio. Uma das principais características das janelas deslizantes é que o transmissor mantém um conjunto de números de seqüência que indicam os quadros, reunidos na janela de transmissão, que este pode enviar (janela de transmissão). O receptor também possui um conjunto de números de seqüência que correspondem aos quadros que espera receber (janela de recepção). O protocolo prevê o controle de fluxo dos quadros enviados e recebidos de uma estação para outra. Cada quadro enviado contém um número de seqüência, que varia de 0 a um valor máximo. O valor máximo, geralmente vai até 2n -1, de forma que o número possa caber em um campo de n bits. Da mesma forma, o receptor mantém uma janela de recepção correspondente aos dados aptos a serem aceitos. A Figura 1 mostra as janelas do transmissor e do receptor com índices de 0 a 7. Os próximos quadros reutilizarão os índices a partir de 0. Neste caso, o tamanho máximo da janela é 23-1, que é 4, pois são utilizados 3 bits para representar os números de seqüência. Figura 1 - Janelas deslizantes do transmissor e do receptor Em (a) é mostrada a representação da perspectiva do transmissor. O retângulo sombreado diz respeito aos quadros a serem enviados. Cada vez que um quadro é enviado, o retângulo sombreado diminui da esquerda para a direita. Quando ocorre o reconhecimento (ACK) de um quadro recebido pelo receptor, o retângulo aumenta da esquerda para a direita. Os quadros antes da barra vertical são os quadros enviados e confirmados, não necessitando de armazenamento em buffer. O quadro de índice 3, após a barra vertical, indica o quadro transmitido, mas ainda não confirmado e que precisa estar em buffer caso precise ser reenviado. Em (b) é mostrada a perspectiva do receptor. O retângulo sombreado representa os quadros a serem recebidos. À medida que os quadros são reconhecidos (ACK), o retângulo diminui da esquerda para a direita. À medida que os quadros são recebidos, o retângulo aumenta da esquerda para a direita.
A essência de todos os protocolos de janelas deslizantes é o fato de que, em qualquer instante, o transmissor mantém um conjunto de números de seqüência correspondentes a quadros que ele pode enviar. Os protocolos seguintes são bidirecionais e pertencem à classe de protocolos de janelas deslizantes. Os três apresentam diferenças em termos de eficiência, complexidade e requisitos de buffer:
O protocolo de janela deslizante stop-and-wait utiliza n = 1, restringindo os números de seqüência a 0 e 1. Este protocolo é assim chamado porque o tamanho máximo da janela é de um bit, ou seja, só são aceitos os valores 0 ou 1. Ele envia um quadro e aguarda a confirmação para enviar o seguinte. Versões mais sofisticadas podem usar um valor arbitrário de n. Outra característica é que não há combinação de erros no pacote ou por estouro de tempo que resultem na duplicação ou chegada de pacotes fora de ordem para a camada de rede. Figura 2 - Janela Deslizante de Um Bit A Figura 2 mostra um exemplo de janela deslizante de tamanho máximo igual a 1 bit, com um número de seqüência de 3 bits. Inicialmente, não há quadros pendentes e a borda inferior e superior da janela do transmissor são iguais, mas, à medida que o tempo passa, a situação se desenvolve da maneira mostrada: Em (a) a condição inicial. Em (b) depois que o primeiro quadro é enviado. Em (c) depois que o primeiro quadro é recebido. Em (d) depois que a primeira confirmação é recebida.
O protocolo de janela deslizante de um bit possui um problema de desempenho, visto que o canal de comunicação fica ocioso enquanto não chegar uma confirmação do receptor. Para tal situação, o protocolo de "volte a n" possibilita o transmissor enviar n quadros antes que o primeiro seja confirmado. Este valor será proporcional ao tempo em que se podem enviar quadros completos antes que a janela fique esgotada. Neste protocolo, todos os quadros enviados, após um quadro com erro, serão descartados. O receptor simplesmente descarta todos os quadros subseqüentes ao erro e não envia qualquer confirmação desses quadros descartados. Essa estratégia corresponde a uma janela de recepção de tamanho 1. Em outras palavras, a camada de enlace de dados se recusa a aceitar qualquer quadro, exceto o próximo quadro que ela tem de entregar à camada de rede. Se a janela do transmissor for totalmente preenchida antes do timer encerrar a contagem, o buffer começará a se esvaziar. Conseqüentemente, o transmissor interromperá a transmissão e retransmitirá todos os quadros não confirmados em ordem, começando pelo quadro danificado ou perdido. Convém salientar que essa abordagem poderá desperdiçar uma grande quantidade de largura de banda se a taxa de erros do canal for alta. Figura 3 - Janela Deslizante Volte a N Na Figura 3 temos o caso em que a janela do receptor é grande. Os quadros 0 e 1 são corretamente recebidos e confirmados. Porém, o quadro 2 está danificado ou perdido. O transmissor, desavisado desse problema, continua a enviar quadros até expirar o temporizador correspondente ao quadro 2. Em seguida, ele volta até o quadro 2 e começa tudo de novo a partir dele, enviando mais uma vez os quadros 2, 3, 4 etc.
Uma estratégia para lidar com os erros é permitir que o receptor aceite e armazene os quadros subseqüentes a um quadro danificado ou perdido. O protocolo com retransmissão seletiva não descarta quadros apenas porque um quadro anterior foi danificado ou perdido. Figura 4 - Janela Deslizante com Retransmissão Seletiva Na Figura 4, os quadros 0 e 1 são recebidos e confirmados corretamente, e o quadro 2 é perdido. Quando o quadro 3 chega ao receptor, a camada de enlace de dados do receptor percebe que perdeu um quadro e envia de volta um NAK (No AcKnowledge), correspondente ao quadro 2, mas armazena no buffer o quadro 3. Quando os quadros 4 e 5 chegam, eles também são inseridos no buffer pela camada de enlace de dados, em vez de serem repassados à camada de rede. Eventualmente, o NAK do quadro 2 volta ao transmissor, que retransmite de imediato o quadro 2. Quando esse quadro chega, a camada de enlace de dados fica com os quadros 2, 3, 4 e 5, e pode repassar todos à camada de rede na ordem correta. Ela também pode confirmar todos os quadros até o quadro 5, inclusive, como mostra a figura. Se o NAK se perder, o transmissor chegará ao timeout correspondente ao quadro 2 e o enviará (e apenas esse quadro) por sua própria iniciativa, mas isso pode acontecer um pouco mais tarde. Na realidade, o NAK acelera a retransmissão de um quadro específico. Bibliografia: STALLINGS, W. Redes e Sistemas de Comunicação de Dados. Rio de Janeiro: Campus, 2004. TANENBAUM, Andrew S. Redes de Computadores, 4 ed. Rio de Janeiro: Campus, 2003. PETERSON, Larry L.; DAVIE, Bruce S. Computer Networks: A System Approach, 3 ed. USA: Morgan Kaufmann Publishers, 2003. |
Prova de Conceito no Projeto de Redes de Computadores
:: Prova de Conceito no Projeto de Redes de Computadores |
Prof. Especialista José Mauricio Santos Pinheiro - 14/11/2010
|
Prova de Conceito, do inglês Proof of Concept (PoC), é um termo utilizado para denominar um modelo prático que possa provar o conceito (teórico) estabelecido por uma pesquisa ou artigo técnico. Em Tecnologia da Informação (TI), o termo pode ser relacionado ao desenvolvimento de um protótipo como ferramenta para provar a viabilidade de um projeto de rede de computadores. A prova de conceito permite demonstrar na prática a metodologia, os conceitos e as tecnologias envolvidas na elaboração do projeto. Trata-se, pois, de uma iniciativa de curto prazo, incluída no cronograma de atividades do projeto e orientada de forma restrita a um segmento da rede. Tem natureza colaborativa, envolvendo a expertise do projetista e fornecedores e as competências do cliente.
Todas as alterações do projeto de uma rede de computadores devem ser testadas antes de serem disponibilizadas para os usuários. É importante testar dispositivos existentes, novos equipamentos e versões dos sistemas instalados primeiramente em um ambiente de não-produção ou, quando isto não for possível, em segmento limitado da rede que se encontra funcionando. Esse é o valor real de fazer uma prova de conceito, verificar se os novos equipamentos e versões de sistemas se integram aos dispositivos existentes, bem como à rede como um todo. A prova de conceito pode ter muitas formas, por exemplo:
A partir da prova de conceito é possível avaliar os resultados dos testes de aceitação e certificação e usar esses resultados para balizar as alterações que se fizerem necessárias na estrutura (lógica e física), de segurança e especificações de gestão antes de gerar uma proposta final de projeto. A prova de conceito do modelo aqui sugerido segue as premissas da metodologiaTop Down para o projeto de redes de computadores e envolve a concepção de protótipo, definição dos testes, a construção de scripts e análise dos resultados obtidos. Como vantagens específicas associadas à utilização da prova de conceito destacam-se:
Uma prova de conceito é necessária e deve ser empregada em situações que considerem:
Para iniciar a prova de conceito, o primeiro passo é avaliar o que será validado inicialmente durante a etapa de testes, se as tecnologias condizem com as necessidades do cliente e com a finalidade a qual se propõe o projeto. No segundo passo, definido o ambiente de teste, deve-se identificar o segmento de rede menos crítico ou aquele onde os usuários serão menos afetados para a construção de um protótipo. O terceiro passo é instalar e configurar os equipamentos e sistemas necessários no ambiente do cliente. No quarto passo, definem-se os testes pertinentes, segundo o modelo de protótipo definido anteriormente. Neste momento, scripts de teste devem ser construídos para satisfazer as possibilidades de funcionamento da rede. No quinto passo temos a análise dos resultados dos testes que servirão como referência para possíveis correções no modelo do protótipo e, posteriormente, irão compor a documentação final do projeto. O modelo de prova de conceito proposto apresenta os seguintes componentes:
O protótipo é um modelo para testes de projeto e configuração de recursos como um laboratório. Na construção do protótipo devem ser observados os protocolos ou sistemas específicos envolvidos, especificadas a topologia, equipamentos e acessórios necessários para simular um segmento da rede real.
Tanto o cabeamento quanto as estações, servidores e sistemas necessários para os testes devem ser adequadamente instalados e configurados. Os equipamentos e sistemas devem ser idênticos ao proposto no projeto para o teste específico e verificação. Todos os equipamentos e sistemas devem estar funcionais conforme especificado no protótipo.
No caso de um protótipo executável, a prova de conceito pode ser feita com uma demonstração. No caso de um protótipo conceitual, por meio de argumentação, inspeção e raciocínio. No caso de uma simulação, requer a configuração e a execução do modelo simulado com dados informados ou obtidos dos critérios de avaliação e, em seguida, da coleta e análise dos dados resultantes do modelo. Deve-se ter em mente sempre que os testes devem ser concebidos para verificar se o projeto funciona como descrito, utilizando como parâmetro as definições das camadas do modelo de referência OSI, ou seja, devem envolver desde a camada física da rede até a conectividade de aplicativos. A seguir, apresenta-se uma lista com sugestões de testes aplicáveis a uma rede de computadores:
Os testes podem ser customizados segundo as necessidades de cada projeto. Os testes devem ser aplicados com o mínimo impacto sobre os usuários, no caso de rede em funcionamento.
Levantar informações junto aos fornecedores de equipamentos e sistemas para construir scripts corretos e eficientes para cada dispositivo. Isto é particularmente relevante se o projeto utilizar novos equipamentos e protocolos que ainda não foram utilizados na rede. É importante discutir quaisquer problemas ou preocupações quanto ao funcionamento dos dispositivos com o fornecedor e, se necessário, modificar as especificações do protótipo.
A prova de conceito inclui a análise e discussão de questões específicas de cada teste, definido e executado segundo o modelo definido no protótipo. Os resultados dessa avaliação são analisados não apenas para determinar se os requisitos importantes para o projeto podem ser atendidos, mas também para verificar a validade desses requisitos. Nesse momento, tais requisitos podem ser modificados se ainda não estão necessariamente bem entendidos pelos envolvidos. Os resultados dos testes devem ser utilizados para fazer alterações na estrutura atual do projeto, desde a infraestrutura, segurança e gerenciamento de especificações desenvolvidas até o momento de avançar para a proposta final do projeto. Caso sejam necessárias alterações na configuração da rede, o projetista deve ter o discernimento necessário para identificar quais dispositivos ou sistemas correlatos devem ter suas configurações alteradas a fim de manter o estado de consistência da rede. Neste ponto, entende-se por correlação o fato de haver dois ou mais dispositivos ou sistemas que possuem a característica de, uma alteração no estado ou configuração em um deles, implicar em uma ação nos demais.
A prova de conceito serve para validar um projeto de rede de computadores antes que este seja executado na prática. Todos os resultados dos testes devem ser plenamente avaliados na prova de conceito, uma vez que nas fases posteriores, que envolvem a instalação e operação da rede, será maior a relutância às mudanças ou à reinterpretação dos requisitos. A metodologia é recomendada para evitar imprevistos durante a execução do projeto, comprovando o bom entendimento do escopo, que os requisitos de projeto são bem definidos e o seu desenvolvimento pode ser avaliado como tendo baixo risco para o cliente. |
Cabos Irradiantes
:: Cabos Irradiantes |
Marcelo Yamaguchi -26/02/2011
|
Uma solução de cobertura bastante usual é a instalação de antenas próximas ao "access point". Kits contendo os componentes necessários estão amplamente disponíveis no mercado e são relativamente simples de instalar. Para áreas pequenas, as soluções com antenas são ideais; mas há algumas situações onde um sistema passivo de antenas distribuídas provê uma solução de cobertura mais sofisticada, cobrindo uma área maior do que é normalmente realizável com um único "access point". Nos casos onde a capacidade do sistema não é um fator limitante, um sistema passivo de distribuição pode ser utilizado para estender a área de cobertura sem fazer uso de um outro "access point". Este sistema pode utilizar um conjunto de antenas para uma cobertura pontual, através de cabos coaxiais conectados à fonte principal de rádio freqüência. Alternativamente, cabos irradiantes, ou cabos fendidos, podem distribuir o sinal de RF por milhares de aberturas ao longo de sua extensão. Ambos os sistemas permitem a extensão de área de cobertura, racionalizando o sinal de RF vindo de uma única fonte de sinal, através de um número maior de pontos de emissão. Este tipo de solução é ideal para aplicações empresariais como, por exemplo, galpões de armazenagem, onde terminais móveis de dados sem fio podem fazer a atualização das quantidades e informações para o sistema principal de computação em tempo real. Sistemas passivos de distribuição que utilizam cabos irradiantes também oferecem um “confinamento” da cobertura de RF muito mais controlado do que a solução com antenas pontuais, pois neste caso, o sinal de RF se atenua muito distante da fonte de emissão. Esta característica de "confinamento" auxilia na diminuição do "overlap" de cobertura entre "access points" adjacentes minimizando o risco de interferência co-canal em sistemas de maior porte, como em hotéis, universidades e aeroportos. Os sistemas WLAN nesses ambientes requerem "access points" múltiplos para atingir a cobertura e a capacidade exigidas para o funcionamento adequado do sistema. Dependendo da alocação de canal e do reuso, qualquer "overlap" na cobertura entre as zonas ou células resultará em interferência co-canal e o aumento da taxa de erro de bit, a menos que os canais estejam adequadamente separados. Cabo Irradiante é um cabo coaxial com fendas no condutor externo que permitem a entrada e saída de potência de RF. Enquanto um cabo coaxial comum de RF é utilizado para transportar um sinal de um ponto a outro, o cabo irradiante faz o mesmo papel de uma antena. Os cabos irradiantes são usados em ambientes confinados como:
Nestes ambientes eles apresentam as seguintes vantagens em relação às antenas.
Um exemplo de aplicação. A figura abaixo ilustra a distribuição de potência de RF no setor de engenharia de uma grande universidade norte americana após a instalação do cabo irradiante. O sistema anterior era formado por um "access point" que possuía uma antena e um amplificador. Problemas de interferência com este sistema levaram a universidade a adotar uma solução utilizando aproximadamente 330 metros de cabo irradiante.
Distribuição de Potência de RF Foi considerada uma sensibilidade mínima do receptor móvel de aproximadamente -100 dBm, e o sistema de WLAN da universidade foi projetado, no pior caso, para -85 dBm nas paredes externas do edifício. O sistema passivo de distribuição com cabo irradiante apresentou níveis de aproximadamente -35 dBm (em amarelo) em pontos mais próximos ao "access point", para um mínimo de aproximadamente -80 dBm (em azul/lilás) nas paredes externas. Os benefícios oferecidos pela utilização de cabo irradiante para a adequação da cobertura de RF no local proposto foram:
O confinamento da cobertura de RF proporcionou para a universidade, flexibilidade máxima nas alocações de canal de RF (muito limitados), atendimento a todas as áreas necessárias, minimização do potencial de interferência co-canal e melhora significante no desempenho geral do sistema, ou seja, taxas de transferência mais altas. |