igbvf由于MAC地址为0,而不能在guest中使用的情况

在使用了Linux 3.9 作为KVM host的内核后,使用Intel igb NIC(如:82576, I350)的SR-IOV,在将VF(igbvf)分配guest使用时,可能会遇到不工作的情况。在guest的dmesg中可以看到如下的错误信息:

即是,在guest中检测到的igbvf的MAC地址为全0,如kernel(KVM)bugzilla上的这个bug:
https://bugzilla.kernel.org/show_bug.cgi?id=55421

经过分析,出现这个问题的原因是,在最新的igb driver中在igbf使用时,会默认设置其MAC地址为全0,而之前是设置一个随机的MAC,可以看下面的Patch真是去做这件事情的。

至于为什么设置为全0而不使用曾经的随机MAC呢,这主要是因为随机的MAC在guest中与udev不能很好的工作,多次使用VF后会让ethX(X为数字编号)的编号持续增长变化,可能变为eth500、eth666之类的,对用户很不友好。

所以在KVM中,对于igb NIC的SR-IOV操作,需要注意以下两种方法(注意使用其中一种方法即可避免VF的MAC全0的情况):
1. 在分配VF给客户机之前,需要在host中先设置igbvf的MAC地址,命令如下:

2. 升级guest中的kernel或igbvf driver,发现在升级一个rhel6.4 guest的内核到 Linux 3.9 之后,也可以正常使用igbvf了(尽管没有做第一种方法中在host中手动设置igbvf的MAC)。
这是因为最新的igbvf driver在检测到MAC为全0时,也做了特别处理。

master

Stay hungry, stay foolish.

发表评论

电子邮件地址不会被公开。 必填项已用*标注