NetworkManager 与 link down
今天在通过pktgen(Linux kernel自带的模块)来发送封包测试一台机器的两个网口的时候,发现测试程序跑一段时间会自动停止。
后来,一位同事提到,以前遇到过同样的情况,是因为那个网口会 link down。后来在 dmesg 的log里面,确实查到了 link down和link up的记录。
pktgen 2.72: Packet Generator for packet performance testing.
ADDRCONF(NETDEV_UP): eth0: link is not ready
8021q: adding VLAN 0 to HW filter on device eth0
ADDRCONF(NETDEV_UP): eth1: link is not ready
8021q: adding VLAN 0 to HW filter on device eth1
igb 0000:09:00.0: eth0: igb: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX/TX
ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
igb 0000:0a:00.0: eth1: igb: eth1 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX/TX
ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready
但是,为什么会 link down?我确定那根网线是好的;并且,我已经将网卡 driver 升级到最新版了。在平时的正常使用过程中(非测试),并没有发现网卡会 link down。
最后,我怀疑到了 dhclient。因为这两个网口被配置成DHCP方式获取IP,但是,启动的时候并没有成功获取IP;因为它们被用一根网线连接在一起。所以 dhclient会在后台每隔一段时间重新尝试获取IP。
我就尝试杀掉 dhclient;但是,杀掉之后,dhclient 进程又会被重启。罪魁祸首就是 NetworkManager,它在重启dhclient进程。所以将 NetworkManager 停掉(NetworkManager 会停掉 dhclient 进程)。重新跑 pktgen 测试,果然没有再遇到 link down 的问题。