Protocolo de Rede Microcom - Microcom Networking Protocol
O Microcom Networking Protocol s, quase sempre abreviado para MNP , é uma família de protocolos de correção de erros comumente usados nos primeiros modems de alta velocidade (2.400 bits / se superiores) . Originalmente desenvolvido para uso na própria família de modems da Microcom , o protocolo foi posteriormente licenciado abertamente e usado pela maior parte da indústria de modems, notavelmente os "três grandes", Telebit , USRobotics e Hayes . O MNP foi posteriormente suplantado pelo v.42bis , que foi usado quase universalmente a partir dos primeiros modems v.32bis no início dos anos 1990.
Visão geral
Embora o Xmodem tenha sido lançado em 1977, em 1985 o The New York Times descreveu o XMODEM primeiro, depois discutiu o MNP como um concorrente principal e que os modems de 9600 baud "estão começando a aparecer". Em 1988, o Times estava falando sobre 9600 e 19,2K, e que "pelo menos 100 outras marcas de modems seguem" MNP (em comparação com o uso de LAP-B por Hayes).
Noções básicas de correção de erros
Os modems são, por natureza, dispositivos sujeitos a erros. O ruído na linha telefônica, uma ocorrência comum, pode facilmente imitar os sons usados pelos modems para transmitir dados, introduzindo erros que são difíceis de perceber. Para algumas tarefas, como ler ou escrever um texto simples, um pequeno número de erros pode ser aceito sem causar muitos problemas. Para outras tarefas, como a transferência de programas de computador em formato de máquina, até mesmo um erro pode inutilizar os dados recebidos. À medida que os modems aumentam de velocidade usando mais largura de banda disponível , a chance de que o ruído aleatório introduza erros também aumenta; acima de 2400 bit / s, esses erros são bastante comuns.
Para lidar com esse problema, vários protocolos de transferência de arquivos foram introduzidos e implementados em vários programas. Em geral, esses protocolos dividem um arquivo em uma série de quadros ou pacotes contendo vários bytes do arquivo original. Algum tipo de dado adicional, normalmente uma soma de verificação ou CRC , é adicionado a cada pacote para indicar se o pacote encontrou um erro ao ser recebido. O pacote é então enviado ao sistema remoto, que recalcula o checksum ou CRC dos dados e o compara com o checksum ou CRC recebido para determinar se foi recebido corretamente. Em caso afirmativo, o receptor envia de volta uma mensagem ACK ( confirmação ), solicitando que o remetente envie o próximo pacote. Se houver algum problema, ele envia uma mensagem NAK ( não confirmada ) e o remetente reenvia o pacote danificado.
Este processo introduz "overhead" na transferência. Por um lado, a soma de verificação adicional ou CRC consome tempo no canal que poderia ser usado para enviar dados adicionais. Esta é uma preocupação menor, no entanto, a menos que os pacotes sejam muito pequenos (que estão em UUCP, por exemplo). Uma preocupação mais séria é o tempo necessário para o receptor examinar o pacote, compará-lo ao CRC e enviar o ACK de volta ao remetente. Esse atraso aumenta em termos relativos à medida que a velocidade do modem aumenta; a latência da linha telefônica é uma constante, mas a quantidade de dados que poderiam ser enviados naquele período fixo de tempo aumenta à medida que a velocidade aumenta. Para resolver esse problema, os protocolos mais recentes usam um sistema conhecido como " janelas deslizantes ", permitindo que o remetente comece a transmitir o próximo pacote sem receber uma mensagem ACK; somente se o ACK não chegar por algum tempo ele reenviará o pacote.
Handshaking MNP
As conexões MNP foram configuradas depois que os modems foram conectados com êxito. O sistema de origem (o modem que fez a chamada ou, às vezes, o computador ao qual foi conectado) enviaria uma curta série de caracteres de 8 bits conhecida como "Originator Detection Pattern" (ODP). A string consistia DC1em paridade par ( 10001000) no início, um ou dois $FF( 11111111), DC1com paridade ímpar ( 10001001) e o mesmo número de $FFnovamente.
Uma vez que o ODP foi enviado, o remetente inicia o "Detection Phase Timer", ou T400. O sistema de atendimento teve que responder adequadamente ao ODP dentro desse tempo, ou o sistema de origem presumiria que o MNP não era compatível.
Se o modem de atendimento suportava MNP ou os padrões V.42 posteriores que o substituíram, ele respondeu com um dos "Padrões de detecção do atendente" (ADP). Se o modem suportava compactação, ele respondia com a versão de 8 bits da string E$FF[ $FF] C$FF[ $FF], indicando "EC" ou "Correção de erros e compactação". Se a correção de erros fosse suportada, mas a compactação não, o ADP era E$FF[ $FF] NUL$FF[ $FF], indicando "E" ou "Correção de erros". O padrão permitia que qualquer valor dos últimos quatro bits no segundo caractere indicasse padrões de diferença, mas isso nunca foi implementado. O ADP teve que ser enviado pelo menos dez vezes.
Se o ADP for recebido com sucesso dentro do tempo T400, o sistema determinou com sucesso que os dois sistemas suportam algum tipo de correção de erro e / ou compressão. Nesse ponto, os sistemas entram na "Fase de Estabelecimento do Protocolo", onde os detalhes desses padrões são determinados e selecionados. Isso começa com o sistema de origem enviando a string L-ESTABLISH, indicando que o modo está mudando para o modo de correção de erros, e o sistema de atendimento responde com o mesmo L-ESTABLISH. A secretária eletrônica pode rejeitar a tentativa enviando L-RELEASE. Esta fase é cronometrada por T401.
A etapa final no processo de handshaking é enviar um pacote MNP contendo o comando "SABME", abreviação de "definir modo balanceado assíncrono estendido". Este é enviado pelo originador, contendo vários campos de dados indicando os protocolos exatos que ele pode suportar. O sistema de atendimento responde com uma versão modificada do mesmo pacote, trocando bits nos dados para indicar que foi bem-sucedido. A partir desse ponto, os dois sistemas trocam dados usando o protocolo de pacote de correção de erros. Se esta última etapa não for concluída durante o temporizador T401, o originador envia L-RELEASE e retorna para um link não-MNP.
MNP "classes"
A ideia da Microcom era mover o protocolo de transferência de arquivos do computador host e colocá-lo no modem. Ao fazer isso, todos os dados sendo transferidos seriam corrigidos por erros, não apenas as transferências de arquivos. Isso também significa que dispositivos sem processador, como terminais burros , podem desfrutar de um link sem erros.
O protocolo original era extremamente simples e bastante ineficiente, levando a uma variedade de protocolos aprimorados chamados de "classes". Cada classe geralmente melhorava o desempenho em relação às versões anteriores, que eram mantidas apenas por motivos de compatibilidade com versões anteriores.
MNP 1 e 2
O primeiro padrão MNP, retroativamente conhecido como MNP Classe 1 , ou simplesmente MNP 1 , era um protocolo half-duplex simples semelhante ao XModem na natureza. Sem suporte de janela deslizante, a eficiência do rendimento foi bastante baixa, cerca de 70%. Isso significava que em um modem de 2400 bit / s, como os vendidos pela Microcom, a taxa de transferência seria limitada a cerca de 1690 bit / s quando o MNP 1 estivesse em uso. Este sistema foi criado principalmente para ser o mais fácil possível de ser implementado em um hardware limitado, o que explica sua simplicidade.
Com a melhoria do poder de processamento de baixo custo, a Microcom introduziu o MNP 2 , uma versão full-duplex do MNP 1 que permitia que as mensagens ACK fossem retornadas enquanto o próximo pacote de saída já estava começando. Isso eliminou a pausa enquanto o modem aguardava o retorno do ACK, adicionando o requisito de que o sistema precisava de alguma memória para rastrear se um ACK foi recebido ou não dentro de um determinado período de tempo. Como o atraso entre pacotes foi reduzido, apenas a sobrecarga do CRC permaneceu, melhorando a taxa de transferência para cerca de 84%.
MNP 3
Em uso normal, um modem pode enviar ou receber dados a qualquer momento, um modo de operação conhecido como "assíncrono". O modem pode determinar a velocidade dos dados do remetente ouvindo os bits enviados a ele e "travando" seu relógio na velocidade dos bits recebidos. Como os dados podem chegar a qualquer momento, não há um tempo preciso; o relógio pode ter que ser reajustado para pausas conforme o usuário para de digitar (por exemplo).
Infelizmente, esse tipo de decodificação de clock não funciona a menos que haja pelo menos algumas transições entre 1 e 0 nos dados; um longo fluxo de 0s ou 1s não tem transições, tornando impossível saber onde os dados de qualquer byte em particular começam. Para evitar esse problema, bits de enquadramento adicionais são adicionados a cada extremidade de cada byte, normalmente um bit em cada lado conhecido como "bits de início e parada" . Isso garante pelo menos uma transição de 1 para 0 para cada byte, mais do que o suficiente para manter os relógios travados. No entanto, esses bits também se expandem a cada 8 bits de dados (um byte) para 10 bits, uma sobrecarga de 20%.
Ao usar um protocolo de transferência de arquivos, os próprios pacotes oferecem seu próprio enquadramento. Os pacotes sempre enviarão um fluxo contínuo de dados, de modo que o relógio não pode "flutuar" da mesma forma que faria para os dados enviados por um usuário digitando em um teclado. Ao desligar esses bits de enquadramento ao operar em um link com correção de erro, esse overhead de 20% pode ser eliminado.
Isso é exatamente o que o MNP 3 fez. Depois de negociar e determinar que ambos os modems suportavam MNP 3, os bits de enquadramento foram desligados, melhorando a eficiência geral em cerca de 20%. Isso compensou quase perfeitamente a sobrecarga do protocolo, o que significa que, ao usar o MNP 3, um usuário pode esperar chegar muito perto da taxa de transferência ideal de 2400 bits / s (versus 1900 bits / s).
MNP 4
O MNP 4 foi um aprimoramento adicional do MNP 3, adicionando um sistema de tamanho de pacote variável conhecido como Adaptive Packet Assembly .
No caso do MNP, a sobrecarga do sistema de pacotes era relativamente pequena, mas mesmo o CRC multibyte estava ocupando espaço melhor usado para dados. Geralmente, usar um pacote maior resolveria isso, porque o CRC permanece com o mesmo tamanho fixo e, portanto, sua sobrecarga relativa é reduzida em comparação com a quantidade de dados. No entanto, quando ocorre um erro, o uso de pacotes maiores também significa que mais dados devem ser reenviados. Em linhas barulhentas, isso pode diminuir o rendimento geral.
Com o MNP 4, os dois modems monitoram constantemente a linha em busca de pacotes descartados e, se um determinado limite for ultrapassado (selecionado pelo usuário), o modem volta para um tamanho de pacote menor. Isso significa que quando um pacote é descartado, a quantidade de dados que deve ser reenviada é menor, levando a um melhor rendimento. Em linhas de boa qualidade, o uso de pacotes maiores significa que o overhead do CRC é reduzido. Os pacotes podem ter entre 64 e 256 bytes e permitem ao usuário forçá-los a um tamanho específico, se desejar.
O MNP 4 também introduziu o Data Phase Optimization , uma mudança simples no protocolo que permitiu que algumas das informações de enquadramento do pacote fossem descartadas após a configuração do link, reduzindo ainda mais a sobrecarga do protocolo. A combinação desses recursos, junto com a falta de enquadramento de bytes do MNP 3, permitiu um aumento adicional na eficiência do throughput.
MNP 5
Uma mudança ainda mais radical foi feita para o MNP 5 , introduzindo a compactação de dados em tempo real no modem. Com o MNP 5, os dados recebidos do computador são compactados primeiro com um algoritmo simples e, em seguida, passados para o sistema de empacotamento do MNP 4 para transmissão. Na melhor das hipóteses, o sistema oferecia compressão de cerca de 2: 1, mas em termos gerais cerca de 1,6: 1 era típico, pelo menos em texto. Como resultado, um modem de 2400 bits / s parece transferir texto a ~ 4000 bits / s.
Esse aumento dramático na taxa de transferência permitiu que os modems Microcom permanecessem um tanto competitivos com os modelos de outras empresas que, de outra forma, eram nominalmente muito mais rápidos. Por exemplo, a Microcom geralmente produzia modems de 1200 e 2400 bit / s usando peças de commodities, enquanto empresas como USRobotics e Telebit ofereciam modelos com velocidades de até 19200 bit / s.
No entanto, essa melhoria no desempenho só estava disponível se os modems em ambas as extremidades suportassem MNP. Isso tornou o sistema realmente atraente apenas para sites que instalam os modems nas duas extremidades dos links; para serviços dial-up como sistemas de BBS (BBS), não havia nenhuma razão convincente para usar um dispositivo Microcom quando era improvável que o usuário final tivesse um. Mesmo nos casos em que o usuário estava no controle de ambas as extremidades do link, os modems "proprietários" da Microcom eram menos interessantes do que os modelos de outras empresas que ofereciam taxas de transferência do "mundo real" muito mais altas.
Para criar um mercado para modems Microcom, começando com o MNP 5, eles deram o passo radical de licenciar todo o pacote MNP gratuitamente. A ideia era que isso aumentaria drasticamente o número de modems com MNP instalado, tornando os modems Microcom "reais" mais atraentes. Além disso, os padrões mais novos com desempenho aprimorado ofereceriam desempenho ainda melhor quando houvesse um modem Microcom em ambas as extremidades do link.
Infelizmente, o tiro saiu pela culatra. A introdução do sistema de compressão LAPM bastante aprimorado no padrão v.42bis ultrapassou os próprios avanços da Microcom, diluindo o valor de um modelo "real" da Microcom quase a zero. Usando v.42bis e peças de commodity, um grande número de modems de baixo custo com desempenho ainda melhor que os da Microcom logo estavam disponíveis. Embora a Microcom tenha continuado a introduzir novos padrões, eles foram amplamente ignorados e a Microcom deixou de ser uma força no mercado.
MNP 6
A introdução do v.32 levou a uma série de modems padrão de 9600 bit / s, quase todos oferecendo MNP 5. Para se diferenciar ainda mais do que estava se tornando um mercado de commodities (embora não fosse realmente até a introdução do v. 32bis SupraFAXModem 14400 em 1991), Microcom criou MNP 6 .
A principal característica do MNP 6 era o duplex estatístico , que podia dedicar mais ou menos largura de banda para um lado ou outro do link do modem. Por exemplo, se uma máquina estava enviando um arquivo grande, a outra extremidade enviaria apenas uma pequena quantidade de informações, as mensagens ACK e NAK. Nesse caso, os modems dariam o máximo possível do canal ao remetente, oferecendo largura de banda unilateral de até 19.200 bit / s. Na verdade, isso não exigia nenhuma mudança no sistema de modulação: normalmente, um modem de 9600 bits / s tinha um canal completo de 9600 bits / s em ambas as direções, para um total de 19200 bits / s; O MNP 6 simplesmente permitiu que mais ou menos dessa largura de banda fosse dada para um lado ou para o outro, em vez de deixá-la fixa em 9600 em ambos os sentidos.
Este conceito básico já era amplamente utilizado na indústria, tendo formado a base para o protocolo Hayes Express 96, o PEP da USRobotics HST Telebit e (brevemente) o CompuCom SpeedModem . Todos esses padrões acharam muito difícil sobreviver no mercado dominado pelo v.32bis e, como eles, o MNP 6 foi amplamente ignorado.
Uma adição menos notável ao MNP 6 foi a Universal Link Negotiation . Com a introdução de modos de modulação adicionais, notavelmente v.32 e adições posteriores, os modems em cada extremidade do link tiveram que gastar uma quantidade cada vez maior de tempo negociando um padrão comum. Por exemplo, um modem v.32bis primeiro enviaria tons na linha para tentar obter um link 14,4; se falhasse depois de um tempo, tentaria 9600, 2400 e, finalmente, 1200 bit / s. Como cada um desses padrões definia um período mínimo de tempo para "tentar" um link, o atraso aumentou mais de 10 segundos.
O ULN evitou esse atraso negociando sempre o link a 2400 bits / s sem nenhuma correção de erro ativada. Embora isso tenha eliminado a compatibilidade com modems mais antigos de 1200 bit / s, a essa altura eles eram extremamente raros. Assim que a conexão foi feita, o que ocorreu rapidamente, os dois modems enviaram uma pequena string de identificação para o modem remoto. Ambos os modems examinaram a string e selecionaram o modo comum mais rápido. O chamador então renegociou uma vez nessa velocidade mais alta.
MNP 7
O MNP 7 introduziu novos algoritmos de compactação com uma alegada melhoria na compactação 3: 1 em arquivos de texto. No entanto, quando o MNP 7 foi introduzido, o padrão v.42bis oferecia compactação 4: 1.
MNP 9
O MNP 9 (aparentemente nenhum 8 foi lançado) melhorou a Detecção de link universal para adicionar modos de alta velocidade mais recentes, mas era idêntico ao MNP 7.
MNP 10
O MNP 10 introduziu um novo protocolo de correção de erros projetado especificamente para funcionar bem em linhas telefônicas barulhentas amplamente utilizadas na Europa Oriental. Ao contrário das versões anteriores, como o MNP 4, o MNP 10 monitorava constantemente a qualidade da linha e ajustava o tamanho do pacote se as condições melhorassem.
Em 1991, a Microcom licenciou o MNP 10 para a Rockwell International para uso em seus conjuntos de chips de modem extremamente populares. Como quase todos os modems, com exceção dos modelos da USR, usaram o chipset Rockwell de cerca de 1995, o MNP 10 tornou-se amplamente implantado (se não usado). A USR acabou adicionando o MNP 10 aos modems da série V.everything, tornando-o efetivamente universal.
MNP 10 foi posteriormente expandido para MNP 10EC , o "EC" que significa "Extended Cellular". Essa foi uma série de modificações que permitiram ao MNP 10 lidar com as pausas de transmissão quando um celular passa de uma célula para outra, o que normalmente seria interpretado como erro de linha. Usando o MNP 10EC, essas pausas são identificadas corretamente como "sem erros" e a velocidade do link permanece mais alta. Seu sucesso levou à concorrente AT & T Paradyne-criado, ETC .
O MNP 10EC era particularmente atraente no papel celular devido à inclusão do método de negociação de link ULN originalmente introduzido no MNP 6 (e melhorado no MNP 9). Em uma rede celular onde todo o tempo de transmissão é cobrado, a configuração mais rápida economizou dinheiro. O MNP 10EC tinha uma vida útil limitada, pois as redes de celular se voltaram para uma variedade de sistemas totalmente digitais que não exigiam mais um modem para se conectar a um computador.