Πόσες και πόσες φορές δεν ενοχλούμαστε και έχουμε την αίσθηση πως το δίκτυο “σέρνεται” στο πάτωμα. Μιλώντας βέβαια με τους διαχειριστές του δικτύου (δικτυάδες) μας διαβεβαιώνουν πως υπάρχει αρκετό bandwidth και τίποτα περίεργο δεν έχει συμβεί-αλλάξει! Οπότε για άλλη μια φορά συνεχίζουμε το software troubleshooting που τελικά μπορεί να μας οδηγήσει να πειράξουμε κάτι που όντως δεν έχει πρόβλημα.

Το θέμα τελικά είναι αν υπάρχει δυνατότητα να κάνουμε μια διερεύνηση μόνοι ώστε να καταλήξουμε πόσο τελικά είναι το διαθέσιμο bandwidth σε κάθε περίπτωση.

Το πιο γρήγορο που θα έκαναν οι περισσότεροι είναι κάποιο ping (icmp echo request – echo reply) και με βάση το χρόνο απόκρισης να βγάλουν κάποιο συμπέρασμα. Τι γίνεται όμως αν υπάρχει firewall ενδιάμεσα που μπλοκάρει icmp ή αν εγώ θέλω να μάθω το διαθέσιμο εύρος για την εφαρμογή μου, πχ web service –> tcp port 80. Το τελευταίο είναι πολύ σημαντικό γιατί σε περιπτώσεις που χρησιμοποιείται κάποιο Quality of Service (QoS) τότε σίγουρα δεν επαρκεί το ping ή κάτι παρόμοιο.

Ενημερωτικά με το QoS, σε network devices, επιτυγχάνουμε προτεραιότητα σε συγκριμένες tcp πόρτες κι έτσι πρακτικά δεν μοιράζονται όλες οι εφαρμογές (tcp ports) το ίδιο bandwidth. Οπότε τι να το κάνω αν υπάρχει γραμμή 2Mbps αλλά λόγω QoS τελικά o Secure Web Server (tcp port 443) λειτουργεί τελικά με bandwidth 256kbps! 

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

Πάμε στο πρακτικό κομμάτι όμως.

Για να βρούμε το χρόνο απόκρισης και το τελικό bandwidth πρέπει να λάβουμε υπόψη μας τα εξής:

ICMP (ping)

 

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

 

TCP Connection (3 way handshake)

Αναλύοντας το 3-way tcp connection βγάζουμε πολύ πιο ενδιαφέροντα συμπεράσματα.

 

 

Στην ανταλλαγή των 3 πρώτων frames (3 way handshake) δεν συμμετέχουν οι εφαρμογές client/server αλλά μόνο ο tcp/ip driver του λειτουργικού. Επίσης τα data που μεταδίδονται είναι ελάχιστα 70-80 bytes οπότε ο χρόνος μεταξύ του 1ου και 2ου πακέτου εδώ είναι “καθαρή” διαθέσιμη ταχύτητα. Προσοχή χρειάζεται μόνο η πλευρά από την οποία μετράμε, δηλαδή αν έχουμε εγκαταστήσει το network tracing tool στον client τότε μας ενδιαφέρει ο χρόνος 1-2, στην αντίθετη περίπτωση όμως που μετράμε από την μεριά του Server (εγκαθιστούμε εκεί το tool) τότε μας ενδιαφέρει ο χρόνος 2-3.

Μεταξύ 3 και 4 φαίνεται ο χρόνος που πλέον χρειάζεται η client εφαρμογή π.χ. Internet Explorer για να κάνει το request, οπότε μεγάλος χρόνος εδώ δείχνει πρόβλημα στην client εφαρμογή.

Τέλος ο χρόνος μεταξύ 4 – 5 δείχνει το χρόνο απόκρισης της server εφαρμογής όπου εδώ μπορούμε να δούμε αν υπάρχουν καθυστερήσεις-προβλήματα στο server software. Βέβαια στα 4-5 πρέπει να λάβουμε υπόψη μας το μέγεθος τους γιατί πιθανότατα θα είναι μεγαλύτερο από τα 1,2,3 λόγω ότι μεταφέρονται δεδομένα πλέον.

 

DIY

Για να βρούμε το διαθέσιμο bandwidth δεν έχουμε παρά να εγκαταστήσουμε το αντίστοιχο network trace tool (netmon, wireshark etc) και να ρυθμίσουμε: 

Network monitor 3.4

To Add a Column with the Time Delta

  1. Right-click the table header row in the Frame Summary window.
  2. Select Choose Columns.
  3. Select Time Delta in the Disabled Columns box, and click Add to move it to the Enabled Columns box.
  4. Click OK.

 

Wireshark

 

Baseline!

Τέλος για να υπάρχει baseline ώστε να μπορούμε να κάνουμε συγκρίσεις άμεσα στο μέλλον έκανα δοκιμές με καταγραφή χρόνων χρησιμοποιώντας network emulator όπου όριζα διαφορετικές ταχύτητες κάθε φορά. Τα αποτελέσματα φαίνονται στον παρακάτω πίνακα για ταχύτητες 32kbps –> 4Mbps.

(Σημ: Ο πιο περίεργος, μη αναμενόμενος χρόνος, είναι στο 1Mbps!)

Οπότε την επόμενη φορά που θα κάνουμε ping ή network trace αποκτούμε άμεση αντίληψη του bandwidth!

Trace file που χρησιμοποιήθηκε για τις μετρήσεις: Bandwidth meter.pcap