群晖虚拟机VMM装OpenWrt软路由宽带跑不满的一些坑
由于入手了群晖NAS系统,前几天把在使用的R4S软路由从多媒体箱拆下来了,用群晖的VMM虚拟机装OpenWrt发现宽带测速跟下载速度跑不满1000M宽带问题,经过半小时的研究折腾发现问题出现在虚拟网卡上面了,今天就来说说群晖虚拟机安装OpenWrt旁路由选择网卡的一些坑。
网上的一些群晖虚拟机VMM装软路由OpenWrt固件都特别提醒我们在选择e1000虚拟网卡,如下图:
是的,如果在配置网络的时候选虚拟网卡为e1000,OpenWrt的连接口会显示为全双工,但是你在测速或者下载的时候就会发现,e1000网卡只能跑200M-300M网速。
起初我还怀疑群晖装OpenWrt不能发挥它的性能,但是仔细想一想,不应该啊,我给OpenWrt的配置2核6G怎么会不够用?问题应该出现在网卡上了。
群晖虚拟机里可选三种网卡:virtio、e1000、rtl8139
“e1000”系列提供Intel e1000系列的网卡模拟,纯的QEMU(非qemu-kvm)默认就是提供Intel e1000系列的虚拟网卡。
“virtio” 类型是qemu-kvm对半虚拟化IO(virtio)驱动的支持。
这三个网卡的最大区别(此处指最需要关注的地方)是速度:
rtl8139 10/100Mb/s
e1000 1Gb/s
virtio 10Gb/s
注意virtio是唯一可以达到10Gb/s的,根据文献一,其iperf测试速率可达到9.4。文献1还提到如果virtio配置不合理速度只能达到3.6。不用担心这个情况,经查验ovirt自己生成的虚拟机配置都是合理的。( use ‘-device virtio-net-pci’ option)
当然这并不意味着rtl8139和e1000是没有意义的,毕竟virtio需要在guest上面安装驱动。rtl8139和e1000在兼容的广泛度上占有优势。例如,如果ovirt的cpu不是x86,而是arm或者其它某些系列cpu,上述网卡未必全部支持。这点需要注意。
然后我把OpenWrt关机,网卡修改成virtio,开机OpenWrt speedtest测速:932
迅雷下载也基本满速:
如果你选的是e1000网卡,网速不能达标的话可以试试选择virtio网卡,貌似一些黑群晖或者DSM版本6.X的可以使用e1000网卡,总之自行测试吧。
我的家庭网络硬件配置:
宽带:电信1000M宽带
群晖:DS920+
交换机:TP-LINK千兆8口交换机
软路由:友善R4S
路由器:主路由器(客厅)TL-XDR5480+TL-XDR3010(主卧)组有线MESH,也就是AP模式,有线中继。
明年可以换2.5G网口的软路由跟2.5G的交换机。
结语:
关于群晖虚拟机装OpenWrt,我使用了几天,发现网络占用高的时候CPU占用达到了70-80,最重要的是发现了一个神奇的bug,就是手机wifi上网在打开微信高清图片的时候加载需要5-8秒的时间,打开微信的时候又连接中...这个不能忍,应该是虚拟机装的单队列的OpenWrt只是单队列只有一个核在处理报文,我也没有折腾了,改回R4S了。
软路由