High-Level Data Link Control
HDLC, anglicky High-Level Data Link Control, česky doslova Vysokoúrovňové řízení datového spoje je komunikační protokol linkové vrstvy vycházející z protokolu Synchronous Data Link Control vyvíjený od roku 1979 Mezinárodní organizací pro normalizaci (ISO) ve spolupráci s Mezinárodní elektrotechnickou komisí (IEC). HDLC pokrývá široké spektrum sériové komunikace:
- poskytuje spolehlivou spojovanou i nespolehlivou nespojovanou službu
- může být použit pro obousměrnou poloduplexní (anglicky v HDLC terminologii two-way alternate, TWA) a duplexní (anglicky two-way simultaneous, TWS) komunikaci, i pro komunikaci jednosměrnou (simplexní, anglicky one-way)
- může se používat na vícebodových vyhrazených spojích, na dvoubodových pevných nebo komutovaných linkách, i v sítích s přepojováním paketů
- může používat synchronní i arytmický přenos s osmibitovými nebo sedmibitovými slabikami
- stanice mohou komunikovat v režimu nadřízená-podřízená nebo jako rovnocenné
Z HDLC je odvozena celá řadu protokolů jako LAPB, LAPD, LAPF, LAPM a IrLAP, které jsou používány pro rozličné formy komunikace (v sítích X.25, v digitálních telefonních sítích, v lokálních sítích, pro modemovou komunikaci, pro komunikaci pomocí infračerveného světla), a další protokoly jako PPP, MTP-2 byly protokolem HDLC inspirovány. Některé jeho vlastnosti přebírá i IEEE 802.2 LLC, což řadí HDLC k nejvlivnějším linkovým protokolům.
Standard HDLC byl definován postupně v řadě samostatných dokumentů, které stanovovaly formáty rámců a postupy při komunikaci na sériovém spoji a později byly sloučeny do ISO/IEC 13239.
Historie
editovatPo zkušenostech se znakově orientovanými protokoly vyvinula firma IBM v první polovině 70. let 20. století bitově orientovaný přenosový protokol SDLC[1], který v roce 1975 použila ve své sadě síťových protokolů SNA[2]. Protokol byl dále rozvinut Mezinárodní organizací pro normalizaci (ISO) a American National Standards Institute (ANSI), které jej v roce 1979 publikovaly jako HDLC (ISO: High-Level Data Link Control)[1] a ADCCP (ANSI: Advanced Data Communications Control Procedures). HDLC a ADCCP rozšiřují SDLC o některé nové vlastnosti, jako je například asynchronní vyvážený režim, a ruší omezení velikosti rámce na násobky osmi bitů; na druhou stranu některé procedury a zprávy (např. zprávy CFGR a BCN) nepřevzaly[3].
Protokol HDLC je poměrně komplikovaný a díky jeho postupnému vývoji jej popisovalo několik ISO standardů:
- ISO 3309 – Struktura rámce
- ISO 4335 – Prvky protokolu
- ISO 6159 – Nevyvážené třídy protokolu
- ISO 6256 – Vyvážené třídy protokolu
- ISO 7776 – KZD procedury linkové vrstvy kompatibilní s X.25 LAPB
- ISO 7809 – Specifikace pro konsolidaci tříd procedur
- ISO 8471 – Nastavování adres datového spoje
- ISO 8885 – Obsah a formát informačního pole víceúčelového rámce XID
Které byly později spojeny do ISO/IEC 13239.
Existuje množství protokolů odvozených z HDLC; část funkcionality HDLC byla převzata:
- do protokolového zásobníku X.25 jako LAPB,
- do modemového protokolu V.42 bylo HDLC implementováno jako LAPM,
- do protokolového zásobníku Frame Relay jako LAPF,
- do protokolového zásobníku ISDN jako LAPD,
- do standardu IrDA jako IrLAP.
HDLC inspiroval protokol LLC v IEEE 802.2 a je základem pro mechanismus vytváření rámců používaný protokolem PPP na synchronních linkách, který používá mnoho serverů pro připojení k WAN, nejčastěji k Internetu.
HDLC je implicitním zapouzdřením pro sériové rozhraní na routerech firmy Cisco Systems. Mírně odlišná verze se používají pro řídicí kanály na linkách E1, v Digital cross connect system a na mnohakanálových telefonních linkách SONET. Existují protokoly, které používají nízkoúrovňové techniky HDLC pro vytváření rámců, ale ke standardní HDLC hlavičce přidávají další protokolová pole (například Cisco HDLC), nebo ji zcela nahrazují jinou hlavičkou (například MTP-2).
Funkce protokolu HDLC
editovatHlavní službou protokolu HDLC je spolehlivý přenos informací vyšší vrstvy s použitím mechanismu zpětné vazby s automatickým opakováním. Ke spolehlivému přenosu dat slouží informační rámce (I-rámce), které obsahují uživatelská data vyšší vrstvy spolu s číslem přenášeného rámce N(S). Hodnota N(S) se zvětšuje o jedničku pro každý vyslaný rámec; při opakování rámce se použije stejná hodnota N(S) jako při jeho prvním vysílání. Pole N(S) má omezenou velikost; v základních režimech je tříbitové; proto lze přenášet pouze spodní tři bity čísla rámce, což dovoluje odesílat bez potvrzení nejvýše 7 rámců. Jinak řečeno rámce se číslují aritmetikou modulo 8.
I-rámce zajišťují také potvrzování rámců přenášených opačným směrem; tento přenos potvrzení pro jeden směr komunikace spolu s uživatelskými daty posílanými opačným směrem se nazývá anglicky piggybacking. Pro potvrzování slouží pole N(R), které vždy obsahuje číslo očekávaného (prvního dosud nepřijatého) rámce. Uvedení určité hodnoty N(R) znamená, že všechny rámce s nižší hodnotou byly v pořádku přijaty.
Pokud má stanice poslat potvrzení a nejsou k dispozici uživatelská data, ke kterým by se potvrzení přibalilo, použije dohlížecí rámec (S-rámec), který neobsahuje žádná uživatelská data ani N(S), ale pouze číslo příštího očekávaného rámce N(R). Existují dva základní typy dohlížecích rámců: RR a RNR; první signalizuje, že stanice je připravena přijímat další rámce, druhý, že stanice další rámce přijímat nemůže (např. kvůli naplnění vyrovnávacích pamětí). Používání dalších dvou typů dohlížecích rámců REJ a SREJ, které představují záporné potvrzení dovolující používat selektivní opakování a tím snížit zpoždění při ztrátě nebo poškození rámce, je volitelné rozšíření.
Na linkách pracujících velkou rychlostí a s velkým zpožděním nemusí číslování rámců modulo 8 stačit, proto jsou k dispozici režimy používající vícebitové hodnoty N(S) a N(R) podle následující tabulky:
Počet bitů | Modulo čísel N(S) a N(R) | Max. počet rámců odeslaných bez potvrzení |
---|---|---|
3 | 8 | 7 |
7 | 128 | 127 |
15 | 32768 | 32767 |
31 | 2147483648 | 2147483647 |
Posledním typem HDLC rámců jsou nečíslované rámce (U-rámce), které, jak napovídá jejich název, neobsahují ani N(S) ani N(R). Díky tomu je jejich řídicí pole vždy osmibitové. Nečíslované rámce umožňují:
- nezabezpečený (nespolehlivý) přenos uživatelských dat
- vyžádat inicializaci stanice
- provést test funkčnosti linky
- výměnu informací o možnostech stanice
- zahájení a ukončení spojení v jehož rámci probíhá spolehlivý přenos uživatelských dat ve zvoleném režimu činnosti HDLC.
Typy HDLC rámců
editovatVšechny druhy HDLC rámců popsané výše shrnuje následující tabulka:
česky | zkráceně | anglicky | použití |
---|---|---|---|
Informační rámce | I-rámce | Information Frames | Spolehlivý přenos uživatelských dat síťové vrstvy v informačním poli. Potvrzování dat přenášených opačným směrem. |
Dohlížecí rámce | S-rámce | Supervisory Frames | Potvrzování dat přenášených I-rámci opačným směrem. Informační pole mají pouze rámce SREJ. |
Nečíslované rámce | U-rámce | Unnumbered Frames | Správa spojení a další účely. Některé typy U-rámců mohou obsahovat informační pole. |
Vytváření rámců
editovatHDLC se používá na sériových linkách, které přenášejí data jako nečleněný proud bitů nebo bytů. Jedním z úkolů HDLC je proto poskytnout metodu pro identifikaci začátku a konce rámce. HDLC k tomu používá křídlové značky (anglicky flag), také nazývané oddělovač rámců nebo příznak. Křídlová značka je tvořena posloupností bitů '01111110' nebo v šestnáctkovém zápisu 0x7E, kterou každý rámec začíná i končí. Křídlová značka na konci rámce může zároveň označovat začátek dalšího rámce.
Pokud simplexní nebo plně duplexní synchronní HDLC spoj nepřenáší žádné rámce, vysílají se nepřetržitě křídlové značky. Při použití linkového kódu NRZI-S (bit 0 = změna úrovně, bit 1 = bez změny úrovně) vzniká jeden z níže uvedených průběhů signálu podle počátečního stavu:
Tento průběh používají modemy pro trénink a synchronizaci hodin pomocí fázového závěsu. Některá zařízení dovolují, aby nulový bit na konci křídlové značky byl sdílen s křídlovou značkou na začátku dalšího rámce, tj. '011111101111110'.
Při poloduplexní komunikaci nebo při komunikaci point-to-multipoint, kdy linku sdílí několik stanic, není v mezirámcových mezerách aktivní žádný vysílač, což přijímače interpretují jako dlouhou řadu jedničkových bitů.
Jedním z požadavků při vytváření protokolu SDLC a HDLC byla možnost přenášet uvnitř rámce libovolná data (tzv. datová transparence). Protože se v uživatelských datech může vyskytnout bitový vzorek nebo byte shodný s křídlovou značkou, musí vysílač taková data upravit, aby je přijímač chybně nedetekoval jako ukončení rámce. Způsob úpravy závisí na tom, zda se používá bitově orientovaný nebo znakově orientovaný přenos.
Synchronní spoje
editovatSynchronní spoje používají bitově orientovaný přenos, který umožňuje používat metodu vkládání bitů (anglicky bit stuffing): kdykoli se v datech objeví 5 po sobě jdoucích jedničkových bitů, vloží se za ně jeden nulový bit. To zaručuje, že se uvnitř rámce nikdy (pokud neuvažujeme chyby přenosu) neobjeví více než 5 za sebou jdoucích jedničkových bitů. Právě 6 jedničkových bitů obklopených nulami signalizuje křídlovou značku; 7–15 jedničkových bitů za sebou se používá pro násilné ukončení přenosu rámce (abort). Více než 15 jedničkových bitů za sebou je interpretováno jako klidový stav linky. Přijímač při přijetí pěti jedničkových bitů následovaných nulovým bitem, tento nulový bit odstraní; pokud přijímač zaznamená posloupnosti šesti jedničkových bitů, jedná se buď o křídlovou značku (pokud sedmý bit je nulový) nebo o násilné ukončení přenosu rámce (pokud je sedmý bit jedničkový).
Chování přijímače při přijetí posloupnosti několika po sobě jdoucích jedničkových bitů popisuje následující tabulka:
Počet bitů | Význam | Činnost přijímače |
---|---|---|
1–4 | Data rámce | přijmout beze změn |
5 | Data rámce | vypustit následující nulový bit |
6 | Křídlová značka | po stavu klidu: synchronizovat přijímač; po datech: zkontrolovat přijatá data a předat vyšší vrstvě |
7–15 | Násilné ukončení rámce | rámec zahodit |
>15 | Stav klidu | čekat na křídlovou značku |
Při použití kódování NRZI-S, které kóduje nulový bit změnou úrovně signálu a jedničkový bit signálem bez změny úrovně, dochází při přenosu rámců ke změně úrovně signálu nejvýše po 7 jednotkových intervalech, což umožňuje udržovat synchronizaci vysílače a přijímače bez nutnosti přenosu hodinového signálu zvláštním vodičem.
Nové protokoly mohou používat výhodnější kódování jako například kódování 8b/10b.
Asynchronní spoje
editovatMá-li HDLC pracovat na linka používající arytmický přenos, jako je například standardní sériový port podle standardu RS-232 nebo V.24/V.28, který sdružuje bity po 5–8 do slabik, nelze použít mechanismus vkládání bitů. Aby bylo možné v rámcích přenášet bitové kombinace a znaky, které mají speciální význam, používá se metoda únikového znaku (anglicky escape character). Jako únikový znak slouží znak s kódem 0x7D. Pro zakódování libovolného znaku, který se nesmí přímo objevit v přenášených datech, se používá dvoubytová posloupnost (únikový znak, n), kde n je původní znak s invertovaným bitem 5 (s váhou 32, tj. 0x20). Je-li aktivní volitelná funkce číslo 15.1, budou se znaky se speciálním významem, které se vyskytnou datech, kódovat podle následující tabulky:
Kód znaku | Speciální význam | Zakódování |
---|---|---|
0x7D | Únikový znak | 0x7D 0x5D |
0x7E | Hranice rámce | 0x7D 0x5E |
HDLC umožňuje dojednat, aby se stejným způsobem přenášely i jiné rezervované hodnoty oktetů (jako například XON a XOFF – volitelná funkce 15.2, případně všechny řídicí znaky – volitelná funkce 15.3), pokud to přenosová linka vyžaduje.
Struktura rámců
editovatV základním režimu používá HDLC následující formát rámce:
Flag | Adresní pole | Řídicí pole | Informační pole | FCS | Flag |
---|---|---|---|---|---|
8 bitů | 8 bitů | 8 bitů | proměnná délka | 16 bitů | 8 bitů |
Po dohodě o režimu činnosti nebo o rozšířeních lze používat další formáty rámce:
Flag | Formát rámce | Adresní pole | Řídicí pole | Informační pole | FCS | Flag |
---|---|---|---|---|---|---|
8 bitů | 8 bitů | 8, 16, 24, ... bitů | 8, 16, 32, 64 bitů | proměnná délka | 16 bitů | 8 bitů |
Formát rámce typu 0 je určen pro prostředí s omezenou šířkou pásma, kde se používají krátké rámce s délkou 5 až 127 oktetů. Tento formát minimalizuje délku hlavičky.
Používání pole formát rámce je volitelná funkce číslo 22, používání adres proměnné délky volitelná funkce číslo 7, rozšířené číslování rámců se nastavuje příkazy SNRME, SARME nebo SABME nebo pomocí volitelné funkce číslo 10.
Flag | Formát rámce | Adresní pole | Řídicí pole | Informační pole | FCS | Flag |
---|---|---|---|---|---|---|
8 bitů | 16 bitů | 8, 16, 24, ... bitů | 8, 16, 32, 64 bitů | proměnná délka | 8, 16, 32 bitů | 8 bitů |
Délka rámce typu 1 je 5 až 4095 oktetů. Formát rámce typu 1 je navržen tak, aby se co nejvíce podobal základnímu formátu rámce, ale v poli formát rámce obsahuje délku rámce, což umožňuje vypnout vkládání bitů nebo oktetů (volitelná funkce číslo 24). Používání kontrolních součtů jiné délky než 16 bitů je volitelná funkce číslo 14.
Flag | Formát rámce | Adresní pole | Řídicí pole | HCS | Informační pole | FCS | Flag |
---|---|---|---|---|---|---|---|
8 bitů | 16 bitů | 8, 16, 24, ... bitů | 8, 16, 32, 64 bitů | 8, 16, 32 bitů | proměnná délka | 8, 16, 32 bitů | 8 bitů |
Délka rámce typu 2 je 5 až 2047 oktetů. Formát rámce typu 2 se používá, pokud je nutná zvýšená ochrana proti chybám případně delší rámce. Používá segmentační podpole, takže podpole délky ve formátu rámce má 11 bitů, což umožňuje vypnout vkládání bitů nebo oktetů (volitelná funkce číslo 24). Rámce bez informačního pole neobsahují HCS, ale pouze FCS. Používání kontrolních součtů jiné délky než 16 bitů je volitelná funkce číslo 14.
Používání kontrolního součtu pouze pro hlavičky (pole HCS) je volitelná funkce číslo 26. Délka HCS je vždy stejná jako FCS.
Flag | Formát rámce | Cílová adresa | Zdrojová adresa | Řídicí pole | HCS | Informační pole | FCS | Flag |
---|---|---|---|---|---|---|---|---|
8 bitů | 16 bitů | 8, 16, 24, ... bitů | 8, 16, 24, ... bitů | 8, 16, 32, 64 bitů | 8, 16, 32 bitů | proměnná délka | 8, 16, 32 bitů | 8 bitů |
Délka rámce typu 3 je 7 až 2047 oktetů. Formát rámce typu 3 se používá, pokud je třeba použít adresu odesilatele a příjemce; používání dvou adres se zapíná jako volitelná funkce číslo 21. Ostatní informace jsou stejné jako u formátu rámce typu 2.
Při vysílání dat rámce mezi křídlovými značkami se nejméně významný bit přenáší jako první (nezaměňovat s little-endian pořadím, které se vztahuje na řazení bytů ve vícebytových polích).
Křídlová značka
editovatKřídlová značka (anglicky flag) na konci jednoho rámce může být (ale nemusí) zároveň křídlovou značkou na začátku dalšího rámce.
Adresní pole
editovatHDLC standardně používá jednu adresu osmibitovou adresu, která slouží při provozu v režimu point-to-multipoint k rozlišení podřízených stanic; to znamená, že rámec vždy obsahuje adresu podřízené stanice. Pokud je potřeba, mohou stanice po vzájemné dohodě používat delší adresu.
Některé varianty HDLC rozšiřují adresní pole o druhou adresu, takže vždy obsahuje zdrojovou i cílovou adresu případně bit pro explicitní rozlišení příkazu a odezvy.
Řídicí pole
editovatŘídicí pole slouží k rozlišení typu rámce, k přenosu informace o čísle přenášeného rámce a pro potvrzování přenesených rámců. V základním režimu má řídicí pole následující formát:
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
---|---|---|---|---|---|---|---|---|
N(R) | P/F | N(S) | 0 | I-rámec | ||||
N(R) | P/F | typ | 0 | 1 | S-rámec | |||
typ | P/F | typ | 1 | 1 | U-rámec |
V rozšířených režimech se v I-rámcích a S-rámcích používá rozšířený (dvou, čtyř nebo osmibytový) formát řídicího pole. I v něm se nejméně významný bit (v této tabulce zcela vpravo) vysílá jako první. V I-rámci pak následuje 7, 15 nebo 31bitové pole s hodnotou N(S), bit P/F a 7, 15 nebo 31bitové pole s hodnotou N(R). S-rámce obsahují místo pole N(S) jeden nulový bit, dva bity s typem rámce a 4, 12 nebo 28 nevyužitých bitů s hodnotou 0. Pokud byl režim nastaven příkazem SNRME, SARME nebo SABME je řídicí pole dvoubytové a hodnoty N(S) a N(R) sedmibitové. Pro nastavení režimu se čtyřbytovým řídícím polem (a 15bitovými čísly N(S) a N(R)) a s osmibitovým řídicím polem (a 31bitovými čísly N(S) a N(R)) se používá příkaz SM, který má v informačním poli uvedenu velikost N(S) a N(R).
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
N(R) | P/F | N(S) | 0 | Rozšířený I-rámec | |||||||||||||
N(R) | P/F | 0 | 0 | 0 | 0 | typ | 0 | 1 | Rozšířený S-rámec |
Informační pole
editovatDélka dat je násobkem 8 bitů, ale vyžadují to pouze některé varianty HDLC; ostatní dovolují zarovnání dat na jiné než 8bitové hranici.
Kontrolní součet
editovatKontrolní posloupnost rámce (FCS) je cyklický redundantní součet vypočítaný z adresního, řídicího a informačního pole. Standardně se používá 16bitový CRC, komunikující stanice mohou dojednat použití 32bitového nebo 8bitového. Jestliže hodnota FCS vypočtená v přijímači nesouhlasí s hodnotou, kterou vypočítal odesilatel a přidal do rámce, znamená to, že rámec byl přijat chybně. Přijímač rámce se špatným CRC zahazuje a neposílá žádné potvrzení. Vysílač po vypršení prodlevy pro potvrzení odešle nepotvrzený rámec znovu. Pokud se obě strany dohodnou na posílání záporných potvrzení a odesilatel posílá více rámců za sebou, příjemce může poslat záporné potvrzení, pokud se v posloupnosti čísel rámců objeví díra.
Použité algoritmy pro výpočet FCS jsou schopny odhalit ztracené bity, bity se změněnou hodnotou a bity navíc. Tím se výrazně zvyšuje (zejména pro větší délku FCS) pravděpodobnost odhalení chyby. Pravděpodobnost neodhalené přenosové chyby se však zvyšuje s délkou zabezpečovaných dat, proto FCS může implicitně omezovat praktickou délku rámce.
FCS bylo implementováno protože mnoho starších komunikačních spojů mělo relativně vysokou bitovou chybovostí a FCS lze počítat jednoduchým rychlým obvodem nebo softwarově. Nové protokoly mohou používat efektivnější samoopravné kódy.
Možnosti komunikace
editovatKonfigurace linky
editovatHDLC rozlišuje 2 konfigurace datového spoje (linky):
- Nevyvážená (nesymetrická, anglicky unballanced), kdy komunikuje jedna nadřízená stanice s jednou nebo více podřízenými stanicemi.
- Vyvážená (symetrická, anglicky ballanced), kdy spolu komunikují dvě rovnocenné stanice.
Druhy stanic
editovatPři nesymetrické (nevyvážené) konfiguraci datového spoje existuje na spoji právě jedna nadřízená stanice, která provoz na spoji řídí (posílá příkazy k nastavení režimu provozu, řídí tok dat, zajišťuje funkce řízení zabezpečení a zotavení z chyb při komunikaci). Při použití spojovaných režimů se nadřízená stanice nazývá primární stanice (anglicky primary station), při použití nespojovaných režimů řídicí stanice (anglicky control station). Ostatní stanice jsou podřízené (na spoji jich může být jedna nebo více). Podřízené stanice se ve spojovaných režimech nazývají sekundární stanice (anglicky secondary station), v nespojovaných režimech vedlejší stanice (anglicky tributary station)
Při symetrické konfiguraci datového spoje komunikují na spoji vždy právě dvě stanice, které se při použití spojovaných režimů nazývají kombinované stanice (anglicky combined station), při použití spojovaných režimů rovnocenné stanice (anglicky peer station)
Příkazy a odezvy
editovatPříkaz (anglicky command) je v HDLC rámec vyslaný primární nebo řídicí stanicí. Při vyvážené konfiguraci datového spoje je to takový rámec vyslaný kombinovanou nebo rovnocennou stanicí, který obsahuje adresu druhé stanice.
Odezva (anglicky response) je v HDLC rámec vyslaný sekundární nebo vedlejší stanicí. Při vyvážené konfiguraci datového spoje je to takový rámec vyslaný kombinovanou nebo rovnocennou stanicí, který obsahuje vlastní adresu.
Režimy komunikace
editovatProtokol SDLC byl navržen pro propojení jednoho počítače s mnoha periferními zařízeními. Původní „režim normální odezvy“ je režimem nadřízený-podřízený, kde počítač (neboli primární stanice) dává každé periferii (sekundární stanici) oprávnění vysílat. Protože zdrojem nebo cílem veškeré komunikace je nadřízená stanice, rámce obsahují pouze adresu sekundární stanice; primární stanici není žádná adresa přiřazena. Mezi příkazy posílanými primární stanicí na sekundární a odezvami posílanými sekundární stanicí na primární je výrazný rozdíl.
HDLC tradičně definuje 3 základní třídy komunikačních postupů pro spojovanou komunikaci; 2 nesymetrické (NRM a ARM) a 1 symetrický (ABM). Novější verze přidávají a po jednom nesymetrickém a symetrickém nespojovaném (UCM a BCM).
Nové verze HDLC definují 5 základních tříd komunikačních postupů; 2 nesymetrické spojované (NRM a ARM), 1 symetrický spojovaný (ABM) a po jednom nesymetrickém a symetrickém nespojovaném (UCM a BCM).
HDLC definuje 3 režimy provozu:
- Režim normální odezvy (NRM) je nesymetrická konfigurace, ve které zahájit přenos dat může pouze primární stanice. Sekundární stanice vysílá data pouze v odezvě na příkazy z primární stanice. Primární stanice se dotazuje sekundárních stanic, aby zjistila, zda mají data na odeslání a pak vybere jednu, která bude vysílat.
- Režim asynchronní odezvy (ARM) je nesymetrická konfigurace, ve který sekundární stanice mohou vysílat bez oprávnění od primární. Nicméně primární stanice si stále zachovává odpovědnost za inicializaci linky, zotavení z chyb a logické rozpojení.
- Asynchronní vyvážený režim (ABM) je symetrická konfigurace mezi dvěma stanicemi, při které libovolná stanice může zahájit komunikaci.
Dalším režimem je Rozpojený režim. V tomto režimu je sekundární stanice až do okamžiku, kdy je inicializována primární stanicí, nebo po přijetí příkazu DISC (odpojení). V tomto režimu odpovídá sekundární stanice na téměř každý jiný rámec než příkaz nastavení režimu odezvou DM „Disconnected mode“. Účelem tohoto režim je umožnit primární stanici spolehlivě odhalit, zda sekundární stanice je funkční. V tomto režimu může také probíhat výměna uživatelských dat v rámcích UI, která je však nespolehlivá (není zaručeno doručení dat).
Režim normální odezvy
editovatV režimu normální odezvy si musí být primární stanice vědoma, že při komunikaci přes poloduplexní komunikační spoj nemůže vysílat, když předala oprávnění sekundární stanici.
Režim asynchronní odezvy
editovatRežim asynchronní odezvy je HDLC rozšíření[3] pro použití přes duplexní spoje. Sice rozlišuje primární/sekundární stanici, ale sekundární stanici umožňuje vysílat kdykoli.
Asynchronní vyvážený režim
editovatAsynchronní vyvážený režim přináší koncept kombinované stanice, které může fungovat jak jako primární tak jako sekundární stanice. Přestože u většiny vlastností protokolu HDLC nezáleží na tom, zda jsou použity v příkazu nebo odezvě, u některých na tom záleží a je třeba kontrolovat adresní pole přijatého rámce pro zjištění, zda obsahuje příkaz (přijatá adresa je naše) nebo odezvu (přijatá adresa patří jiné stanici).
Přehled konfigurací linky režimů provozu a typů stanic
editovatspojovaná komunikace (connection-oriented) | ||||
---|---|---|---|---|
konfig. linky | nevyvážená | vyvážená | ||
režim | NRM, ARM | ABM | ||
stanice | nadřízená | podřízená | – | |
primární (primary) |
sekundární (secondary) |
kombinovaná (combined) | ||
rámce | příkazy | odezvy | příkazy | odezvy |
I RR RNR SNRM,SARM DISC |
I RR RNR UA DM FRMR |
I RR RNR SABM DISC |
I RR RNR UA DM FRMR | |
nespojovaná komunikace (connectionless) | ||||
konfig. linky | nevyvážená | vyvážená | ||
režim | UCM | BCM | ||
stanice | nadřízená | podřízená | – | |
řídicí (control) |
vedlejší (tributary) |
rovnocenná (peer) | ||
rámce | příkazy | odezvy | příkazy | odezvy |
UI | UI | UI | – |
Na určitý režim komunikace mohou být stanice předem nastaveny, nebo může být dojednán pomocí příkazů a odpovědí XID nebo pomocí příkazu SM či jiných příkazů pro změnu režimu (SNRM, SARM, SABM, SNRME, SARME, SABME).
Bit P/F
editovatSoučástí každého rámce je bit P/F (anglicky Poll/Final). Jeho základním účelem je předání oprávnění k vysílání podobně jako v sítích Token ring; jakmile v poloduplexním režimu odešle stanice rámec s nastaveným bitem P/F, musí přestat vysílat a čekat na odpověď od druhé stanice. Druhá stanice může vyslat jeden nebo více rámců, ale odesláním rámce s nastaveným bitem P/F předává řízení první stanici. Protože se rámec s nastaveným bitem P/F může ztratit, řídicí stanice musí po jeho odeslání pustit časovač, a pokud dojde k jeho vypršení, opakovat vysílání.
P/F je jeden bit se dvěma jmény. Nazývá se Poll když je nastaven primární stanicí pro získání odezvy od sekundární stanice a Final když je nastaven sekundární stanicí pro indikaci odezvy nebo konce přenosu. Ve všech jiných případech je bit vynulovaný.
- V NRM režimu vlastnictví poll tokenu zajišťuje adresované sekundární stanici oprávnění vysílat. Sekundární stanice nastavuje bit F v posledním rámci s odezvou, čímž se vzdává oprávnění vysílat (bit F funguje jako slovo „příjem“ v rádiové hlasové komunikaci.)
- V režimech ARM a ABM, má nastavený bit P význam žádosti o odezvu. V těchto režimech sekundární stanice nemusí čekat na výzvu, aby mohla vysílat, takže nemusí čekat, aby mohla odpovědět s nastaveným bitem Final.
- Bit P/F je v HDLC povinným prvkem zpětné vazby s automatickým opakováním; všechny další varianty (například používání S-rámce REJ) jsou volitelná rozšíření a slouží pouze ke zvýšení efektivity komunikace. Když stanice přijme rámec s nastaveným bitem P/F, může předpokládat, že všechny rámce, které odeslala předtím, než naposledy poslala rámec s nastaveným bitem P/F, a které dosud nebyly potvrzeny, už nikdy nepřijdou a proto musí být odeslány znovu.
Stanice, která funguje jako kombinovaná stanice, musí rozlišovat bity P a F, protože se mohou používat dva zpětnovazební cykly současně. Bit P odeslaný v příkazu ze vzdálené stanice není odezvou na náš bit P; je jí bit F vyslaný v odezvě.
Repertoár HDLC příkazů a odezev
editovatZákladní operace:
- Příkazy (I, RR, RNR, nastavení režimu (SNRM nebo SARM nebo SABM), DISC)
- Odezvy (I, RR, RNR, UA, DM, FRMR)
Základní operace
editovat- Inicializaci může vyvolat libovolná strana vysláním jednoho ze sedmi příkazů pro nastavení režimu. Tento příkaz:
- Signalizuje opačné straně, že má provést vlastní inicializaci
- Určuje, ve kterém z režimů (NRM, ABM, ARM) se má od tohoto okamžiku pracovat
- Určuje, zda se mají používat tříbitová nebo sedmibitová pořadová čísla
HDLC modul, který přijme inicializační rámec, odpoví rámcem UA, pokud požadavek přijímá; pokud požadavek zamítá, vrátí odezvu DM (disconnect mode).
Informační rámce
editovatNázev | Příkaz/ Odezva |
Popis | Informace | Formát řídicího pole | |||||||
---|---|---|---|---|---|---|---|---|---|---|---|
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||||
Information (I) | P/O | Výměna uživatelských dat | N(R) | P/F | N(S) | 0 |
Dohlížecí rámce
editovatNázev | Příkaz/ Odezva |
Popis | Informace | Formát řídicího pole | |||||||
---|---|---|---|---|---|---|---|---|---|---|---|
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||||
Receive Ready (RR) | P/O | Kladné potvrzení | Připravenost přijmout I-rámec N(R) | N(R) | P/F | 0 | 0 | 0 | 1 | ||
Receive Not Ready (RNR) | P/O | Kladné potvrzení | Nepřipravenost k příjmu | N(R) | P/F | 0 | 1 | 0 | 1 | ||
Reject (REJ) | P/O | Záporné potvrzení | Opakovat rámce počínaje číslem N(R) | N(R) | P/F | 1 | 0 | 0 | 1 | ||
Selective Reject (SREJ) | P/O | Záporné potvrzení | Opakovat pouze rámec N(R) | N(R) | P/F | 1 | 1 | 0 | 1 |
Příkaz nebo odezva RR indikuje, že odesilatel rámce je schopen přijímat další data a zároveň potvrzuje přijetí rámců až do rámce N(R)-1; pokud je nastavený bit P, žádá, aby protistrana zaslala informaci o svém stavu.
Příkaz nebo odezva RNR funguje stejně jako RR, ale indikuje nepřipravenost odesilatele přijímat další data.
Příkaz nebo odezvu REJ indikuje, že odesilatel přijal všechny rámce s čísly do N(R)-1, a požaduje, aby příjemce opakoval rámce od čísla N(R).
Rámec SREJ lze použít pouze jako odezvu a pouze v rozšířeném režimu (modulo 128), v LAPB i v super režimu (modulo 32768 nebo 2147483648). Informační pole obsahuje seznam čísel rámců, které nebyly přijaty; seznam může obsahovat jednotlivá čísla rámců (mají nulový nejnižší bit) i intervaly (jsou tvořeny dvojicí čísel, obě mají jedničkový nejnižší bit).
Nečíslované rámce
editovatJméno | Příkaz/ Odezva |
Popis | Info | Formát řídicího pole | |||||||
---|---|---|---|---|---|---|---|---|---|---|---|
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||||
Zahájit režim normální odezvy SNRM | P | Zahájit režim | 3bitová pořadová čísla | 1 | 0 | 0 | P | 0 | 0 | 1 | 1 |
Zahájit rozšířený režim normální odezvy SNRME | P | Zahájit rozšířený režim | 7bitová pořadová čísla | 1 | 1 | 0 | P | 1 | 1 | 1 | 1 |
Zahájit režim asynchronní odezvy SARM | P | Zahájit režim | 3bitová pořadová čísla | 0 | 0 | 0 | P | 1 | 1 | 1 | 1 |
Zahájit rozšířený režim asynchronní odezvy SARME | P | Zahájit rozšířený režim | 7bitová pořadová čísla | 0 | 1 | 0 | P | 1 | 1 | 1 | 1 |
Zahájit asynchronní vyvážený režim SABM | P | Zahájit režim | 3bitová pořadová čísla | 0 | 0 | 1 | P | 1 | 1 | 1 | 1 |
Zahájit asynchronní vyvážený rozšířený režim SABME | P | Zahájit rozšířený režim | 7bitová pořadová čísla | 0 | 1 | 1 | P | 1 | 1 | 1 | 1 |
Zahájit inicializační režim SIM | P | Spustí inicializaci řízení spoje v adresované stanici | 0 | 0 | 0 | P | 0 | 1 | 1 | 1 | |
Odpojit DISC | P | Ukončit logické spojení | Při příjmu I a S rámců vracet DM | 0 | 1 | 0 | P | 0 | 0 | 1 | 1 |
Nečíslované potvrzení UA | O | Potvrzení přijetí příkazu pro nastavení režimu. | 0 | 1 | 1 | F | 0 | 0 | 1 | 1 | |
Režim odpojení DM | O | Responder v Disconnect Režim | nastavení režim požadovaný | 0 | 0 | 0 | F | 1 | 1 | 1 | 1 |
Požadavek odpojení RD | O | Vyžádání příkazu DISC | 0 | 1 | 0 | F | 0 | 0 | 1 | 1 | |
Požadavek na zaslání inicializace RIM | O | Pořadavek inicializace | Vyžádání příkazu SIM | 0 | 0 | 0 | F | 0 | 1 | 1 | 1 |
Nečíslované Informace UI | P/O | Nepotvrzovaná data | obsahuje uživatelská data | 0 | 0 | 0 | P/F | 0 | 0 | 1 | 1 |
Nečíslovaná výzva UP | P | Používané pro vyžádání řídicích informací | 0 | 0 | 1 | P | 0 | 0 | 1 | 1 | |
Vynulování čítače rámců RSET | P | Slouží ke zotavení | Vynuluje N(R) ale ne N(S) | 1 | 0 | 0 | P | 1 | 1 | 1 | 1 |
Výměna Identifikace XID | P/O | Používaný pro vyžádání nebo oznámení schopností stanice | 1 | 0 | 1 | P/F | 1 | 1 | 1 | 1 | |
Test TEST | P/O | Vrátí stejné informační pole pro testování | 1 | 1 | 1 | P/F | 0 | 0 | 1 | 1 | |
Zamítnutí rámce FRMR | O | Oznamuje příjem chybného rámce | 1 | 0 | 0 | F | 0 | 1 | 1 | 1 | |
Set command SM | P | Obecné nastavení režimu | 1 | 1 | 0 | P | 0 | 0 | 1 | 1 | |
Unnumbered Information with Header check UIH | P/O | Nečíslovaná informace s kontrolou hlavičky | 1 | 1 | 1 | P/F | 1 | 1 | 1 | 1 | |
Nonreserved 0 NR0 | P/O | Nestandardizovaný | Pro aplikační použití | 0 | 0 | 0 | P/F | 1 | 0 | 1 | 1 |
Nonreserved 1 NR1 | P/O | Nestandardizovaný | Pro aplikační použití | 1 | 0 | 0 | P/F | 1 | 0 | 1 | 1 |
Nonreserved 2 NR2 | P/O | Nestandardizovaný | Pro aplikační použití | 0 | 1 | 0 | P/F | 1 | 0 | 1 | 1 |
Nonreserved 3 NR3 | P/O | Nestandardizovaný | Pro aplikační použití | 1 | 1 | 0 | P/F | 1 | 0 | 1 | 1 |
Konfigurovat pro test CFGR | P/O | Není součástí HDLC | Bylo součástí SDLC | 1 | 1 | 0 | P/F | 0 | 1 | 1 | 1 |
Maják BCN | O | Není součástí HDLC | Bylo součástí SDLC | 1 | 1 | 1 | F | 1 | 1 | 1 | 1 |
Rámce UI, XID a TEST obsahují data vyšší vrstvy a lze je použít jako příkazy i jako odezvy.
- Rámce UI obsahují uživatelské informace, ale na rozdíl od I-rámců se nepotvrzuje ani znovu nevysílá při ztrátě.
- Rámec XID se používá pro výměnu informací o schopnostech stanice. Jeden formát definovalo SDLC, ale varianta definovaná v ISO 8885 je používanější. Primární stanice oznámí své schopnosti příkazem XID a sekundární vrátí XID odezvu.
- Rámec TEST slouží pro ladící účely. Funguje jako příkaz ping; obsah datového pole příkazu TEST se vrací v odezvě TEST.
Rámec FRMR obsahuje data popisující chybný rámec. První 1 nebo 2 byty jsou kopií odmítnutého řídicího pole, další 1 nebo 2 byty obsahují aktuální pořadová čísla N(S) a N(R) a následující 4 nebo 5 bitů indikují důvod odmítnutí rámce.
Volitelné funkce
editovatČís. | Funkce | Změny protokolu |
---|---|---|
1 | Identifikace a předávání charakteristiky stanic | Přidán příkaz a odpověď XID |
2 | Včasné informování o chybách pořadí rámců | Přidán příkaz a odpověď REJ |
3 | Efektivnější zotavení z chyb v pořadí I rámců ... | Přidán příkaz a odpověď SREJ |
3.1 | ... opakováním jednotlivého rámce | Přidán příkaz a odpověď SREJ |
3.2 | ... opakováním jednoho nebo více rámců | Přidán příkaz a odpověď SREJ |
3.3 | ... s možností uvedení rozsahu rámců | Přidán příkaz a odpověď SREJ |
4 | Používání UI rámců v libovolném režimu | Přidán příkaz a odpověď UI |
5 | Inicializace vzdálené stanice a vyžádání inicializace | Přidán příkaz SIM a odpověď RIM |
6 | Dotazování skupiny stanic, všech stanic a individuální stanice | Přidán příkaz UP |
7 | Rozšíření adresy na více oktetů | Používá se rozšířený formát adres |
8 | Používání pouze příkazových I rámců | Nepoužívá se odpověď I |
9 | Používání pouze odpovědních I rámců | Nepoužívá se příkaz I |
10 | Rozšířené číslování rámců ... | Místo SXXM se používá příkaz SXXME |
10.1 | ... modulo 128 | Místo SXXM se používá příkaz SXXME |
10.2 | ... modulo 32768 | Místo SXXM se používá příkaz SM |
10.3 | ... modulo 2 147 483 648 | Místo SXXM se používá příkaz SM |
11 | Reinicializace stavových proměnných pouze v jednom směru | Přidán příkaz RSET |
12 | Základní test datového spoje | Přidán příkaz a odpověď TEST |
13 | Požadavek logického odpojení | Přidána odpověď RD |
14 | Nestandardní délka FCS | FCS jiné velikosti než 16 bitů |
14.1 | 32bitové FCS | 32bitové FCS |
14.2 | 8bitové FCS | 8bitové FCS |
15 | Start/stop komunikace ... | |
15.1 | ... se základní transparentností | |
15.2 | ... se základní transparentností a transparentností řízení toku dat | |
15.2 | ... se základní transparentností a transparentností řídicích oktetů | |
16 | Start/stop komunikace pro 7bitová data | |
17 | Konfigurace spoje | Přidán příkaz SM |
18 | Informační pole v odpovědích UA a DM a příkazu DISC | Informační pole v rámcích UA, DM a DISC |
19 | Informační pole v příkazech pro změnu režimu | V rámcích SABM, SARM, SNRM, SABME, SARME, SNRME |
20 | FCS nepokrývá informační pole | Přidán příkaz a odpověď UIH |
21 | Více adresních polí | Přidán příkaz a odpověď UIH |
22 | Rámec začíná polem formátu rámce (za flagem) | Přidáno pole formátu rámce |
23 | Segmentace | Pole formátu rámce obsahuje segmentační podpole |
24 | Vypnutí vkládání bitů nebo oktetů | |
25 | Start/stop režim s mezirámcovým timeoutem | |
26 | Kontrolní součet hlaviček | Přidáno pole HCS za pole Control |
Odkazy
editovatPoznámky
editovatReference
editovatV tomto článku byl použit překlad textu z článku High-Level Data Link Control na anglické Wikipedii.
- FRIEND, George E., John L. Fike, H. Charles Baker, John C. Bellamy. Understanding Data Communications. 2. vyd. Indianapolis: Howard W. Sams & Company, 1988. Dostupné online. ISBN 0-672-27270-9.
- STALLINGS, William. Data and Computer Communications. 7. vyd. Upper Saddle River: Pearson/Prentice Hall, 2004. Dostupné online. ISBN 978-0-13-100681-2.
- S. TANENBAUM, Andrew. Computer Networks. 4. vyd. 482, F.I.E., Patparganj, Delhi 110 092: Dorling Kindersley (India) Pvt. Ltd., licenses of Pearson Education v South Asie, 2005. Dostupné online. ISBN 81-7758-165-1.
Literatura
editovat- KUBÍN, Boris; PUŽMAN, Josef. Veřejné datové sítě. 1. vyd. Praha: NADAS, 1989. 420 s. ISBN 80-7030-033-7. Kapitola 5.7.3 Bitově orientovaný protokol HDLC, s. 118–124.
- DLABOLA, František; STARÝ, Jaroslav. Systémy s mikroprocesory a přenos dat. 2. vyd. Praha: NADAS, 1986. 521 s. Kapitola 7.3 Bitově orientované postupy, s. 310–359.
Související články
editovat- PPP – Point-to-Point Protocol
- SLIP
Synchronous Data Link Control|
- Sériová komunikace
- Rámec (počítačová síť)
- Arytmický sériový přenos
- LAPB – Link Access Procedure Balanced
- LAPM – Link Access Procedure, Modem
- LAPF – Link Access Procedure for Frame Relay
- LAPD – Q.921
Externí odkazy
editovat- International Standard ISO/IEC 13239 Archivováno 27. 5. 2015 na Wayback Machine.
- International Standard ISO/IEC 13239 Archivováno 29. 12. 2013 na Wayback Machine.
- RFC 2687, Navrhovaný standard, PPP v rámcích vycházejících z HDLC pro aplikace v reálném čase
- RFC 1662, standard 51, PPP v rámcích vycházejících z HDLC
- Stránka s informacemi o protokolu HDLC (dobrý popis HDLC polí)
- Lekce Manfreda Lindnera o datové komunikaci – část HDLC[nedostupný zdroj]
- Formát HDLC paketů a další informace[nedostupný zdroj]
- Rodina protokolů HDLC