19
Επαλήθευση Πρωτοκόλλων

Επαλήθευση Πρωτοκόλλων

Embed Size (px)

DESCRIPTION

Επαλήθευση Πρωτοκόλλων. Περίληψη. Προδιαγραφή και επαλήθευση Πρωτοκόλλων Μηχανές Πεπερασμένων Καταστάσεων ( Finite State Machines ) Petri-Nets. - PowerPoint PPT Presentation

Citation preview

Page 1: Επαλήθευση Πρωτοκόλλων

Επαλήθευση Πρωτοκόλλων

Page 2: Επαλήθευση Πρωτοκόλλων

Περίληψη

Προδιαγραφή και επαλήθευση Πρωτοκόλλων Μηχανές Πεπερασμένων Καταστάσεων (Finite State

Machines) Petri-Nets

Page 3: Επαλήθευση Πρωτοκόλλων

Μηχανές Πεπερασμένων Καταστάσεων (Finite State Machines)

Περιγραφή πρωτοκόλλου χρησιμοποιώντας γράφους (graphs) όπου οι κόμβοι (nodes) αντιπροσωπεύσου την κατάσταση (state) του πρωτοκόλλου και τα προσανατολισμένα τόξα (directed arcs) τις μεταβάσεις (transitions) μεταξύ των καταστάσεων.

Χρησιμοποιούνται για την ανάλυση και επαλήθευση πρωτοκόλλων. Ανάλυση προσεγγισιμότητας (reachability analysis) Προβλήματα μη πλήρους προδιαγραφών (το πρωτόκολλο δεν

προσδιορίζει πλήρως τι θα γίνει αν κάποιο πλαίσιο παραληφθεί σε κάποια κατάσταση).

Ανίχνευση αδιεξόδων (deadlocks)

Page 4: Επαλήθευση Πρωτοκόλλων

Τυπική Περιγραφή Μηχανών Πεπερασμένων Καταστάσεων

Τετράδα (S,M,I,T), όπου S: Το σύνολο των καταστάσεων όπου μπορεί να

βρίσκεται κάποια διαδικασία (state space)M: Το σύνολο των πλαισίων που ανταλλάσσονται

μεταξύ των στρωμάτων (message set) I: Το σύνολο των αρχικών καταστάσεων διαδικασιών

(initial states) T: Το σύνολο το μεταβάσεων μεταξύ των

καταστάσεων (transition set)

Page 5: Επαλήθευση Πρωτοκόλλων

Παράδειγμα: Πρωτόκολλο Παύσης και Αναμονής 0

ΠαραλήπτηςFrm 0 received

Pass frm to higher layerSend Ack 0

Frm 1 received

Pass frm to higher layerSend Ack 1

Frm 0 ReceivedFrm 1

Received

Wait frm 1Wait frm 0

Αρχική Κατάσταση

Μεταβάσεις

Καταστάσεις

Αναμενόμενα πλαίσια: frm 0, frm 1, Ack 0, Ack 1

Page 6: Επαλήθευση Πρωτοκόλλων

Ack 0 or 1 Received

Ack 0 or 1 Received

Ack 1 ReceivedAck 0

Received

Παράδειγμα: Πρωτόκολλο Παύσης και Αναμονής 0

Αποστολέας

Ack 1 Received

frm 0 transmitted

Ack 0 Received

frm 1 transmitted

Timeout

Timeout

Send frm 0

Send frm 1

Wait Ack 1 Wait Ack 0

Start Timer

Start Timer

Page 7: Επαλήθευση Πρωτοκόλλων

Αδιέξοδο

Το προηγούμενο πρωτόκολλο παρουσιάζει ένα σοβαρό πρόβλημα. Ο Αποστολέας στέλνει το frm 0. Ο δέκτης παραλαμβάνει και επαληθεύει το frm 0 και

αναμένει το frm 1. Η επαλήθευση χάνεται. Αφού το χρονόμετρο του αποστολέα λήξει,

ξαναστέλνει το frm 0. Ο δέκτης, δεν αναμένει το frm 0 και το αγνοεί! Αφού το χρονόμετρο του αποστολέα λήξει,

ξαναστέλνει το frm 0. Ο δέκτης, δεν αναμένει το frm 0 και το αγνοεί! …

Page 8: Επαλήθευση Πρωτοκόλλων

Πρωτόκολλο Παύσης και Αναμονής 1

Αποστολέας

Ack 1 Received

frm 0 transmitted

Ack 0 Receivedfrm 1

transmitted

Timeout or

Ack 0 Received

Timeout or

Ack 1 Received

Send frm 0

Send frm 1

Wait Ack 1 Wait Ack 0

Page 9: Επαλήθευση Πρωτοκόλλων

Πρωτόκολλο Παύσης και Αναμονής 1

Παραλήπτηςfrm 0 received

Pass frm to higher layerSend Ack 0

frm 1 received

Pass frm to higher layerSend Ack 1

frm 0 Receivedfrm 1

Received

Wait frm 1Wait frm 0

Send Ack 1Send Ack 0

Page 10: Επαλήθευση Πρωτοκόλλων

Παράδειγμα: Πρωτόκολλο Παύσης και Αναμονής συμπεριλαμβανομένου Καναλιού

Σύνολο Καταστάσεων: X=(S,R,C) S {0,1}. Ο αποστολέας προσπαθεί να μεταδώσει

το πακέτο 0 ή 1 R {0,1}. Ο παραλήπτης περιμένει το πακέτο 0 ή 1 C {0,1, A, -}. Το κανάλι περιέχει frm 0, frm 1, ack, ή

είναι άδειο. Κατοίκων εργασία: Σχεδιάστε τη Μηχανή

Πεπερασμένων Καταστάσεων (FSM) που αντιστοιχεί στο πρωτόκολλο Παύσης και Αναμονής και συμπεριλαμβάνει την κατάσταση του καναλιού.

Page 11: Επαλήθευση Πρωτοκόλλων

Petri Nets

Τεχνική Περιγραφής Πρωτοκόλλων Χρησιμοποιούνται για την ανάλυση και

επαλήθευση πρωτοκόλλων. Ανάλυση προσεγγισιμότητας (reachability analysis) Προβλήματα μη πλήρους προδιαγραφών (το

πρωτόκολλο δεν προσδιορίζει πλήρως τι θα γίνει αν κάποιο πλαίσιο παραληφθεί σε κάποια κατάσταση).

Ανίχνευση αδιεξόδων (deadlocks)

Page 12: Επαλήθευση Πρωτοκόλλων

Petri Nets

Ένα Petri Net αποτελείται από Θέσεις (places) Μεταβάσεις (Transitions) Τόξα εισόδου και εξόδου (input/output arcs) Σκυτάλες (Tokens)

Μια μετάβαση είναι ενεργοποιημένη (enabled transition) εάν υπάρχει τουλάχιστον μία σκυτάλη σε κάθε θέση από την οποία έρχονται τόξα εισόδου.

Όταν μία μετάβαση αναφλεγεί (fire), τότε αφαιρείται μία σκυτάλη από όλες τις θέσεις που είναι συνδεδεμένες με τόξα εισόδου και προστίθεται στις θέσεις που είναι συνδεδεμένες με τόξα εξόδου.

Page 13: Επαλήθευση Πρωτοκόλλων

Παράδειγμα Petri Nets

Place 0 Place 1

Transition 1

Transition 0

Θέση (place)

Μετάβαση (transition)

Τόξο εισόδουΤόξο εξόδου

Σκυτάλη (token)

Page 14: Επαλήθευση Πρωτοκόλλων

Παράδειγμα Petri Nets

Παραλήπτης σε πρωτόκολλο Παύσης και αναμονής

Wait frm 0 Wait frm 1

Receive frm 0

receive frm 0

Page 15: Επαλήθευση Πρωτοκόλλων

Πρωτόκολλο Παύσης και Αναμονής: Αναμενόμενη Λειτουργία

Wait Ack 0

Wait Ack 1

Wait frm 1

Wait frm 0

Κατάσταση Αποστολέα Κατάσταση ΠαραλήπτηΚατάσταση καναλιού

Ack 1

frm 0

Ack 0

frm 1

Send frm 0

Send frm 1

Get frm 0

Get frm 1

Page 16: Επαλήθευση Πρωτοκόλλων

Πρωτόκολλο Παύσης και Αναμονής: Αναμενόμενη Λειτουργία

Wait Ack 0

Wait Ack 1

Wait frm 1

Wait frm 0

Κατάσταση Αποστολέα Κατάσταση ΠαραλήπτηΚατάσταση καναλιού

Ack 1

frm 0

Ack 0

frm 1

Send frm 0

Send frm 1

Get frm 0

Get frm 1

Page 17: Επαλήθευση Πρωτοκόλλων

Πρωτόκολλο Παύσης και Αναμονής: Αδιέξοδο

Wait Ack 0

Wait Ack 1

Wait frm 1

Wait frm 0

Κατάσταση Αποστολέα Κατάσταση ΠαραλήπτηΚατάσταση καναλιού

Ack 1

frm 0

Ack 0

frm 1

Send frm 0

Send frm 1

Get frm 0

Get frm 1

loss

loss

loss

loss

Page 18: Επαλήθευση Πρωτοκόλλων

Πρωτόκολλο Παύσης και Αναμονής: Χρονόμετρα για Αποφυγή Αδιεξόδων

Wait Ack 0

Wait Ack 1

Wait frm 1

Wait frm 0

Κατάσταση Αποστολέα Κατάσταση ΠαραλήπτηΚατάσταση καναλιού

Ack 1

frm 0

Ack 0

frm 1

Send frm 0

Send frm 1

Get frm 0

Get frm 1

loss

loss

loss

loss

timer

timer

Page 19: Επαλήθευση Πρωτοκόλλων

Πρωτόκολλο Παύσης και Αναμονής: Απώλεια Πλαισίου Επαλήθευσης

Wait Ack 0

Wait Ack 1

Wait frm 1

Wait frm 0

Κατάσταση Αποστολέα Κατάσταση ΠαραλήπτηΚατάσταση καναλιού

Ack 1

frm 0

Ack 0

frm 1

Send frm 0

Send frm 1

Get frm 0

Get frm 1

loss

loss

loss

loss

timer

timer

Reject 0

Reject 1