Σφάλματα Σφάλμα στη μετάδοση δεδομένων ονομάζουμε την αθέλητη αλλαγή της τιμής κάποιου bit, την εξαφάνιση ή και την πρόσθεση bit στο block μετάδοσης. μεμονωμένα / ανεξάρτητα, εκείνα τα οποία, οπουδήποτε και αν βρίσκονται μέσα στην πληροφορία δεν την επηρεάζουν υπό μορφή δέσμης. σφάλματα (errors) πού εντοπίζονται σε μια μετάδοση δεδομένων είναι συνήθως συγκεντρωμένα σε δέσμη Το ποσοστό σφαλμάτων (errors) σε μία μετάδοση δεδομένων, είναι η αναλογία των λανθασμένων bits που ελήφθησαν ως προς το συνολικό αριθμό των bits. Σε μια τηλεφωνική σύνδεση, είναι συνήθως της τάξεως των 10-6.
Ρυθμοί εμφάνισης σφαλμάτων Ο ρυθμός εμφάνισης σφαλμάτων σε ένα δίκτυο ή σε μια τηλεπικοινωνιακή σύνδεση χαρακτηρίζει την ποιότητα του δικτύου ή της σύνδεσης, ποικίλει δε ανάλογα με το είδος του μέσου μεταφοράς. Άλλη συμπεριφορά έχει το ομοαξονικό καλώδιο, άλλη η μικροκυματική ζεύξη και άλλη τα δισύρματα χάλκινα καλώδια. Ο ρυθμός αυτός ποικίλει ανάλογα και με την ταχύτητα μετάδοσης. Για δεδομένη γραμμή, ο ρυθμός εμφάνισης σφαλμάτων αυξάνει όσο υψηλότερος είναι ο ρυθμός μετάδοσης. Το ρυθμό εμφάνισης σφαλμάτων συναντάμε και ως bit error rate (BER). Στη σύγχρονη μετάδοση συναντάμε και το BLER (Block error rate), που εκφράζει τον ρυθμό εσφαλμένων block.
Αναγνώριση Σφαλμάτων Για να επιτύχουμε την αναγνώριση των σφαλμάτων, χρησιμοποιούμε πρόσθετα bit από αυτά της καθαρής πληροφορίας. Όσο περισσότερα είναι αυτά τα πρόσθετα bit, τόσο ορθότερα και ακριβέστερα γίνεται από το δέκτη η αναγνώριση των σφαλμάτων. Στόχος της αναγνώρισης σφαλμάτων δεν είναι ο περιορισμός ή η εξάλειψη τους, αλλά ο περιορισμός εκείνων που περνούν απαρατήρητα. Οι πιο βασικές τεχνικές αναγνώρισης σφαλμάτων είναι: –Ισοτιμίας (parity). –Διδιάστατες τεχνικές ελέγχου ισοτιμίας. –Κυκλικοί κώδικες. –Κώδικες σταθερού λόγου.
Ισοτιμία (Parity) Με την τεχνική αυτή φροντίζουμε το πλήθος των 1 σε κάθε χαρακτήρα να είναι ζυγός αριθμός οπότε λέμε ότι έχουμε άρτια ισοτιμία (even parity). Αντίστοιχα όταν θέλουμε το πλήθος των 1 να είναι μονός αριθμός έχουμε περιττή ισοτιμία (odd parity). Αυτό επιτυγχάνεται με την προσθήκη ενός διορθωτικού bit στο τέλος του χαρακτήρα ώστε να εκπληρώνεται η προσυμφωνημένη συνθήκη ισοτιμίας. To bit ισοτιμίας προστίθεται από τον πομπό. Ο δέκτης ελέγχει αν όντως η περιττή ή η άρτια ισοτιμία που έχει συμφωνηθεί τηρείται σε κάθε χαρακτήρα. Αν κάποιο bit για κάποιο λόγο αλλάξει και γίνει από 0 σε 1 ή από 1 σε 0 τότε η ισοτιμία θα χαλάσει. Αν όμως αλλάξουν ταυτόχρονα δυο bit η ισοτιμία δεν αλλάζει. Πλεονέκτημα της τεχνικής αυτής είναι η απλότητα του αλγόριθμου για τη δημιουργία και τον έλεγχο της ισοτιμίας, που σημαίνει απλά και φθηνά αντίστοιχα ηλεκτρονικά κυκλώματα
Διδιάστατες τεχνικές ελέγχου ισοτιμίας Κάθε ομάδα ή block αποτελούμενο από κ χαρακτήρες ελέγχεται επιπλέον και ως block. Τα πρώτα bit των κ χαρακτήρων δημιουργούν με την μέθοδο του bit ισοτιμίας ένα επιπλέον bit το Ρ1. Τα δεύτερα bit των κ χαρακτήρων δημιουργούν το Ρ2 Κάθε ν-οστό bit των κ χαρακτήρων το Ρν. Τα Ρ1, Ρ2, Ρ3,.....Ρν συνιστούν έναν επιπλέον χαρακτήρα που ονομάζεται Longitundinal Redundancy Check (LRC) ή Block Check Character (BCC) και ο οποίος προστίθεται στο τέλος του προς μετάδοση block. Ο δέκτης ξαναδημιουργεί τον χαρακτήρα αυτόν και τον ελέγχει με αυτόν που έλαβε. Η ομάδα των bit ισοτιμίας Pbj ονομάζεται Vertical Redundancy Check (VRC).
Κυκλικοί κώδικες Οι διδιάστατοι κώδικες είναι χρήσιμοι κυρίως για συστήματα μετάδοσης χαρακτήρων. Στην περίπτωση όμως της μετάδοσης block από bit έχουν αναπτυχθεί τεχνικές διαφορετικές, οι οποίες δεν χρειάζονται καθόλου το bit ισοτιμίας. Οι κυκλικοί κώδικες (Cyclic Redundancy Check CRC) χρησιμοποιούνται κυρίως στα bit oriented πρωτόκολλα (HDLC, SDLC, X25, Frame Relay κλπ.). Η μέθοδος των κυκλικών κωδίκων : Τα δεδομένα ενός block διαιρούνται από μια προκαθορισμένη ακολουθία bits (που ονομάζεται Πολυώνυμο Γεννήτορας), η οποία είναι γνωστή τόσο στον αποστολέα όσο και στον παραλήπτη. Από τη διαίρεση αυτή προκύπτει ένα πηλίκο και ένα υπόλοιπο. Το πηλίκο αγνοείται και το υπόλοιπο της διαίρεσης προσαρτάται στο τέλος του block ως συμπληρωματική πληροφορία ελέγχου για τον εντοπισμό σφαλμάτων. Ο παραλήπτης, όταν λάβει το block, διαιρεί την εισερχόμενη ακολουθία (δεδομένα και πληροφορία εντοπισμού σφαλμάτων) με τη γνωστή ακολουθία των bits και προκύπτει εκ νέου ένα υπόλοιπο. Εάν αυτό το υπόλοιπο είναι μη μηδενικό, τότε ο παραλήπτης αντιλαμβάνεται την ύπαρξη σφάλματος κατά τη μεταφορά.
Αλγόριθμος κυκλικού κώδικα Η κάθε ακολουθία n bits θεωρείται ως ένα πολυώνυμο n – 1 βαθμού. Ο συντελεστής του κάθε όρου του πολυωνύμου είναι ίσος με την τιμή του αντίστοιχου bit της ακολουθίας. Για παράδειγμα, η ακολουθία αντιστοιχεί στο πολυώνυμο. Μ(x)= x9+ x6+ x5+ x4+ x2+1. Τόσο στον αποστολέα όσο και στον παραλήπτη είναι γνωστή εκ των προτέρων το πολυώνυμο γεννήτορας που συμβολίζεται με G(x).
Αποστολέας 1.Πολλαπλασίασε το M(x) με το x κ, όπου k είναι ο βαθμός του προκαθορισμένου πολυωνύμου G(x). Αυτό ουσιαστικά αντιστοιχεί σε αύξηση του μήκους των δεδομένων κατά k bits, με αριστερή ολίσθηση κατά k των αρχικών bits και ταυτόχρονη πλήρωση των κενών θέσεων με μηδενικά. 2.Διαίρεσε το M(x)*x κ με το G(x). Από αυτή τη διαίρεση προκύπτουν το πηλίκο Q(x) και το υπόλοιπο R(x). 3.Σύνθεσε το T(x), το οποίο αποστέλλεται στο δίκτυο προς μεταφορά, όπου: T(x) = M(x)∙* x κ + R(x).
Παραλήπτης κόμβος Διαίρεσε το ληφθέν μήνυμα Τ΄(x) με το G(x). Από αυτή τη διαίρεση Προκύπτουν το πηλίκο Q΄(x) και το υπόλοιπο R΄(x). Εάν R΄(x)=0, τότε δεν υπάρχει σφάλμα μεταφοράς.
ΑΣΚΗΣΗ Έστω ότι το πολυώνυμο γεννήτορας αντιστοιχεί στην ακολουθία , δηλαδή είναι βαθμού k=5. Τότε η εφαρμογή του αλγορίθμου κυκλικού κώδικα επί των δεδομένων θα μας δώσει τα ακόλουθα βήματα: 1.M(x)∙* x κ → Διαίρεση του M(x)∙* x κ με το G(x) 3.Το υπόλοιπο της διαίρεσης είναι το T(x) →
5.Εάν δεν υπάρχει σφάλμα μεταφοράς, τότε το υπόλοιπο της διαίρεσης της εισερχόμενης block με το πολυώνυμο γεννήτορα θα ισούται με 0. Επίσης, έστω ότι το εισερχόμενο block αλλοιώνεται στο δεύτερό του bit και έτσι το λαμβανόμενο block είναι το Τότε το υπόλοιπο της διαίρεσης θα ισούται με 1101, γεγονός που υποδηλώνει την ύπαρξη σφάλματος μεταφοράς.
Κυκλικοί κώδικες Αν θεωρήσουμε ότι στην μεταφερόμενη ακολουθία bits Τ΄(x) προστίθεται ο θόρυβος E(x), τότε ο παραλήπτης θα λάβει την ακολουθία Τ΄(x) =T(x) + E(x). Κανείς δεν μπορεί να αποκλείσει την περίπτωση η μορφή του θορύβου να είναι τέτοια έτσι ώστε η λαμβανόμενη ακολουθία να διαιρείται ακριβώς από το πολυώνυμο γεννήτορας. Σε αυτή την περίπτωση όμως ο παραλήπτης θα βγάλει το (λανθασμένο) συμπέρασμα ότι στη ληφθείσα ακολουθία δεν υπάρχουν σφάλματα μεταφοράς.
Κυκλικοί κώδικες Η χρήση των κυκλικών κωδίκων παρότι βελτιώνει σε εξαιρετικό βαθμό τη δυνατότητα ανίχνευσης σφαλμάτων μετάδοσης, δεν καλύπτει το σύνολο των περιπτώσεων. Σε γενικές γραμμές, μπορεί να αποδειχθεί ότι οι κυκλικοί κώδικες μήκους k bits έχουν τις ακόλουθες δυνατότητες εντοπισμού σφαλμάτων μεταφοράς: Όλα τα σφάλματα μονού bit, αρκεί οι όροι x k και x 0 να έχουν μη μηδενικούς συντελεστές. Όλα τα σφάλματα διπλού bit, αρκεί το πολυώνυμο να περιέχει τρεις τουλάχιστον όρους. Όλα τα σφάλματα περιττού πλήθους, αρκεί το πολυώνυμο να περιέχει τον όρο (x + 1). Όλα τα σφάλματα σε δέσμη bits με μήκος μικρότερο από k bits, όπου ως δέσμη ονομάζουμε ένα πλήθος από διαδοχικά bits. Επίσης, εντοπίζονται τα περισσότερα σφάλματα μεταφοράς σε δέσμες με μήκος μεγαλύτερο από k bits.
Κυκλικοί κώδικες Αν συγκρίνουμε τους κυκλικούς κώδικες με τους ελέγχους ισοτιμίας, παρατηρούμε ότι τα πρόσθετα bit σε ένα μήνυμα είναι πολύ λιγότερα με τους κυκλικούς κώδικες παρά με τον έλεγχο ισοτιμίας (parity), ιδίως όταν το μέγεθος του block είναι μεγάλο. Είναι σαφές ότι όσο περισσότερα είναι τα πρόσθετα bit, τόσο μικρότερος είναι ο ρυθμός μεταφοράς. Η πιθανότητα να περάσουν απαρατήρητα λάθη χρησιμοποιώντας τεχνικές κυκλικών κωδίκων είναι της τάξης των ή άλλως 1 στο δισεκατομμύριο που θεωρείται πρακτικά πολύ ικανοποιητική.
Κώδικες σταθερού λόγου Οι κώδικες σταθερού λόγου γνωστοί και ως Μ- από-Ν κώδικες, οφείλουν το όνομα τους στο γεγονός ότι κάθε σύμβολο περιέχει σταθερό αριθμό από 1. Για παράδειγμα ο κώδικας 2-από-8 που σημαίνει ότι κάθε σύμβολο έχει 8 bit εκ των οποίων 2 είναι 1. Το πλήθος των διαφορετικών συνδυασμών των χαρακτήρων με 8 bit, όπου τα 2 από αυτά έχουν τιμή 1 είναι 8! / (2! * 6!) = 28. Αυτό που σημαίνει ότι με αυτόν τον τρόπο μπορούμε να έχουμε 28 διαφορετικά σύμβολα, ενώ με τα 8 bit ελεύθερα και χωρίς τον περιορισμό των 2 bit έχουμε 28 = 256 διαφορετικά σύμβολα. Με αυτούς τους κώδικες έχουμε μεγάλο ποσοστό πλεοναζόντων bit, γι αυτό και η χρήση τους είναι περιορισμένη.
Αντιμετώπιση σφαλμάτων Υποκατάσταση συμβόλου Η μέθοδος αυτή χρησιμοποιεί απλό έλεγχο ισοτιμίας και όταν ο δέκτης ανακαλύψει χαρακτήρα λανθασμένο τοποθετεί στη θέση του ένα "?". Αν η έλλειψη του συγκεκριμένου χαρακτήρα δίνει τη δυνατότητα στον παραλήπτη να κατανοήσει το μήνυμα δεν γίνεται καμία ενέργεια αντιμετώπισης του σφάλματος, αν όμως, δημιουργεί πρόβλημα στην κατανόηση του ληφθέντος μηνύματος, ο παραλήπτης έχει την ευχέρεια να ζητήσει την επανεκπομπή του.
Μέθοδοι επανεκπομπής (Backward error correction) Κατά τη μέθοδο επανεκπομπής ο αποστολέας του μηνύματος ειδοποιείται ότι ο δέκτης παρέλαβε λανθασμένο μήνυμα και πρέπει να του αποσταλεί ξανά ένα σωστό. Για το λόγο ο δέκτης είναι υποχρεωμένος να ενημερώνει τον πομπό για τη σωστή λήψη των μηνυμάτων, ο δε αποστολέας είναι υποχρεωμένος να έχει προσωρινή μνήμη όπου αποθηκεύει προσωρινά τα ανεπιβεβαίωτα μηνύματα, ώστε να έχει τη δυνατότητα επανεκπομπής τους. Οι τεχνικές αυτές ονομάζονται ARQ (Automatic Repeal Request -αυτόματη επανεκπομπή κατόπιν απαίτησης)
Τεχνική άμεσης αναγνώρισης (Stop and wait ARQ) Ο απλούστερος τύπος ARQ τεχνικής, κατά την οποία ο αποστολέας στέλνει ένα block με data και περιμένει να πάρει από τον δεκτή ένα μήνυμα επιβεβαίωσης (ACK) ή εσφαλμένης (ΝΑΚ) λήψης. Μόλις ο αποστολέας λάβει μήνυμα επιβεβαίωσης που σημαίνει ότι ο δέκτης δεν διέγνωσε κανένα σφάλμα, στέλνει το επόμενο block. Αν όμως λάβει εσφαλμένης λήψης που σημαίνει ότι ο δέκτης διέγνωσε σφάλμα, ο αποστολέας είναι υποχρεωμένος να ξαναστείλει το block αυτό και να μην προχωρήσει στο επόμενο. Με την τεχνική αυτή χάνεται αρκετός χρόνος προκειμένου να εξασφαλισθεί η επιβεβαίωση των μηνυμάτων.
Τεχνική έμμεσης αναγνώρισης ARQ Mε την τεχνική αυτή τόσο τα data από αποστολέα σε δέκτη όσο και τα μηνύματα επιβεβαίωσης ή εσφαλμένης λήψης από δέκτη σε αποστολέα, ταξιδεύουν ταυτόχρονα στη γραμμή και συνεχώς. Δηλαδή ο αποστολέας έχει τη δυνατότητα να στέλνει νέα block δεδομένων, πριν ακόμη πάρει μήνυμα επιβεβαίωσης ή εσφαλμένης λήψης (ACK ή ΝΑΚ) από τον δέκτη για τα μηνύματα που έστειλε προηγουμένως. Όσο ο αποστολέας λαμβάνει μηνύματα θετικής παραλαβής από τον δέκτη στέλνει συνεχώς block. Με αυτό το τρόπο δεν υπάρχει κενός χρόνος μεταξύ μηνυμάτων. Υπάρχουν δύο παραλλαγές της συνεχούς ARQ.
Μαζική επανεκπομπή (Go-back-N) Στην τεχνική αυτή μόλις ο αποστολέας λάβει μήνυμα εσφαλμένης λήψης ΝΑΚ, επανεκπέμπει το εσφαλμένο και όλα τα επόμενα block, που έστειλε μετά από αυτό. Στην περίπτωση αυτή η προσωρινή μνήμη είναι αρκετά μεγάλη και προσδιορίζεται από το πλήθος Ν των block που χρειάζεται να αποθηκευτούν και από το μέγεθος τους. Στις μεγάλες αποστάσεις μεταξύ πομπού και δέκτη όπου ο χρόνος μεταφοράς της πληροφορίας είναι μεγάλος, όπως συμβαίνει στις δορυφορικές συνδέσεις, ο πομπός χρειάζεται να αποθηκεύει μεγαλύτερο αριθμό από block και να διαθέτει μεγαλύτερη μνήμη.
Επιλεκτική επανεκπομπή (selective retransmission) Με την τεχνική αυτήν επανεκπέμπεται μόνο το block που έφθασε στον δέκτη εσφαλμένο. Ο αριθμός των block που ξαναστέλνονται είναι σαφώς μικρότερος απ‘ ότι με την προηγούμενη τεχνική. Όμως απαιτούνται σύνθετα κυκλώματα, ενώ παράλληλα στον δέκτη απαιτούνται μεγάλοι buffer διότι ο δέκτης πρέπει να αποθηκεύει τα block που λαμβάνει, ώστε όταν ξαναπάρει ένα block που την πρώτη φορά ήρθε λάθος, να το τοποθετήσει στη σωστή του σειρά και μετά να τα παραδώσει στη μονάδα επεξεργασίας για τα περαιτέρω. Η πολυπλοκότητα της επεξεργασίας και οι απαιτήσεις μνήμης του δέκτη είναι τα μειονεκτήματα της επιλεκτικής επανεκπομπής.
Άμεση vs έμμεσης Η απόδοση της τεχνικής έμμεσης αναγνώρισης μεγαλώνει σε σχέση με την απόδοση της τεχνικής άμεσης αναγνώρισης όσο τα λάθη σε μια γραμμή είναι λίγα. Η απόδοση αυξάνει επίσης όσο ο χρόνος μεταφοράς των block μεγαλώνει. Στις δορυφορικές συνδέσεις για παράδειγμα, είναι πολύ καλύτερες οι τεχνικές έμμεσης αναγνώρισης παρά η τεχνική άμεσης αναγνώρισης, αφού ένα μήνυμα κάνει αρκετό χρόνο για να διανύσει τη γραμμή και έτσι θα χάνεται αρκετός χρόνος στην αναμονή.
Αυτόματη διόρθωση (Forward error correction - FEC) Για τις υπηρεσίες πραγματικού χρόνου, η επιθυμητή μέθοδος αντιμετώπισης των σφαλμάτων μεταφοράς είναι η αυτόματη διόρθωση των σφαλμάτων κατά την άφιξη των πλαισίων στον παραλήπτη κόμβο. Επίσης, αυτό ισχύει και για τις υπηρεσίες που αναπτύσσονται πάνω από κανάλια επικοινωνίας μίας κατεύθυνσης, αλλά και για τις υπηρεσίες με πολλαπλούς παραλήπτες. Αυτό επιτυγχάνεται με τους κώδικες διόρθωσης σφαλμάτων. Οι κώδικες διόρθωσης σφαλμάτων (Error Correction Codes, ECC) διαιρούνται συχνά σε δύο μεγάλες κατηγορίες: στους κώδικες δέσμης (block codes) και στους συνελικτικούς κώδικες (convolutional codes). Οι πιο συχνά χρησιμοποιούμενοι είναι οι κώδικες BCH (Bose – Chauduri – Hocquenghem) και ειδικότερα οι κώδικες reed – Solomon, οι οποίοι συναντώνται πλέον στις συσκευές ανάγνωσης CD, στις μονάδες αποθήκευσης δεδομένων Η/Υ, στα κινητά τηλέφωνα, στην ψηφιακή τηλεόραση κ.ά. Οι κώδικες BCH είναι μια υποκατηγορία των γραμμικών κωδικών δέσμης.
ΚΩΔΙΚΕΣ ΔΙΟΡΘΩΣΗΣ ΣΦΑΛΜΑΤΩΝ ΚΩΔΙΚΕΣ Συντελικτικοί ΔΕΣΜΗΣ Κώδικες Μη γραμμικοί Γραμμικοί Μη κυκλικοί Κυκλικοί Golay BCH Reed – Solomon Binary BCH
ΓΡΑΜΜΙΚΟΙ ΚΩΔΙΚΕΣ Στην αυτόματη διόρθωση, ο δέκτης όχι μόνο αναγνωρίζει αλλά και διορθώνει τα τυχόν σφάλματα που συμβαίνουν κατά τη μετάδοση. Η βασική ιδέα είναι η χρησιμοποίηση πλεοναζόντων bit με τα οποία επιτυγχάνεται η διόρθωση. Οι διορθωτικοί κώδικες είναι πολύ χρήσιμοι εκεί που έχουμε μετάδοση simplex (μονής κατεύθυνσης) και ο δέκτης δεν έχει την πολυτέλεια να στείλει μήνυμα εσφαλμένης λήψης ΝΑΚ. Είναι χρήσιμοι επίσης όταν τα μηνύματα εκπέμπονται σε πολλούς ακροατές ταυτόχρονα (broadcasting).
Κώδικας Hamming Ο Hamming προσδιόρισε ότι για διόρθωση λάθους ενός bit πρέπει να προστεθούν σε ένα μήνυμα των m bit, n πρόσθετα bit. Ο αριθμός n των πρόσθετων bit και το πλήθος των m bit του μηνύματος πρέπει να ικανοποιούν τη σχέση: Αν το μέγεθος του block m + n (bit μηνύματος και πρόσθετα bit ελέγχου) είναι 15, τότε με 4 bit ελέγχου μπορούμε να προσδιορίζουμε την θέση ενός εσφαλμένου bit καθώς ισχύει η σχέση (24 = ). Όταν εντοπισθεί η θέση ενός bit που θεωρείται εσφαλμένο η διόρθωση του είναι απλή, αφού απλά αλλάζει το δυαδικό ψηφίο. 2 n ≥ m + n + 1
ΑΣΚΗΣΗ Το προς μετάδοση block είναι εφαρμόστε τον κώδικα Hamming m = =2< =4< =8< =16>9+4+1
Τα επιπλέον bitα είναι 4 Ορίζουμε με αυθαίρετο τρόπο 4 θέσεις Έστω 1Η0Η01Η101Η00 Θέσεις επιπλέον bit 3, 7, 10, 12 Παίρνουμε κάθε bit που είναι 1 δηλ.4,6,8,13 και εκφράζουμε με 4bit την θέση που βρίσκονται και εφαρμόζουμε XOR
Θέση XOR με θέση Αποτέλεσμα 0010 XOR με θέση Αποτέλεσμα 1010 XOR με θέση Αποτέλεσμα 0111 Άρα bit3=1, bit7=1, bit10=1, bit12=0 Το προς μετάδοση μήνυμα
Ο δέκτης λαμβάνει Εφαρμόζουμε XOR μεταξύ του κώδικα Hamming και των bit που είναι 1 και δεν ανήκουν στον κώδικα Κώδικας Hamming 0111 XOR Θέση Αποτέλεσμα 0011 XOR με θέση Αποτέλεσμα 0101 XOR με θέση Αποτέλεσμα 1101 XOR με θέση Αποτέλεσμα 0100 XOR με θέση Αποτέλεσμα 1001=9