[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [RFC] sync NIC's MAC maintained in NICConf as soon as e

From: Jason Wang
Subject: Re: [Qemu-devel] [RFC] sync NIC's MAC maintained in NICConf as soon as emualted NIC's MAC changed in guest
Date: Thu, 26 Sep 2013 12:28:19 +0800
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.0

On 09/26/2013 11:42 AM, Zhanghaoyu (A) wrote:
>>> Hi, all
>>> Do live migration if emulated NIC's MAC has been changed, RARP with 
>>> wrong MAC address will broadcast via qemu_announce_self in destination, so, 
>>> long time network disconnection probably happen.
>>> I want to do below works to resolve this problem, 1. change NICConf's 
>>> MAC as soon as emulated NIC's MAC changed in guest 2. sync NIC's (more 
>>> precisely, queue) MAC to corresponding NICConf in NIC's migration load 
>>> handler
>>> Any better ideas?
>> As Michael points out. The only possible solution is to use do it inside the 
>> guest instead of qemu ( and using a pv device). You can have a look at my 
>> RFCs in http://lists.nongnu.org/archive/html/qemu-devel/2013-03/msg01127.html
>> which let virtio driver send the gARP. Xen, Hyperv does the same thing.
> How about other emulated NICs, like etl8139, etc. ?

A possible solution is to toggle the link status after migration and
make use of arp_notify. But it may make the migration aware of guest.
Xen guys has posted this idea but get rejected upstream.
>> The point is qemu does not know how the macs was used. So your method only 
>> solves the issue partially becuase:
>> - A card can have several macs, see virtio_net and e1000's mac table and it 
>> can be overflowed also.
>> - Vlan could be used so we need to send tagged gARP instead of untagged.
> Does the emulated NIC in qemu have knowledge of all of its MACs?

Looks not. For e1000, if the number of macs tracked by guest is greater
than the number of RAR, it will use unicast promiscuous mode. For
virtio-net, the mac table can be overflowd, and then it will allow all
unicast mac address to be received.

So emulated NIC may not have knowledge of all its MACs, and more
important: how it could be used.
> We can provide an interface nic_announce_self(NetClientState *nc, uint8_t 
> *mac_addr) which will try several times to send RARP just as same as 
> what qemu_announce_self does, all emulated NICs' migration load handler can 
> call nic_announce_self to announce itself for its all MACs.

See http://lists.nongnu.org/archive/html/qemu-devel/2013-03/msg01130.html.
>>> Thanks,
>>> Zhang Haoyu

reply via email to

[Prev in Thread] Current Thread [Next in Thread]