Flow control: προσοχή στην αγορά switch και καρτών δικτύου

Ξεκίνησε από alkisg, 23 Δεκ 2010, 02:48:09 ΜΜ

« προηγούμενο - επόμενο »

alkisg





Edit 03/02/2016: μετά από διάφορες βελτιώσεις στα sch-scripts, πλέον δεν χρειάζεται ιδιαίτερη προσοχή στην αγορά switch και καρτών δικτύου, μπορείτε να αγοράσετε ό,τι μάρκα θέλετε, οπότε αγνοήστε το παρόν μήνυμα και διαβάστε τη σύνοψή του εδώ.



Η ταχύτητα του τοπικού δικτύου είναι πάρα πολύ σημαντική στο LTSP. Παρακάτω περιγράφεται ένα πιθανό πρόβλημα το οποίο μπορεί να κάνει το δίκτυό σας 10 φορές πιο αργό αν δεν προσέξετε κατά την αγορά switch και κάρτας δικτύου για το server.
Το πρόβλημα είναι ανεξάρτητο από το λειτουργικό σύστημα, δηλαδή αν έχετε Windows και θέλετε να προβάλλετε την οθόνη του καθηγητή στους μαθητές ή να τους στείλετε μεγάλα αρχεία, καλό θα ήταν να διαβάσετε κι εσείς το παρόν θέμα.


Ποιους επηρεάζει το πρόβλημα:

ServerSwitchClientsΠροσοχή;Συνολική ταχύτητα δικτύου
GigabitΠλήρως gigabitGigabitΌχιGigabit
GigabitΠλήρως gigabit100 MbpsΝαι100 Mbps ή gigabit
GigabitΜόνο 1-2 θύρες gigabit100 MbpsΝαι100 Mbps ή gigabit
100 Mbps100 Mbps100 MbpsΌχι100 Mbps

Αν είστε στις δύο μεσαίες κατηγορίες συνεχίστε το διάβασμα για να αποφύγετε το πρόβλημα που δημιουργεί το flow control, καθώς αν δεν προσέξετε θα κάνει το δίκτυό σας 10 φορές πιο αργό, δηλαδή 100 Mbps αντί για Gigabit, με τεράστιες επιπτώσεις στην ταχύτητα του LTSP.
Αν είστε στην πρώτη ή την τελευταία κατηγορία, αδιαφορήστε. :)


Θεωρία:
Το flow control είναι μια δυνατότητα του ethernet κατά την οποία αν μια γρήγορη συσκευή (ο server) στέλνει πολλά δεδομένα σε μια αργή συσκευή (το switch), τότε αυτή ειδοποιεί τον server να κάνει παύση και να μη στέλνει άλλα δεδομένα για λίγο.
Όταν για παράδειγμα ο gigabit server προσπαθήσει να στείλει μια εικόνα στον 100 Mbps client1, τότε ο buffer του switch θα γεμίσει και αυτό θα στείλει σήμα παύσης στον server να σταματήσει για λίγο να στέλνει δεδομένα.
Δυστυχώς ο server θα σταματήσει εντελώς, και δεν θα στέλνει ούτε στους άλλους clients. Αυτό είναι το πρόβλημα και λέγεται "head of line blocking".


Λύσεις:
Υπάρχουν δύο τρόποι να λυθεί:

  • Ένα καλό switch καταλαβαίνει ότι ο server μπορεί να θέλει να στείλει και σε άλλους clients, και έτσι δεν του στέλνει σήματα παύσης.
    Μερικά switch είναι managed και σ' αυτά ο υπεύθυνος ΣΕΠΕΗΥ θα πρέπει να μπει στο web interface τους και να τα ρυθμίσει κατάλληλα.
  • Η κάρτα δικτύου του server μπορεί να υποστηρίζει την απενεργοποίηση του flow control, και επομένως να αγνοεί τα σήματα παύσης που του στέλνει το switch.
    Τα sch-scripts απενεργοποιούν το flow control σε όσες κάρτες το υποστηρίζουν, επομένως δεν χρειάζεται να κάνει κάτι ο υπεύθυνος ΣΕΠΕΗΥ που τα χρησιμοποιεί. Οι χρήστες Windows θα πρέπει να απενεργοποιήσουν το flow control από τις ιδιότητες της κάρτας δικτύου στον device manager.


Καλά switch:

Προβληματικά switch:

Καλές κάρτες δικτύου:
Εδώ να αναγράφουμε όποιες κάρτες δικτύου επιβεβαιωμένα υποστηρίζουν την απενεργοποίηση του flow control.
Να επισημάνω ότι οι κάρτες δικτύου των clients δεν έχουν σχέση με το πρόβλημα, ενδιαφερόμαστε μόνο για την κάρτα δικτύου του server.
Επίσης, θέλουμε είτε καλό switch είτε καλή κάρτα δικτύου στον server, δεν χρειάζονται και τα δύο.

Κάποιες Intel, Broadcom και Marvell που δοκίμασα υποστήριζαν την απενεργοποίηση του flow control.
Επιβεβαιωμένα καλές:
03:00.0 Ethernet controller [0200]: Intel Corporation 82541PI Gigabit Ethernet Controller [8086:107c] (rev 05)
	Subsystem: Intel Corporation PRO/1000 GT Desktop Adapter [8086:1376]
	Kernel driver in use: e1000

00:0b.0 Ethernet controller [0200]: D-Link System Inc DGE-530T Gigabit Ethernet Adapter (rev 11) [1186:4b01] (rev 11)
        Subsystem: D-Link System Inc DGE-530T Gigabit Ethernet Adapter (rev 11) [1186:4b01]
        Kernel driver in use: skge

03:01.0 Ethernet controller [0200]: Marvell Technology Group Ltd. 88E8001 Gigabit Ethernet Controller [11ab:4320] (rev 12)
	Subsystem: Standard Microsystems Corp [SMC] EZ Card 1000 (SMC9452TXV.2) [10b8:b452]
	Kernel driver in use: skge

08:00.0 Ethernet controller [0200]: Broadcom Corporation NetLink BCM5787M Gigabit Ethernet PCI Express [14e4:1693] (rev 02)
	Kernel driver in use: tg3
	Kernel modules: tg3

00:0a.0 Ethernet controller [0200]: nVidia Corporation MCP77 Ethernet [10de:0760] (rev a2)
	Kernel driver in use: forcedeth
	Kernel modules: forcedeth


Για laptop που έχουν 100ρα κάρτα δικτύου, η παρακάτω PCMCIA gigabit κάρτα αναφέρθηκε να δουλεύει καλά:
03:00.0 Ethernet controller [0200]: LSI Corporation ET-131x PCI-E Ethernet Controller [11c1:ed00] (rev 02)
	Subsystem: LSI Corporation ET-131x PCI-E Ethernet Controller [11c1:ed00]
	Kernel driver in use: et131x


Προβληματικές κάρτες δικτύου:
Εδώ να αναγράφουμε όποιες κάρτες δικτύου επιβεβαιωμένα δεν υποστηρίζουν την απενεργοποίηση του flow control.

Όσες έχω δοκιμάσει που να βασίζονται σε τσιπάκι Realtek δεν υποστηρίζουν απενεργοποίηση του flow control, παρόλα αυτά από 12.04 και μετά φαίνεται να μην έχουν σοβαρό πρόβλημα.
Αντίθετα, οι Atheros όχι μόνο δεν υποστηρίζουν απενεργοποίηση του flow control, αλλά αντιδρούν τόσο χάλια στα σήματα pause, που πάνε πιο αργά και από 100 Mbps κάρτα.
01:00.0 Ethernet controller [0200]: Qualcomm Atheros AR8121/AR8113/AR8114 Gigabit or Fast Ethernet [1969:1026] (rev b0)
	Subsystem: ASUSTeK Computer Inc. Device [1043:831c]
	Kernel driver in use: ATL1E


Μέθοδος επιβεβαίωσης:
Εύρεση μοντέλου κάρτας:
$ lspci -nn -k | grep -A 2 Ethernet
08:00.0 Ethernet controller [0200]: Broadcom Corporation NetLink BCM5787M Gigabit Ethernet PCI Express [14e4:1693] (rev 02)
	Kernel driver in use: tg3
	Kernel modules: tg3


Απενεργοποίηση του flow control:
$ sudo ethtool --pause eth0 autoneg on rx off


Επιβεβαίωση ότι έχει απενεργοποιηθεί:
$ sudo ethtool --show-pause eth0
Pause parameters for eth0:
Autonegotiate:	on
RX:		off
TX:		on

Yannis Siahos

#1
Switch που είναι δοκιμασμένα από την Τεχνική Στήριξη και είναι ΟΚ:


LINKSYS SRW2016 (εργαστήριο Τεχν. Στήρ.)
CISCO-D SR2016T-EU (εργαστήριο Τεχν. Στήρ.)

μου φαίνεται ότι το IEEE 802.3x Flow control πρέπει να είναι το κλειδί αλλά δεν έχω δοκιμάσει κάποιο που δεν έχει αυτό το χαρακτηριστικό για να διαπιστώσω αν υφίσταται το πρόβλημα.
(μία μπακάλικη λύση είναι η προμήθεια switch 16ports με κόστος >=150ευρώ)  ;D

poursali

πρόσφατα αγόρασα αυτό: http://www.e-shop.gr/show_per.phtml?id=PER.613475
το οποίο στα χαρακτηριστικά του αναφέρει το 802.3x Flo Control
μπορώ να κάνω κάτι για να επιβεβαιώσω αν ανήκει/δεν ανήκει στις "προβληματικές" περιπτώσεις;
μετρον αριστον
είμαι τζαμπατζής, χρησιμοποιώ λίνουξ

apapakL

Παράθεση από: alkisg στις 23 Δεκ 2010, 02:48:09 ΜΜ

Ποιους επηρεάζει το πρόβλημα:

ServerSwitchClientsΠροσοχή;Συνολική ταχύτητα δικτύου
GigabitΠλήρως gigabitGigabitΌχιGigabit
GigabitΠλήρως gigabit100 MbpsΝαι100 Mbps ή gigabit
GigabitΜόνο 1-2 θύρες gigabit100 MbpsΝαι100 Mbps ή gigabit
100 Mbps100 Mbps100 MbpsΌχι100 Mbps


Η ταχύτητα του δικτύου επηρεάζεται και από το αν έχουμε συνδεδεμένα 100αρια switches πάνω στο gigabit switch, όπως για παράδειγμα το router του σχολείου ή δεν έχει σημασία?

alkisg

Παράθεση από: poursali στις 23 Δεκ 2010, 09:42:21 ΜΜ
πρόσφατα αγόρασα αυτό: http://www.e-shop.gr/show_per.phtml?id=PER.613475
το οποίο στα χαρακτηριστικά του αναφέρει το 802.3x Flo Control
μπορώ να κάνω κάτι για να επιβεβαιώσω αν ανήκει/δεν ανήκει στις "προβληματικές" περιπτώσεις;

https://alkisg.mysch.gr/steki/index.php?topic=3324.msg33979#msg33979

alkisg

Παράθεση από: apapakl στις 23 Δεκ 2010, 10:30:55 ΜΜ
Η ταχύτητα του δικτύου επηρεάζεται και από το αν έχουμε συνδεδεμένα 100αρια switches πάνω στο gigabit switch, όπως για παράδειγμα το router του σχολείου ή δεν έχει σημασία?

Η ταχύτητα του internet είναι πολύ κάτω από τα 100 Mbps και μάλιστα πιο πολύ κατεβάζουμε (που δεν επηρεάζει καθόλου) παρά ανεβάζουμε, επομένως φαντάζομαι ότι δεν θα μπλοκάρει την κίνηση.
Αν όμως βάλεις ένα 100ρι switch πάνω στο full gigabit switch και εκεί πάνω συνδέσεις 2-3 thin/fat clients, τότε ναι, θα κόψει.
Το ίδιο κι αν βάλουμε έναν μόνο 100ρη client πάνω σε full gigabit switch, θα κόψει λίγο την ταχύτητα αφού θα κάνει το switch να στέλνει pause signals. Δεν ξέρω πόσο ακριβώς θα κόψει από τη συνολική ταχύτητα, υποθέτω όχι πολύ αλλά δεν έχω κάνει σχετική μέτρηση...

Σίγουρα το καλύτερο είναι ένα καλό switch και ξενοιάζουμε από όλα, αλλά ξεκινάνε από 150€ ... :(

poursali

μετρον αριστον
είμαι τζαμπατζής, χρησιμοποιώ λίνουξ

tallis

Μετά της εορτές έχω σκοπό  να παραγγείλω μερικα gigabit switches
http://www.tp-link.com/products/productDetails.asp?class=switch&content=spe&pmodel=TL-SG1024D
για να υλοποιήσω thin-clients se τουλάχιστον ένα εργαστήριο.
τα συγκεκριμένα switch αναφέρουν πως έχουν 802.3x flow control αλλά δεν είναι managed να μπορώ να το απενεργοποιήσω.

Οι κάρτες δικτύου των client μερικών client είναι 100αρες άλλες 1000αρες και όλες δεν υποστηρίζουν flow-control καθώς είναι realtek.
Στον server θα βάλω κάρτες gigabit της intel στις οποίες έμαθα πως απενεργοποιήται το flow-control.

Θα έχω πρόβλημα;;;;

Καλές εορτές σε όλους.
Απόστολος Γιόκας
ΠΕ20 - ΕΠΑΛ Ορεστιάδας

alkisg

Παράθεση από: tallis στις 24 Δεκ 2010, 04:09:37 ΜΜ
Στον server θα βάλω κάρτες gigabit της intel στις οποίες έμαθα πως απενεργοποιήται το flow-control.

Θα έχω πρόβλημα;;;;

Τα sch-scripts θα σου απενεργοποιήσουν αυτόματα το flow control οπότε και δεν θα έχεις κανένα πρόβλημα χωρίς να χρειαστεί να κάνεις κάτι. Καλές γιορτές!

gidarakos

Άλκη αυτό γίνεται για όλες τις κάρτες δικτύου του server; "Στήνω" έναν ltsp με το lan πάνω στην eth1 (δεν χρησιμοποιώ την eth0) και παρατήρησα ότι δεν το είχε απενεργοποιήσει με την εγκατάσταση των sch-scripts. Το έκανα με τη manual μέθοδο..

Κώστας

alkisg

Από το αρχείο /etc/network/if-up.d/sch-scripts:
# Is /usr mounted and ethtool there?
if [ -x /usr/sbin/ethtool ]; then
    if ethtool --pause $IFACE autoneg off rx off >/dev/null 2>&1; then
        $logger -t sch-scripts -p syslog.info "Successfully disabled flow control for interface $IFACE"
    else
        $logger -t sch-scripts -p syslog.info "Didn't disable flow control for interface $IFACE"
    fi
fi


Δηλαδή, θεωρητικά δουλεύει για όλες τις κάρτες δικτύου του server, και επίσης σου καταχωρεί μήνυμα στο syslog για το αν τα κατάφερε ή όχι. Τσέκαρε λίγο το syslog, βλέπεις τέτοιες εγγραφές;
grep "flow control" /var/log/syslog

gidarakos

Όχι Άλκη δεν υπάρχει τέτοια εγγραφή.
Σου επισυνάπτω το syslog.
Τι μπορεί να συμβαίνει;

alkisg

Δοκίμασε λίγο:
sudo ifdown eth1
sudo ifup eth1
grep "flow control" /var/log/syslog


Αν έτσι δεις εγγραφή στο syslog, αυτό σημαίνει ότι για κάποιον λόγο δεν καλούνται τα if-up events. Πώς παίρνει IP η eth1; Από το network-manager, από το /etc/network/interfaces; Στατική ή δυναμική;

gidarakos

Μετά την εγκατάσταση του Desktop Ubuntu "έβαλα" τα sch-scripts και δημιούργησα thin εικονικό.
Άρα, δυναμική IP από network-manager.

Προβλήματα:
Σήμερα που άνοιξα το server υπήρχαν 3 εγγραφές στο syslog οι οποίες στη συνέχεια (χωρίς επανεκκίνηση) δεν υπήρχαν στο syslog!!!. Νομίζω μόνο το firefox άνοιξα ανάμεσα στους δύο ελέγχους, ο οποίος άργησε να ανοίξει τη home google page!
teacher@server:~$ grep "flow control" /var/log/syslog
Mar 11 21:28:07 server sch-scripts: Successfully disabled flow control for interface eth1
Mar 11 21:38:46 server sch-scripts: Successfully disabled flow control for interface eth1
Mar 14 09:12:35 server sch-scripts: Successfully disabled flow control for interface eth1

Η εντολή "sudo ifdown eth1" βγάζει "ifdown: interface eth1 not configured" και η "sudo ifup eth1" "Ignoring unknown interface eth1=eth1."

alkisg

Παράθεση από: gidarakos στις 14 Μαρ 2011, 10:32:24 ΠΜ
Σήμερα που άνοιξα το server υπήρχαν 3 εγγραφές στο syslog οι οποίες στη συνέχεια (χωρίς επανεκκίνηση) δεν υπήρχαν στο syslog!!!.
Μάλλον αυτό που είδες ήταν αποτέλεσμα του logrotate, όπου για λόγους επιδόσεων το syslog περιοδικά μεταφέρεται στο syslog.1 και στη συνέχεια στο syslog.2.gz κτλ.

Εφόσον λοιπόν υπήρχαν τέτοιες καταχωρήσεις, θα πρέπει να γίνεται αυτόματα η απενεργοποίηση του flow control.
Κάνε μια επανεκκίνηση το server και δώσε τις παρακάτω εντολές αμέσως μόλις ξεκινήσει για να δούμε αν αυτό αληθεύει ή όχι:
date
grep 'flow control' /var/log/syslog
sudo ethtool -a eth1
sudo ethtool -A eth1 autoneg off rx off
sudo ethtool -a eth1