Εύρος του RN που λαμβάνεται από τον Β SN B ≥ RN B - n SN B ≤ RN B + n - 1 RN B - n ≤ SN B ≤ RN B + n - 1
Modulus m = 2n για την επιλεκτική επαναληπτική ARQ n = 4 SN B RN B 4 m = n + 1 = 5 (οπισθοχώρηση κατά 4) SN B mod RN B mod5 4 m = 4 SN B mod RN B mod 4 0 m = 2n = 8 (επιλεκτική επαναληπτική ARQ) SN B mod RN B mod 8 4 αγνοούνται αποδεκτό αποθηκεύονται
Επιλεκτική επαναληπτική ARQ με n = 2β + 2 και μνήμη δέκτη για β + 1 πακέτα Έχουμε μείωση της μεταβλητότητας της καθυστέρησης.
Data Link Control (DLC) Θέματα: Ανίχνευση εσφαλμένων bits, ανάκαμψη από σφάλματα είτε ζητώντας την επαναμετάδοση του πλαισίου, είτε με απευθείας διόρθωση (error detection and retransmission ή error correction). Πλαισίωση (framing): καθορισμός (DLC λήπτη) της αρχής και του τέλους κάθε πλαισίου.
Ανίχνευση σφαλμάτων σε μια ακολουθία bits Απλούστερη: πρόσθεση bit ελέγχου ισοτιμίας (parity check). (parity bit=άθροισμα των bits mod 2) s k-1 … s 1 s 0 c Ανιχνεύει κάθε περιττό αριθμό λαθών. Βελτίωση: πρόσθεση περισσότερων bits ελέγχου ισοτιμίας. π.χ. οριζόντιος και κάθετος έλεγχος ισοτιμίας Ανιχνεύει κάθε 3-άδα λαθών και κάθε περιττό αριθμό λαθών. οριζόντιος έλεγχος κάθετος έλεγχος συμβολοσειράισοτιμία
Αποδοτικότητα ενός κώδικα ελέγχου 1.Ελάχιστη απόσταση: ο ελάχιστος αριθμός σφαλμάτων που μπορούν να περάσουν χωρίς να ανιχνευθούν. Ένα bit ελέγχου ισοτιμίας: d min =2. Οριζόντιος & κάθετος έλεγχος ισοτιμίας: d min = 4. 2.Δυνατότητα ανίχνευσης καταιγιστικών λαθών (burst detecting capability): το μέγιστο μήκος καταιγιστικών λαθών που μπορεί πάντα να ανιχνευθεί. Το μήκος ενός καταιγισμού λαθών είναι ο αριθμός των bits από το πρώτο μέχρι το τελευταίο λάθος. Ένα bit ελέγχου ισοτιμίας: 1. Οριζόντιος & κάθετος έλεγχος ισοτιμίας: μήκος γραμμής Πιθανότητα να θεωρηθεί χωρίς λάθη μια τυχαία ακολουθία από bits. Γενικά:
Κυκλικός Πλεονάζων Κώδικας Ελέγχου (CRC) Αναπαριστούμε τα bit δεδομένων και τα bit ελέγχου με πολυώνυμα: S(x) ∙ x L +C(x)= s K-1 x K+L-1 + s K-2 x K+L-2 + … + s 1 x L+1 + s 0 x L +c L-1 x L-1 + c L-2 x L-2 + … + c 1 x + c 0 π.χ. bit δεδομένων = S(x) = x ∙ x 4 + x 3 + x 2 + x + 1(K=6) Ολόκληρο πακέτο: S(x) ∙ x L + C(x) π.χ (Κ=6)(L=2) συμβολοσειράισοτιμία
Κυκλικός Πλεονάζων Κώδικας Ελέγχου (Cyclic Redundancy Check Code – CRC) S(x) = s K-1 x K-1 + s K-2 x K-2 + … + s 1 x + s 0 C(x) είναι το υπόλοιπο της διαίρεσης του S(x) ∙ x L με ένα γεννητικό πολυώνυμο g(x). C(x) = Remainder Παράδειγμα: string = , χρήση L = 2 bit ελέγχου και g(x) = x 2 + x x x 5 + x 4 + x 3 + x 2 x 2 + x x 7 + x 6 x 5 + x 4 + x x 6 + x 5 + x 4 + x 3 + x 2 x 6 + x 5 x 4 + x 3 + x 2 x 4 + x 3 x 2 x 2 + x Tελικά: x C(x) c 1 = 1, c 0 = 0 CRC
Πολυώνυμο που αντιστοιχεί σε ολόκληρο πακέτο: S(x) ∙ xL + C(x) = x ∙ x 6 + x 5 + x 4 + x 3 + x 2 + x + 0 K=6 L=2 Διαιρείται με το g(x). Γενικά S(x) ∙ x L = Q(x) ∙ g(x) + C(x) S(x) ∙ x L – C(x) = S(x) ∙ x L + C(x) = Q(x) ∙ g(x) Το πολυώνυμο που αντιστοιχεί στο πλαίσιο που στέλνει ο (πομπός) DLC διαιρείται με το γεννητικό πολυώνυμο g(x). Όταν ο λαμβάνων DLC λαμβάνει ένα πλαίσιο ελέγχει αν το πολυώνυμο που του αντιστοιχεί διαιρείται με το g(x). Aν το υπόλοιπο R(x) = 0, τότε υποθέτει ότι το πλαίσιο δεν περιέχει λάθη. Αν το υπόλοιπο R(x) ≠ 0, τότε ανιχνεύει λάθη.
SC: M: σφάλμα: Ε(x) = x e K+L-1 … e 2 e 1 e 0 (πολυώνυμο σφάλματος) Ε(x) = e K+L-1 x K+L-1 + … + e 1 x + e 0 στέλνεται: S(x) ∙ x L + C(x) διαιρείται με το g(x) λαμβάνεται: S(x) ∙ x L + C(x) + E(x) = M(x) O δέκτης υπολογίζει: R(x) =Remainder = Remainder Έχουμε λανθασμένη αποδοχή όταν το g(x) διαιρεί το E(x) και είναι E(x) ≠ 0. π.χ.Αν g(x) = x 2 + x και Ε(x) = x 2 + x, x 3 + x 2 Λανθασμένη αποδοχή (false acceptance) συμβολοσειρά
Iδιότητες των κώδικων CRC Στην πραγματικότητα η επιλογή του g(x) γίνεται ως εξής: g(x) = (x L-1 + … + 1) ∙ (x+1) = x L + g L-1 x L-1 + … + g 1 x + 1 Ελάχιστη απόσταση = 4. Δυνατότητα ανίχνευσης καταιγιστικών λαθών = L. Πιθανότητα αποδοχής τυχαίων συμβολοσειρών: 2 -L. «πρωτογενές (primitive) πολυώνυμο»
Eλάχιστη απόσταση = 4 Μπορεί να ανιχνευθεί κάθε περιττός αριθμός λαθών: Αν το Ε(x) διαιρείται από το g(x), τότε E(x) = q(x) ∙ g(x) π.χ. E(x) = x 5 + x 3 + x 2,E(1) = 1 Αλλά g(1) = 0 αφού για x=1 είναι x + 1 = 0, οπότε E(x) ≠ q(x) ∙ g(x) (περιττός αριθμός λαθών) Ένα πρωτογενές πολυώνυμο δεν διαιρεί το πολυώνυμο x n + 1 αν n < 2 L – 1 2 λάθη:Ε(x) = x i + x j = x j ( x i-j + 1) i - j < K + L ( συνήθως < 2 L ) K+L: μήκος πλαισίου
Δυνατότητα ανίχνευσης μαζικών λαθών = L E(x) = x m+b-1 + a 2 x m+b-2 + … + a b-1 x m+1 + x m = x m (x b-1 + a 2 x b-2 + … + a b-1 x + 1) δεν είναι διαιρέσιμο από το x L + g L-1 x L-1 + … + g 1 x + 1, αν b-1 < L. Μπορούν να ανιχνευθούν πάντα καταιγιστικά λάθη μήκους b ≤ L.