Δρομολόγηση (routing) σε δίκτυα Αυτοδύναμα Πακέτα (Datagrams): απόφαση δρομολόγησης για κάθε πακέτο. Εικονικά Κυκλώματα (Virtual Circuits): μία απόφαση δρομολόγησης για όλα τα πακέτα της ίδιας συνόδου (session). Ζητήματα επιλογή των μονοπατιών μετάδοση των σχετικών με τη δρομολόγηση πληροφοριών Μετρικές απόδοσης Ρυθμαπόδοση (Throughput) – ‘ποσότητα’ της εξυπηρέτησης Μέση καθυστέρηση πακέτου – ‘ποιότητα’ της εξυπηρέτησης
προσφερόμενο φορτίο ρυθμαπόδοση καθυστέρηση απορριπτόμενο φορτίο Καθώς ο αλγόριθμος δρομολόγησης (routing) επιτυγχάνει στο να κρατάει την καθυστέρηση χαμηλά, ο έλεγχος ροής (flow control) επιτρέπει περισσότερη κυκλοφορία στο δίκτυο. κακή δρομολόγηση καθυστέρηση καλή δρομολόγηση ρυθμαπόδοση Καλοί αλγόριθμοι δρομολόγησης: υψηλότερη ρυθμαπόδοση για την ίδια καθυστέρηση, μικρότερη καθυστέρηση για δεδομένη ρυθμαπόδοση.
Όλοι οι σύνδεσμοι έχουν χωρητικότητα 10 μονάδες Παράδειγμα (επιρροή της δρομολόγησης στην ρυθμαπόδοση και την καθυστέρηση του δικτύου): 5 μονάδες 5 μονάδες πηγή πηγή Όλοι οι σύνδεσμοι έχουν χωρητικότητα 10 μονάδες προορισμός Αν όλες οι σύνοδοι (sessions) δρομολογηθούν μέσω του μεσαίου μονοπατιού, η καθυστέρηση είναι μεγάλη. Ας υποτεθεί, ότι η κυκλοφορία στην είσοδο του κόμβου 2 αυξάνεται στις 15 μονάδες. Αν χρησιμοποιείται μόνο ένα μονοπάτι, τουλάχιστον 5 μονάδες απορρίπτονται. Συνεπώς, η καθυστέρηση και η μέγιστη ρυθμαπόδοση εξαρτώνται από τη δρομολόγηση.
Η δρομολόγηση μπορεί να είναι: 1. Κεντρικοποιημένη ή Κατανεμημένη Κεντρικοποιημένη (Centralized): όλες οι αποφάσεις για τη δρομολόγηση λαμβάνονται σε έναν κεντρικό κόμβο. Κατανεμημένη (Distributed): η ευθύνη του υπολογισμού των μονοπατιών μοιράζεται ανάμεσα στους κόμβους, οι οποίοι ανταλλάσσουν μεταξύ τους πληροφορίες, όποτε είναι απαραίτητο. 2. Στατική ή Δυναμική (Προσαρμοζόμενη) Στατική (Static): το μονοπάτι που χρησιμοποιείται για ένα ζεύγος πηγής-προορισμού, παραμένει σταθερό. Δυναμική (Dynamic) - Προσαρμοζόμενη (Adaptive): το μονοπάτι μπορεί να αλλάζει, ανάλογα με τη συμφόρηση (congestion). Φυσικά, ακόμα και με στατικούς αλγόριθμους, τα μονοπάτια πρέπει να αλλάζουν, όταν κάποιοι κόμβοι ή σύνδεσμοι πέφτουν.
Το πρόβλημα των συντομότερων μονοπατιών (shortest path problem) Διευθυνόμενος γράφος G=(N,A) : οι ακμές έχουν κατεύθυνση. dij = το μήκος της ακμής (i,j) Το μήκος ενός διευθυνόμενου μονοπατιού (directed path) p={i,j,k,…,l,m} ορίζεται ως dij+djk+…+dlm. Δεδομένα: G=(N,A), dij’s ώστε να μην υπάρχουν κύκλοι αρνητικού μήκους και ο κόμβος-προορισμού 1. Πρόβλημα: να βρεθεί το συντομότερο μονοπάτι από κάθε κόμβο i προς τον κόμβο 1. Εφαρμογές: α. dij = η καθυστέρηση της ακμής (i,j). Τότε το ‘συντομότερο μονοπάτι’ αντιστοιχεί στο ‘μονοπάτι ελάχιστης καθυστέρησης’. β. dij = -lnpij, όπου pij η πιθανότητα η ακμή (i,j) να είναι απενεργοποιημένη. Τότε το ‘συντομότερο μονοπάτι’ αντιστοιχεί στο ‘πιο αξιόπιστο μονοπάτι’. γ. dij=1 (Minimum hop routing)
Ο αλγόριθμος Bellman-Ford Έστω δι το μήκος του συντομότερου μονοπατιού από τον κόμβο i στον 1, που χρησιμοποιεί το πολύ h ακμές. Μετά από το πολύ Ν-1 επαναλήψεις, εντοπίζεται το συντομότερο μονοπάτι (με την προϋπόθεση ότι δεν υπάρχουν κύκλοι αρνητικού μήκους): το μήκος του συντομότερου μονοπατιού είναι . Στην πραγματικότητα οι επαναλήψεις τερματίζονται, όταν μετά από h επαναλήψεις ισχύει , για κάθε i.
Παράδειγμα: Bellman-Ford (αρχικές συνθήκες στο ) κόστος προορισμός 1ο βήμα τρέχουσα απόσταση από τον κόμβο 1 2ο βήμα 3ο βήμα 4ο βήμα
Παράδειγμα: Bellman-Ford (αρχικές συνθήκες στο 0) προορισμός
Δρομολόγηση στο ARPANET Χρησιμοποιεί συντομότερα μονοπάτια από την πηγή στον προορισμό. Αλγόριθμος του 1969: Ο κόμβος i υπολογίζει μια εκτίμηση Di της απόστασής του από κάποιο δεδομένο κόμβο 0. N(i) : οι γείτονες του κόμβου i Dj : υπολογίζονται από τους γείτονες κάθε 0.62sec D0 = 0. Αρχικά (1969), μήκος dij = πλήθος πακέτων στον buffer (i,j).
Προβλήματα αστάθειας (original ARPANET) Πρόβλημα: Συντομότερα μονοπάτια Μήκη ακμών Δρομολόγια Ροή Η ανάδραση εδώ μπορεί να είναι ασταθής (unstable). προορισμός προορισμός ΠΑΡΑΤΗΡΗΣΗ : το επόμενο συντομότερο μονοπάτι του κόμβου 2 θα έχει αριστερόστροφη διεύθυνση. Έστω η ροή στην ακμή (i,j)
(πχ dij = σταθερά + πλήθος πακέτων στον buffer (i,j) ). προορισμός Μετά τα updates, όλοι οι κόμβοι θα αρχίσουν να στέλνουν πακέτα δεξιόστροφα, κοκ... Η ύπαρξη πόλωσης (bias) ανεξάρτητης της ροής στα μήκη των ακμών, βοηθάει στην αποφυγή του προβλήματος (πχ dij = σταθερά + πλήθος πακέτων στον buffer (i,j) ).
Αλγόριθμος του 1979 στο ARPANET dij = μέση καθυστέρηση των πακέτων που διέρχονται το σύνδεσμο (i,j) τα τελευταία 10sec. Τα dij διαδίδονται κάθε 60sec σε όλους τους άλλους κόμβους, με τη χρήση ενός μηχανισμού ‘πλημμύρας’ (flooding). Οι κόμβοι ανανεώνουν τα συντομότερα μονοπάτια τους (ασύγχρονα), χρησιμοποιώντας τον αλγόριθμο του Dijkstra (δες διαφανειες παρακατω). Κάθε κόμβος καταγράφει τον πρώτο σύνδεσμο στο συντομότερο μονοπάτι.
Τα μήκη των συνδέσμων διαδίδονται σε όλους τους άλλους κόμβους μέσω ενός flooding αλγόριθμου. Η πηγή στέλνει την πληροφορία στους γείτονές της. Οι γείτονες τη στέλνουν στους δικούς τους γείτονες (αλλά όχι στον κόμβο από όπου τη δέχτηκαν). Κάθε πακέτο έχει έναν ακολουθιακό αριθμό SN (sequence number) και ένα ID κόμβου αφετηρίας. Χρησιμοποιώντας τις πληροφορίες αυτές, οι κόμβοι αποφεύγουν την προώθηση κάποιου πακέτου δύο φορές. Εναλλακτικά, η διάδοση πραγματοποιείται μέσω ενός γεννητικού δέντρου (spanning tree).
Αλγόριθμος του Dijkstra Δεδομένα: G=(N,A), μη αρνητικά dij’s, και ο κόμβος-προορισμός 1. Ιδέα: εύρεση των συντομότερων μονοπατιών με σειρά αύξοντος μήκους μονοπατιού. 1 1 σύνολο Pk, με τους k πλησιέστερους στον 1 κόμβους συμπλήρωμα του Pk το συντομότερο μονοπάτι από τον (k+1)-οστό κοντινότερο κόμβο, πρέπει να διέρχεται από τους κόμβους του Pk 1 1. Ανανέωσε τις ετικέτες: για κάθε θέσε 2. Βρες τον επόμενο πλησιέστερο κόμβο, δηλαδή τον : . Θέσε . Αν όλοι οι κόμβοι καλύφθηκαν, σταμάτα. Αλλιώς, πήγαινε στο βήμα 1.
Παράδειγμα (αλγόριθμος του Dijkstra): 1ο βήμα
2ο βήμα 3ο βήμα
4ο βήμα 5ο βήμα
Το δίκτυο TYMNET (1971 και 1981) Χρησιμοποιεί την ίδια ιδέα των συντομότερων μονοπατιών, αλλά 1) χρησιμοποιεί εικονικά κυκλώματα και 2) η δρομολόγηση είναι κεντρικοποιημένη. Εποπτικός κόμβος αίτηση προορισμός πηγή Ο κόμβος- επόπτης (supervisory node) υπολογίζει το συντομότερο μονοπάτι και στέλνει ένα “needle” πακέτο στην πηγή, που περιέχει την πληροφορία για τη δρομολόγηση. TYMNET I: ο κόμβος- επόπτης «γράφει» τους πίνακες δρομολόγησης (routing tables) στους κόμβους. TYMNET II: οι πίνακες των δρομολόγιων συνθέτονται από set-up πακέτα, τα οποία προηγούνται της μεταφοράς των δεδομένων. Παρόμοια ιδέα χρησιμοποιείται και στο codex δίκτυο.
Ο αλγόριθμος Bellman-Ford (επανεξετάζεται) Αρχικές συνθήκες: όπου = το μήκος του συντομότερου μονοπατιού από τον κόμβο i στον 1, που χρησιμοποιεί το πολύ k συνδέσμους. Ο αλγόριθμος τερματίζει το πολύ σε Ν-1 βήματα. Μπορεί να υλοποιηθεί και με κατανεμημένο τρόπο. Πρόβλημα 1: συχνά είναι προτιμότερο να στέλνονται οι αποστάσεις ασύγχρονα, από το να αναμένονται από όλους τους γείτονες τα , πριν από κάθε νέα επανάληψη. Λύση: κάθε κόμβος (εκτός του 1) ανανεώνει ασύγχρονα: , όπου Dj είναι η τελευταία εκτίμηση από τον κόμβο j. Ο λόγος που λειτουργεί: μετά από κάθε ανανέωση, Di είναι η απόσταση από τον κόμβο i στον 1, μέσω κάποιου υπαρκτου μονοπατιού (δεδομένων των αρχικών συνθηκών ).
Πρόβλημα 2: Στην πράξη, τα μήκη των συνδέσμων dij περιστασιακά αλλάζουν. Λύση: Απλά, οι κόμβοι συνεχίζουν να εκτελούν επαναλήψεις ασύγχρονα, με τα νέα μήκη, ξεκινώντας από τις τιμές των Dj που υπάρχουν εκείνη την στιγμή:
Λήμμα: Ο ασύγχρονος αλγόριθμος , με τα dij σταθερά, συγκλίνει στα σωστά συντομότερα μονοπάτια, αν οι αρχικές συνθήκες είναι: (αρχικές συνθήκες στο ) ή , για κάθε i (αρχικές συνθήκες στο 0). Θεώρημα: Για τον Bellman-Ford αλγόριθμο: Έστω η τιμή οποιαδήποτε χρονική στιγμή με κάποιες αυθαίρετες αρχικές καταστάσεις. Έστω η τιμή που θα είχαμε, αν οι αρχικές καταστάσεις ήταν . Έστω η τιμή που θα είχαμε, αν οι αρχικές καταστάσεις ήταν 0. Τότε Εφόσον οι και συγκλίνουν στις σωστές αποστάσεις, τότε και η συγκλίνει στις σωστές αποστάσεις.
Παράδειγμα: Bellman-Ford (αρχικές συνθήκες στο ) κόστος προορισμός 1ο βήμα τρέχουσα απόσταση από τον κόμβο 1 2ο βήμα 3ο βήμα 4ο βήμα
Παράδειγμα: Bellman-Ford (αρχικές συνθήκες στο 0) προορισμός
Πιθανο προβλημα (“good news bad news” ή «Απλά, οι κόμβοι συνεχίζουν να εκτελούν επαναλήψεις ασύγχρονα, με τα νέα μήκη, ξεκινώντας από τις τιμές των Dj που υπάρχουν εκείνη την στιγμή» Πιθανο προβλημα (“good news bad news” ή “counting to infinity” πρόβλημα προορισμός Πριν ο σύνδεσμος (4,1) πέσει, . Μόλις ο κόμβος 4 καταλάβει ότι αρχίζει επαναλήψεις μέχρι να επιτευχθεί σύγκλιση. Παρατήρηση: τα κακά νέα μπορεί και να ταξιδεύουν αργά.
Ο αλγόριθμος Floyd-Warshall Υπολογίζει τις συντομότερες αποστάσεις Dij για όλα τα ζεύγη πηγή-προορισμός (i,j). = συντομότερη απόσταση από τον κόμβο i στον j, χρησιμοποιώντας μόνο κόμβους από το σύνολο {1,2,...,k} ως ενδιάμεσους κόμβους. Οι είναι οι τελικές αποστάσεις (όπου Ν το πλήθος των κόμβων).
Παράδειγμα: Floyd-Warshall μήκος ακμής ID κόμβου κανένας ενδιάμεσος κόμβος
ενδιάμεσος κόμβος ο 1 έχει αλλάξει ενδιάμεσοι κόμβοι οι {1,2}
(οι τελικές συντομότερες αποστάσεις) ενδιάμεσοι κόμβοι οι {1,2,3} ενδιάμεσοι κόμβοι οι {1,2,3,4} (οι τελικές συντομότερες αποστάσεις)
Ιεραρχική δρομολόγηση (hierarchical routing) Η μελέτη μας για τη δρομολόγηση μέχρι στιγμής είναι εξιδανικευμένη: όλοι οι δρομολογητές (routers) πανομοιότυποι το δίκτυο ‘επίπεδο’ ... Δεν ισχύουν στην πραγματικότητα. Διαβάθμιση : Mε δεκάδες εκατομμύρια προορισμούς: δεν μπορούν όλοι οι προορισμοί να αποθηκεύονται στους πίνακες δρομολόγησης. η ανταλλαγή των πινάκων δρομολόγησης θα ‘πλημμύριζε’ τους συνδέσμους. Αυτονομία των administrators: internet = δίκτυο δικτύων κάθε administrator δικτύου θέλει να ελέγχει τη δρομολόγηση στο δικό του δίκτυο.
ιεραρχική δρομολόγηση
Inter-AS δρομολόγηση
από Β: ‘χρησιμοποιώ BCD’ από G: ‘χρησιμοποιώ GCD’ πύλες (gateways) Πληροφορία που παίρνει ο F από τους γείτονες σχετικά με τον προορισμό D: από Β: ‘χρησιμοποιώ BCD’ από G: ‘χρησιμοποιώ GCD’ από I: ‘χρησιμοποιώ IFGCD’ από Ε: ‘χρησιμοποιώ EFGCD’ LAN’s Ο F χρησιμοποιεί το συντομότερο μονοπάτι, που δεν περνάει από τον ίδιο και είναι σύμφωνο με τα policy constraints του. Ο αλγόριθμος είναι, ουσιαστικά, ο Bellman-Ford (δηλαδή Distance Vector Routing) -> BGP. Δεν έχει όμως το counting to infinity πρόβλημα. Μέσα σε ένα δίκτυο (αυτόνομο σύστημα) χρησιμοποιείται κυρίως ο αλγόριθμος του Dijkstra -> OSPF.
Κλάσεις ΙΡ διευθύνσεων Το prefix δίνει τον αριθμό δικτύου, και το suffix δίνει τον αριθμό του υπολογιστή. Ο αριθμός δικτύου απαιτεί διεθνή συνεννόηση, αλλά ο αριθμός υπολογιστή δίδεται τοπικά. Η διεύθυνση που έχει όλα 1, είναι για limited broadcast. Δρομολόγηση ενός IP datagram
Δρομολόγηση με βάση τη ροή (flow-based routing) προορισμός cij (Kbits/sec) πηγή ένα υποδίκτυο με χωρητικότητες συνδέσμων η κυκλοφορία σε πακέτα/sec και ο πίνακας δρομολόγησης μέσο μήκος πακέτου : x = 800 bits/πακέτο 1 Tij = μij-λij cij μij = (πακέτα/sec) x
Ανάλυση του υποδικτύου της προηγούμενης διαφάνειας, χρησιμοποιώντας μέσο μέγεθος πακέτου τα 800 bits. Η αντίστροφη κυκλοφορία (ΒΑ, CB, κλπ) είναι η ίδια με την ευθεία κυκλοφορία.
Δρομολόγηση πολλαπλών προορισμών (multidestination routing - multicasting) Χρησιμοποιείται ένα δέντρο συντομότερων μονοπατιών ή οποιοδήποτε άλλο γεννητικό δέντρο, το οποίο ‘κλαδεύεται’, ώστε να περιλαμβάνει τους επιθυμητούς προορισμούς. Το πρόβλημα του βέλτιστου ‘multicast tree’ είναι NP-complete.