traceroute: Ένα παρεξηγημένο εργαλείο.
Πριν κάτι μέρες έφτασε στο mailbox μου η διαμαρτυρία ενός συνδρομητή (όπου χρειάζεται τα ονόματα έχουν αλλαχτεί):
Για πολλοστή φορά είναι αδύνατη η επικοινωνία της σύνδεσης που έχουμε στο internet μέσω ΤΕΕ με τον server της mitsosworks.
Είναι σίγουρο ότι πάλι υπεύθυνο είναι το ΤΕΕ αφού η mitsosworks μας λέει ότι το πρόβλημα με το ΤΕΕ είναι γνωστό και με άλλους πελάτες και δεν φαίνεται καν επικοινωνία με τον δικό τους server
Τι έχει συμβεί και εξοργίζει τον συνδρομητή; Έχει μια σύνδεση με εμάς και κάνει το web hosting της εταιρίας του στη mitsosworks. Το πρόβλημα; Δεν μπορεί να στείλει email ούτε από εμάς προς εκεί, ούτε από εκεί προς εμάς.
Η γρήγορη διάγνωση της mitsosworks; Το ίδιο πρόβλημα έχουν και άλλοι πελάτες της mitsosworks, ταυτόχρονα δεν έχουν πρόβλημα με κανένα άλλο δίκτυο, άρα είναι πρόβλημα δικό τους.
Oh really?
[ Πριν συνεχίσω: Δεν έχουμε το καλύτερο δίκτυο, δεν είμαστε οι καλύτεροι, δεν έχουμε τις καλύτερες υπηρεσίες και σίγουρα δεν έχουμε τις φτηνότερες. Δεν το έχουμε ισχυριστεί ποτέ αυτό. Αλλά σίγουρα όταν μαθαίνουμε για ένα πρόβλημα, το κυνηγάμε εξαντλητικά. ]
Για να είχε μια δόση σιγουριάς ο ισχυρισμός της mitsosworks, θα έπρεπε η αναμεταξύ μας σύνδεση να είναι κάπως έτσι:

Στην πραγματικότητα η σύνδεση είναι έτσι:

Πολλά πράγματα μπορούν να πάνε στραβά στο σύννεφο του Internet. Αφού λοιπόν o smtp server που παρέχεται στον συνδρομητή από την mitsosworks είναι ο smtp.mitsosworks.biz, ένα
$ traceroute smtp.mitsosworks.biz
αποκαλύπτει την τοπολογία και δείχνει που μπορεί να βρίσκεται το πρόβλημα:

Το βέλος δείχνει που μπορεί να βρίσκεται το πρόβλημα σε μια πρώτη επισκόπηση των αποτελεσμάτων που έβγαζε το traceroute. Τώρα, θα μπορούσαμε να απαντήσουμε και εμείς στον συνδρομητή κάτι της μορφής: “Εντοπίσαμε το πρόβλημα και δεν οφείλεται σε εμάς και το δίκτυό μας. Υπεύθυνοι για το πρόβλημα είναι η εταιρία F.”
Τόσο απλά και λακωνικά θα είχαμε τελειώσει σε ότι μας αφορούσε και για το πρόβλημα του πελάτη και για τη σιγουριά (;) της mitsosworks για το ποιος ευθύνεται.
Θα λυνόταν το πρόβλημα του ανθρώπου; Όχι βέβαια.
Παίρνουμε τηλέφωνο την εταιρία F, που είναι ένας από τους upstream provider μας και βρίσκουμε πως η πραγματική τοπολογία είναι η:

Όπου P ο network provider της mitsosworks. Ακολουθεί απόσπασμα από το email της F σχετικά με το θέμα (τα bold δικά μου):
Σε έλεγχο που έγινε διαπιστώθηκε ότι το xx.yy.0.0/17 ανακοινώνεται μέσω του national bgp, παρόλαυτα επειδή έχει αλλάξει η δρομολόγηση για το δίκτυο αυτό και δεν γίνεται μέσω F αλλά από international δίκτυο, η πρόσβαση από το ΤΕΕ δεν είναι εφικτή.
Στην τηλεφωνική μας ερώτηση “Και γιατί δεν αλλάζετε το national bgp σας τότε;” μας απαντήθηκε “Μα δεν μας έχουν ενημερώσει για την αλλαγή αυτή, είναι πελάτες και δεν μπορούμε εμείς να την κάνουμε αυτοβούλως”. Fair enough.
Και πάλι θα μπορούσαμε να ενημερώσουμε τον συνδρομητή σχετικά, και να σταματήσουμε εδώ. Ήταν δικιά μας ευθύνη; Όχι. Θα λυνόταν το πρόβλημά του; Όχι.
Ρωτάμε λοιπόν την F, “ΟΚ επειδή εμείς θέλουμε να τον βοηθήσουμε τι προτείνετε να κάνουμε;” και η απάντηση ήταν να υλοποιήσουμε μια εξαίρεση. Την υλοποιήσαμε. Η σύνδεση αποκαταστάθηκε. Αποκαταστάθηκε προσωρινά φυσικά γιατί κανείς δεν ξέρει πότε και χωρίς να ενημερώσει κανένα ο P, θα ξανααλλάξει το routing policy.
Και σκέφτομαι τώρα:
- Ένας άνθρωπος έχει πρόβλημα. Το περιγράφει (καλά / κακά δεν έχει σημασία) στον προμηθευτή της υπηρεσίας του.
- Ο προμηθευτής για να “κρατήσει” τον πελάτη δεν ψάχνει το ζήτημα, αντίθετα του αναφέρει και άλλα συμπτώματα, τα βαφτίζει ως πρόβλημα και ερεθίζει τον πελάτη.
- Ο πελάτης στρέφεται εναντίον του άλλου προμηθευτή υπηρεσιών και τον κατηγορεί για ένα πρόβλημα που ποτέ μέχρι εκείνη τη στιγμή δεν ήταν σε γνώση του προμηθευτή #2.
- Ο προμηθευτής #2 βρίσκει το πρόβλημα, διαπιστώνει πως δεν είναι δικό του και ενημερώνει σχετικά τον πελάτη. Βρίσκεται τώρα σε δίλημα: Να υλοποιήσει μια εξαίρεση “για να κάνει ο άνθρωπος τη δουλειά του”; ή να κάνει το “σωστό” και να μη μπορεί να κάνει ο άνθρωπος τίποτε;
Πόσος χρόνος και κόπος πήγε χαμένος γιατί κάποιος για να ξεφορτωθεί την καυτή πατάτα δεν έτρεξε ένα traceroute;
ΒΑ-ΡΕ-ΘΗ-ΚΑ
#include <std/disclaimer.h>
Update: So you think you know traceroute?
Future disclaimer: Το domain mitsosworks.biz δεν υπήρχε σε χρήση όταν γραφόταν αυτό το κείμενο