Troubleshooting Slow 100Mb Ethernet NAS Performance: Identifying Bottlenecks in Network File Transfer


5 views

When working with a new NAS (Network Attached Storage) system configured with two disks, we'd typically expect transfer speeds around 40MB/s on a 100Mb Ethernet network. However, actual measurements show significantly slower performance at just 8-10MB/s - barely 20-25% of the expected throughput.

Several factors could be contributing to this suboptimal performance:

  • Network Configuration Issues: Misconfigured duplex settings or outdated drivers
  • Cabling Problems: Using Cat5 instead of Cat5e/Cat6 cables or damaged cables
  • NAS Configuration: RAID setup, disk alignment, or filesystem choices
  • Protocol Overhead: SMB/CIFS typically has higher overhead than NFS or iSCSI

Here are some useful commands to diagnose network performance:

# Test network speed between machines
iperf3 -c nas-server-ip -t 20

# Check interface statistics
ethtool eth0

# Monitor real-time traffic
iftop -i eth0 -n

# Check TCP connections
ss -tulnp

# Test disk performance on NAS
hdparm -Tt /dev/sda

Try these configuration adjustments:

1. Network Interface Settings:

# Set full duplex and 100M speed
sudo ethtool -s eth0 speed 100 duplex full autoneg off

2. SMB Protocol Configuration (in smb.conf):

[global]
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=65536 SO_SNDBUF=65536
min receivefile size = 16384
write cache size = 262144
getwd cache = yes

3. TCP Stack Tuning:

# Increase TCP window size
echo 'net.core.rmem_max=16777216' >> /etc/sysctl.conf
echo 'net.core.wmem_max=16777216' >> /etc/sysctl.conf
sysctl -p

Verify your physical setup:

  • All network devices (switches, routers) should support 100M full-duplex
  • Cables should be Cat5e or better (look for printed specifications on the cable)
  • Check for link errors in switch port statistics
  • Test with direct connection (PC to NAS) to eliminate switch issues

For persistent issues, consider packet capture analysis:

# Capture traffic to/from NAS
tcpdump -i eth0 host nas-ip-address -w nas-traffic.pcap

# Analyze with Wireshark later or use:
tcpdump -r nas-traffic.pcap -n | grep -i 'retrans'

This can reveal packet loss, retransmissions, or other protocol-level issues affecting performance.


When implementing our new NAS with dual-disk RAID configuration, we expected transfer speeds matching our 100Mb network capacity (theoretical max ~12.5MB/s). Instead, we're observing just 8-10Mb/s (1-1.25MB/s) - barely 10% of the expected throughput. This clearly indicates protocol overhead or configuration issues.

Start with basic network verification. On Linux/macOS:

# Check actual link speed
ethtool eth0 | grep -i speed
# Continuous ping test
ping -t NAS_IP
# Bandwidth test (install iperf3 first)
iperf3 -c NAS_IP

Windows equivalent PowerShell commands:

Get-NetAdapter | Select Name, LinkSpeed
Test-NetConnection NAS_IP -Continuous

SMB/CIFS (Windows file sharing) has significant overhead. Try these optimizations in /etc/samba/smb.conf:

[global]
   socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=65536 SO_SNDBUF=65536
   min receivefile size = 16384
   getwd cache = yes
   write cache size = 262144

While 100Mb networks typically use standard 1500-byte MTU, test jumbo frames if all devices support it:

# Temporary test (Linux)
ifconfig eth0 mtu 9000 up
# Permanent setting
echo "POST_UP_SCRIPT=/sbin/ifconfig eth0 mtu 9000" >> /etc/network/interfaces

Rule out storage bottlenecks with direct disk tests:

# Linux raw disk test
hdparm -tT /dev/sdX
# Cross-platform with dd
dd if=/dev/zero of=/mnt/nas/testfile bs=1M count=1024 conv=fdatasync

Test different transfer protocols to isolate the issue:

# FTP test
curl -u user:pass ftp://NAS_IP/testfile -o /dev/null
# NFS mount (often faster for Linux)
mount -t nfs NAS_IP:/share /mnt/nas
# Rsync test
rsync -avz --progress /large/file user@NAS_IP:/destination

Verify switch settings that might throttle performance:

# Cisco example
show interface FastEthernet0/1 | include duplex|speed
# Force settings
interface FastEthernet0/1
 speed 100
 duplex full
 no negotiation auto
  • Confirm all cables are CAT5e or better
  • Check for duplex mismatches (should be full-duplex everywhere)
  • Disable power saving on NICs: ethtool -s eth0 wol d
  • Update network drivers and firmware
  • Monitor for network collisions: netstat -i