Πραγματική άθροιση καναλιών Διαδικτύου - OpenMPTCPRouter

Πραγματική άθροιση καναλιών Διαδικτύου - OpenMPTCPRouter

Είναι δυνατός ο συνδυασμός πολλών καναλιών Διαδικτύου σε ένα; Υπάρχουν πολλές παρανοήσεις και μύθοι γύρω από αυτό το θέμα, ακόμη και έμπειροι μηχανικοί δικτύου συχνά δεν γνωρίζουν ότι αυτό είναι δυνατό. Στις περισσότερες περιπτώσεις, η συνάθροιση συνδέσμων αναφέρεται λανθασμένα ως εξισορρόπηση NAT ή ανακατεύθυνση. Αλλά η πραγματική άθροιση επιτρέπει εκτελέστε μία μόνο σύνδεση TCP ταυτόχρονα σε όλα τα κανάλια Διαδικτύου, για παράδειγμα, μετάδοση βίντεο έτσι ώστε εάν διακοπεί κάποιο από τα κανάλια του Διαδικτύου, η μετάδοση δεν θα διακόπτεται.

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

Μύθοι για άθροιση καναλιών

Υπάρχουν πολλοί οικιακόι δρομολογητές που υποστηρίζουν τη λειτουργία Multi-WAN. Μερικές φορές οι κατασκευαστές αποκαλούν αυτό το κανάλι άθροιση, κάτι που δεν είναι απολύτως αληθές. Πολλοί δικτυωτές πιστεύουν ότι εκτός από LACP και άθροιση στο επίπεδο L2, δεν υπάρχει άλλη συνάθροιση καναλιών. Άκουσα συχνά ότι αυτό είναι γενικά αδύνατο από άτομα που εργάζονται στις τηλεπικοινωνίες. Επομένως, ας προσπαθήσουμε να κατανοήσουμε τους δημοφιλείς μύθους.

Εξισορρόπηση σε επίπεδο συνδέσεων IP

Αυτός είναι ο πιο προσιτός και δημοφιλής τρόπος για να χρησιμοποιήσετε πολλά κανάλια Διαδικτύου ταυτόχρονα. Για απλότητα, ας φανταστούμε ότι έχετε τρεις ISP, ο καθένας σας δίνει μια πραγματική διεύθυνση IP από το δίκτυό του. Όλοι αυτοί οι πάροχοι είναι συνδεδεμένοι σε δρομολογητή με υποστήριξη για τη λειτουργία Multi-WAN. Αυτό μπορεί να είναι το OpenWRT με το πακέτο mwan3, το mikrotik, το ubiquiti ή οποιοδήποτε άλλο οικιακό δρομολογητή, αφού πλέον αυτή η επιλογή δεν είναι πλέον ασυνήθιστη.

Για να προσομοιώσετε την κατάσταση, φανταστείτε ότι οι πάροχοι μας έδωσαν τις ακόλουθες διευθύνσεις:

WAN1 — 11.11.11.11
WAN2 — 22.22.22.22
WAN2 — 33.33.33.33

Δηλαδή σύνδεση σε απομακρυσμένο διακομιστή example.com μέσω καθενός από τους παρόχους, ο απομακρυσμένος διακομιστής θα δει τρεις ανεξάρτητες ip πηγής του πελάτη. Η εξισορρόπηση σάς επιτρέπει να διαιρείτε το φορτίο στα κανάλια και να τα χρησιμοποιείτε και τα τρία ταυτόχρονα. Για απλότητα, ας φανταστούμε ότι μοιράζουμε το φορτίο σε όλα τα κανάλια εξίσου. Ως αποτέλεσμα, όταν ένας πελάτης ανοίγει έναν ιστότοπο με τρεις εικόνες υπό όρους, πραγματοποιεί λήψη κάθε εικόνας μέσω ενός ξεχωριστού παρόχου. Στην πλευρά του ιστότοπου, μοιάζει με συνδέσεις από τρεις διαφορετικές IP.

Πραγματική άθροιση καναλιών Διαδικτύου - OpenMPTCPRouter
Κατά την εξισορρόπηση σε επίπεδο σύνδεσης, κάθε σύνδεση TCP περνά από ξεχωριστό πάροχο.

Αυτή η λειτουργία εξισορρόπησης προκαλεί συχνά προβλήματα στους χρήστες. Για παράδειγμα, πολλοί ιστότοποι ενώνουν cookie και διακριτικά στη διεύθυνση IP του πελάτη και, αν αλλάξει ξαφνικά, το αίτημα απορρίπτεται ή ο πελάτης αποσυνδέεται από τον ιστότοπο. Αυτό αναπαράγεται συχνά σε συστήματα πελατών-τραπεζών και άλλους ιστότοπους με αυστηρούς κανόνες συνεδρίας χρήστη. Ακολουθεί ένα απλό ενδεικτικό παράδειγμα: τα αρχεία μουσικής στο VK.com είναι διαθέσιμα μόνο με ένα έγκυρο κλειδί περιόδου λειτουργίας που είναι δεσμευμένο σε IP, και οι πελάτες που χρησιμοποιούν τέτοια εξισορρόπηση συχνά δεν παίζουν ήχο, επειδή το αίτημα δεν πέρασε από τον πάροχο στον οποίο η συνεδρία είναι δεσμευμένη.

Πραγματική άθροιση καναλιών Διαδικτύου - OpenMPTCPRouter
Κατά τη λήψη torrents, η εξισορρόπηση σε επίπεδο σύνδεσης αθροίζει το εύρος ζώνης όλων των καναλιών

Αυτή η εξισορρόπηση σάς επιτρέπει να λαμβάνετε το άθροισμα της ταχύτητας του καναλιού Διαδικτύου όταν χρησιμοποιείτε πολλαπλές συνδέσεις. Για παράδειγμα, αν ο καθένας από τους τρεις παρόχους έχει ταχύτητα 100 megabit, τότε κατά τη λήψη torrents θα έχουμε 300 megabit. Επειδή το torrent ανοίγει πολλές συνδέσεις που διανέμονται σε όλους τους παρόχους και τελικά χρησιμοποιούν ολόκληρο το κανάλι.

Είναι σημαντικό να κατανοήσετε ότι μία μεμονωμένη σύνδεση TCP θα περνά πάντα από έναν μόνο πάροχο. Δηλαδή, αν κάνουμε λήψη ενός μεγάλου αρχείου μέσω HTTP, τότε αυτή η σύνδεση θα γίνει μέσω ενός από τους παρόχους και αν διακοπεί η σύνδεση με αυτόν τον πάροχο, τότε θα διακοπεί και η λήψη.

Πραγματική άθροιση καναλιών Διαδικτύου - OpenMPTCPRouter
Μία σύνδεση θα χρησιμοποιεί πάντα μόνο ένα κανάλι Διαδικτύου

Αυτό ισχύει και για τις εκπομπές βίντεο. Εάν μεταδώσετε βίντεο ροής σε κάποιο Twitch υπό όρους, τότε η εξισορρόπηση στο επίπεδο των συνδέσεων IP δεν θα αποφέρει κανένα ιδιαίτερο όφελος, καθώς η ροή βίντεο θα μεταδοθεί σε μία σύνδεση IP. Σε αυτήν την περίπτωση, εάν ο πάροχος WAN 3 αρχίσει να αντιμετωπίζει προβλήματα επικοινωνίας, όπως απώλεια πακέτων ή επιβράδυνση, τότε δεν θα μπορείτε να μεταβείτε αμέσως σε άλλο πάροχο. Η μετάδοση θα πρέπει να διακοπεί και να επανασυνδεθεί.

Αληθινή σύνοψη καναλιών

Η πραγματική άθροιση των καναλιών καθιστά δυνατή την έναρξη μιας σύνδεσης με το Twitch υπό όρους μέσω όλων των παρόχων ταυτόχρονα με τέτοιο τρόπο ώστε, εάν κάποιος από τους παρόχους διακοπεί, η σύνδεση δεν θα διακοπεί. Αυτό είναι ένα εκπληκτικά δύσκολο πρόβλημα, το οποίο εξακολουθεί να μην έχει τη βέλτιστη λύση. Πολλοί δεν γνωρίζουν καν ότι αυτό είναι δυνατό!

Από τις προηγούμενες εικόνες, θυμόμαστε ότι ο υπό όρους διακομιστής Twitch μπορεί να λάβει μια ροή βίντεο από εμάς μόνο από μία διεύθυνση IP πηγής, πράγμα που σημαίνει ότι πρέπει να είναι πάντα σταθερή μαζί μας, ανεξάρτητα από το ποιοι πάροχοι έχουν πέσει και ποιοι λειτουργούν. Για να το πετύχουμε αυτό, χρειαζόμαστε έναν διακομιστή αθροίσματος που θα τερματίζει όλες τις συνδέσεις μας και θα τις συγχωνεύει σε μία.

Πραγματική άθροιση καναλιών Διαδικτύου - OpenMPTCPRouter
Ο διακομιστής αθροίσματος συγκεντρώνει όλα τα κανάλια σε ένα τούνελ. Όλες οι συνδέσεις προέρχονται από τη διεύθυνση του διακομιστή άθροισης

Αυτό το σχήμα χρησιμοποιεί όλους τους παρόχους και η απενεργοποίηση οποιουδήποτε από αυτούς δεν θα προκαλέσει απώλεια επικοινωνίας με τον διακομιστή Twitch. Στην πραγματικότητα, πρόκειται για μια ειδική σήραγγα VPN, κάτω από την κουκούλα της οποίας υπάρχουν πολλά κανάλια Διαδικτύου ταυτόχρονα. Το κύριο καθήκον ενός τέτοιου σχήματος είναι να αποκτήσει το κανάλι επικοινωνίας υψηλότερης ποιότητας. Εάν ξεκινήσουν προβλήματα σε έναν από τους παρόχους, απώλεια πακέτων, αύξηση των καθυστερήσεων, τότε αυτό δεν πρέπει να επηρεάσει την ποιότητα της επικοινωνίας με κανέναν τρόπο, καθώς το φορτίο θα κατανεμηθεί αυτόματα σε άλλα, καλύτερα κανάλια που είναι διαθέσιμα.

Εμπορικές Λύσεις

Αυτό το πρόβλημα απασχολεί εδώ και καιρό όσους μεταδίδουν ζωντανά εκδηλώσεις και δεν έχουν πρόσβαση σε Internet υψηλής ποιότητας. Για τέτοιες εργασίες, υπάρχουν πολλές εμπορικές λύσεις, για παράδειγμα, η Teradek κατασκευάζει τέτοιους τερατώδεις δρομολογητές στους οποίους εισάγονται πακέτα μόντεμ USB:

Πραγματική άθροιση καναλιών Διαδικτύου - OpenMPTCPRouter
Δρομολογητής μετάδοσης βίντεο με λειτουργία άθροισης καναλιών

Τέτοιες συσκευές έχουν συνήθως τη δυνατότητα λήψης βίντεο μέσω HDMI ή SDI. Μαζί με το δρομολογητή, πωλείται μια συνδρομή στην υπηρεσία άθροισης καναλιών, καθώς και η επεξεργασία της ροής βίντεο, η διακωδικοποίησή της και η περαιτέρω αναμετάδοση της. Η τιμή τέτοιων συσκευών ξεκινά από 2 χιλιάδες δολάρια με ένα σύνολο μόντεμ, συν μια ξεχωριστή συνδρομή στην υπηρεσία.

Μερικές φορές φαίνεται αρκετά τρομακτικό:

Πραγματική άθροιση καναλιών Διαδικτύου - OpenMPTCPRouter

Ρύθμιση του OpenMPTCPRouter

Πρωτόκολλο MP-TCP Το (MultiPath TCP) επινοήθηκε για τη δυνατότητα σύνδεσης σε πολλά κανάλια ταυτόχρονα. Για παράδειγμα, το δικό του υποστηρίζει iOS και μπορεί ταυτόχρονα να συνδεθεί σε έναν απομακρυσμένο διακομιστή μέσω WiFi και μέσω δικτύου κινητής τηλεφωνίας. Είναι σημαντικό να καταλάβετε ότι δεν πρόκειται για δύο ξεχωριστές συνδέσεις TCP, αλλά για μία σύνδεση που δημιουργείται σε δύο κανάλια ταυτόχρονα. Για να λειτουργήσει αυτό, ο απομακρυσμένος διακομιστής πρέπει επίσης να υποστηρίζει MPTCP.

OpenMPTCPRouter είναι ένα έργο δρομολογητή λογισμικού ανοιχτού κώδικα που σας επιτρέπει να αθροίζετε πραγματικά κανάλια. Οι συγγραφείς δηλώνουν ότι το έργο βρίσκεται σε κατάσταση άλφα έκδοσης, αλλά μπορεί ήδη να χρησιμοποιηθεί. Αποτελείται από δύο μέρη - έναν διακομιστή αθροίσματος, ο οποίος βρίσκεται στο Διαδίκτυο και έναν δρομολογητή, στον οποίο είναι συνδεδεμένοι πολλοί πάροχοι Διαδικτύου και οι ίδιοι οι συσκευές-πελάτες: υπολογιστές, τηλέφωνα. Ένας προσαρμοσμένος δρομολογητής μπορεί να είναι ένα Raspberry Pi, κάποιοι δρομολογητές WiFi ή ένας κανονικός υπολογιστής. Υπάρχουν έτοιμα συγκροτήματα για διάφορες πλατφόρμες, κάτι που είναι πολύ βολικό.

Πραγματική άθροιση καναλιών Διαδικτύου - OpenMPTCPRouter
Πώς λειτουργεί το OpenMPTCPRouter

Ρύθμιση διακομιστή περίληψης

Ο διακομιστής άθροισης βρίσκεται στο Διαδίκτυο και τερματίζει τις συνδέσεις από όλα τα κανάλια του δρομολογητή πελάτη σε ένα. Η διεύθυνση IP αυτού του διακομιστή θα είναι η εξωτερική διεύθυνση κατά την πρόσβαση στο Διαδίκτυο μέσω του OpenMPTCPRouter.

Για αυτήν την εργασία, θα χρησιμοποιήσουμε έναν διακομιστή VPS στο Debian 10.

Απαιτήσεις διακομιστή άθροισης:

  • Το MPTCP δεν λειτουργεί σε εικονικοποίηση OpenVZ
  • Θα πρέπει να είναι δυνατή η εγκατάσταση του δικού σας πυρήνα Linux

Ο διακομιστής αναπτύσσεται εκτελώντας μία εντολή. Το σενάριο θα εγκαταστήσει τον πυρήνα με δυνατότητα mptcp και όλα τα απαιτούμενα πακέτα. Τα σενάρια εγκατάστασης είναι διαθέσιμα για το Ubuntu και το Debian.

wget -O - http://www.openmptcprouter.com/server/debian10-x86_64.sh | sh

Το αποτέλεσμα μιας επιτυχημένης εγκατάστασης διακομιστή.

Πραγματική άθροιση καναλιών Διαδικτύου - OpenMPTCPRouter

Αποθηκεύουμε τους κωδικούς πρόσβασης, θα τους χρειαστούμε για τη διαμόρφωση του δρομολογητή πελάτη και την επανεκκίνηση. Είναι σημαντικό να έχετε κατά νου ότι μετά την εγκατάσταση, το SSH θα είναι διαθέσιμο στη θύρα 65222. Μετά την επανεκκίνηση, πρέπει να βεβαιωθούμε ότι κάνουμε εκκίνηση με τον νέο πυρήνα

uname -a 
Linux test-server.local 4.19.67-mptcp

Βλέπουμε την επιγραφή mptcp δίπλα στον αριθμό έκδοσης, που σημαίνει ότι ο πυρήνας εγκαταστάθηκε σωστά.

Ρύθμιση δρομολογητή πελάτη

Επί τοποθεσία έργου Έτοιμες εκδόσεις είναι διαθέσιμες για ορισμένες πλατφόρμες, όπως το Raspberry Pi, το Banana Pi, οι δρομολογητές Lynksys και οι εικονικές μηχανές.
Αυτό το τμήμα του openmptcprouter βασίζεται στο OpenWRT, χρησιμοποιώντας το LuCI ως διεπαφή, γνωστό σε όποιον έχει συναντήσει ποτέ το OpenWRT. Το κιτ διανομής ζυγίζει περίπου 50 Mb!

Πραγματική άθροιση καναλιών Διαδικτύου - OpenMPTCPRouter

Ως πάγκο δοκιμών, θα χρησιμοποιήσω το Raspberry Pi και πολλά μόντεμ USB με διαφορετικούς χειριστές: MTS και Megafon. Πώς να γράψετε μια εικόνα σε μια κάρτα SD, υποθέτω, δεν χρειάζεται να πείτε.

Αρχικά, η θύρα Ethernet στο Raspberry Pi διαμορφώνεται ως lan με στατική διεύθυνση IP. 192.168.100.1. Για να μην μπλέξω με τα καλώδια στο τραπέζι, συνέδεσα το Raspberry Pi σε ένα σημείο πρόσβασης WiFi και έβαλα μια στατική διεύθυνση στον προσαρμογέα WiFi του υπολογιστή 192.168.100.2. Ο διακομιστής DHCP δεν είναι ενεργοποιημένος από προεπιλογή, επομένως πρέπει να χρησιμοποιούνται στατικές διευθύνσεις.

Τώρα μπορείτε να μεταβείτε στη διεπαφή ιστού 192.168.100.1

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

Πραγματική άθροιση καναλιών Διαδικτύου - OpenMPTCPRouter
Στις ρυθμίσεις LAN, μπορείτε να ορίσετε το επιθυμητό υποδίκτυο και να ενεργοποιήσετε τον διακομιστή DHCP.

Χρησιμοποιώ μόντεμ που ορίζονται ως διεπαφές USB ethernet με ξεχωριστό διακομιστή DHCP, επομένως απαιτείται εγκατάσταση επιπλέον πακέτα. Η διαδικασία είναι πανομοιότυπη με τη διαμόρφωση μόντεμ στο κανονικό OpenWRT, επομένως δεν θα το καλύψω εδώ.

Στη συνέχεια, πρέπει να διαμορφώσετε τις διεπαφές WAN. Αρχικά, δημιουργήθηκαν δύο εικονικές διεπαφές WAN1 και WAN2 στο σύστημα. Πρέπει να αντιστοιχίσουν μια φυσική συσκευή, στην περίπτωσή μου, αυτά είναι τα ονόματα των διεπαφών μόντεμ USB.

Για να μην μπερδεύεστε στα ονόματα της διεπαφής, σας συμβουλεύω να παρακολουθείτε μηνύματα dmesg ενώ είστε συνδεδεμένοι μέσω SSH.

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

Το OpenMPTCPRouter απαιτεί οι διευθύνσεις διασύνδεσης WAN να είναι στατικές, επομένως βρίσκουμε υποδίκτυα για μόντεμ και τα διαμορφώνουμε στο σύστημα → openmptcprouter → μενού ρυθμίσεων διεπαφής. Εδώ πρέπει επίσης να καθορίσετε τη διεύθυνση IP και το κλειδί διακομιστή που ελήφθησαν κατά την εγκατάσταση του διακομιστή άθροισης.

Πραγματική άθροιση καναλιών Διαδικτύου - OpenMPTCPRouter

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

Πραγματική άθροιση καναλιών Διαδικτύου - OpenMPTCPRouter

Η προεπιλεγμένη λειτουργία είναι shadowsocks + mptcp. Αυτός είναι ένας τέτοιος διακομιστής που τυλίγει όλες τις συνδέσεις στον εαυτό του. Αρχικά, έχει ρυθμιστεί να χειρίζεται μόνο TCP, αλλά μπορείτε επίσης να ενεργοποιήσετε το UDP.

Πραγματική άθροιση καναλιών Διαδικτύου - OpenMPTCPRouter

Εάν δεν υπάρχουν σφάλματα στη σελίδα κατάστασης, η ρύθμιση μπορεί να θεωρηθεί ολοκληρωμένη.
Σε ορισμένους παρόχους, μπορεί να προκύψει μια κατάσταση όταν η σημαία mptcp περικοπεί κατά μήκος της διαδρομής κυκλοφορίας, τότε θα υπάρξει ένα τέτοιο σφάλμα:

Πραγματική άθροιση καναλιών Διαδικτύου - OpenMPTCPRouter

Σε αυτήν την περίπτωση, μπορείτε να χρησιμοποιήσετε έναν άλλο τρόπο λειτουργίας, χωρίς τη χρήση MPTCP, περισσότερα για αυτό εδώ.

Συμπέρασμα

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

Πραγματική άθροιση καναλιών Διαδικτύου - OpenMPTCPRouter

Ακολουθήστε τον προγραμματιστή μας στο Instagram

Πραγματική άθροιση καναλιών Διαδικτύου - OpenMPTCPRouter

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο