Você está na página 1de 6

Πολλά εμπορικά switches και routers σήμερα υλοποιούν την output queuing.

Όταν ένα πακέτο


φθάνει σε ένα oq-switch τοποθετείται αμέσως σε μια ουρά που είναι αφιερωμένη στην γραμμή
εξόδου, όπου και θα περιμένει μέχρι να αναχωρήσει από το switch. Αυτή η προσέγγιση μεγιστοποιεί
την ρυθμαπόδοση του switch. Αφού δεν υπερκαλύπτεται ούτε η είσοδος ούτε η έξοδος, το switch
μπορεί να υποστηρίξει την κίνηση και τις κατοχές των ουρών που παραμένουν οριοθετημένες.

Η χρήση ξεχωριστής ουράς για κάθε έξοδο σημαίνει ότι οι ροές των πακέτων για διαφορετικές
εξόδους φυλάσσονται ξεχωριστά, και δεν αλληλεπιδρούν μεταξύ τους. Δρομολογώντας προσεκτικά τον
χρόνο που ένα πακέτο τοποθετείται σε μια γραμμή εξόδου, ένα switch ή ένα router μπορεί να ελέγξει
την καθυστέρηση του πακέτου, και έτσι παρέχει εγγυήσεις για QoS (Quality of Service). Αλλά αυτή η
μέθοδος δεν είναι πρακτική για switches με υψηλό εύρος γραμμής, ή για ένα μεγάλο αριθμό θυρών: Το
υλικό και η μνήμη ενός ΝxN switch πρέπει να τρέχει Ν φορές γρηγορότερα από το εύρος γραμμής.
Δυστυχώς, στους υψηλότερους ρυθμούς γραμμής, μνήμες με αρκετό εύρος ζώνης απλά δεν είναι
διαθέσιμες. Για παράδειγμα ένας 32x32 oq switch λειτουργεί με εύρος γραμμής 10GBits/sec. Αν
χρησιμοποιήσουμε 512 Bit μονοπάτι μνήμης, χρειαζόμαστε συσκευές μνήμης που μπορούν να
εκτελέσουν τις διαδικασίες εγγραφής και ανάγνωσης σε 1,6 ns.

Από την άλλη, το υλικό και η μνήμη ενός input queued (iq) switch χρειάζεται να τρέχει όσο και
το εύρος γραμμής. Αυτό κάνει το iq πολύ ελκυστικό για switches με γρήγορο εύρος γραμμής, ή με
μεγάλο αριθμό θυρών. Αυτό σημαίνει ότι, για μία δοσμένη ταχύτητα μνήμης είναι πιθανό να
φτιάξουμε ένα ταχύτερο switch, ή για ένα switch ορισμένης ταχύτητας είναι πιθανό να
χρησιμοποιήσουμε βραδύτερες, μικρότερου κόστους συσκευές μνήμης. Στο προηγούμενο παράδειγμα,
αν το switch χρησιμοποιεί iq αντί για oq, μπορούμε να χρησιμοποιήσουμε συσκευές μνήμης που
εκτελούν μια διαδικασία εγγραφής και ανάγνωσης σε 51,2ns. Αυτό είναι εφικτό με τις εμπορικά
διαθέσιμες μνήμες.

Αλλά το κύριο πρόβλημα του iq switching, είναι το Head-of-line (HOL) blocking που μπορεί να
έχει σοβαρές επιπτώσεις στην ρυθμαπόδοση. Είναι γνωστό ότι αν κάθε είσοδος διατηρεί μια FIFO, τότε
το HOL blocking μπορεί να περιορίσει την ρυθμαπόδοση στο 58.6%.

Μία μέθοδος που προτάθηκε για να μειωθεί το HOL blocking είναι να αυξήσουμε το speedup
του switch. Ένα switch με speedup S μπορεί να αφαιρέσει S πακέτα από κάθε είσοδο και να μεταφέρει
S πακέτα σε κάθε έξοδο σε μία χρονική στιγμή, όπου η χρονική στιγμή είναι ο χρόνος μεταξύ την άφιξη
των πακέτων στις θύρες εισόδου. Έτσι ένα oq-switch έχει speedup Ν ενώ ένα iq-switch έχει speedup 1.
Για τιμές του S μεταξύ 1 και Ν, τα πακέτα πρέπει να αποθηκευτούν σε buffers στις εισόδους πριν το
switch, όπως και στις εξόδους μετά το switch. Ονομάζουμε αυτήν την αρχιτεκτονική combined input
and output queued (CIOQ) switch.

Αναλυτικές μελέτες και εξομοιώσεις του CIOQ switch, το οποίο διατηρεί ένα από FIFO σε κάθε
είσοδο, έχουν διεξαχθεί για διάφορες τιμές του speedup. Ένα κοινό συμπέρασμα αυτών των μελετών
είναι ότι για S=4 ή 5, μπορούμε να πετύχουμε 99% ρυθμαπόδοση όταν οι αφίξεις είναι ανεξάρτητες και
ιδανικά διαμοιρασμένες σε κάθε είσοδο, και η κατανομή των προορισμών των πακέτων είναι
ομοιόμορφη στις εξόδους.
Αλλά έχει αποδειχθεί ότι ρυθμαπόδοση 100% επιτυγχάνεται για speedup ένα, αν κανονίσουμε
τις ουρές εισόδου διαφορετικά. Έτσι το HOL blocking μπορεί να εξαλειφθεί οριστικά χρησιμοποιώντας
ένα σχήμα γνωστό ως virtual output queuing στο οποίο κάθε είσοδος διατηρεί μα ξεχωριστή ουρά για
κάθε έξοδο. Για ανεξάρτητες αφίξεις η ρυθμαπόδοση ενός iq-switch αυξάνεται στο 100%. Συμπέρασμα:
το speedup δεν είναι απαραίτητο για να εξαλειφθεί το φαινόμενο του HOL blocking.

Στην πράξη, δεν ενδιαφερόμαστε μόνο για την ρυθμαπόδοση ενός switch, αλλά και για την
καθυστέρηση των ξεχωριστών πακέτων. Αυτό είναι ιδιαίτερα σημαντικό προκειμένου να προσφέρουμε
QoS εγγυήσεις. Τα πακέτα σε έναν iq-switch δεν ανταγωνίζονται μόνο για μια έξοδο, αλλά και για να
μπουν στο υλικό του switch με άλλα πακέτα που προορίζονται για άλλες εξόδους. Αυτό το φαινόμενο
ονομάζεται contention. Κάθε είσοδος μπορεί να παραδώσει μόνο ένα πακέτο στο υλικό κάθε φορά. Αν
έχει πακέτα για διάφορες ελεύθερες εισόδους, πρέπει να διαλέξει μόνο ένα να παραδώσει, κρατώντας
τα υπόλοιπα πακέτα πίσω. Έτσι ένα πακέτο αφήνεται στο έλεος άλλων πακέτων προορισμένων για
άλλες εξόδους. Αυτό είναι σε ισχυρή αντίθεση με το oq, όπου ένα πακέτο είναι ανεπηρέαστο από άλλα
πακέτα προορισμένα για άλλες εξόδους. Συμπέρασμα: για να ελέγξουμε την καθυστέρηση,
χρειαζόμαστε έναν μηχανισμό για να εξαλείψουμε το contention εισόδου.

Προηγούμενες έρευνες των CIOQ switches δεν εγγυώνται τίποτα για την καθυστέρηση ενός
πακέτου. Αντί για αυτό εξετάζουν μόνο την μέση καθυστέρηση και την ρυθμαπόδοση. Ενώ αυτά τα
αποτελέσματα είναι ακαδημαϊκά ενδιαφέροντα, δεν μας δίνουν το κύριο κέρδος του oq: την ικανότητα
να ελέγχουμε την καθυστέρηση των ανεξάρτητων πακέτων. Πιστεύουμε ότι ένα καλά σχεδιασμένο
δικτυακό switch, θα πρέπει να λειτουργεί αναμενόμενα σε όλους τους τύπους στην διαδικασία άφιξης,
επιτρέποντας την καθυστέρηση των ανεξάρτητων πακέτων να ελέγχεται. Έτσι η προσέγγιση μας είναι
λίγο διαφορετική, και τα αποτελέσματα συμπεριλαμβάνουν την προηγούμενη δουλειά. Αντί να βρούμε
τιμές του speedup που να λειτουργούν καλά κατά μέσο όρο, βρίσκουμε το ελάχιστο speedup για το
οποίο ένα CIOQ switch συμπεριφέρεται ιδανικά σε ένα οq-switch για όλους τους τύπους της κίνησης.
Δηλαδή, όταν οι ίδιες είσοδοι εφαρμόζονται και στο οq και στο CIOQ switch, οι αντίστοιχες διαδικασίες
εξόδου είναι εντελώς δυσδιάκριτες. Δύο διαδικασίες είναι δυσδιάκριτες αν και μόνο αν οι ακολουθίες
πακέτων τους είναι πανομοιότυπες. Επιπλέον δεν υπάρχουν περιορισμοί στις αφίξεις. Τα
αποτελέσματα εφαρμόζονται σε κάθε τύπο κίνησης ακόμα και αν κάνουν το switch κορεσμένο.

Η ανάγκη για ένα switch που μπορεί να φέρει ένα συγκεκριμένο βαθμό υπηρεσιών, ανεξάρτητα
από την κίνηση είναι ιδιαίτερα σημαντική με βάση τον αριθμό των πρόσφατων ερευνών που δείχνουν
πόσο λίγο αντιλαμβανόμαστε τις διαδικασίες κίνησης του δικτύου. Όντως ένα σοβαρό συμπέρασμα
από αυτές τις μελέτες είναι ότι δεν είναι ακόμα δυνατό, να μοντελοποιήσουμε με ακρίβεια, ή να
εξομοιώσουμε την αληθινή κίνηση του δικτύου. Επιπλέον, νέες εφαρμογές, πρωτόκολλα ή μηχανισμοί
μπορεί να φέρουν νέους τύπους κίνησης στο μέλλον.

Η διατύπωση που παρουσιάζουμε είναι καινοτόμος και ισχυρή: μας επιτρέπει να αποκτήσουμε
έναν αλγόριθμο που ενεργοποιεί ένα CIOQ switch να λειτουργεί ακριβώς όπως ένα oq switch,
χρησιμοποιώντας συσκευές μνήμης πιο αργές, για διαφορετικά μεγέθη switch, και διαφορετικά
πρότυπα κίνησης εισόδου.
2. Ακριβής απομίμηση του OQ

Σκεφτείτε το NxN switch του σχήματος 1. Υποθέτουμε ότι τα πακέτα αρχίζουν να καταφθάνουν
την στιγμή t=1 και προηγουμένως το switch ήταν άδειο. Αν και τα πακέτα μπορεί να έχουν ποικίλο
μήκος, θα υποθέσουμε ότι αντιμετωπίζονται εσωτερικά σε καθορισμένο μέγεθος κελιών. Αυτή είναι
κοινή πρακτική σε υψηλής απόδοσης LAN switches. Τα πακέτα μοιράζονται σε κελιά στην άφιξη,
μεταφέρονται κατά μήκος του switch σαν κελιά και ενώνονται ξανά σε πακέτα πριν την αναχώρηση.
Παίρνουμε τον χρόνο άφιξης μεταξύ των κελιών σαν την βασική μονάδα χρόνου. Το switch έχει
speedup S, αν μπορούμε να αφαιρέσουμε S κελιά από κάθε είσοδο και να μεταφέρουμε S κελιά σε
κάθε έξοδο σε μία μονάδα χρόνου. Ένα speedup S απαιτεί το υλικό του switch να τρέχει S φορές
γρηγορότερα από το εύρος γραμμής. Για S=1 και S=N έχουμε iq και oq switch αντίστοιχα. Για 1<S<N
έχουμε buffers εισόδου και εξόδου που οδηγούν σε CIOQ αρχιτεκτονική. Το ακόλουθο είναι το
πρόβλημα που πρέπει να επιλύσουμε.

Το speedup πρόβλημα. Καθορίστε την μικρότερη τιμή του S, Smin, και έναν κατάλληλο
αλγόριθμο δρομολόγησης κελιών π που

1. Επιτρέπει σε ένα CIOQ switch να μιμείται ακριβώς την απόδοση ενός oq switch
2. Το πετυχαίνει για οποιοδήποτε αυθαίρετο πρότυπο κίνησης εισόδου
3. Είναι ανεξάρτητο από το μέγεθος του switch

Εικόνα 1

Σε ένα OQ- switch τα αφιχθέντα κελιά προωθούνται αμέσως στις αντίστοιχες εξόδους. Αυτό (α)
εξασφαλίζει ότι οι έξοδοι δεν θα μείνουν ποτέ στην αναμονή για πολύ όσο υπάρχει ένα κελί
προορισμένο για αυτές στο σύστημα, και (β) επιτρέπει την αναχώρηση των κελιών να δρομολογηθεί
για να ικανοποιήσει τους περιορισμούς καθυστέρησης. Εξαιτίας αυτών των χαρακτηριστικών ένα oq
switch έχει την μεγαλύτερη δυνατή ρυθμαπόδοση και επιτρέπει έναν αυστηρό έλεγχο για την
καθυστέρηση κελιών που είναι σημαντικά για την υποστήριξη πολλαπλών QoS. Θα απαιτήσουμε κάθε
λύση του προβλήματος να κατέχει αυτές τις δύο προδιαγραφές. Ένα CIOQ switch πρέπει να μιμείται
ακριβώς την απόδοση του oq switch με την ακόλουθη έννοια:
Ιδανική συμπεριφορά: έχουμε ένα oq-switch του οποίου οι buffers εξόδου είναι FIFO. Ένα CIOQ switch
συμπεριφέρεται ιδανικά σε ένα oq-switch αν, με ιδανικές εισόδους, ο χρόνος αναχώρησης κάθε κελιού
και από τα δύο switches είναι ιδανικός.

Υποθέτουμε ότι οι buffers εισόδου και εξόδου έχουν άπειρη χωρητικότητα. Κάθε είσοδος
διατηρεί μια ξεχωριστή FIFO ουρά για κελιά προορισμένη για κάθε έξοδο. Έτσι υπάρχουν Ν FIFO ουρές
σε κάθε είσοδο. Ονομάζουμε αυτές τις ουρές Virtual Output Queues (VOQs). Οι buffers εξόδου ενός
CIOQ switch δεν είναι απαραίτητα FIFO, αν και στο oq switch του οποίου την απόδοση μιμείται έχει
FIFO buffers εξόδου.

Ένας αλγόριθμος δρομολόγησης επιλέγει να ταιριάξει τις εισόδους με τις εξόδους με τέτοιο
τρόπο, ώστε κάθε μη άδεια είσοδος αντιστοιχίζεται με το πολύ μία έξοδο και κάθε έξοδος
αντιστοιχίζεται με το πολύ μία είσοδο. Η αντιστοίχιση γίνεται για να ρυθμιστεί το switch πριν
μεταφερθούν τα κελιά από την είσοδο στην έξοδο. Ένα CIOQ switch με speedup S μπορεί να κάνει S
τέτοιες μεταφορές σε κάθε χρονική μονάδα.

3 MUCFA ένας αλγόριθμος δρομολόγησης που επιτυγχάνει ιδανική συμπεριφορά

Ο αλγόριθμος ονομάζεται Most Urgent Cell First Algorithm (MUCFA).

Ορισμός. Για ένα switch με speedup S, μια χρονική μονάδα μοιράζεται σε S ίσες φάσεις. Κατά τη
διάρκεια της κάθε φάσης, το switch μπορεί να αφαιρέσει το πολύ ένα κελί από κάθε είσοδο και να
μεταφέρει το πολύ ένα κελί σε κάθε έξοδο.

Υποθέτουμε ότι τα κελιά φθάνουν στο switch στην φάση 1 και αναχωρούν στην φάση S.

Ένα κρίσιμο κομμάτι του MUCFA είναι το «επείγον του κελιού». Το επείγον του κελιού
εξηγείται με την αναφορά στο OQ-switch. Κάθε άφιξη στο switch, σφραγίζεται με έναν αριθμό που
είναι η «επείγουσα τιμή». Αυτός ο αριθμός υποδεικνύει τον χρόνο από το παρόν που θα αναχωρήσει
από το switch. Όταν η τιμή φτάσει στο μηδέν το κελί θα αναχωρήσει. Εναλλακτικά, αφού οι buffers
είναι FIFO, το επείγον του κελιού σε κάθε στιγμή ισούται με τον αριθμό των κελιών μπροστά του στον
buffer εξόδου.

Πιο συγκεκριμένα αν ένα κελί c φθάσει στην είσοδο i την στιγμή Τ και αναχωρεί από την έξοδο j
την στιγμή D>T, το επείγον οποιαδήποτε στιγμή R είναι D-R. Υποθέτουμε ότι υπάρχουν δύο κελιά α και
β, στον buffer στην έξοδο j κάποια στιγμή με επείγοντα u(α) και u(β). Το α είναι πιο επείγον αν
u(α)<u(β). Αφού ο buffer εξόδου είναι FIFO, είναι σαφές ότι αν το β φτάσει στο switch μετά το α τότε
απαραίτητα u(α)<u(β). Αν τα α και β φτάσουν ταυτόχρονα, τότε u(α)<u(β) αν και μόνο αν ο αριθμός της
θύρας εισόδου που φτάνει το α είναι μικρότερος από τον αριθμό της θύρας εισόδου που φτάνει το β.
To oq-switch μεταφέρει κελιά από τις εισόδους στις εξόδους με την μέθοδο round robin αρχίζοντας με
την είσοδο με την μικρότερη τιμή.
Εικόνα 2

Στο CIOQ switch, εφαρμόζουμε την ίδια είσοδο με το oq-switch. Αφού το speedup μπορεί να
είναι μικρότερο από Ν, το c μπορεί να προωθηθεί στο buffer j κατά τη διάρκεια του Τ. To c μπορεί να
μην χρειάζεται στη έξοδο j για κάποιο χρόνο, επειδή ο κλώνος του στο oq απέχει από το HOL. Έτσι το
επείγον είναι ένας δείκτης του πόσο χρόνο είναι στον buffer το c μέχρι να χρειαστεί.

Ορισμός. Το επείγον ενός κελιού στο CIOQ switch οποιαδήποτε στιγμή είναι η απόσταση του κλώνου
του από την κεφαλή του buffer εξόδου στην αντίστοιχη αναφορά στο oq-switch.

Τα κελιά σε οποιονδήποτε buffer εξόδου ταξινομούνται με αύξουσα σειρά επείγοντος, με το


πιο επείγον κελί στην κορυφή.

Περιγραφή του αλγορίθμου MUCFA

1. Στην αρχή κάθε φάσης, οι έξοδοι προσπαθούν να αποκτήσουν τα πιο επείγοντα κελιά από
τις εισόδους.
2. Αν περισσότερες από μία έξοδοι απαιτούν μια είσοδο, η είσοδος θα δοθεί στην έξοδο της
οποίας το κελί έχει τον μικρότερο επείγον αριθμό. Αν υπάρχει ισοπαλία, κερδίζει η έξοδος
με τον μικρότερο αριθμό θύρας.
3. Οι έξοδοι που χάνουν την κόντρα σε μια είσοδο θα προσπαθήσουν να αποκτήσουν το
επόμενο επείγον κελί από μια άλλη είσοδο
4. Όταν δεν υπάρχουν άλλα δυνατά ταιριάσματα εισόδων και εξόδων, τα κελιά μεταφέρονται
και ο αλγόριθμος προχωράει στην επόμενη φάση.

Η διεργασία του MUCFA σε μία χρονική στιγμή απεικονίζεται στην εικόνα 3. Στην έναρξη της φάσης 1,
οι έξοδοι 1 και 2 ζητάνε την είσοδο 1. Αφού υπάρχει ισοπαλία, η είσοδος 1 δίνεται στην έξοδο 1. Η
έξοδος 2 προχωράει στην απόκτηση του επόμενου επείγοντος κελιού που είναι στην είσοδο 2.

Υπάρχουν 2 λόγοι για τους οποίους ένα κελί δεν θα μεταφερθεί από την είσοδο στην έξοδο:

1. Η έξοδος είναι έτοιμη να δεχθεί ένα κελί αλλά η είσοδος θέλει να στείλει ένα πιο επείγον.
2. Η είσοδος θέλει να στείλει το κελί, αλλά η έξοδος θέλει να δεχθεί ένα πιο επείγον.
Εικόνα 3

Τα κύρια αποτελέσματα

Θεώρημα 1 Ένα NxN CIOQ switch που λειτουργεί με τον MUCFA μπορεί να συμπεριφερθεί ιδανικά σε
ένα oq-switch, ανεξάρτητα από τα πρότυπα κίνησης εισόδου και για αυθαίρετες τιμές του Ν αν το
speedup S είναι μεγαλύτερο ή ίσο με 4.

Ορισμός Σε οποιαδήποτε στιγμή, το νήμα εξόδου ενός κελιού c στην ουρά του VOQ είναι το
ταξινομημένο σύνολο όλων των κελιών c που είναι στο VOQ, και είναι πιο επείγοντα από το c. Το νήμα
της εξόδου j είναι το νήμα εξόδου του λιγότερο επείγοντος κελιού του.

Ορισμός Το νήμα εισόδου ενός κελιού c στην ουρά του VOQ είναι το ταξινομημένο σύνολο όλων των
κελιών c που είναι στο VOQ και είναι πιο επείγοντα από το c. Αν τα p και q έχουν το ίδιο επείγον τότε το
p τοποθετείται πριν το q σε ένα νήμα εισόδου αν η έξοδος του p έχει μικρότερο αριθμό από την έξοδο
του q. Το νήμα εισόδου i είναι το νήμα εισόδου του λιγότερο επείγοντος κελιού του.

Você também pode gostar