Hibafelismerés: CRC. Számítógépes Hálózatok Polinóm aritmetika modulo 2. Számolás Z 2 -ben

Hasonló dokumentumok
Számítógépes Hálózatok 2008

Hibafelismerés: CRC. Számítógépes Hálózatok Polinóm aritmetika modulo 2. Számolás Z 2 -ben

Számítógépes Hálózatok 2012

Egyszerű simplex protokoll nyugtákkal

Számítógépes Hálózatok 2008

Számítógépes Hálózatok. 4. gyakorlat

Adatkapcsolati réteg (Data Link Layer) Számítógépes Hálózatok Az adatkapcsolati réteg lehetséges szolgáltatásai

Számítógépes Hálózatok 2013

Számítógépes Hálózatok

Számítógépes Hálózatok ősz Adatkapcsolati réteg Hibafelismerés és javítás, Hamming távolság, blokk kódok

Számítógépes Hálózatok. 7. gyakorlat

Az adatkapcsolati réteg

Számítógépes Hálózatok. 5. gyakorlat

Hibadetektáló és javító kódolások

Számítógépes Hálózatok

12. fejezet Hibajelző kódok és Adatkapcsolati protokollok

7. Adatkapcsolati réteg

Számítógépes Hálózatok 2010

Szállítási réteg (L4)

FFT. Második nekifutás. Czirbusz Sándor ELTE IK, Komputeralgebra Tanszék október 2.

Nagy Gábor compalg.inf.elte.hu/ nagy

1. A maradékos osztás

Számítógépes Hálózatok

Hibajavítás, -jelzés. Informatikai rendszerek alapjai. Horváth Árpád november 24.

Frekvencia tartományok. Számítógépes Hálózatok és Internet Eszközök. Frekvencia tartományok rádió kommunikációhoz

Számítógép hálózatok gyakorlat

Az Internet működésének alapjai

1. A maradékos osztás

Számítógépes Hálózatok

8. Szállítói réteg TCP Tahoe, Reno, AIMD, hatékonyság, fairness. HálózatokII, 2007

Számítógépes Hálózatok 2008

Dr. Wührl Tibor Ph.D. MsC 05 Ea. Szállítási protokollok - Bevezetés

Sapientia Egyetem, Műszaki és Humántudományok Tanszék.

Tartalom. Az adatkapcsolati réteg, Ethernet, ARP. Fogalma és feladatai. Adatkapcsolati réteg. A hálókártya képe

Kongruenciák. Waldhauser Tamás

Számítógépes Hálózatok

Nagy Gábor compalg.inf.elte.hu/ nagy

Diszkrét matematika II. feladatok

Diszkrét matematika 2.

Számítógépes Hálózatok

Algoritmuselmélet gyakorlat (MMN111G)

ADATKAPCSOLATI PROTOKOLLOK

x 3 - x 3 +x x = R(x) x 3 + x x 3 + x ; rendben, nincs maradék.

Számítógépes Hálózatok és Internet Eszközök

A szállítói réteg (transport layer) szolgáltatásai. Számítógépes Hálózatok Szállítói réteg (transport layer) Multiplexálás a szállítói rétegben

Intergrált Intenzív Matematika Érettségi

MAC alréteg. Számítógépes Hálózatok Protokollok korlátozott versennyel. Adaptív fa bejárás protokoll

Számítógépes Hálózatok

Prezentációk készítése

OSI-ISO modell. Az OSI rétegek feladatai: Adatkapcsolati réteg (data link layer) Hálózati réteg (network layer)

Assembly Utasítások, programok. Iványi Péter

Számítógépes Hálózatok GY 6.hét

* Rendelje a PPP protokollt az TCP/IP rétegmodell megfelelő rétegéhez. Kapcsolati réteg

Nagy Gábor compalg.inf.elte.hu/ nagy

1.1. Definíció. Azt mondjuk, hogy a oszója b-nek, vagy más szóval, b osztható a-val, ha létezik olyan x Z, hogy b = ax. Ennek jelölése a b.

Bánfalvy Zoltán, ABB Kft., MEE Vándorgyűlés, Budapest, Ethernet-hálózatok redundanciája IEC és IEC 62439

10. fejezet Az adatkapcsolati réteg

1. A polinom fogalma. Számolás formális kifejezésekkel. Feladat Oldjuk meg az x2 + x + 1 x + 1. = x egyenletet.

VEKTORTEREK I. VEKTORTÉR, ALTÉR, GENERÁTORRENDSZER október 15. Irodalom. További ajánlott feladatok

Számítógépes Hálózatok 2013

Számítógépes Hálózatok. 5. gyakorlat

MAC alréteg. Számítógépes Hálózatok persistent CSMA. Vivő-érzékelés (Carrier Sensing)

Számítógépes Hálózatok. 5. gyakorlat

Számítógépes Hálózatok

loop() Referencia:

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

Az Ethernet példája. Számítógépes Hálózatok Az Ethernet fizikai rétege. Ethernet Vezetékek

I+K technológiák. Számrendszerek, kódolás

Tartalom. Az adatkapcsolati réteg, Ethernet, ARP. Fogalma és feladatai. Adatkapcsolati réteg. Ethernet

Számítógépes Hálózatok GY 7.hét

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

[SZÁMÍTÓGÉP-HÁLÓZATOK]

Számítógépes Hálózatok és Internet Eszközök

Polinomok (el adásvázlat, április 15.) Maróti Miklós

Kódolás, hibajavítás. Tervezte és készítette Géczy LászlL. szló 2002

Diszkrét matematika I.

Felvételi vizsga mintatételsor Informatika írásbeli vizsga

FELADATOK A BEVEZETŽ FEJEZETEK A MATEMATIKÁBA TÁRGY III. FÉLÉVÉHEZ. ÖSSZEÁLLÍTOTTA: LÁNG CSABÁNÉ ELTE IK Budapest

8. Szállítói réteg TCP Tahoe, Reno, AIMD, hatékonyság, fairness. HálózatokII, 2006

1. Interpoláció. Egyértelműség Ha f és g ilyen polinomok, akkor n helyen megegyeznek, így a polinomok azonossági tétele miatt egyenlők.

2. Fejezet : Számrendszerek

KANDÓ KÁLMÁN VILLAMOSMÉRNÖKI KAR HÍRADÁSTECHNIKA INTÉZET. Szállítási réteg vizsgálata Wireshark analizátorral. Dr. Wührl Tibor Dr.

4. Fejezet : Az egész számok (integer) ábrázolása

I+K technológiák. Digitális adatátviteli alapfogalmak Aradi Szilárd

Zárthelyi feladatok megoldásai tanulságokkal Csikvári Péter 1. a) Számítsuk ki a 2i + 3j + 6k kvaternió inverzét.

V2V - routing. Intelligens közlekedési rendszerek. VITMMA10 Okos város MSc mellékspecializáció. Simon Csaba

Diszkrét matematika alapfogalmak

Alapfogalmak a Diszkrét matematika II. tárgyból

int azt az elõzõ részbõl megtudtuk, a rétegeknek az a feladatuk, hogy valamiféle feladatot végezzenek

A szállítói réteg (transport layer) szolgáltatásai. Számítógépes Hálózatok Szállítói réteg (transport layer) Multiplexálás a szállítói rétegben

1. Egész együtthatós polinomok

The Architecture of Computer Hardware and Systems Software: An InformationTechnology Approach 3. kiadás, Irv Englander John Wiley and Sons 2003

Számítógép-hálózatok Az adatkapcsolati réteg

Komputeralgebra Rendszerek

A TCP/IP modell szállítási rétege

Kollízió felismerés (collision detection) CSMA/CD. Számítógépes Hálózatok CSMA/CD periódusai. Mi a teendő kollízió esetén? B Idle!

AST_v3\

Számítógépes Hálózatok és Internet Eszközök

Diszkrét matematika 2.C szakirány

Megoldás. Feladat 1. Statikus teszt Specifikáció felülvizsgálat

Átírás:

Hibafelismerés: CRC Számítógépes Hálózatok 2 4. Adatkapcsolati réteg CRC, utólagos hibajavítás, csúszó ablakok Hatékony hibafelismerés: Cyclic Redundancy Check (CRC) A gyakorlatban gyakran használt kód Nagy hibafelismerési ráta Hardware megvalósítás egyszerű Polinóm aritmetikán alapul a 2-es maradékosztályok (Z 2 ) testén A jelsorozatotokat polinómnak tekintjük A bitek a polinóm együtthatói 2 Számolás Z 2 -ben Polinóm aritmetika modulo 2 Számolás modulo 2: Szabályok: összeadás mod 2 kivonás mod 2 szorzás mod 2 Tekintsük a polinómokat Z 2 maradékosztály test fölött p(x) = a n x n + + a x + a Az a i együtthatók és az x változók {,} A számítás modulo 2 történik A B A + B A B A - B A B A B Polinómok összeadása, kivonása, szorzása, (maradékos) osztása, mint ahogy ismerjük Példa: + = 3 4

Bit sztringek és Z 2 feletti polinómok Ötlet: Tekintsük az n hosszúságú bit sztringet mint egy polinóm együtthatóit Bit sztring: b n b n- b b Polinóm: b n x n + + b x + b Egy (n+) bitből álló bit sztring megfelel egy n-ed fokú polinómnak Példa A xor B = A(x) + B(x) Ha A-t k pozícióval balra toljuk (shift), ez a következőnek felel meg: C(x) = A(x) x k Ezt az izomorfizmust használva tudunk bit sztringekkel osztani Maradékos osztás bitsztingekkel Példa: : = maradék 5 6 Redundancia polinómok által: CRC Definiáljunk egy G(x) generatorpolinómot, melynek a foka g G(x) a küldő és a fogadó által ismert g redundáns bitet generálunk Adott: Keret (frame, üzenet) M, mint M(x) polinom Küldő Kiszámolja az osztás maradékát r(x) = x g M(x) mod G(x) Átvitelre kerül: T(x) = x g M(x) + r(x) Figyeljük meg: x g M(x) + r(x) többszöröse G(x)-nek Fogadó m(x)-et fogad Kiszámítja a maradékot: m(x) mod G(x) CRC Átvitel Ha nem történt hiba: T(x) fogadása korrekt Bithiba: T(x) tartalmaz megváltoztatott bitet Ez ekvivalens egy E(x) hibapolinóm hozzáadásához A fogadóhoz m(x) = T(x) + E(x) érkezik Fogadó Kiszámítja m(x) mod G(x) maradékot Ha nincs hiba: m(x) = T(x), Ekkor a maradék Bit hibák: m(x) mod G(x) = (T(x)+ E(x)) mod G(x) = T(x) mod G(x) + E(x) mod G(x) hibaindikátor 7 8

CRC Áttekintés A generator meghatározza a CRC tulajdonságait Küldő Csatorna Fogadó Eredeti keret M(x) küld: T(x) = x g M(x) + r(x) Generátor polinóm G(X) hozzáad: E(x) hibapolinómot fogad: m(x) = T(x) + E(x) Kiszámolja (T(x) + E(x)) mod G(x) Ha ez = : No error r(x) = x g M(x) mod G(x) Ha ez : hiba! Ha nem történik hiba: E(x) = A bit-hibákat csak akkor nem ismerjük fel, ha E(x) többszöröse G(x)-nek G(x) választásának trükkjei: -bit-hiba: E(x) = x i hiba az i-edik pozíción Ha G(x) legalább 2 nem nulla együthatót tartalmaz, akkor E(x) nem többszörös 2-bit-hiba: E(x) = x i + x j = x j (x i-j +), ahol i>j G(x) nem szabad, hogy osztója legyen (x h + )-nek semmilyen h-ra, h k, a maximális kerethosszig, Páratlan számú hiba: Ekkor E(x) nem többszöröse (x+)-nek Ötlet: legyen (x+) osztója G(x)-nek ekkor E(x) nem többszöröse G(x)-nek G(x) okos megválasztásával minden r hosszú hibasorozat (burst) felismerhető 9 CRC a gyakorlatban CRC implementáció -- pszeudokód Az IEEE 82.3 (Ethernet) standardban felhasznált generátor polinóm (CRC-32): x 32 + x 26 + x 23 + x 22 + x 6 + x 2 + x + x + x 8 + x 7 + x 5 + x 4 + x 2 + x + Figyelem: Hiba még mindig lehetséges Különösen, ha a bithibáknak megfelelő E(x) többszöröse G(x)-nek. Implementáció: Egyszerű XOR-operáció HW implementácó: shift-register function crc(bit array bitstring[..len], int polynomial) { // bitstring represents x g M(x) shiftregister := initial value // commonly all bits (variant: all bits) for i from to len { if most significant bit of shiftregister = { // Shift left, place data bit as least significant bit (LSB), then divide shiftregister := shiftregister left shift shiftregister := shiftregister or bitstring[i] shiftregister := shiftregister xor polynomial } else { // shiftregister is not divisible by polynomial yet. // Just shift left and bring current data bit onto LSB of shiftregister shiftregister := shiftregister left shift shiftregister := shiftregister or bitstring[i] } } return shiftregister } 2

Utólagos hibajavítás A hiba felismerésekor a keretet újra kell küldeni Hogy néz ki a küldő és a fogadó összehangolt munkája? csomagok keretek Hálózati réteg Adatkapcsolati réteg from_upper(p) to_lower(p) to_upper(p) from_lower(p) Hálózati réteg Adatkapcsolati réteg Egyszerű simplex protokoll nyugtákkal Simplex üzemmód: csomagok küldése csak egyirányú A fogadó nyugtázza a küldő csomagjait (ehhez fél-duplex fizikai csatorna elegendő) A küldő vár egy bizonyos ideig a nyugtára (acknowledgment -- ACK) Ha az idő lejárt, újraküldi a csomagot Első megoldási kisérlet: Küldő from_upper (p);, to_lower(p) Fogadó from_lower (p); to_upper(p), to_lower (ack) bitek Fizikai réteg wait wait to_lower, from_lower tartalamzzák a CRC-t vagy (szükség esetén) utólagos hibajavítást from_lower (ack); cancel_timer to_lower (p), 3 4 Elemzés 2. Kisérlet Problémák A felső réteg gyorsabban küldi a csomagokat, mint ahogy a nyugták megérkeznek Az első probléma megoldása Egy csomag a másik után Küldő to_lower(p), to_upper (busy) Fogadó from_lower (p); to_upper(p), to_lower (ack) Mi történik, ha nyugták elvesznek Wait Process Wait error from_lower(ack); cancel_timer to_lower (p), 5 6

Elemzés Elemzés A protokoll megvalósít egy elemi folyamfelügyeletet 2. probléma: elveszik a nyugta Küldő Fogadó Fr_up Küldő Fogadó Ack to_up Fr_up Küldő Fogadó Fr_up Ack to_up Ugyanaz a csomag kétszer továbbítódik a magasabb réteghez Ack to_up Ack to_up 7 8 A 2. probléma (duplikátumok) A küldő nem tud különbséget tenni elveszett csomag és elveszett nyugta között Újra kell küldeni a csomagot A fogadó nem tud különbséget tenni egy csomag és egy régi csomag redundáns másolata között További információ szükséges Ötlet: Minden csomagot ellátunk egy sorszámmal (sequence number), hogy a fogadónál az azonosítás lehetséges legyen Minden csomag fejléce tartalmaz sorszámot Itt: csak vagy Szükséges a csomagban és a nyugtában A nyugta az utolsó hibátlanul fogadott csomag sorszámát tartalmazza (tisztán konvenció) 3. kisérlet: nyugta és sorszám error from_lower(ack); cancel_timer to_lower (,p) Ready Process from_lower (ack); - to_higher (busy) to_lower(,p), Küldő from_lower (ack); - from_higher(p); to_lower(,p), to_upper (busy) Process to_lower (,p) from_lower(ack); cancel_timer Ready error from_lower (,p); to_lower (ack) Wait from_lower (,p); to_upper(p), to_lower (ack) Fogadó from_lower (,p); to_upper(p), to_lower (ack) Wait from_lower (,p); to_lower (ack) 9 2

3. kisérlet: alternáló bit protokoll (Alternating Bit Protocol) Alteráló bit protokoll -- hatékonyság A 3. kisérlet egy zajos csatorna fölötti megbízható protokoll korrekt implementációja Alternating Bit Protokoll Az Automatic Repeat request (ARQ) protokollok közé tartozik Folyamfelügyelet egy egyszerű formáját is tartalmazza Egy nyugta két feladata nyugtázni, hogy egy csomag megérkezett engedélyezni egy új csomag küldését Hatékonyság η a következő két érték arányaként definiált: az idő, amely a küldéshez szükséges és az idő, amely szükséges, amíg újra lehet küldeni (hibamentes csatornán) η = T packet / (T packet + d + T ack + d) Nagy delay esetén az alternáló bit protokoll nem hatékony T packet d T ack d Idő 2 22 A hatékonyság javítása Csúszó ablak (sliding window) A csomagok folyamatos küldése növeli a hatékonyságot több outstanding csomag (elküldött, de még nem nyugtázott) növeli a hatékonyságot csomag pipeline Nem csak -bit-sorozatszámmal lehetséges A küldő folyamatosan küld nő a hatékonyság Idő A sorozatszámok terét megnöveljük n bitre, azaz 2 n sorozatszámra Nem mind használható fel ugyanabban az időben az Alternating Bit Protocol-ban sem lehetséges Csúszó ablakok (sliding windows) a küldőnél és a fogadónál kezelik ezt a problémát Küldő: küldő-ablak Sorozatszámok olyan sorozata, amelyek egy adott időben elküldhetők Fogadó: fogadó-ablak Sorozatszámok olyan sorozata, melyet a fogadó egy adott időpillanatban hajlandó elfogadni Az ablakok mérete lehet fix vagy időben dinamikusan változtatható Az ablakméret folyamfelügyeletet tesz lehetővé 23 24

Példa Átviteli hiba és a fogadó-ablak Sliding Window példa n=3 és fix ablakméret = esetén A küldő itt mutatja a még nem nyugtázott sorozatszámokat Ha a még nem nyugtázott keretek (frame) száma ismert, akkor ez ekvivalens az előző fólián definiált a küldő-ablakkal a. Kezdetben: mielőtt bármit küldenénk b. Az első frame küldése után sorozatszámmal c. Az első frame fogadása után d. Az első nyugta fogadása után Feltételeink: Az adatátkapcsolati rétegnek minden frame-et helyesen és helyes sorrendben kell átvinni A küldő hatékonyság növeléséhez pipeline technikát használva küldi a csomagokat Csomagvesztés esetén: Ha a fogadó-ablakméret =, a következő csomagokat mind eldobja a fogadó 25 26 Go-back-N Szelektív ismétlés (Selective Repeat) Ha a fogadó-ablakméret =, akkor a fogadó nem tudja feldolgozni azokat a frame-eket, melyek egy elveszett (vagy hibás) frame-et követnek Nem tudja azokat nyugtázni, mert csak egy nyugtát küld az utolsó helyesen fogadott csomagról A küldőnél lejár a várakozási idő a nyugtára: Timeout Minden frame-et, amit az utolsó nyugtázott frame után küldött, újra kell küldeni Go-back-N Frames! Kritika Az átviteli médium pazarlása A fogadónál viszont nagyon egyszerű a feldolgozás Tegyük fel, hogy a fogadó tudja pufferelni a csomagokat, amelyek a közbenső időben érkeztek azaz a fogadó-ablakméret > Példa A fogadó értesíti a küldőt a hiányzó csomagról negatív nyugtával A küldő elküldi a hiányzó frame-eket szelektíven (selective repeat) Amikor a hiányzó frame megérkezik, minden frame-et (a helyes sorrendben) átad a fogadó a hálózati rétegnek 27 28

Duplex-operáció és hátizsák technika (piggybacking) Simplex Információ küldés egy irányba Duplex Információ küldés mindkét irányba Eddig: Simplex interfész a magasabb réteghez (hálózati réteghez) (Fél-)Duplex interfész az alacsonyabb réteghez (fizikai réteghez) Mi kell akkor, ha az interfész a magasabb réteghez duplex Nyugta és adatcsomagok elkülönítve mindkét irányban Vagy: hátizsák technika (általánosan használt) A nyugtát az ellentétes irányba küldött adat-frame fejlécébe tesszük (piggybacking) 29