Semana passada migrei o Data Center da empresa do grupo onde trabalho todo para ambiente virtualizado com Xen Server. Como todo ambiente virtualizado, se faz necessário o uso de uma Storage para armazenar os discos virtuais das máquinas virtualizadas de forma centralizada. Então montei uma storage com CentOS 5.3 x64 compartilhando os arquivos das máquinas virtuais via NFS para os servidores Xen. Toda a migração ocorreu de forma tranquila, mas quando o ambiente foi para produção e o volume de dados cresceu, um bug da placa Realtek modelo RTL8111/8168B do servidor em questão veio á tona.
Quando a placa de rede atingia um nivel de uso elevado, o erro abaixo era exibido e placa de rede simplesmente parava de responder, onde a única solução era descarregar e carregar o módulo via modprobe.
kernel: r8169: eth0: link down
NETDEV WATCHDOG: eth0: transmit timed out
E isso passou a ocorrer com muita frequência dias após a migração. Em busca de uma solução encontrei um relatório de bug aberto na Red Hat sobre o módulo padrão utilizado para esse modelo da placa Realtek, que é reconhecido como r8169 de forma incorreta. O módulo correto que deve ser carregado deve ser o r8168, mas ele não existe por padrão nos repositórios. Portanto, compilá-lo-emos…
Para isso, acesse o site com os fontes atualizados dos drivers das placas Realtek aqui, faça o download do arquivo com os fontes para a máquina onde o módulo será compilado e substituido.
Descompacte o arquivo baixado em uma pasta qualquer.
# tar -xvjf r8168-8.012.00.tar.bz2
Remova o módulo errado do modprobe.
# rmmod r8169
Altere o modprobe.conf para reconhecer o módulo que será compilado.
# vim /etc/modprobe.conf
Onde existir alias eth0 r8169, altere para alias eth0 r8168.
Dentro da pasta onde o arquivo foi descompactado, compilar o novo driver e catalogar na lista de módulos do Linux.
# make clean modules
# make install
# depmod -a
Carregar o novo módulo compilado em memória.
# modprobe r8168
Pronto! Basta você reiniciar o serviço de rede ou reconfigurar sua placa com o ifconfig.
Vale ressaltar que a cada atualização de kernel aplicada nesta máquina, este módulo deverá ser recompilado.
Feito isso, storage rodando feito uma mariola.
Espero que os ajudem.
[]’s
kernel: r8169: eth0: link up



Hello
I found your site when I was searching for network problems about Raltek card RTL8111/8168B
I use CentOS 5.3 with build-in kernel. From time to time I get information from WATCHDOG that my eth0 has timed out. I need to restart network service & restart ipaliases to get network working properly.
I would like to ask if you have any troubles with your network on the server after installing r8168.ko driver?
Hi Tom,
First of all, thanks for visiting my blog.
Answering your question… Yes, after applying this new network module from Realtek, everything is working fine and I had no problems anymore.
Best regards
Thank you for your reply – I will give it a try today or tommorow
BTW – I forgot to ask about network card revision you have in your server. My card revision acording to lspci -v is rev 02 – I have other server with the same kernel but with network card rev 01 and this server is working without any problems on standard r8169 driver build into kernel 2.6.18…
Well, the revision of my server is rev01… below is attached the output of my lspci.
03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 01)
But the revision, in this case, doesnt matter, because you will download the driver for this Realtek Network Card model, not the revision.
I’m pretty sure that if you apply the r8168 module, your network problems will cease.
Regards
Hi
I’m back to share with you that your tip solved problems with network on my CentOS box. After one week from installing r8168 driver I did not have any issues with network on my server. Thank you very much one more time!
Hi Tom… Glad to know that the tip did help you.
Thanks for your feedback.
Regards.
I have Realtek RTL8102E and same error , can you help fix this ?
Hi Roger… thanks for your comment.
Just follow the steps in this post and you will fix this bug.
If you have any questions, please, feel free to ask here.
Regards.