Documentatie over het MNP protocol. MNP (Microcom Networking Protocol) is een protocol dat zorgt voor foutvrije overdracht tussen modems. De modem neemt derhalve een groot deel foutdetectie en correctie voor z'n rekening. Een modem dat MNP ondersteunt is vaak op drie manieren in te stellen : - Normal mode. De modem werkt normaal en maakt geen gebruik van MNP. - Reliable mode. De modem aan de andrere kant moet ook volgens MNP werken. Is dit niet het geval dan wordt de verbinding verbroken. - Auto-reliable mode. Vooprdat de verbinding tot stand komt wordt gekeken of de modem aan de andere kant ook volgens MNP werkt. Als dit het geval is, wordt er een verbinding tot stand gebracht en wordt er gebruik gemaakt van MNP error correctie. Als de andere modem niet volgens MNP werkt wordt er in de normal-mode verder gecommuniceerd. MNP wordt door de fabrikant Microcom steeds verder ontwikkeld en derhalve bestaan er intussen al 6 verschillende versies (klassen). We zullen de verschillende klassen bekijken en daarmee meteen proberen uit te leggen hoe het protocol werkt. Algemeen (klassen 1 t/m 6) -------------------------- Bij alle klassen wordt er vanuit gegaan dat de data asynchroon aan het modem wordt aangeboden. De modem deelt de aangeboden data op in blokken en voegt aan elk blok extra informatie toe. Deze extra informatie biedt de ontvangende modem de mogelijkheid om uit te zoeken of de data correct ontvangen is. Is dit niet het geval, dan wordt het zendende modem verzocht dat blok nogmaals te verzenden. De ontvangende modem kan derhalve vrijwel altijd correcte data aan de ontvangende terminal aanbieden. Naast de foutcorrectie zorgen de hogere MNP klassen er voor dat er efficienter gebruik gemaakt wordt van de lijnsnelheid. Om dit te laten zien zal van iedere klasse een efficiency-berekening opgenomen worden. Zo'n berekening is een invulling van de volgende formule : Aantal bits dat modem aan de terminal aanbiedt ------------------------------------------------------------- x 100 % Aantal bits nodig voor het transport van bovengeneoemde data De lijnsnelheid wordt bij de klassen 1 t/m 5 verondersteld 2400 bps te zijn en bij klasse 6, 9600 bps. Klassen 1 en 2. --------------- Bij de klassen 1 en 2 is het transport tussen beide modems asynchroon. De extra informatie wordt dan ook byte voor byte verzonden, gebruikmakend van start- en stopbits. Een blok bestaat achtereenvolgens uit : - Header (3 bytes) . SYN . DLE . STX - MNP info (5 bytes) - User data (maximaal 64 bytes) - Trailer (2 bytes) . DLE . ETX - CRC (2 bytes) Het verschil tussen beide klassen is dat bij klasse 1 het verkeer half-duplex is en bij klasse 2 full-duplex. Bij efficiency berekeningen levert dit een verschil op omdat elk blok bij klasse 1 bij aankomst bevestigt moet worden middels een ACK. Zo'n ACK bestaat dan weer uit een heel blok, maar dan zonder user data (120 bytes). De efficiency berekeningen zien er voor de klassen 1 en 2 respectievelijk als volgt uit. maximale efficiency klasse 1 : 640 bits user data --------------------------------------------------------- x 100 % = 72 % 640 bits user data + 120 bits overhead + 120 bits ACK maximale efficiency klasse 2 : 640 bits user data --------------------------------------------------------- x 100 % = 84 % 640 bits user data + 120 bits overhead Uitgaande van een lijnsnelheid is de bitoverdracht respectievelijk 0,72 x 2400 bps = 1728 bps, en 0,84 x 2400 bps = 2016 bps. We verliezen nu dus een stukje snelheid maar daar staat tegenover dat we er vanuit mogen gaan, dat de bits allemaal correct door de ontvangende modem afgeleverd worden bij de ontvangende terminal. Klasse 3. --------- Vanaf deze klasse is het transport tussen beide modems synchroon. Dit houdt in dat het protocol zorgt voor een asynchroon/synchroon conversie (en andersom). De start- en stopbits worden derhalve bij zending verwijderd en weer toegevoegd bij ontvangst. Om er voor te zorgen dat in de data niet een eindvlag voorkomt, wordt van bit-stuffing gebruik gemaakt. Een blok ziet bij er klasse 3 als volgt uit : - Header (flag) (6 bits) - MNP info (5 bytes) - Userdata (maximaal 64 bytes) - Trailer (flag) (6 bits) - CRC (2 bytes) De efficiency berekening komt er nu als volgt uit te zien : 640 bits user data (asynchroon) ------------------------------------------------------ x 100 = 110 % 512 bits user data (synchroon) + 68 bits overhead Dit levert een bitoverdracht op van 1,1 x 2400 bps = 2640 bps. Klasse 4. --------- Deze klasse kent slechts twee verschillen ten opzichte van klasse 3. Dit zijn : - MNP info bestaat uit 3 bytes (in plaats van 5). - User data mag nu maximaal 256 bytes zijn (in plaats van 64). Dit levert de volgende berekening op : 2560 bits user data (synchroon) ------------------------------------------------------ x 100 = 122 % 2058 bits user data (synchroon) + 52 bits overhead De bitoverdracht wordt nu dus 1,22 x 2400 bps = 2928 bps.