最近のオンボードNICの蟹チップはRTL8111Cが多いかと思うんだけども、これ、普通にdebian入れてifconfigしてみたら、インストール直後にも関わらずものごっつい勢いで受信パケットのドロップが増えていってる。
# ifconfig eth0 Link encap:Ethernet HWaddr 00:24:1d:2b:39:83 inet addr:192.168.0.30 Bcast:192.168.0.255 Mask:255.255.255.0 inet6 addr: fe80::224:1dff:fe2b:3983/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:10335 errors:0 dropped:5165038648 overruns:0 frame:0 TX packets:5251 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:10953092 (10.4 MiB) TX bytes:525748 (513.4 KiB) Interrupt:254 Base address:0x6000 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:4 errors:0 dropped:0 overruns:0 frame:0 TX packets:4 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:340 (340.0 B) TX bytes:340 (340.0 B)
これ最初、こんなにパケットドロップして蟹チップ糞だと思ってたんだけど、そもそも受信パケット以上にドロップしまくってるとか意味わからんので調べてみたら、RTL8111CはPCI Express用のチップらしいのにもかかわらず、r8169はPCI用のドライバで、なんか知らないけどこのドライバで上がってるのが原因ぽいような気がした。
# lsmod | grep r8169 r8169 31492 0
なのでオフィシャル(Realtek)からRTL8111C用のドライバを落としてきて入れることにする。
# cd /usr/local/src/ # wget ftp://WebUser:DAx7h9V@202.65.194.212/cn/nic/r8168-8.012.00.tar.bz2 # aptitude install bzip2 build-essential linux-headers-`uname -r` -y # tar jxvf r8168-8.012.00.tar.bz2 # cd r8168-8.012.00 # make clean modules # make install # rmmod r8169; depmod -a; modprobe r8168
これでパケットドロップしなくなる。
# ifconfig eth0 Link encap:Ethernet HWaddr 00:24:1d:2b:39:83 inet addr:192.168.0.30 Bcast:192.168.0.255 Mask:255.255.255.0 inet6 addr: fe80::224:1dff:fe2b:3983/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:28 errors:0 dropped:0 overruns:0 frame:0 TX packets:26 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:2274 (2.2 KiB) TX bytes:3692 (3.6 KiB) Interrupt:254 Base address:0x6000 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:18 errors:0 dropped:0 overruns:0 frame:0 TX packets:18 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:1680 (1.6 KiB) TX bytes:1680 (1.6 KiB)
このままだと、リブートしたときにまたr8169が先に認識しちゃうので、initramfsを再構築しとく。
# echo r8168 >> /etc/initramfs-tools/modules # update-initramfs -u
これでリブートしても安心。