TCP/IP Basics (Part IΙI)

Από Κοινότητα Ελεύθερου Λογισμικού ΕΜΠ
Μετάβαση σε: πλοήγηση, αναζήτηση

Το παρόν άρθρο είναι το τρίτο από μια σειρά άρθρων για το TCP/IP.


Σε συνέχεια των πρώτων δύο TCP/IP Basics παρουσιάζουμε το τρίτο κατά σειρά άρθρο της σειράς. Επειδή τα δύο πρώτα ήταν αρκετά βαριά, είπαμε στο τρίτο να ασχοληθούμε με ένα πιο ελαφρύ θέμα, το οποίο όμως είναι εξίσου ενδιαφέρον με τα προηγούμενα. Έτσι, εδώ θα κάνουμε μία συνοπτική παρουσίαση του πρωτοκόλλου IPv6 καθώς και μία σύγκριση με το IPv4. Για την κατανόηση του άρθρου δεν απαιτούνται οι γνώσεις των προηγούμενων.


Ο λόγος που αναπτύχθηκε το IPv6

Το Layer 3 πρωτόκολλο που χρησιμοποιείται σήμερα ευρύτερα από κάθε άλλο είναι το IPv4. Αυτό μας παρέχει την δυνατότητα να έχουμε στο Internet περίπου 4 δισεκατομμύρια διαφορετικές διευθύνσεις. Ο αριθμός ακούγεται σχετικά μεγάλος, αλλά πρέπει να λάβουμε υπόψη κάποια γεγονότα.

  • Το Internet αποκτά ολοένα και περισσότερους χρήστες, με πολυπληθείς χώρες όπως η Κίνα να υιοθετούν ολοένα και ταχύτερα την πρόσβασή τους σε αυτό.
  • Οι IP enabled συσκευές που πωλούνται διεθνώς ολοένα και αυξάνονται. IP TVs, Internet Radios και network controlled ηλεκτρικές συσκευές γίνονται όλο και πιο δημοφιλείς.
  • Πολλοί οικιακοί χρήστες και computer enthusiasts πλέον τρέχουν ιδιωτικούς servers για να παρέχουν διάφορες υπηρεσίες στον κοινωνικό τους περίγυρο και όχι μόνο.
  • Τα κινητά τηλέφωνα και τα PDAs μετατρέπονται από μεμονωμένες συσκευές σε εργαλεία πρόσβασης σε μία σειρά υπηρεσιών που παρέχονται μέσω Internet.
  • Η αυτοκινητοβιομηχανία θέλει να αποδίδει σε κάθε όχημα που κατασκευάζεται μία μοναδική διεύθυνση μέσω της οποίας θα μπορεί να ελέγχει την κατάσταση του οχήματος, καθώς και να παρέχει online υπηρεσίες όπως οι αναβάθμιση firmware και configurations στα επιμέρους τμήματα που το απαρτίζουν.

Με τα παραπάνω, γίνεται κατανοητό ότι οι διευθύνσεις που μας παρέχει το IPv4 πολύ σύντομα θα πληρωθούν και από ένα σημείο και μετά δεν θα υπάρχουν άλλες διαθέσιμες. Μερικές έρευνες τοποθετούν την χρονολογία όπου το πρόβλημα θα εκδηλωθεί όχι νωρίτερα από το 2013, ενώ μερικές προβλέπουν εκδήλωση του προβλήματος εντός του 2010! Όπως και να έχει, το πρόβλημα είναι υπαρκτό και επιβάλλεται η εύρεση μιας λύσης.

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

Βελτιώσεις σε σχέση με το IPv4

Η κύρια λοιπόν βελτίωση που εισάγει το IPv6 σε σχέση με το IPv4 είναι το πλήθος των διαθέσιμων διευθύνσεων. Έναντι των 4 δισεκατομμυρίων του IPv4, το IPv6 παρέχει περίπου 4x10^38 διαφορετικές διευθύνσεις! Για να κατανοήσουμε τον αριθμό αυτό αρκεί να σκεφτούμε ότι για κάθε έναν άνθρωπο πάνω στον πλανήτη μπορεί να αποδώσει μερικές τρισεκατομμύρια διευθύνσεις! Ή σε κάθε τετραγωνικό μέτρο της επιφάνειας του πλανήτη μας μπορούν αποδοθούν μερικές εξάκις εκατομμύρια διαφορετικές διευθύνσεις!! Αυτό πρέπει να είναι υπεραρκετό για να καλύψουν σημερινές αλλά και αρκετά μελλοντικές ανάγκες μας ως ανθρωπότητα.

Όπως αναφέραμε, η δημιουργία του νέου πρωτοκόλλου ήταν μία καλή ευκαιρία για επιπλέον μικρο-βελτιώσεις. Έτσι, οι headers του νέου πρωτοκόλλου είναι κατά πολύ απλούστερες από του IPv4 για ευκολότερη επεξεργασία από τους routers. Επιπλέον για κάποιες λειτουργίες που απαιτείτο decapsulation του IP πακέτου για έλεγχο του Layer 4 πρωτοκόλλου, πλέον η διαδικασία αυτή δεν είναι απαραίτητη. Και τα δύο αυτά αποφορτίζουν τους routers και βελτιώνουν την απόδοση. Επίσης, υπάρχει ενσωματωμένο το IPSec μέσα στο ίδιο το IPv6, υποστηρίζονται multihomed hosts (πχ μέσω ενός φυσικού κυκλώματος μπορούν να υπάρχουν συνδέσεις με πολλαπλούς ISPs, αυτόματες διευθυνσιοδοτήσεις ακόμα και με απουσία DHCP Server, απουσία broadcasting address η οποία προκαλεί σοβαρά προβλήματα σήμερα με το IPv4, καλύτερο support για mobile clients που μετακινούνται από ένα network σε ένα άλλο και διάφορες άλλες! Πρόκειται δηλαδή για ένα overall καλύτερο πρωτόκολλο!

Αναπαράσταση μιας IPv6 διεύθυνσης

Ήρθε η ώρα να δούμε πως δομείται μία IPv6 διεύθυνση. Σε αντίθεση με το IPv4 όπου έχουμε διευθύνσεις των 32 bit, στο IPv6 έχουμε 128 bit για την παράσταση μίας διεύθυνσης. Η αναπαράσταση μίας τέτοιας διεύθυνσης στο χαρτί γίνεται χρησιμοποιώντας το δεκαεξαδικό σύστημα (όχι, νομίζατε ότι θα την γλιτώνατε τόσο εύκολα ;)) και διαχωρίζονται τα bits σε 8 ομάδες των 16 bits (ή των 4 δεκαεξαψήφιων αριθμών). Ένα παράδειγμα είναι το παρακάτω:

FEB0:0000:0000:0000:0000:0000:0000:0001

Αρκετά μακροσκελές δεν είναι; Μην αγχώνεστε όμως. Ο παραπάνω τρόπος είναι αρκετά βαρετός και δύσχρηστος, οπότε υπάρχουν δύο πολύ απλοί κανόνες που κάνουν τα πράγματα ευκολότερα. Όταν σε μία ομάδα ο δεκαεξαδικός ξεκινάει με μηδενικά, αυτά μπορούν να παραληφθούν. Με την εφαρμογή του πρώτου κανόνα, η τελευταία ομάδα από :0001 μπορεί να γίνει σκέτο :1. Οπότε μέχρι στιγμής έχουμε την παρακάτω μορφή.

FEB0:0000:0000:0000:0000:0000:0000:1

Στο συγκεκριμένο παράδειγμα το κέρδος δεν είναι ιδιαίτερα μεγάλο, γενικά όμως βοηθάει τα πράγματα. Ο δεύτερο κανόνας λέει ότι όταν έχουμε διαδοχικές ομάδες που απαρτίζονται εξολοκλήρου από μηδενικά, τότε αυτές μπορούν να συμπτυχθούν με την χρήση του συμβόλου :: (δύο διαδοχικές άνω και κάτω τελείες). Με την εφαρμογή και του δεύτερου κανόνα η IPv6 διεύθυνση του παραδείγματός μας διαμορφώνεται όπως παρακάτω.

FEB0::1

Μην μου πείτε ότι η παραπάνω διεύθυνση δεν είναι απλή!

Προσοχή, ο δεύτερος κανόνας μπορεί να εφαρμοστεί μονάχα μία φορά σε μία διεύθυνση! Για παράδειγμα, η διεύθυνση FEB0:0000:0000:AAAA:0000:0000:0000:1 δεν μπορεί να συμπτυχθεί σε FEB0::AAAA::1. Προφανώς ο λόγος είναι ότι η παραπάνω διεύθυνση δεν αποσαφηνίζει αν πρόκειται για την FEB0:0000:0000:AAAA:0000:0000:0000:1 ή την FEB0:0000:0000:0000:0000:AAAA:0000:1. Προσοχή λοιπόν, ο δεύτερος κανόνας εφαρμόζεται το πολύ μία φορά σε μία IPv6 διεύθυνση!

Δομή μιας IPv6 διεύθυνσης

Είδαμε πως αναπαριστούμε τις διευθύνσεις στο IPv6. Να δούμε τώρα την δομή τους.

Το πρώτο μισό μίας διεύθυνσης, δηλαδή τα πρώτα 64 bits, αποτελεί το Network Prefix. Είναι το αντίστοιχο του Network Address του IPv4. Οι διευθύνσεις των οποίων τα πρώτα 3 bits είναι τα 001 (προσοχή, μιλάμε για τα bits και όχι για τον δεκαεξαδικό 001), τότε πρόκειται για διευθύνσεις Global Unicast, κατά αντιστοιχία των Internet διευθύνσεων του IPv4. Οι διευθύνσεις αυτές διανέμονται από τον οργανισμό IANA στους ISPs, τα ιδρύματα και τους οργανισμούς.

Οι διευθύνσεις που ξεκινούν με FE και το τρίτου δεκαεξαδικό ψηφίο είναι C έως το F ανήκουν στην κατηγορία των site-local διευθύνσεων, οι οποίες αποτελούν το ακριβές αντίστοιχο των Private διευθύνσεων του IPv4. Δεν μπορούν δηλαδή να δρομολογηθούν στο Internet, έχουν όμως τοπική σημασία για τα ιδιωτικά δίκτυα και φυσικά μπορούν να δρομολογηθούν μεταξύ ιδιωτικών δικτύων.

Οι διευθύνσεις που ξεκινούν με FE και το τρίτου δεκαεξαδικό ψηφίο είναι 8 έως το B ανήκουν στην κατηγορία των link-local διευθύνσεων. Οι διευθύνσεις αυτές έχουν επίσης τοπική σημασία, αλλά δεν μπορούν ποτέ να δρομολογηθούν, ακόμα και μεταξύ ιδιωτικών δικτύων. Κάτι αντίστοιχο δεν υπάρχει στο IPv4.

Το υπόλοιπο μισό, δηλαδή τα τελευταία 64 bits αποτελούν το Host ID και προσδιορίζουν μονοσήμαντα έναν host σε ένα δίκτυο.

Στο IPv4 οποιαδήποτε διεύθυνση της μορφής 127.x.x.x, όπου x μπορεί να είναι οτιδήποτε, είναι διεύθυνση loopback. Δηλαδή "δείχνει" στον ίδιο τον host στον οποίο βρισκόμαστε. Στο IPv6 έχουμε μονάχα μία loopback διεύθυνση, την ::1. Απλό δεν είναι;

Τέλος, όταν σε έναν host δεν έχει αποδοθεί κάποια διεύθυνση, τότε η διεύθυνση που έχει είναι η :: και ονομάζεται Unspecified Address. Μία τέτοια περίπτωση είναι ένας host που προσπαθεί να πάρει διεύθυνση από έναν DHCP server, αλλά ακόμα δεν έχει λάβει απάντηση.

Απόδοση διευθύνσεων

Η απόδοση των IP διευθύνσεων σε έναν host μπορεί να γίνει με 4 διαφορετικούς τρόπους

  • Με την κλασσική χειροκίνητη απόδοση, πληκτρολογώντας σε κάθε host μία μοναδική στο δίκτυο διεύθυνση.
  • Με τον τρόπο EUI-64. Σε αυτή την περίπτωση εμείς εισάγουμε μόνο το Network Prefix, ενώ το Host ID εξάγεται αυτόματα με την μέθοδο EUI-64. Η μέθοδος χρησιμοποιεί την MAC Address του network interface. Θυμίζουμε ότι μία MAC Address αποτελείται από 48 bits, ενώ το Host ID από 64. Η MAC Address χωρίζεται σε δύο μέρη των 24 bits. Τα πρώτα 24 bits εισάγονται στην αρχή του Host ID. Στην συνέχεια προστίθεται άλλα 16 bits που είναι πάντα (σε δεκαεξαδική μορφή) ο αριθμός FFFE. Τέλος, τα υπόλοιπα 24 bits της διεύθυνσης συμπληρώνονται με τα υπόλοιπα 24 bits της MAC Address. Σημειώνεται ότι αυτός ο τρόπος είναι ημιαυτόματος, αφού όπως αναφέραμε πρέπει να εισάγουμε χειροκίνητα το Network Prefix.
  • Υπάρχει δυνατότητα για Stateless αυτόματη απόδοση διεύθυνσης, χωρίς όμως να είναι σε καμία περίπτωση ο συνιστώμενος τρόπος.
  • Τέλος, υπάρχει η δυνατότητα της χρήσης ενός DHCPv6 server που θα μοιράζει διευθύνσεις και άλλες ρυθμίσεις (DNS Server, gateways, κλπ) στους hosts του δικτύου.

Μετάβαση από IPv4 σε IPv6

Την ώρα που γράφονται αυτές οι γραμμές, ένα μικρό κομμάτι του Internet έχει ήδη μεταβεί στο IPv6 πρωτόκολλο! Επίσης, μεγάλοι οργανισμοί (όπως πχ η Microsoft) έχουν μεταφέρει ολόκληρο το ιδιόκτητο δίκτυό τους σε παγκόσμια κλίμακα στο IPv6 εδώ και μερικά χρόνια. Προφανώς, κανείς δεν περιμένει ότι ολόκληρο το Internet θα μεταβεί από το IPv4 στο IPv6 μέσα σε 1 λεπτό που θα καθορίσουμε όλοι μαζί σε στυλ ραντεβού. Η μετάβαση θα γίνει επιμεριστικά και ο κάθε ιδιώτης, εταιρεία, οργανισμός, κλπ θα αποφασίσει ο ίδιος πότε θα κάνει την μετάβαση. Άλλωστε, μην ξεχνάμε ότι μία τέτοια μετάβαση έχει τεράστιο κόστος καθώς απαιτείται επιμόρφωση των τεχνικών τμημάτων, αγορά και αναβάθμιση του εξοπλισμού, αλλαγές στην εσωτερική οργάνωση των δικτύων, ειδικά σε μεγάλες εγκαταστάσεις όπου υπάρχουν πολλά ιδιωτικά δίκτυα του ίδιου οργανισμού που διασυνδέονται μεταξύ τους. Έπρεπε λοιπόν να βρεθούν κάποιο τρόποι ώστε να μπορεί να γίνει αυτή η μετάβαση με τρόπο ομαλό, ο οποίος θα επιτρέπει την συνύπαρξη και την μεταξύ τους διαδραστικότητα των δικτύων IPv4 και IPv6. Φυσικά, αυτό πρέπει να το έχουμε στο μυαλό μας ως ένα μεταβατικό στάδιο μέχρι όλα τα δίκτυα στον κόσμο να μεταβούν σε IPv6, κάτι που δυστυχώς θα πάρει αρκετές δεκαετίες για να γίνει.

Το θέμα είναι μεγάλο και έχει πολλές τεχνικές λεπτομέρειες, οπότε δεν θα αναλύσουμε τις τεχνικές, ούτε φυσικά θα τις αναφέρουμε όλες.

Η τεχνική Dual Stack είναι η πιο διαδεδομένη και επιτρέπει σε ένα δίκτυο να υπάρχουν ταυτόχρονα hosts που λειτουργούν με IPv4 και άλλους με IPv6. Ο router που υποστηρίζει αυτή την εγκατάσταση θα πρέπει να εκτελεί τόσο την διεργασία IPv4 routing όσο και την IPv6, εξ ου και η ονομασία Dual Stack. Αυτό επιβαρύνει τον router, αλλά δίνει την δυνατότητα της ταυτόχρονης υποστήριξης IPv4 και IPv6.

Μία άλλη μεγάλη κατηγορία τεχνικής για την επίτευξη της μετάβασης από το IPv4 στο IPv6 είναι το tunneling. Μεταξύ άλλων, αναφέρουμε το 6to4 manual tunneling, 6to4 dynamic tunneling και το λιγότερο διαδεδομένο και αρκετά πιο πολύπλοκο NAT-PT tunneling. Κάθε ένα καλύπτει διαφορετικές περιπτώσεις και ανάγκες. Η γενική ιδέα του tunneling είναι η ενθυλάκωση ενός IPv4 πακέτου σε ένα IPv6 και αντίστροφα. Οι routers που υποστηρίζουν τέτοιες εγκαταστάσεις οφείλουν να κάνουν encapsulation και decapsulation τα IP πακέτα από την μία έκδοση IP στην άλλη για την επικοινωνία των ανομοιογενών δικτύων. Κάτι τέτοιο προϋποθέτει την λειτουργία Dual Stack και συνεπώς η επιβάρυνση των routers είναι ακόμα μεγαλύτερη.

Γενικά, το migration από το IPv4 στο IPv6 είναι ένα μεγάλο κεφάλαιο και η περιγραφή των διαφόρων μεθόδων ξεφεύγει τόσο από τους σκοπούς του άρθρου όσο και από τις δικές μας γνώσεις, μέχρι στιγμής τουλάχιστον! ;) Καλό είναι όμως να γνωρίζει αυτά τα επιγραμματικά που αναφέρονται σε αυτή την παράγραφο.

Θέματα που προκύπτουν από την υιοθέτηση του IPv6

Με την μετάβαση στο IPv6 εγείρονται διάφορα θέματα κυρίως τεχνικής φύσεως. Πέρα από την επιμόρφωση των τεχνικών τμημάτων, τις αλλαγές στα δίκτυα, τα λειτουργικά συστήματα και τις εφαρμογές και την αγορά και αναβάθμιση του εξοπλισμού, υπάρχουν θέματα που αφορούν την ίδια την διαδικασία του routing και την διαχείριση των IPv6 πακέτων. Οι διευθύνσεις στο IPv6 έχουν τετραπλάσιο μέγεθος από αυτές στο IPv4, γεγονός που επηρεάζει την λειτουργία των routers και όχι μόνο. Οι περισσότερες συσκευές είναι υλοποιημένες με ολοκληρωμένα κυκλώματα ASIC που μπορούν να διαχειρίζονται πολύ γρήγορα σε hardware επίπεδο τα IP πακέτα. Αυτά όμως είναι υλοποιημένα με 64 bit καταχωρητές (source και destination address) και γενικά είναι φτιαγμένα για να διαχειρίζονται 32 bit διευθύνσεις. Για την αποδοτική διαχείριση των IPv6 πακέτων πρέπει είτε να γίνει ένα είδος emulation της λειτουργίας των ASIC κυκλωμάτων είτε να κατασκευαστούν νέα που θα υποστηρίζουν εγγενώς το IPv6. Το πρώτο επιφέρει σημαντικές μειώσεις στην απόδοση των routers και αυξάνει κατά πολύ το φόρτο εργασίας τους, ενώ το δεύτερο αυξάνει το κόστος.

Επιπλέον, το IPv6 επιτρέπει ένας host να έχει πολλαπλές διευθύνσεις (multihomed hosts). Αυτό σημαίνει ότι στο routing table ενός router θα πρέπει να υπάρχουν πολλαπλές καταχωρήσεις για έναν host, κάθε μία από τις οποίες θα καταλαμβάνει στη μνήμη τετραπλάσιο χώρο από τις αντίστοιχες του IPv4. Αυτό αυξάνει τις απαιτήσεις τόσο σε μνήμη όσο και σε ταχύτητα, αφού κάθε αναζήτηση γίνεται ανάμεσα σε μεγαλύτερο όγκο δεδομένων.

Πρόκειται κυρίως για τεχνικά θέματα που αφορούν τους μηχανικούς που σχεδιάζουν τους routers τόσο σε hardware όσο και software επίπεδο και έχουν σαφές οικονομικό αντίκτυπο στα τελικά προϊόντα. Σαφώς υπάρχουν περισσότεροι παράμετροι που πρέπει να έχει κανείς υπόψη του. Εμείς εδώ κάνουμε αυτή την απλή αναφορά για να αποκτήσει ο αναγνώστης μια γενική ιδέα των προβλημάτων που εγείρονται από το IPv6.

Συμπεράσματα

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

Σαφώς υπάρχουν πολλές άλλες πληροφορίες που πρέπει να μάθει κανείς γύρω από το IPv6 για να πει ότι έχει πλήρη γνώση. Εδώ εμείς κάναμε μία προσπάθεια να δώσουμε μία γενική εικόνα, σαν μία πρώτη γεύση και σαν κίνητρο ο αναγνώστης να ασχοληθεί περισσότερο με το θέμα και να αναζητήσει περισσότερες πληροφορίες από άλλες πηγές.

Enjoy! ;)