Δρομολόγηση (Routing)
Ασύρματη συσκευή
Ηκεραία Χρησιμοποιεί ραδιοκύματα Η συχνότητα των ραδιοκυμάτων εξαρτάται από τη χρήση Αναλογικό ραδιόφωνο: 535 ΚΗz 1.7 MHz FM ραδιόφωνο: 88 108 ΜΗz Ασύρματα τηλέφωνα: 40 50 ΜΗz Ψηφιακή τηλεόραση: 174 220 ΜΗz 802.11 WiFi, φούρνος μικροκυμάτων: 2.4 GΗz
Παρεμβολές (Interference) Όταν κοντινές κεραίες εκπέμπουν ταυτόχρονα δημιουργούνται παρεμβολές Φανταστείτε ότι εκπέμπουν ταυτόχρονα A B και C D Κανένα μήνυμα δεν θα ληφθεί κανονικά
Τρόποι διαχείρισης παρεμβολών Πολλαπλή πρόσβαση με διαμοίραση του χρόνου (Time Division Multiple Access TDMA) Τα διαστήματα 1,2,3,4 ανατίθενται στους κόμβους A,B,C,D Μόνον ένας κόμβος μεταδίδει σε κάθε διάστημα Επανάληψη Πολλαπλή πρόσβαση με διαμοίραση των συχνοτήτων (Frequency Division Multiple Access FDMA) Ανατίθενται διαφορετικές συχνότητες στους κόμβους A,B,C,D Οι μεταδόσεις δεν προκαλούν παρεμβολές αφού γίνονται σε διαφορετικές συχνότητες
Πρόβλημα με TDMA/FDMA Οι κόμβοι πρέπει να γνωρίζουν εκ των προτέρων το χρονικό διάστημα ή τη συχνότητα που τους έχει ανατεθεί Όταν κάποιος κόμβος μετακινείται σε άλλη τοποθεσία, το χρονικό διάστημα ή η συχνότητα που του έχει ανατεθεί μπορεί να είναι κατειλημμένα Δεν είναι πρακτικό να υπάρχουν διαφορετικά χρονικά διαστήματα/συχνότητες όταν υπάρχουν πολλοί κόμβοι Σπατάλη: οκόμβοςb μπορεί να μην μεταδίδει, ωστόσο κατέχει κάποιο διάστημα: 1/nτων διαθέσιμων πόρων ξοδεύεται τζάμπα
Πώς λειτουργεί το WiFi Όλοι οι κόμβοι χρησιμοποιούν την ίδια συχνότητα (σχεδόν) Δεν υπάρχουν χρονικά διαστήματα Οι κόμβοι μεταδίδουν αν υπάρξει σύγκρουση, μεταδίδουν ξανά
Το πρόβλημα του κρυμμένου τερματικού (The hidden terminal problem) Οι μεταδόσεις A B και C D γίνονται ταυτόχρονα Υπάρχει σύγκρουση, αλλά ο Α δεν το γνωρίζει! Ο B πρέπει να στείλει στον Α επιβεβαίωση λήψης (Acknowledgement ACK)
Το πρόβλημα του κρυμμένου τερματικού (The hidden terminal problem) Τι γίνεται αν ο A στέλνει ένα μεγάλο μήνυμα και αντιλαμβάνεται ότι ο B δεν το έλαβε; Απώλεια χρόνου Λύση: Οι A και B λένε στους γείτονές τους να μείνουν σιωπηλοί (να μην κάνουν μεταδόσεις)
Λύση: Το σχήμα RTS/CTS Ο κόμβος A στέλνει ένα (σύντομο) μήνυμα αίτημα για αποστολή (Request To Send - RTS) που περιέχει το μήκος του μηνύματος Ο κόμβος B απαντάει με ένα μήνυμα αποδεκτή αποστολή (Clear To Send - CTS) που επίσης περιέχει το μήκος των δεδομένων Τότε ο A μεταδίδει τα δεδομένα Ο B μεταδίδει επιβεβαίωση λήψης (acknowledgement ACK)
Συγκρούσεις Και πάλι μπορεί να προκληθούν συγκρούσεις Π.χ., επικαλύπτονται τα μηνύματα RTS/CTS Π.χ., κάποιος κόμβος δεν λαμβάνει RTS/CTS και μεταδίδει κατά τη διάρκεια άλλης μετάδοσης κτλ Οι κόμβοι περιμένουν για τυχαίο χρονικό διάστημα πριν επαναμεταδώσουν Ο χρόνος αναμονής αυξάνεται εκθετικά:1, 2, 4, 8, 16...
Γιατί επιθυμούμε τη μείωση της επικοινωνίας Η επικοινωνία κοστίζει σε ενέργεια Η επικοινωνία μπορεί να δημιουργήσει σφάλματα λόγω μη εντοπισμένων παρεμβολών ή θορύβου Αν πολλοί κόμβοι μεταδίδουν σε κάποια περιοχή, θα υπάρχουν ακόμα περισσότερες παρεμβολές, και κατά μέσο όσο η επικοινωνία θα είναι αργή
Γιατί επιθυμούμε τη μείωση της επικοινωνίας Όταν δεν χρειάζεται να επικοινωνήσουν, οι κόμβοι μεταβαίνουν σε κατάσταση αναμονής (sleep): απενεργοποιούν την κεραία τους Εξοικονομείται ενέργεια Μπορούν να ενεργοποιούνται (wake up) και να ελέγχουν περιοδικά Μπορούν να χρησιμοποιούν μια μικρή κεραία για να λαμβάνουν μηνύματα ενεργοποίησης (wakeup messages) Σημαντικό: ηλήψηήηπαραμονήτηςκεραίαςσεενεργή κατάσταση για λήψη κοστίζει σε ενέργεια όσο και η μετάδοση (γιατί;)
Βασική επικοινωνία Πώς να φτάσουν δεδομένα σε κάποιο διακομιστή (server) που καλείται καταβόθρα (sink) ΜΕΘΟΔΟΣ 1: όλοι οι κόμβοι στέλνουν δεδομένα στο sink μέσω δρομολόγησης Ακριβή: φανταστείτε 1000άδες κόμβους, κάθε μονοπάτι μπορεί να περνάει από 100άδες κόμβους: αυξημένη επικοινωνία Οι κόμβοι κοντά στο sink λαμβάνουν μεγάλη κίνηση Πολλά μηνύματα Πολλές συγκρούσεις, επαναμεταδόσεις, καθυστέρηση..
Βασική επικοινωνία Πώς να φτάσουν δεδομένα σε κάποιο διακομιστή (server) που καλείται καταβόθρα (sink) ΜΕΘΟΔΟΣ 2: Δέντρο Συνάθροισης (Aggregation tree) Οκόμβοςsink στέλνει προς όλους τους κόμβους ένα μήνυμα κατασκευή δέντρου Κάθε κόμβος καταγράφει το πλήθος των βημάτων (hops) που απέχει από τον κόμβο sink Κάθε κόμβος επιλέγει έναν γείτονα με μικρότερο hop count και τον καλεί γονέα του ( parent ) Με τη διαδικασία αυτή κατασκευάζεται ένα δέντρο
Δέντρο Συνάθροισης (Aggregation tree) Ο κόμβος sink μπορεί να εκπέμπει (broadcast) δεδομένα (data) και αιτήματα (requests) μέσω του δέντρου π.χ., Χρειάζομαι το άθροισμα των τιμών σας Πιο αποδοτική μέθοδος από το flooding Όλοι οι κόμβοι στέλνουν τα δεδομένα τους στο γονέα τους Ο γονέας προσθέτει τα δεδομένα από όλα τα παιδιά του και στέλνει το άθροισμα Ημέθοδοςείναιχρήσιμηκαιγιατησυλλογή(gathering) μη επεξεργασμένων δεδομένων Συντονίζονται ευκολότερα μεταδόσεις προκαθορισμένων παιδιών Πρόβλημα: ανοχή σε σφάλματα
Πρωτόκολλα δρομολόγησης που βασίζονται σε εκπομπή (flooding) και συνάθροιση (aggregation) DSR - Dynamic Source Routing AODV - Ad hoc On-Demand Distance Vector Routing
Dynamic Source Routing (DSR) ΟκόμβοςS επιθυμεί να στείλει μήνυμα στον κόμβο D Ο S ξεκινάει διαδικασία ανακάλυψης διαδρομής (route discovery) Ο S πλημμυρίζει (floods) το δίκτυο με μήνυμα αιτήματος διαδρομής (Route REQuest - RREQ) Κάθε κόμβος προσθέτει το id του στο μήνυμα
Ανακάλυψη διαδρομής: RREQ
Ανακάλυψη διαδρομής: RREQ
Ανακάλυψη διαδρομής: RREQ
Ανακάλυψη διαδρομής: RREQ
Ανακάλυψη διαδρομής: RREQ
Ανακάλυψη διαδρομής: RREQ
Ανακάλυψη διαδρομής στο πρωτόκολλο DSR ΟπροορισμόςD όταν λαμβάνει το πρώτο RREQ στέλνει ένα μήνυμα Route REPly (RREP) Μήνυμα RREP στέλνεται για διαδρομή που προκύπτει με αντιστροφή της διαδρομής των ληφθέντων RREQ
Ανακάλυψη διαδρομής: RREQ
Ανακάλυψη διαδρομής: RREQ Όταν ο κόμβος S στέλνει ένα πακέτο δεδομένων στον κόμβο D, όλη η διαδρομή περιέχεται στο header του πακέτου σε αυτό οφείλεται η ονομασία Source Routing
Όταν δεν λειτουργεί κάποιος σύνδεσμος (link), στέλνεταιπίσωστον S ένα μήνυμα λάθους (error message - ERR) με το όνομα του συνδέσμου αυτού Ο S διαγράφει κάθε διαδρομή που χρησιμοποιεί αυτόν τον σύνδεσμο και αρχίζει νέα διαδικασία ανακάλυψης διαδρομής
Προσωρινή αποθήκευση διαδρομής (Route caching) Όταν ένας κόμβος λαμβάνει ή προωθεί ένα μήνυμα, μαθαίνει διαδρομές προς όλους τους κόμβους στο μονοπάτι Πλεονέκτημα: Ο S μπορεί να μη χρειάζεται να στείλει RREQ Ενδιάμεσοι κόμβοι που λαμβάνουν RREQ, μπορούν να απαντήσουν με την πλήρη διαδρομή Μειονέκτημα: Η προσωρινή αποθήκευση μπορεί να είναι παγίδα: Ο S δοκιμάζει πολλές προσωρινά αποθηκευμένες διαδρομές πριν ξεκινήσει διαδικασία ανακάλυψης διαδρομής Οι ενδιάμεσοι κόμβοι μπορεί να επιστρέφουν παρωχημένη πληροφορία
DSR: Σύνοψη Πλεονεκτήματα Διαδρομές υπολογίζονται μόνον όταν είναι αναγκαίο Η προσωρινή αποθήκευση (Caching) μπορεί να αυξήσει την απόδοση Δεν δημιουργούνται ανακυκλώσεις (loops) Μειονεκτήματα Όλη η διαδρομή μπορεί να περιέχεται στο μήνυμα: ηδιαδρομή μπορεί να είναι μεγάλη σε μεγάλα δίκτυα Το flooding προκαλεί επικοινωνία προς πολλούς κόμβους Caches που δεν ανταποκρίνονται μπορεί να είναι πρόβλημα Όχι κατάλληλο πρωτόκολλο για δίκτυα που αλλάζουν συχνά
Ad hoc On-Demand Distance Vector Routing (AODV) Διατηρούνται πίνακες δρομολόγησης (routing tables) στους κόμβους ώστε η διαδρομή να μη χρειάζεται να αποθηκεύεται στο μήνυμα Δεν υπάρχουν Caches: υπάρχει μόνο μία διαδρομή ανά προορισμό
AODV: Ανακάλυψη διαδρομής Η πηγή πλημμυρίζει (floods) το δίκτυο
AODV: Ανακάλυψη διαδρομής Οι υπόλοιποι κόμβοι δημιουργούν δείκτη προς το γονέα τους (parent pointer) Ένας κόμβος προωθεί ένα RREQ μόνο μία φορά
AODV: Ανακάλυψη διαδρομής Το RREP προωθείται μέσω του αντίστροφου μονοπατιού
AODV: Ανακάλυψη διαδρομής Το RREP προωθείται μέσω το αντίστροφου μονοπατιού Δημιουργία μονοπατιού προώθησης
Λήξη διαδρομής (Route expiry) Ένα μονοπάτι λήγει όταν δεν χρησιμοποιείται για συγκεκριμένο χρονικό διάστημα Αν κάποιος κόμβος βλέπει ότι κάποια καταχώρηση στο routing table δεν έχει χρησιμοποιηθεί για αυτό το χρονικό διάστημα, διαγράφει την καταχώρηση Ακόμα και αν το ίδιο το μονοπάτι είναι έγκυρο Καλή στρατηγική για δίκτυα που αλλάζουν συχνά Κακή στρατηγική για στατικά ή σταθερά δίκτυα
Μπορεί να δημιουργηθούν ανακυκλώσεις (loops) Έστω ότι ο σύνδεσμος C D δυσλειτουργεί, αλλά ο κόμβος A δεν το γνωρίζει γιατί το μήνυμα σφάλματος ERR χάθηκε ΟκόμβοςC προσπαθεί τώρα να βρει μονοπάτι προς τον D Ο A ανταποκρίνεται αφού ο A νομίζει ότι έχει τέτοιο μονοπάτι Δημιουργείται η ανακύκλωση (loop): C E A B C
AODV: Sequence numbers Αν ο κόμβος A έχει διαδρομή προς τον D, ο A διατηρεί έναν sequence number Ο A αυξάνει αυτόν τον αριθμό περιοδικά: ο αριθμός δείχνει πόσο παλιά είναι η πληροφορία σχετικά με τη διαδρομή
Χρήση sequence numbers Κανόνας: ο sequence number πρέπει να αυξάνεται κατά μήκος κάθε διαδρομής
Με χρήση sequence number αποφεύγονται οι ανακυκλώσεις Ο A δεν απαντά, αφού ο sequence number του είναι μικρότερος από τον αντίστοιχο του C
AODV Routing tables, τα μηνύματα δεν περιέχουν τις διαδρομές Προτιμώνται φρέσκιες διαδρομές Παλιές διαδρομές που δεν χρησιμοποιούνται λήγουν Διαδρομές που δεν αποκρίνονται δεν δημιουργούν σημαντικά προβλήματα Απαιτούνται sequence numbers για την αποφυγή loops Καλύτερο πρωτόκολλο για πιο δυναμικά, μεταβαλλόμενα περιβάλλοντα
Δρομολόγηση με βάση την τοποθεσία (Location-based routing)
Δρομολόγηση σε αδόμητα (adhoc) δίκτυα Να βρεθεί διαδρομή μεταξύ ζευγαριών κόμβων που επιθυμούν να επικοινωνήσουν Προνοητικά πρωτόκολλα (proactive protocols): διατηρούν πίνακες δρομολόγησης σε κάθε κόμβο που επικαιροποιούνται όταν ανιχνεύονται αλλαγές στην τοπολογία του δικτύου Μεγάλος φόρτος (overhead) όταν το δίκτυο αλλάζει συχνά (λόγω δυσλειτουργίας συνδέσμων/κόμβων ή μετακίνησης κόμβων) Όχι πρακτικά πρωτόκολλα για δίκτυα που αλλάζουν συχνά
Δρομολόγηση σε αδόμητα (adhoc) δίκτυα Αποκριτικά πρωτόκολλα (reactive protocols): οι διαδρομές δημιουργούνται όταν χρειάζονται δεν διατηρείται καθολικός πίνακας δρομολόγησης Καταλληλότερα πρωτόκολλα για δίκτυα που αλλάζουν με υψηλό ρυθμό Ad hoc on demand distance vector routing (AODV) Dynamic source routing (DSR) Ωστόσο, και τα 2 βασίζονται στο flooding για την ανακάλυψη διαδρομών (route discovery) Μπορούμε να κάνουμε κάτι απλούστερο;
Γεωγραφική δρομολόγηση (Geographical routing) Χρησιμοποιούνται οι θέσεις των κόμβων για να ανακαλυφθούν μονοπάτια προς αυτούς Greedy Routing: Προχώρα στο γείτονα που είναι πιο κοντά στον προορισμό
Υποθέσεις: Γεωγραφική δρομολόγηση (Geographical routing) Οι κόμβοι γνωρίζουν τη δική τους γεωγραφική τοποθεσία Οι κόμβοι γνωρίζουν τους γείτονές του σε απόσταση 1hop Οι προορισμοί της δρομολόγησης καθορίζονται γεωγραφικά (τοποθεσία ή γεωγραφική περιοχή) Κάθε πακέτο μπορεί να μεταφέρει μικρή ποσότητα πληροφορίας δρομολόγησης
Πρόβλημα με Greedy Routing Μπορεί να κολλήσει όταν υπάρχουν ασυνέχειες
Πρόβλημα με Greedy Routing Μπορεί να κολλήσει όταν υπάρχουν ασυνέχειες
Τι είναι ασυνέχεια (hole); Εμφανίζονται σε περιοχές του δικτύου που έχουν μικρή πυκνότητα Για ποιον τύπο ασυνέχειας δουλεύει το greedy routing;
Δρομολόγηση όψης (Face Routing) Χρησιμοποιούμε επίπεδο γράφημα (planar graph) Κρατάμε το αριστερό μας χέρι στον τοίχο και προχωράμε μέχρι να συναντήσουμε την ευθεία γραμμή που συνδέει αφετηρία και προορισμό Τότε αλλάζουμε και προχωράμε στην επόμενη όψη
Επίπεδα γραφήματα (Planar graphs) Επίπεδο είναι ένα γράφημα που μπορεί να ζωγραφιστεί στο επίπεδο έτσι ώστε οι ακμές του να τέμνονται μόνο στις κοινές τους κορυφές
Επίπεδα γραφήματα (Planar graphs) Θεώρημα του Kuratowksi: ένα γράφημα είναι επίπεδο αν και μόνον αν δεν περιέχει υπογράφημα της μορφής K 5 ή K 3,3 ΟτύποςτουEuler για Πολύεδρα: για συνεκτικό επίπεδο γράφημα με n κορυφές, m ακμές και f όψεις ισχύει n-m+f=2 Παράδειγμα με 9 κορυφές, 14 ακμές, 7 όψεις Η κίτρινη εξωτερική όψη καλείται άπειρη όψη Θεώρημα: Απλό επίπεδο γράφημα με n κορυφές έχει το πολύ 3n-6 ακμές για n 3
Δρομολόγηση όψης (Face Routing) Κρατάμε το αριστερό μας χέρι στον τοίχο και προχωράμε μέχρι να συναντήσουμε την ευθεία γραμμή που συνδέει αφετηρία και προορισμό Τότε αλλάζουμε και προχωράμε στην επόμενη όψη
Δρομολόγηση όψης (Face Routing)
Δρομολόγηση όψης (Face Routing)
Δρομολόγηση όψης (Face Routing)
Δρομολόγηση όψης (Face Routing)
Δρομολόγηση όψης (Face Routing)
Δρομολόγηση όψης (Face Routing)
Δρομολόγηση όψης (Face Routing)
Δρομολόγηση όψης (Face Routing): ιδιότητες Όλη η απαραίτητη πληροφορία είναι αποθηκευμένη στο μήνυμα Τοποθεσία αφετηρίας και προορισμού Ο κόμβος όταν ξεκινάει διαδικασία face routing Η αρχική ακμή της τρέχουσας όψης Εντελώς τοπικός αλγόριθμος: Αρκεί γνώση για τις θέσεις των άμεσων γειτόνων Οι όψεις υπονοούνται χρειάζεται μόνο η τοπική διάταξη των γειτόνων κάθε κόμβου Το αν είναι επίπεδο το γράφημα ελέγχεται τοπικά (δεν είναι υπόθεση) Υπολογισμός με χρήση π.χ., Gabriel Graph
Τι συμβαίνει αν ο προορισμός είναι απομονωμένος; Ο αλγόριθμος face routing θα επιστρέψει στο σημείο όπου εισήλθε στην περίμετρο Αν αποτύχει δεν υπάρχει διαδρομή προς τον προορισμό Η παράδοση μηνύματος είναι εγγυημένη αν υπάρχει μονοπάτι προς τον προορισμό
Δρομολόγηση όψης (Face Routing): ιδιότητες Θεώρημα: το face routing τερματίζει σε κάθε απλό επίπεδο γράφημα σε O(n) βήματα, όπου n είναι ο αριθμός των κόμβων του δικτύου
Παράδειγμα Μοναδιαίου Δίσκου (Unit Disk Graph) 200 κόμβοι τοποθετημένοι τυχαία σε περιοχή 2000 2000 μέτρα Εμβέλεια ραδιοσήματος = 250m
Μοναδιαίος Δίσκος (Unit Disk Graph) Δίνεται σύνολο κόμβων V στο επίπεδο (σημεία με συντεταγμένες) Ο Μοναδιαίος Δίσκος για το σύνολο V - UDG(V) ορίζεται ως μη κατευθυνόμενο γράφημα (το σύνολο E περιέχει μη κατευθυνόμενες ακμές) υπάρχει ακμή μεταξύ 2 κορυφών u,v αν και μόνον αν η Ευκλείδεια απόσταση μεταξύ u και v είναι το πολύ 1 Η μοναδιαία απόσταση συμβολίζει τη μέγιστη εμβέλεια μετάδοσης των κόμβων (maximum transmission range) Υποθέτουμε ότι oudg είναι συνεκτικό γράφημα δηλ., υπάρχει μονοπάτι μεταξύ κάθε ζεύγους κόμβων O unit disk graph έχει πολλές ακμές Μπορούμε να διώξουμε κάποιες από τις ακμές στο UDG για να μειώσουμε την πολυπλοκότητα και τις παρεμβολές;
Το Face routing απαιτεί επίπεδο γράφημα Υπολογίζουμε επίπεδο υπογράφημα του μοναδιαίου δίσκου (unit disk graph) Διατηρείται η συνεκτικότητα (connectivity) Κατανεμημένος υπολογισμός
Gabriel Graph Έστω disk(u,v) δίσκος με διάμετρο (u,v) που ορίζεται από τα δύο σημεία u,v Το αντίστοιχο Gabriel Graph GG(V) είναι ένα μη κατευθυνόμενο γράφημα (οι ακμές στο σύνολο Ε δεν έχουν κατευθύνσεις) όπου Υπάρχει ακμή μεταξύ δύο κορυφών u και v αν και μόνον αν ο δίσκος disk(u,v) και η περίμετρός του δεν περιέχουν άλλα σημεία Τα Gabriel Graphs έχουν ενδιαφέρουσες ιδιότητες
Άλλα επίπεδα γραφήματα Relative Neighborhood Graph RNG(V) Υπάρχει ακμή e=(u,v) στο RNG(V) αν και μόνον αν δεν υπάρχει κορυφή w με (u,w) < (u,v) και (v,w) < (u,v) Ελάχιστο Γεννητικό Δέντρο - Minimum Spanning Tree - MST(V) Υποσύνολο του E του G ελάχιστου βάρους που σχηματίζει δέντρο που περιέχει όλες τις κορυφές του V
Relative Neighborhood Graph και Gabriel Graph Relative Neighborhood Graph (RNG): περιέχει μια ακμή uv αν η ροζ έλλειψη στο σχήμα δεν περιέχει άλλα σημεία Gabriel Graph (GG): περιέχει μια ακμή uv αν ο δίσκος με διάμετρo την uv δεν περιέχει άλλα σημεία Και τα δύο είδη γραφημάτων μπορούν να κατασκευαστούν με κατανεμημένο τρόπο
Gabriel Graph: επίπεδο γράφημα Θεώρημα: Ένα Gabriel graph δεν περιέχει διασταυρούμενες ακμές
Relative Neighborhood Graph και Gabriel Graph Ισχύει: MST RNG GG Επομένως, τα RNG και GG είναι επίπεδα γραφήματα και διατηρούν τη συνεκτικότητα (το MST έχει την ίδια συνεκτικότητα με το UDG)
Παράδειγμα GG και RNG GG RNG
Προσαρμοστική Δρομολόγηση Όψης (Adaptive Face Routing) Φανταστείτε ότι το ελάχιστο μονοπάτι στο επίπεδο γράφημα έχει το πολύ L hops Φράσσουμε την περιοχή αναζήτησης εντός μιας έλλειψης που περιέχει σημεία {x: xs + xt L} δεν βγαίνουμε ποτέ εκτός της έλλειψης Ακολουθούμε μία κατεύθυνση αν χτυπήσουμε στην έλλειψη επιστρέφουμε Στη χειρότερη περίπτωση, επισκεπτόμαστε κάθε κόμβο εντός της έλλειψης Περίπου O(L 2 ) λόγω της ιδιότητας φραγμένης πυκνότητας (bounded density property)
Συνδυασμός Greedy και Face Routing Χρησιμοποιούμε τον greedy αλγόριθμο μέχρι να κολλήσει σε κάποιον κόμβο p Τότε αλλάζουμε και χρησιμοποιούμε face routing Όταν βρεθούμε σε κάποιον κόμβο q που είναι πλησιέστερα στον προορισμό από τον p, ξαναχρησιμοποιούμε τον greedy αλγόριθμο Η στρατηγική αυτή καλείται Greedy-Face-Greedy