Protokół sieciowy Microcom — Microcom Networking Protocol

Microcom Networking Protocol s, prawie zawsze skrócony do MNP , to rodzina protokołów korekcji błędów powszechnie stosowany na początku szerokopasmowy (2400 bit / s i wyższe) modemów . Pierwotnie opracowany do użytku z własną rodziną modemów Microcom , protokół był później jawnie licencjonowany i używany przez większość branży modemowej, w szczególności przez „wielką trójkę”, Telebit , USRobotics i Hayes . MNP został później wyparty przez v.42bis , który był używany niemal powszechnie, począwszy od pierwszych modemów v.32bis na początku lat 90-tych.

Przegląd

Chociaż Xmodem został wprowadzony na rynek w 1977 roku, dopiero w 1985 roku New York Times najpierw opisał XMODEM, a następnie omówił MNP jako wiodącego konkurenta i że modemy 9600 bodów „zaczynają się pojawiać”. W 1988 r. Times mówił o 9600 i 19,2 tys.

Podstawy korekcji błędów

Modemy są z natury urządzeniami podatnymi na błędy. Szum na linii telefonicznej, co jest częstym zjawiskiem, może łatwo naśladować dźwięki używane przez modemy do przesyłania danych, wprowadzając w ten sposób trudne do zauważenia błędy. W przypadku niektórych zadań, takich jak czytanie lub pisanie prostego tekstu, można zaakceptować niewielką liczbę błędów bez powodowania zbyt wielu problemów. W przypadku innych zadań, takich jak przesyłanie programów komputerowych w formacie maszynowym, nawet jeden błąd może sprawić, że otrzymane dane będą bezużyteczne. Wraz ze wzrostem prędkości modemów przez wykorzystanie większej ilości dostępnej przepustowości wzrasta również prawdopodobieństwo, że losowy szum wprowadzi błędy; powyżej 2400 bit/s te błędy są dość powszechne.

Aby poradzić sobie z tym problemem, wprowadzono i zaimplementowano w różnych programach szereg protokołów przesyłania plików . Ogólnie rzecz biorąc, protokoły te dzielą plik na serię ramek lub pakietów zawierających pewną liczbę bajtów z oryginalnego pliku. Do każdego pakietu dodawane są dodatkowe dane, zwykle suma kontrolna lub CRC , aby wskazać, czy pakiet napotkał błąd podczas odbierania. Pakiet jest następnie wysyłany do zdalnego systemu, który ponownie oblicza sumę kontrolną lub CRC danych i porównuje ją z otrzymaną sumą kontrolną lub CRC, aby określić, czy została odebrana prawidłowo. Jeśli tak, odbiorca odsyła komunikat ACK ( potwierdzenie ), prosząc nadawcę o wysłanie następnego pakietu. Jeśli wystąpił jakiś problem, zamiast tego wysyła komunikat NAK ( niepotwierdzony ), a nadawca ponownie wysyła uszkodzony pakiet.

Ten proces wprowadza „narzut” do transferu. Po pierwsze, dodatkowa suma kontrolna lub CRC zużywa czas w kanale, który w innym przypadku mógłby zostać wykorzystany do wysłania dodatkowych danych. Jest to jednak drobny problem, chyba że pakiety są bardzo małe (które są na przykład w UUCP ). Poważniejszym problemem jest czas potrzebny odbiorcy na zbadanie pakietu, porównanie go z CRC, a następnie przesłanie ACK z powrotem do nadawcy. To opóźnienie rośnie w ujęciu względnym wraz ze wzrostem prędkości modemu; opóźnienie linii telefonicznej jest stałe, ale ilość danych, które można wysłać w tym ustalonym czasie, rośnie wraz ze wzrostem prędkości. Aby rozwiązać ten problem, nowsze protokoły wykorzystują system znany jako „ przesuwane okna ”, umożliwiający nadawcy rozpoczęcie przesyłania następnego pakietu bez odbierania komunikatu ACK; tylko jeśli ACK nie dotrze przez jakiś czas, wyśle ​​ponownie pakiet.

Uzgadnianie MNP

Połączenia MNP zostały zestawione po pomyślnym połączeniu modemów. System inicjujący (modem, który ustanowił połączenie, a czasem komputer, do którego był podłączony) wysyłał krótkie serie 8-bitowych znaków, znane jako „Wzorzec wykrywania nadawcy” (ODP). Łańcuch składał się DC1z parzystości ( 10001000) na początku, jednego lub dwóch $FF( 11111111), DC1z parzystością nieparzystą ( 10001001) i ponownie tej samej liczby $FF.

Po wysłaniu ODP, nadawca uruchamia „Timer fazy wykrywania” lub T400. W tym czasie system zgłoszeniowy musiał odpowiednio odpowiedzieć na ODP, w przeciwnym razie system inicjujący założyłby, że MNP nie jest obsługiwany.

Jeśli modem odpowiadający obsługiwał MNP lub późniejsze standardy V.42, które go zastąpiły, odpowiadał jednym ze „Wzorców wykrywania odpowiedzi” (ADP). Jeśli modem obsługiwał kompresję, odpowiadał 8-bitową wersją ciągu E$FF[ $FF] C$FF[ $FF], wskazując "EC" lub "Korekcja błędów i kompresja". Jeśli korekcja błędów była obsługiwana, ale kompresja nie, ADP był E$FF[ $FF] NUL$FF[ $FF], wskazując "E" lub "Korekta błędów". Standard dopuszczał dowolną wartość z ostatnich czterech bitów w drugim znaku, aby wskazać standardy różnic, ale nigdy nie zostało to zaimplementowane. ADP musiało zostać wysłane co najmniej dziesięć razy.

Jeżeli ADP zostanie pomyślnie odebrany w czasie T400, system pomyślnie ustali, że oba systemy obsługują pewien rodzaj korekcji błędów i/lub kompresji. W tym momencie systemy wchodzą w „Fazę Ustanowienia Protokołu”, w której określane i wybierane są szczegóły tych standardów. Rozpoczyna się to od wysłania przez system inicjujący napisu L-ESTABLISH, wskazującego, że tryb przechodzi w tryb korekcji błędów, a system odpowiadający odpowiada tym samym L-ESTABLISH. Automat zgłoszeniowy może odrzucić próbę, wysyłając L-RELEASE. Ta faza jest mierzona przez T401.

Ostatnim krokiem w procesie uzgadniania jest wysłanie pakietu MNP zawierającego polecenie „SABME”, skrót od „set asynchronous balance mode Extended”. Jest on wysyłany przez nadawcę, zawierający szereg pól danych wskazujących dokładnie, jakie protokoły może obsługiwać. System zgłoszeniowy odpowiada zmodyfikowaną wersją tego samego pakietu, zmieniając bity w danych, aby wskazać, że się powiódł. Od tego momentu oba systemy wymieniają dane za pomocą protokołu pakietowego korekcji błędów. Jeżeli ten ostatni etap nie zakończy się podczas timera T401, nadawca wysyła L-RELEASE i powraca do łącza innego niż MNP.

„Klasy” MNP

Ideą firmy Microcom było przeniesienie protokołu przesyłania plików z komputera hosta i umieszczenie go w modemie. W ten sposób wszystkie przesyłane dane zostaną skorygowane o błędy, a nie tylko transfery plików. Oznaczało to również, że urządzenia bez procesora, takie jak głupie terminale , mogły cieszyć się bezbłędnym łączem.

Oryginalny protokół był niezwykle prosty i raczej nieefektywny, prowadząc do wielu ulepszonych protokołów zwanych „klasami”. Każda klasa ogólnie poprawiła wydajność w porównaniu z wcześniejszymi wersjami, które zostały zachowane tylko ze względu na zgodność wsteczną.

MNP 1 i 2

Pierwszy standard MNP, znany wstecznie jako MNP Class 1 lub po prostu MNP 1 , był prostym protokołem half-duplex podobnym do XModem . Brak obsługi okien przesuwnych sprawiał, że przepustowość była dość niska, około 70%. Oznaczało to, że w modemie 2400 bit/s, takim jak te sprzedawane przez Microcom, przepustowość byłaby ograniczona do około 1690 bit/s, gdy używany był MNP 1. System ten został stworzony przede wszystkim po to, aby był jak najłatwiejszy do wdrożenia na ograniczonym sprzęcie, co tłumaczy jego prostotę.

Wraz z poprawą taniej mocy przetwarzania firma Microcom wprowadziła MNP 2 , pełnodupleksową wersję MNP 1, która umożliwiała zwracanie komunikatów ACK, gdy kolejny pakiet wychodzący już się rozpoczynał. Eliminowało to przerwę, podczas której modem czekał na zwrócenie ACK, dodając wymaganie, aby system potrzebował trochę pamięci do śledzenia, czy ACK zostało odebrane w określonym czasie. Ponieważ opóźnienie między pakietami zostało zmniejszone, pozostały tylko koszty ogólne CRC, poprawiając przepustowość do około 84%.

MNP 3

W normalnym użytkowaniu modem może wysyłać lub odbierać dane w dowolnym momencie w trybie działania znanym jako „asynchroniczny”. Modem może określić prędkość danych nadawcy, słuchając wysyłanych do niego bitów i „blokując” swój zegar do prędkości odbieranych bitów. Ponieważ dane mogą dotrzeć w dowolnym momencie, nie ma dokładnego czasu; zegar może wymagać ponownego ustawienia na przerwy, gdy użytkownik przestanie pisać (na przykład).

Niestety ten rodzaj dekodowania zegara nie działa, chyba że istnieją przynajmniej pewne przejścia między 1 a 0 w danych; długi strumień zer lub jedynek nie zawiera żadnych przejść, co uniemożliwia ustalenie, gdzie zaczynają się dane dla konkretnego bajtu . Aby uniknąć tego problemu, na każdym końcu każdego bajtu dodawane są dodatkowe bity ramek , zwykle po jednym bitu z każdej strony, znane jako „bity startu i stopu” . Gwarantuje to co najmniej jedno przejście od 1 do 0 na każdy bajt, co jest więcej niż wystarczające do utrzymania zablokowania zegarów. Jednak te bity również rozszerzają się co 8 bitów danych (jeden bajt) do 10 bitów, co stanowi 20%.

Podczas korzystania z protokołu przesyłania plików pakiety same oferują własne ramkowanie. Pakiety zawsze wysyłają ciągły strumień danych, więc zegar nie może „dryfować” w taki sam sposób, jak w przypadku danych wysyłanych przez użytkownika piszącego na klawiaturze. Wyłączając te bity ramek podczas pracy na łączu z korekcją błędów, można wyeliminować te 20% narzutu.

To właśnie zrobił MNP 3 . Po wynegocjowaniu i ustaleniu, że oba modemy obsługują MNP 3, bity ramek zostały wyłączone, co poprawiło ogólną wydajność o około 20%. To prawie idealnie kompensuje obciążenie protokołu, co oznacza, że ​​podczas korzystania z MNP 3 użytkownik może oczekiwać, że zbliży się do idealnej przepustowości 2400 bitów/s (w porównaniu do 1900 bitów/s).

MNP 4

MNP 4 był kolejnym ulepszeniem MNP 3, dodając system o zmiennej wielkości pakietu, który nazwano Adaptive Packet Assembly .

W przypadku MNP obciążenie systemu pakietowego było stosunkowo niewielkie, ale nawet wielobajtowe CRC zajmowało miejsce lepiej wykorzystywane na dane. Ogólnie rzecz biorąc, użycie większego pakietu rozwiązałoby ten problem, ponieważ CRC pozostaje ten sam stały rozmiar, a zatem jego względny narzut jest zmniejszony w porównaniu z ilością danych. Jednak gdy wystąpi błąd, użycie większych pakietów oznacza również, że należy ponownie wysłać więcej danych. Na hałaśliwych liniach może to spowolnić ogólną przepustowość.

W przypadku MNP 4 dwa modemy stale monitorują linię pod kątem porzuconych pakietów, a jeśli przekroczony zostanie pewien próg (wybrany przez użytkownika), modem wraca do mniejszego rozmiaru pakietu. Oznacza to, że gdy pakiet jest odrzucany, ilość danych do ponownego wysłania jest mniejsza, co prowadzi do lepszej przepustowości. W przypadku linii dobrej jakości użycie większych pakietów oznacza zmniejszenie narzutu CRC. Pakiety mogły mieć od 64 do 256 bajtów i pozwalały użytkownikowi na wymuszenie określonego rozmiaru, jeśli sobie tego życzył.

W MNP 4 wprowadzono również optymalizację fazy danych , prostą zmianę w protokole, która umożliwiła porzucenie niektórych informacji o ramkach pakietów po skonfigurowaniu łącza, co dodatkowo zmniejszyło obciążenie protokołu. Połączenie tych cech, wraz z brakiem ramkowania bajtów w MNP 3, pozwoliło na dalszy wzrost wydajności przepustowości.

MNP 5

Jeszcze bardziej radykalna zmiana została dokonana w przypadku MNP 5 , wprowadzając kompresję danych w locie w modemie. Dzięki MNP 5 dane odebrane z komputera są najpierw kompresowane za pomocą prostego algorytmu, a następnie przekazywane do systemu pakietyzującego MNP 4 w celu transmisji. W najlepszym przypadku system oferował kompresję około 2:1, ale ogólnie rzecz biorąc około 1,6:1 była typowa, przynajmniej w przypadku tekstu. W rezultacie modem 2400 bit/s wydaje się przesyłać tekst z prędkością ~4000 bitów/s.

Ten dramatyczny wzrost przepustowości pozwolił modemom Microcom pozostać nieco konkurencyjnymi w stosunku do modeli innych firm, które w innym przypadku były nominalnie znacznie szybsze. Na przykład, Microcom generalnie produkował modemy 1200 i 2400 bit/s przy użyciu standardowych części, podczas gdy firmy takie jak USRobotics i Telebit oferowały modele o prędkości do 19200 bit/s.

Jednak ta poprawa wydajności była dostępna tylko wtedy, gdy modemy na obu końcach obsługiwały MNP. To sprawiło, że system był naprawdę atrakcyjny tylko dla witryn instalujących modemy na obu końcach łączy; w przypadku usług dial-up, takich jak systemy biuletynów informacyjnych (BBS), nie było przekonującego powodu, aby używać urządzenia Microcom, gdy użytkownik końcowy prawdopodobnie nie ma takiego. Nawet w przypadkach, w których użytkownik kontrolował oba końce łącza, „zastrzeżone” modemy Microcom były mniej interesujące niż modele innych firm, które oferowały znacznie wyższą „rzeczywistą” przepustowość.

W celu stworzenia rynku dla modemów Microcom, począwszy od MNP 5, podjęli radykalny krok polegający na licencjonowaniu całego pakietu MNP za darmo. Pomysł polegał na tym, że radykalnie zwiększyłoby to liczbę modemów z zainstalowanym MNP, czyniąc „prawdziwe” modemy Microcom bardziej atrakcyjnymi. Co więcej, nowsze standardy o lepszej wydajności oferowałyby jeszcze lepszą wydajność, gdyby na obu końcach łącza znajdował się modem Microcom.

Niestety plan się nie powiódł. Wprowadzenie znacznie ulepszonego systemu kompresji LAPM w standardzie v.42bis wyprzedziło własne osiągnięcia firmy Microcom, zmniejszając wartość „prawdziwego” modelu Microcom prawie do zera. Używając v.42bis i standardowych części, ogromną liczbę tanich modemów o jeszcze lepszej wydajności, które wkrótce pojawiły się w Microcom. Chociaż Microcom nadal wprowadzał nowsze standardy, były one w dużej mierze ignorowane i Microcom przestał być siłą na rynku.

MNP 6

Wprowadzenie v.32 doprowadziło do powstania wielu standardowych modemów 9600 bit/s, z których prawie wszystkie oferowały MNP 5. Aby jeszcze bardziej odróżnić się od tego, co stawało się rynkiem towarowym (chociaż nie było tak do czasu wprowadzenia v. 32bis SupraFAXModem 14400 w 1991 r.), Microcom stworzył MNP 6 .

Główną cechą MNP 6 był Statistical Duplexing , który mógł przeznaczyć mniej lub więcej szerokości pasma na jedną lub drugą stronę łącza modemowego. Na przykład, gdyby jedna maszyna wysyłała duży plik, druga strona odesłałaby tylko niewielką ilość informacji, wiadomości ACK i NAK. W tym przypadku modemy oddałyby jak najwięcej kanału nadawcy, oferując jednokierunkową przepustowość do 19 200 bitów/s. W rzeczywistości nie wymagało to żadnych zmian w systemie modulacji: zwykle modem 9600 bitów/s miał pełny kanał 9600 bitów/sw obu kierunkach, co daje łącznie 19200 bitów/s; MNP 6 po prostu zezwolił na przekazanie większej lub mniejszej szerokości pasma jednej lub drugiej stronie, zamiast pozostawić ją stałą na 9600 w obie strony.

Ta podstawowa koncepcja była już szeroko stosowana w przemyśle, stanowiąc podstawę protokołu Express 96 firmy Hayes , PEP HST Telebit firmy USRobotics i (krótko) modemu CompuCom SpeedModem . Wszystkim tym standardom bardzo trudno było przetrwać na zdominowanym przez v.32bis rynku i podobnie jak one, MNP 6 został w dużej mierze zignorowany.

Mniej godnym uwagi dodatkiem do MNP 6 była Universal Link Negotiation . Wraz z wprowadzeniem dodatkowych trybów modulacji, zwłaszcza v.32 i nowszych, modemy po obu stronach łącza musiały spędzać coraz więcej czasu na negocjowaniu wspólnego standardu. Na przykład modem v.32bis najpierw wysyła tony na linię, aby spróbować uzyskać łącze 14.4; jeśli to się nie powiedzie po pewnym czasie, spróbuje 9600, 2400 i ostatecznie 1200 bit/s. Ponieważ każdy z tych standardów określał minimalny czas na „próbowanie” połączenia, opóźnienie wzrosło o ponad 10 sekund.

ULN uniknął tego opóźnienia, zawsze negocjując łącze z prędkością 2400 bitów/s bez włączonej korekcji błędów. Chociaż wyeliminowało to kompatybilność ze starszymi modemami 1200 bit/s, do tego momentu były one niezwykle rzadkie. Po nawiązaniu połączenia, co nastąpiło szybko, oba modemy wysłały mały ciąg identyfikacyjny do modemu zdalnego. Oba modemy następnie zbadały ciąg i wybrały najszybszy wspólny tryb. Rozmówca następnie ponownie negocjował raz przy tej większej prędkości.

MNP 7

MNP 7 wprowadził nowe algorytmy kompresji z rzekomym ulepszeniem kompresji plików tekstowych 3:1. Jednak w momencie wprowadzenia MNP 7 standard v.42bis oferował kompresję 4:1.

MNP 9

MNP 9 (widocznie nie wydano ósemki) poprawił funkcję Universal Link Detection, aby dodać nowsze tryby o dużej szybkości, ale poza tym był identyczny z MNP 7.

MNP 10

MNP 10 wprowadził nowy protokół korekcji błędów, zaprojektowany specjalnie do pracy z zaszumionymi liniami telefonicznymi powszechnie używanymi w Europie Wschodniej. W przeciwieństwie do wcześniejszych wersji, takich jak MNP 4, MNP 10 stale monitorował jakość linii i dostosowywał rozmiar pakietu, jeśli warunki uległy poprawie.

W 1991 roku Microcom udzielił firmie Rockwell International licencji MNP 10 na używanie jej w swoich niezwykle popularnych zestawach chipów modemowych. Ponieważ prawie wszystkie modemy, z wyjątkiem modeli USR, korzystały z chipsetu Rockwella od około 1995 roku, MNP 10 stał się dość szeroko stosowany (jeśli nie był używany). USR ostatecznie dodał MNP 10 do swoich modemów z serii V.everything, skutecznie czyniąc go uniwersalnym.

MNP 10 został później rozszerzony do MNP 10EC , "EC" oznaczającego "Extended Cellular". Była to seria modyfikacji, które pozwoliły MNP 10 radzić sobie z przerwami w transmisji, gdy telefon komórkowy przemieszcza się z jednej komórki do drugiej, co normalnie zostałoby zinterpretowane jako błędy w linii. Używając MNP 10EC, te przerwy są poprawnie identyfikowane jako „nie błędy”, a prędkość łącza pozostaje wyższa. Jego sukces doprowadził do AT & T Paradyne utworzonego konkurenta, ETC .

MNP 10EC był szczególnie atrakcyjny w roli komórkowej ze względu na włączenie metody negocjacji łącza ULN pierwotnie wprowadzonej w MNP 6 (i ulepszonej w MNP 9). W sieci komórkowej, w której rozliczany jest cały czas antenowy, szybsza konfiguracja pozwala zaoszczędzić pieniądze. MNP 10EC miał ograniczoną żywotność, ponieważ sieci komórkowe przekształciły się w różnorodne systemy całkowicie cyfrowe, które nie wymagały już modemu do połączenia z komputerem.

Zobacz też

Bibliografia