Jan
06
2016

Realtek RTL8111F Watchdog Timeout unter FreeNAS 9

FreeNAS Tuning © Maximilian Riess / Riess Group.

Problem: FreeNAS verliert sporadisch die Netzwerkanbindung.

Wenn unter FreeBSD / FreeNAS Probleme mit einer RealTek Netzwerkkarte auftreten und der Einbau einer zweifelsfrei deutlich besseren Intel Netzwerkkarte keine Option darstellt, kann man das Problem gegebenenfalls damit umgehen, dass man die fehlerhafte Treiberimplementierung der Netzwerkkarte umgeht und die Hardwarechecksummenberechnung deaktiviert. Der Kernel hat damit etwas mehr Arbeit, aber der fehlerhafte Teil der Treiber wird damit möglicherweise umgangen.

 

Logauszug des Problems:

 

Jan  4 10:02:22 storage1 re0: watchdog timeout
Jan  4 10:02:22 storage1 kernel: re0: link state changed to DOWN
Jan  4 10:02:22 storage1 kernel: re0: link state changed to DOWN
Jan  4 10:02:23 storage1 ntpd[2232]: sendto(xxx.xxx.xxx.xxx) (fd=22): No route to host
Jan  4 10:02:24 storage1 nmbd[2562]: [2016/01/04 10:02:24.573652,  0] ../source3/libsmb/nmblib.c:873(send_udp)
Jan  4 10:02:24 storage1 nmbd[2562]:   Packet send failed to xxx.xxx.xxx.xxx(138) ERRNO=No route to host

 

FreeBSD: Kerneleinstellungen via /etc/sysctl.conf:

hw.pci.enable_msi 0  # Segmentation Offload to network card. 
                     # Disable to isolate re: watchdog timeout problem 
hw.pci.enable_msix 0 # Segmentation Offload to network card. 
                     # Disable to isolate re: watchdog timeout problem 
net.inet.tcp.recvbuf_inc 524288   # TCP-Tuning - http://fasterdata.es.net/TCP-tuning/FreeBSD.html 
net.inet.tcp.recvbuf_max 16777216 # TCP-Tuning - http://fasterdata.es.net/TCP-tuning/FreeBSD.html 
net.inet.tcp.sendbuf_max 16777216 # Default: 4194304 
net.inet.tcp.tso 0   # Segmentation Offload to network card. 
                     # Disable to isolate re: watchdog timeout problem

 

Unter FreeNas werden die Einstellungen über das Webfrontend konfiguriert. Dazu in System->Tunables die entsprechenden Einträge für den Typ „rc.conf“ (bildet /etc/rc.conf ab), bzw. sysctl (bildet /etc/sysctl.conf ab) erstellen.

 

FreeBSD: Netzwerkinterface Einstellungen via /etc/rc.conf:

ifconfig_re0="-rxcsum -txcsum -vlanhwtag up"

 

Unter FreeNas werden die Einstellungen statt in /etc/rc.conf über das Webfrontend konfiguriert. Dazu in Network->Interfaces->(Interfacename) unter „Options“ den Wert „-rxcsum -txcsum -vlanhwtag“ eintragen.

Nachtrag, 03.11.2017: Auf FreeNAS11 sorgen die Einstellungen beim Booten für eine Fehlermeldung.

 

Überprüfung

Vorher:

[root@storage1] ~# ifconfig re0
re0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=82088<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_MAGIC,LINKSTATE>

Nachher:

[root@storage1] ~# ifconfig re0
re0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=82088<VLAN_MTU,VLAN_HWCSUM,WOL_MAGIC,LINKSTATE>

 

Verifiziert unter FreeNAS 9.3

Im aktuellen Fall wird das System auf einem Mini-ITX Mainboard mit Onboard Netzwerkkarte betrieben. Der Einbau einer anderen Netzwerkkarte ist nicht möglich, da die Kartenslots bereits durch SATA-Controller belegt sind, und das System auf niedrigen Energieverbrauch getrimmt ist. Der Datendurchsatz des NAS erreicht mühelos 117MB/s, und liegt damit am Maximalwert für Gigabit Netzwerkkarten. Der Einsatz einer höherwertigeren Netzwerkkarte macht daher hier wirtschaftlich keinen Sinn.