Handy Vista tip

Ο τίτλος του άρθρου από το Knowledge Base της Microsoft είναι: Network connectivity may fail when you try to use Windows Vista behind a firewall device*.

Από την εξήγηση:

“When you try to use a Windows Vista-based computer behind a firewall device, network connectivity may fail. […] The firewall device has a problem with its implementation of the TCP Window Scale Option that is defined in Internet Engineering Task Force (IETF) Request For Comments (RFC) 1323.”

Το άρθρο στο Knowledge Base μιλάει για περιπτώσεις που το μηχάνημα του χρήστη είναι “πίσω” από firewall που δεν μπορεί να διαχειριστεί καλά το TCP Window scaling (π.χ. κάποιο ADSL modem). Το πρόβλημα όμως προκύπτει και όταν κάποιος server (www, mail κ.λπ.) βρίσκεται “πίσω” από κάποιο firewall που δεν τα πάει καλά με το TCP Window scaling. Βέβαια και σε αυτή την περίπτωση το σύστημα με τα Vista πάλι πίσω από το συγκεκριμένο firewall είναι. Είναι θέμα ορισμού του “πίσω”.
:)

Με λίγα λόγια: Start -> All Programs -> Accessories -> Command Prompt

netsh interface tcp set global autotuninglevel=disabled

Εάν δεν θέλετε να απενεργοποιήσετε εντελώς το TCP window scaling, μπορείτε να δώσετε εναλλακτικά την εντολή:

netsh interface tcp set global autotuninglevel=restricted

Οι δυνατές τιμές που μπορεί να πάρει η παράμετρος autotuninglevel είναι:

netsh interface set tcp global /?
:
       autotuninglevel - One of the following values:
                         disabled: Fix the receive window at its default
                             value.
                         highlyrestricted: Allow the receive window to
                             grow beyond its default value, but do so
                             very conservatively.
                         restricted: Allow the receive window to grow
                             beyond its default value, but limit such
                             growth in some scenarios.
                         normal: Allow the receive window to grow to
                             accomodate almost all scenarios.
                         experimental: Allow the receive window to grow
                             to accomodate extreme scenarios.
                             WARNING: This can dramatically degrade
                             performance in common scenarios and should
                             only be used for research purposes.
:

Να ξέραμε και ποια είναι τα “some senarios” τα οποία εξαιρεί η επιλογή autotuning=restricted

Δείτε και αυτό το post στο lifehacker.com.

Αντιμετώπιση του ίδιου προβλήματος σε συστήματα που τρέχουν Linux:
Στο Linux το workaround είναι πιο εύκολο: Στο /etc/sysctl.conf προσθέτετε τη γραμμή:

net.ipv4.tcp_rmem = 4096 87380 174760

και μετά τρέχετε ένα sysctl -p

Σε μερικά setup η παραπάνω γραμμή δεν φτάνει και στο /etc/sysctl.conf πρέπει να προστεθεί και η γραμμή:

net.ipv4.tcp_wmem = 4096 16384 131072

Υπάρχουν δε και εκείνες οι περιπτώσεις (π.χ. Dell server και κάρτα δικτύου που υποστηρίζεται από τον driver tg3) που χρειάζεται ακόμα μία προσθήκη (σύνολο τρεις):

net.ipv4.tcp_window_scaling = 0

Δηλαδή πλήρης απενεργοποίηση του TCP Window Scaling.


[*] – Article ID: 934430

11 thoughts on “Handy Vista tip

  1. Χρησιμοποιώ Mandriva 2008. Δεν μπορώ να ανοίξω τη σελίδα του ΤΕΕ. Μπορείτε να μου υποδείξετε τις εντολές για να αντιμετωπίσω το πρόβλημα; Οσο μπορείτε πιο απλά παρακαλώ γιατί δεν ειμαι εμπειρος. Ευχαριστω.

  2. Ανοίγετε ένα τερματικό και τρέχετε την εντολή su:

    $ su –
    Password:

    # cat >> /etc/sysctl.conf
    net.ipv4.tcp_rmem = 4096 87380 174760
    net.ipv4.tcp_wmem = 4096 16384 131072
    net.ipv4.tcp_window_scaling = 0
    ctrl-D <- Αυτό σημαίνει πως πατάτε control και D

    # sysctl -p

    # exit

    $ exit

    Δεν μπορώ να το περιγράψω πιο απλά.

  3. Ευχαριστώ για την βοήθεια. Τώρα εμφανίζεται κανονικά.

  4. Πάντως το πρόβλημα παραμένει: οι χρήστες gnu/linux δεν μπορούν να δουν τη σελίδα του τεε, εκτός κι αν κάνουν τις παραπάνω ρυθμίσεις…

  5. Το πρόβλημα είναι πως δεν είναι σίγουρο ποιανού είναι το πρόβλημα. Εμφανίζεται μόνο σε πυρήνες linux και σε Windows Vista (αλλά όχι π.χ. όταν είναι 32bit σε 64bit machine) και δεν εμφανίζεται σε μηχανήματα που τρέχουν OpenBSD με tcp window scaling ενεργοποιημένο στο ίδιο hardware που με linux ή με Vista εμφανίζεται. Όπως και περιπτώσεις RealTek chipsets που πρέπει οπωσδήπτε να δηλώσει κανείς net.ipv4.tcp_window_scaling = 0.

    Κατά συνέπεια με βάση τα παραπάνω δεν μπορώ να το θεωρήσω ως πρόβλημα της δικιάς μας υποδομής, αλλά ταυτόχρονα και μέχρι να βρει κάποιος από εμάς χρόνο και να διαβάσει κώδικα του TCP stack και στο OpenBSD και στο Linux, πρέπει να ζούμε με το band-aid.

  6. Γιατί όμως έχω αυτό το πρόβλημα μόνο με το ΤΕΕ και δεν το έχω με κανέναν άλλο; Ή μήπως το έχω και με άλλους και δεν το έχω παρατηρήσει; (Κανένα παράδειγμα;)

  7. Σίγουρα συμβαίνει και αλλού. Δεν έχω συγκεκριμένο παράδειγμα (υποψιάζομαι μόνο αυτό από την περιγραφή) αλλά εάν ψάξεις για Vista και TCP Window Scaling θα δεις πως το πρόβλημα το έχει αρκετός κόσμος παντού. Απλά εμείς είμαστε ένα site που αφορά συγκεκριμένη πληθυσμιακή ομάδα (που είναι windows oriented) και έτσι μας “δαγκώνει” με συνέπεια.

  8. Όντως, τα έχω δει αυτά στο Internet. Απλά ό,τι βρίσκω στο Internet αναφέρεται σε client-side προβλήματα, όπου ο client δεν μπορεί να συνδεθεί με κανένα ή με πολλά sites. Ενώ εδώ είναι ελάχιστα τα sites όπου δεν μπορώ να συνδεθώ (γνωρίζω μόνο το ΤΕΕ), άρα από τη δικιά μου οπτική γωνία το πρόβλημα είναι server-side. (Έχει μήπως να κάνει με το firewall του ΤΕΕ;)

    Ο λόγος που το ταλαιπωρώ είναι ότι έχω ένα Debian *server* που χρειάζεται πρόσβαση στο tee.gr, και δεν θέλω να του πειράξω network settings που δεν πολυκαταλαβαίνω τι είναι και τι συνέπειες μπορεί να έχουν σε ποιος ξέρει ποιες ειδικές περιπτώσεις που είναι αδύνατο να γνωρίζω και να ψάξω, εφόσον το μηχάνημα λειτουργεί κατά τα άλλα απρόσκοπτα εδώ και χρόνια (άσε που κάθε πείραγμα των defaults προσθέτει πολυπλοκότητα και διαχειριστικό φόρτο).

    Μάλλον θα κάνω ένα χαζό workaround (για το πρακτικά: ο server έχει μια βάση δεδομένων όπου μεταξύ άλλων αποθηκεύονται κάποια links, και αποτυγχάνει ο έλεγχος εγκυρότητας του link που γίνεται τη στιγμή που ο χρήστης προσπαθεί να εισαγάγει το link στη ΒΔ. Το workaround είναι ότι θα βάλω τα ελάχιστα links προς το ΤΕΕ πειράζοντας κατευθείαν τη ΒΔ.).

  9. @Antonis Christofides:
    Το πρόβλημα δεν είναι το firewall software (PF) που τρέχουμε, καθώς υπάρχουν και λειτουργικά που δεν δείχνουν αυτή τη συμπεριφορά, στο ίδιο hardware που άλλα λειτουργικά την παρουσιάζουν (π.χ το PC μου στο σπίτι που τρέχει Debian, XP και OpenBSD – με Debian έχω πρόβλημα, με OpenBSD όχι). Είναι σίγουρο πως κάποιοι συνδιασμοί αναδεικνύουν το πρόβλημα, αλλά δεν είμαι σίγουρος για τη ρίζα του και δεν έχω το χρόνο να διαβάσω κώδικα TCP stack στο Linux και στο BSD για να δω τι συμβαίνει.

    Πάντως το να κάνεις disable το tcp window scaling όπως προτείνω παραπάνω δεν θα σου προκαλέσει κανένα πρόβλημα, παρεκτός κι αν σερβίρεις αρχεία μεγέθους DVD, οπότε και θα έχεις μετρήσιμη πτώση στην απόδοση.

  10. Χρησιμοποιώντας το ίδιο λάπτοπ με Windows XP, στο σπίτι συνδέομαι και στη δουλειά όχι. Φταίει ο proxy-server που έχουν εκεί; Τί προτείνεις;
    Ο προσωπικός μου υπολογιστής στο σπίτι έχει Ubuntu 8.10. Δεν μπόρεσα αρχικά να συνδεθώ στο tee.gr αλλά παρέκαμψα το πρόβλημα με το net.ipv4.tcp_rmem = 4096 87380 174760 που γράφεις.

  11. @Tassos.b:
    Φταίει κάποιο ενδιάμεσο μηχάνημα. Μπορεί να είναι της δουλειάς, μπορεί να είναι και του ISP που χρησιμοποιούν (δεν έχει σημασία εάν είναι ο ίδιος με αυτόν που έχεις σπίτι).

    Χρησιμοποίησε το DrTCP και δες εάν έχεις το TCP Window Scaling ενεργοποιημένο ή όχι. Εάν είναι, απενεργοποίησέ το.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s