Discussion:
SMB Blockgröße bei Dateiserver-Client unter Windows und Linux
(zu alt für eine Antwort)
Robert
2006-02-24 08:26:27 UTC
Permalink
Hallo,

wenn ich von einem Windows-Client auf einen (beliebigen) Samba-Server
zugreife sehe ich mit Etherreal (je nach Anwendung) ca. 64 KB grosse
ausgehandelte SMB Blockgroessen. Diese 64 kB werden per TCP in einem Rutsch
übertragen, danach ein SMB-Paket und dann die nächsten 64 KB per TCP.

Wenn ich statt eines Windows einen Debian oder Red Hat Linux Client benutze,
beträgt die SMB Blockgrösse statt 64 immer nur 4 KB. Darunter leidet
verständlicherweise die Durchsatzrate, da nun ja 16 mal mehr Overhead (TCP
und SMB/TCP) übertragen wird.

Sind also Linux-Dateiserver-Clients generell langsamer als
Windows-Dateiserver-Clients? Leider bekomme ich hierzu seit ca. einem
dreiviertel Jahr keine Antwort in verschiedenen Linux-Foren oder bei Red Hat
direkt. Ich hoffe daher hier vielleicht jemand zu finden, der das Problem
kennt und mir einen Hinweis geben kann.

Vielen Dank
Klaus Urban
2006-02-24 09:49:15 UTC
Permalink
Hallo Robert,
Post by Robert
Hallo,
wenn ich von einem Windows-Client auf einen (beliebigen) Samba-Server
zugreife ..
[..]
Post by Robert
Wenn ich statt eines Windows einen Debian oder Red Hat Linux Client benutze,
beträgt die SMB Blockgrösse statt 64 immer nur 4 KB. Darunter leidet
verständlicherweise die Durchsatzrate, da nun ja 16 mal mehr Overhead (TCP
und SMB/TCP) übertragen wird.
Sind also Linux-Dateiserver-Clients generell langsamer als
Windows-Dateiserver-Clients? Leider bekomme ich hierzu seit ca. einem
dreiviertel Jahr keine Antwort ...
[..]

ich glaube, du bekommst keine Antwort, weil das niemand einsetzt.
Bei einem Linux-Client würde ich NFS einsetzen.

Klaus
Robert
2006-03-02 17:48:30 UTC
Permalink
Hallo Klaus,

es geht um einen Windows-CIFS-Server mit vielen Windows-CIFS-Clients und
einem Linux-Client, der auch auf diesem Server gerne genauso schnell arbeiten
würde.

Da muss ich mit einem Samba-mount und an diesem Problem weiterarbeiten.
Ich glaube auch, daß ich da nicht ganz der Einzige bin (auch wenn es derzeit
so scheint).
Post by Klaus Urban
ich glaube, du bekommst keine Antwort, weil das niemand einsetzt.
Bei einem Linux-Client würde ich NFS einsetzen.
Klaus
Robert
2006-03-02 18:09:20 UTC
Permalink
Hallo Klaus,

sorry, ich sehe gerade ich habe Samba-Server geschrieben. Das Problem
besteht jedoch auch wenn ich auf CIFS-Server zugreife und das will ich
eigentlich. Der Samba-Server ist nur ein Zwischentest gewesen. Ist aber egal,
da das Problem beim Client liegt. Ein Windows-Client hat dagegen nach meinen
Ethereal-Mitschnitten keine Probleme mit unterschiedlichen
Anwendungsblockgrössen über das Netz egal ob zu Samba- oder CIFS-Servern.

Grüsse
Post by Klaus Urban
Hallo Robert,
ich glaube, du bekommst keine Antwort, weil das niemand einsetzt.
Bei einem Linux-Client würde ich NFS einsetzen.
Klaus
Robert Pieroth [MVP]
2006-03-02 19:21:35 UTC
Permalink
Post by Robert
sorry, ich sehe gerade ich habe Samba-Server geschrieben. Das Problem
besteht jedoch auch wenn ich auf CIFS-Server zugreife und das will ich
eigentlich. Der Samba-Server ist nur ein Zwischentest gewesen. Ist aber egal,
da das Problem beim Client liegt. Ein Windows-Client hat dagegen nach meinen
Ethereal-Mitschnitten keine Probleme mit unterschiedlichen
Anwendungsblockgrössen über das Netz egal ob zu Samba- oder CIFS-Servern.
Hi Robert,

der Unterschied in den Blockgrößen ist der Unterschied zwischen
dem Raw-Mode und dem Core-Mode.

Aus irgendeinem Grund wird in der Kommunikation zwischen Deinem
Linux Client und dem Windows Server nur der Core-Mode benutzt.

Zum Verwenden des RAW-Modus müssen einige Dinge zutreffen,
die hier beschrieben sind:
http://support.microsoft.com/kb/223140/en-us

Dein Linux Client teilt bei der Negotiation mit, was er kann. Scheinbar
ist er da nicht auf 'RAW' eingestellt. Siehe auch "Performance im
Windows Umfeld" auf folgender Seite:
http://www.nwlab.net/guide2na/netzwerkanalyse-probleme-2.html#winperf

Mit Linux bin ich nicht vertraut, daher müßtest Du selbst mal rausfinden,
wie Du dem Linux-Client nun den RAW-Mode beibringst.
--
Viele Grüße
Robert Pieroth
http://www.faq-o-matic.net
https://mvp.support.microsoft.com/profile=014FC01B-D493-4B7E-8FD1-A0A5B32BFF0A
Robert
2006-03-06 17:01:28 UTC
Permalink
Hallo Robert,

vielen Dank für die interessanten Hinweise.

In meinen Capture-Dateien des Verkehrs zwischen Linux-Client und
Windows-Server und zwischen Windows-Client und Linux-Server konnte ich die
Raw / Core - Aushandlung nicht finden.

Ich möchte aber nochmal die verschiedenen Erfahrungen zusammenfassen, die
ich auf Windows mit einem Platten-Perfomance-Tool, dass ich über SMB einsetze
gemacht habe:

Windows-Client schreiben und lesen zum CIFS-Server: bliebige (!) Blockgrösse
des Tools wird zur SMB Blockgrösse (wie gewünscht)

Windows-Client schreiben und lesen zum Samba-Server: wie oben

Samba/Linux-Client schreiben und lesen zum Samba-Server: immer 4 KB
Blockgröße (mind. 1/3 weniger Performance)

Samba/Linux-Client schreiben und lesen zum CIFS-Server: immer 4 KB
Blockgröße (mind. 1/3 weniger Performance)

(Mit NFS kommt man wenigsten auf eine Blockgröße von 16 KB.)

Dies war bisher bei jeder Maschine so!

Beste Grüße
Robert
Mirko Kulpa
2006-03-06 18:28:38 UTC
Permalink
Post by Klaus Urban
Hallo Robert,
vielen Dank für die interessanten Hinweise.
In meinen Capture-Dateien des Verkehrs zwischen Linux-Client und
Windows-Server und zwischen Windows-Client und Linux-Server konnte ich die
Raw / Core - Aushandlung nicht finden.
Die Modi findest Du im "Negotiate Protocol Response".

Gruß
Mirko
--
Forum Netzwerktechnik
http://www.nwlab.net/forum/
Robert
2006-03-07 15:06:28 UTC
Permalink
Hallo Mirko,

danke, muss ich beim ersten mal übersehen haben.

Der WinXP-Dateiserverdienst bietet Raw sowie LargeReadX und LargeWriteX an.
Der Linux-Samba-Client bietet im Session Setup Request unter Capabilities
nichts davon an (alles 0).

Dies könnte ein Hinweis auf das 4kB Blocksize Problem sein. Aber:

Wenn ich den Linux-Samba-Client jedoch als Server und den WinXP-Rechner als
Client betreibe (also deren Rollen einfach tausche), dann sind im Session
Setup Request des WinXP-Clients Raw, LargeReadX und LargeWriteX auf 0 gesetzt
und der Linux Samba Server (Version 2.2.1a) bietet überhaupt keine
Capabilities an (es gibt dann kein Negotiation Protocol Paket).
Und dennoch kann dann mit mehr als 4 KB SMB Blocksize vom Server gelesen
werden!

Vielen Dank für die bisherige Hilfe.

Robert
Post by Mirko Kulpa
Post by Klaus Urban
Hallo Robert,
vielen Dank für die interessanten Hinweise.
In meinen Capture-Dateien des Verkehrs zwischen Linux-Client und
Windows-Server und zwischen Windows-Client und Linux-Server konnte ich die
Raw / Core - Aushandlung nicht finden.
Die Modi findest Du im "Negotiate Protocol Response".
Gruß
Mirko
--
Forum Netzwerktechnik
http://www.nwlab.net/forum/
Ralf Breuer
2006-03-07 16:22:34 UTC
Permalink
Samba (Version 2.2.1a)
Hmm, wie wär's denn mal mit der aktuellen Version 3.0.21c?
--
Gruß
Ralf
Ich mag kein TOFU. Siehe http://einklich.net/usenet/zitier.htm
Bei Direkt-Mails NOSPAM entfernen
Robert Pieroth [MVP]
2006-03-06 18:41:26 UTC
Permalink
Post by Robert
In meinen Capture-Dateien des Verkehrs zwischen Linux-Client und
Windows-Server und zwischen Windows-Client und Linux-Server konnte ich die
Raw / Core - Aushandlung nicht finden.
Ich möchte aber nochmal die verschiedenen Erfahrungen zusammenfassen, die
ich auf Windows mit einem Platten-Perfomance-Tool, dass ich über SMB einsetze
Windows-Client schreiben und lesen zum CIFS-Server: bliebige (!) Blockgrösse
des Tools wird zur SMB Blockgrösse (wie gewünscht)
Windows-Client schreiben und lesen zum Samba-Server: wie oben
Samba/Linux-Client schreiben und lesen zum Samba-Server: immer 4 KB
Blockgröße (mind. 1/3 weniger Performance)
Samba/Linux-Client schreiben und lesen zum CIFS-Server: immer 4 KB
Blockgröße (mind. 1/3 weniger Performance)
Samba auf Linux hat doch da eine Konfigurationsdatei etc/smb.conf.
In dieser smb.conf gibt es Konfigurationsparameter:
- block size
- read raw = yes/no
- write raw = yes/no
Das müßte in den Linux-Gruppen aber bekannter sein, als hier in einer
Microsoft Newsgroup.
Vielleicht hilft Dir das weiter. Den Rest weiß gooogle mit der Sucheingabe
smb.conf "read raw"
--
Viele Grüße
Robert Pieroth
http://www.faq-o-matic.net
https://mvp.support.microsoft.com/profile=014FC01B-D493-4B7E-8FD1-A0A5B32BFF0A
Robert
2006-03-07 15:21:30 UTC
Permalink
Vielen Dank Robert,

habe ich nun alles ausprobiert. Es ändert sich leider gar nichts:

1. Raw wird vom Linux-Server auch ohne entsprechenden Eintrag in smb.conf
angeboten. "block size"-Eintrag hat keinen Einfluß.

2. mein Samba-Client bietet auch mit entsprechendem Eintrag in smb.conf kein
Raw an. "block size"-Eintrag hat auch hier keinen Einfluß.

3. Als Client bietet WinXP Raw nicht an und trotzdem kann ich dann mehr als
4 KB SMB-Blocksize sehen. Wie gesagt, mit einem Windows-Client können auch
z.B. 32 kB oder 1 MB SMB-blocksize erreicht werden. Daher frage ich mich, ob
es sich wirklich um ein Raw(64kB)/Core(4kB)-Problem handelt?

Da ich in den Linux-Foren, bei Red Hat und samba.org leider hierzu seit
einem dreiviertel Jahr überhaupt keine Unterstützung gefunden habe, wäre ich
sehr dankbar, falls noch jemand einen Hinweis oder eine Supportquelle hat.

Besten Dank

Robert
Post by Robert Pieroth [MVP]
Post by Robert
In meinen Capture-Dateien des Verkehrs zwischen Linux-Client und
Windows-Server und zwischen Windows-Client und Linux-Server konnte ich die
Raw / Core - Aushandlung nicht finden.
Ich möchte aber nochmal die verschiedenen Erfahrungen zusammenfassen, die
ich auf Windows mit einem Platten-Perfomance-Tool, dass ich über SMB einsetze
Windows-Client schreiben und lesen zum CIFS-Server: bliebige (!) Blockgrösse
des Tools wird zur SMB Blockgrösse (wie gewünscht)
Windows-Client schreiben und lesen zum Samba-Server: wie oben
Samba/Linux-Client schreiben und lesen zum Samba-Server: immer 4 KB
Blockgröße (mind. 1/3 weniger Performance)
Samba/Linux-Client schreiben und lesen zum CIFS-Server: immer 4 KB
Blockgröße (mind. 1/3 weniger Performance)
Samba auf Linux hat doch da eine Konfigurationsdatei etc/smb.conf.
- block size
- read raw = yes/no
- write raw = yes/no
Das müßte in den Linux-Gruppen aber bekannter sein, als hier in einer
Microsoft Newsgroup.
Vielleicht hilft Dir das weiter. Den Rest weiß gooogle mit der Sucheingabe
smb.conf "read raw"
--
Viele Grüße
Robert Pieroth
http://www.faq-o-matic.net
https://mvp.support.microsoft.com/profile=014FC01B-D493-4B7E-8FD1-A0A5B32BFF0A
Thomas Wildgruber
2006-02-24 11:39:21 UTC
Permalink
Post by Robert
wenn ich von einem Windows-Client auf einen (beliebigen) Samba-Server
zugreife sehe ich mit Etherreal (je nach Anwendung) ca. 64 KB grosse
ausgehandelte SMB Blockgroessen. Diese 64 kB werden per TCP in einem Rutsch
übertragen, danach ein SMB-Paket und dann die nächsten 64 KB per TCP.
Ich kann das jetzt hier nicht exakt so nachstellen aber ich habe jetzt mal
den Traffic einer Linuxmaschine mitgesnifft, die mit smbmount auf ein
freigegebenes Windowsverzeichnis zugreift. Vermutlich unterliegst du einem
Wahrnehmungsfehler. Die ausgehandelten 64K in der SMB Session sind die
Puffergrösse (BufferSize) und nicht die Paketgrösse.

Die Übermittlung der Daten erfolgt über SMB bzw. NBSS (over TCP/IP) und
nicht (natives) TCP. Das TCP Paket das du siehst dürfte wahrscheinlich eine
Empfangsbestätigung der vorrausgegangen Pakete sein. Überprüfe hierzu die
Richtung des Pakets, es müsste in Richtung Datenquelle geschickt werden.
Post by Robert
Wenn ich statt eines Windows einen Debian oder Red Hat Linux Client benutze,
beträgt die SMB Blockgrösse statt 64 immer nur 4 KB. Darunter leidet
verständlicherweise die Durchsatzrate, da nun ja 16 mal mehr Overhead (TCP
und SMB/TCP) übertragen wird.
SMB nutzt TCP als Transportprotokoll und der Overhead richtes sich nach der
maximalen Paketgrösse (MTU) des zugrundeliegendes Übertragungsprotokolls.
Das sind bei Ethernet 1500 Byte (+ Ethernetheader). Es gibt auch noch Jumbo
Frames die deutlich grösser sind, diese brauchen aber AFAIK auch ein
anderes Übertragungsmedium, wie z.B. Glasfaserkabel.
Post by Robert
Sind also Linux-Dateiserver-Clients generell langsamer als
Windows-Dateiserver-Clients? Leider bekomme ich hierzu seit ca. einem
dreiviertel Jahr keine Antwort in verschiedenen Linux-Foren oder bei Red Hat
direkt. Ich hoffe daher hier vielleicht jemand zu finden, der das Problem
kennt und mir einen Hinweis geben kann.
Mal abgesehen davon, dass ich nicht verstehe warum sich unixoide Systeme
untereinander mit SMB unterhalten sollen, glaube ich du unterliegst bei
deiner Analyse mit Ethereal generell einem Interpretationsfehler und
verwechselst BufferSize mit PaketSize...

...kann das sein?

Bye Tom
--
"Manches Gewissen ist nur rein, weil es nie benutzt wurde"
(Robert Lembke)
Robert
2006-03-02 18:01:28 UTC
Permalink
Hallo Thomas,

von Paketgröße habe ich nichts geschrieben.

Etherreal sagt doch explizit "SMB blocksize" und danach kann man die
TCP-Pakete zählen und man stellt fest, daß umso weniger kommen, je kleiner
die SMB blocksize ist. Entsprechend sinkt auch der Durchsatz messbar.

Sorry, ich sehe gerade ich habe aber vom Samba-Server geschrieben. Das
Problem besteht jedoch auch wenn ich auf CIFS-Server zugreife und das will
ich eigentlich. Der Samba-Server ist nur ein Zwischentest gewesen. Ist aber
egal, da das Problem beim Client liegt. Ein Windows-Client hat dagegen nach
meinen Ethereal-Mitschnitten keine Probleme mit unterschiedlichen
Anwendungsblockgrössen über das Netz egal ob zu Samba- oder CIFS-Servern.

Grüsse
Loading...