2

Question : How files transfer could be slow and normal at the same time ?

Transfer initiated from : Windows 7 computer on VLAN computer

Source : NSD share (samba from IBM GPFS) on VLAN server

Destination : Windows 7 computer on VLAN computer (the one used to initialize)


Research Track : Suppose that this can be related to the host layer of the OSI model


I'm linux Sys Admin for many clients. I use remote login, and i have'nt the possibility to test everything.

One client get a strange behaviour : From a windows 7, by opening explorer.exe and transfering one file of 1Gb (zip, iso, data, created with dd command, etc ...) from a LAN share (see configuration below) using UNC path you can have 2 differents behaviors depending of the file.

A) You can have a slow transfer rate, 7-10 Mb/s

B) You can have a normal transfer rate, 50-70 Mb/s

This transfert rate is permanent for type of file. That mean, if you try from another time at different days and hours, you will get the same result. Each time, zip file or iso file have normal transfer rate. When data file, fake file created by dd, have low transfer rate.

From another computer with same or other windows version (windows 2012 server by example), same result.

If you try with another user account, same result.

If you mount the UNC path, same result.

With antivirus activated or not


I did tests and I observe this :

Transfer from another linux on another VLAN : transfer rate is 42 Mb/s for both type of file

Transfer with winscp from windows computer on another VLAN : transfer rate is 26 Mb/s for both type of file

Transfer with cygwin from windows computer on another VLAN using SCP (ssh) : transfer rate is 47-53 Mb/s for both type of file

Transfer with cygwin from windows computer on another VLAN using mount point : transfer rate is 7-10 Mb/s for A and 55 Mb/s for B

As client use wireshark and tell to me he observe this : Wireshark show that slow transfer A is done with SMB2 protocol and normal transfer B is done with NetBios/NBSS protocol

And because my tests show SCP (SSH) the transfer rate is normal (same for all files types) I oriented my search to the top protocols of the OSI model

But i know nothing about networking / protocole.

Could someone knowledgeable help me please ?


The share : It's an IBM Spectrum Scale (new GPFS name) shared by NSD server with NFS and SMB enable on a specific VLAN server

[root@nsd ~]# mmces service list
 Enabled services: NFS SMB
 NFS is running, SMB is running


# smbstatus -V
Samba version 4.6.16-gpfs-56


# testparm

Load smb config files from /var/mmfs/ces/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Registered MSG_REQ_POOL_USAGE
Registered MSG_REQ_DMALLOC_MARK and LOG_CHANGED
Registered MSG_REQ_POOL_USAGE
Registered MSG_REQ_DMALLOC_MARK and LOG_CHANGED
Can't find include file /var/mmfs/ces/smb.conf.0.0.0.0
Can't find include file /var/mmfs/ces/smb.conf.internal.0.0.0.0
Processing section "[home]"
Loaded services file OK.
Server role: ROLE_DOMAIN_MEMBER

Press enter to see a dump of your service definitions

# Global parameters
[global]
        netbios name = SPECSCALE
        realm = xxxxxxxxxx.COM
        server string = IBM NAS
        workgroup = xxxxx
        preferred master = No
        ldap ssl = no
        logging = syslog@0 file
        max log size = 100000
        add share command = /usr/lpp/mmfs/bin/mmcesmmccrexport
        allow insecure wide links = Yes
        change share command = /usr/lpp/mmfs/bin/mmcesmmcchexport
        clustering = Yes
        ctdb locktime warn threshold = 5000
        delete share command = /usr/lpp/mmfs/bin/mmcesmmcdelexport
        lock directory = /run/gpfs-samba/lock
        log writeable files on exit = Yes
        registry shares = Yes
        smbd exit on ip drop = Yes
        smbd profiling level = on
        disable spoolss = Yes
        printcap cache time = 0
        disable netbios = Yes
        server max protocol = SMB3_02
        server min protocol = SMB2_02
        unix extensions = No
        auth methods = guest sam winbind
        restrict anonymous = 2
        security = ADS
        max open files = 20000
        socket options = TCP_NODELAY SO_KEEPALIVE TCP_KEEPCNT=4 TCP_KEEPIDLE=240 TCP_KEEPINTVL=15
        include system krb5 conf = No
        winbind max clients = 10000
        winbind max domain connections = 5
        winbind use default domain = Yes
        gencache:stabilize_interval = 3600
        winbind:request profile threshold = 10
        idmap config sbm : range = 1000-500000
        idmap config sbm : ldap_user_dn = cn=connect,ou=Special Users,dc=xxxxx,dc=local
        idmap config sbm : ldap_url = ldap://master.local
        idmap config sbm : ldap_server = stand-alone
        idmap config sbm : bind_path_user = ou=People,dc=xxxxx,dc=local
        idmap config sbm : bind_path_group = ou=Groups,dc=xxxxx,dc=local
        idmap config sbm : backend = rfc2307
        nfs4:acedup = merge
        nfs4:chown = yes
        nfs4:mode = simple
        idmap config * : rangesize = 1000000
        idmap config * : range = 10000000-299999999
        idmap config * : read only = no
        idmap:cache = no
        shadow:sort = desc
        shadow:snapdirseverywhere = yes
        shadow:fixinodes = yes
        shadow:snapdir = .snapshots
        readdir_attr:aapl_max_access = false
        fruit:veto_appledouble = no
        fruit:nfs_aces = no
        fruit:metadata = stream
        fruit:copyfile = yes
        gpfs:merge_writeappend = no
        gpfs:winattr = yes
        gpfs:hsm = yes
        gpfs:prealloc = yes
        gpfs:dfreequota = yes
        gpfs:leases = yes
        gpfs:sharemodes = yes
        smbd:async search ask sharemode = yes
        ctdb:smbxsrv_open_global.tdb = false
        gencache:stabilize_count = 100000
        time_audit:timeout = 5000
        aio_pthread:aio open = yes
        tdbsam:map builtin = no
        winbind:online check timeout = 30
        groupdb:backend = tdb
        smbd:backgroundqueue = False
        notify:inotify = yes
        syncops:onmeta = no
        fileid:fstype allow = gpfs
        fileid:algorithm = fsname
        dbwrap_tdb_mutexes:* = true
        ctdb:registry.tdb = yes
        idmap config * : backend = autorid
        mangled names = illegal
        map hidden = Yes
        map system = Yes
        store dos attributes = Yes
        posix locking = No
        dfree cache time = 100
        include = /var/mmfs/ces/smb.conf.internal.0.0.0.0
        durable handles = No
        ea support = Yes
        force unknown acl user = Yes
        read only = No
        aio read size = 1
        aio write size = 1
        strict allocate = Yes
        vfs objects = shadow_copy2 syncops gpfs fileid time_audit


[home]
        path = /gpfsxxxxx/home
        wide links = Yes
        smb encrypt = if_required

2 Answers2

0

Based on the symptoms, it may be caused by Windows' TCP autotuning (TCP Window Size auto negotiation) or chimney offload (offloading workload to network adapter) technology not working as intended (maybe because one end, or some old network equipment in-between doesn't support TCP Autotuning typically)

You can test these settings on a Windows 7 client:

Open a command prompt as Administrator, and write these commands:

netsh int tcp set global autotuninglevel=disabled
netsh int tcp set global chimney=disabled

Then, restart the computer and try again. The transfer speed should be greatly improved.

If it's not working, you can revert to the default settings with these commands:

netsh int tcp set global autotuninglevel=normal
netsh int tcp set global chimney=enabled
Swisstone
  • 6,725
  • 7
  • 22
  • 32
0

Unfortunately, it works normaly now without anybody to tell us what happen between when it dont and now.

I think it was network related. QoS or IDS, something like this.

We will never know :(

This post could be close