From: Thibaut Collet <thibaut.collet@6wind.com>
To: Peter Xu <peterx@redhat.com>
Cc: dev@dpdk.org, Victor Kaplansky <victork@redhat.com>
Subject: Re: [dpdk-dev] [PATCH 0/4 for 2.3] vhost-user live migration support
Date: Tue, 15 Dec 2015 12:47:47 +0100 [thread overview]
Message-ID: <CABUUfwOkSG92yJ_OH+un4Xp2v+9aN5O_z7Md9z-j-DgNkTwabg@mail.gmail.com> (raw)
In-Reply-To: <CABUUfwO-6BUMc=VTnutOv5Lzx07acZnbrYG3e9pmDLJxhuK7Pg@mail.gmail.com>
On Tue, Dec 15, 2015 at 12:43 PM, Thibaut Collet <thibaut.collet@6wind.com>
wrote:
>
>
> On Tue, Dec 15, 2015 at 11:05 AM, Peter Xu <peterx@redhat.com> wrote:
>
>> On Tue, Dec 15, 2015 at 11:45:56AM +0300, Pavel Fedin wrote:
>> > To tell the truth, i don't know. I am also learning qemu internals on
>> the fly. Indeed, i see that it should announce itself. But
>> > this brings up a question: why do we need special announce procedure in
>> vhost-user then?
>>
>> I have the same question. Here is my guess...
>>
>> In customized networks, maybe people are not using ARP at all? When
>> we use DPDK, we directly pass through the network logic inside
>> kernel itself. So logically all the network protocols could be
>> customized by the user of it. In the customized network, maybe there
>> is some other protocol (rather than RARP) that would do the same
>> thing as what ARP/RARP does. So, this SEND_RARP request could give
>> the vhost-user backend a chance to format its own announce packet
>> and broadcast (in the SEND_RARP request, the guest's mac address
>> will be appended).
>>
>> CCing Victor to better know the truth...
>>
>> Peter
>>
>
>
> Hi,
>
> After a migration, to avoid network outage, the guest must announce its
> new location to the L2 layer, typically with a GARP. Otherwise requests
> sent to the guest arrive to the old host until a ARP request is sent (after
> 30 seconds) or the guest sends some data.
>
> QEMU implementation of self announce after a migration with a vhost
> backend is the following:
> - If the VIRTIO_GUEST_ANNOUNCE feature has been negotiated the guest
> sends automatically a GARP.
> - Else if the vhost backend implements VHOST_USER_SEND_RARP this request
> is sent to the vhost backend. When this message is received the vhost
> backend must act as it receives a RARP from the guest (purpose of this RARP
> is to update switches' MAC->port maaping as a GARP). This RARP is a false
> one, created by the vhost backend,
> - Else nothing is done and we have a network outage until a ARP is sent
> or the guest sends some data.
>
>
> VIRTIO_GUEST_ANNOUNCE feature is negotiated if:
> - the vhost backend announces the support of this feature. Maybe QEMU
> can be updated to support unconditionnaly this feature
> - the virtio driver of the guest implements this feature. It is not the
> case for old kernel or dpdk virtio pmd.
>
> Regarding dpdk to have a migration of vhost interface with limited network
> outage we have to:
>
> - Implement management VHOST_USER_SEND_RARP request to emulate a fake
> RARP for guest
>
> To do that we have to consider two kinds of guest:
> 1. Guest with virtio driver implementing VIRTIO_GUEST_ANNOUNCE feature
> 2. Guest with virtio driver that does not have the VIRTIO_GUEST_ANNOUNCE
> feature. This is the case with old kernel or guest running a dpdk (virtio
> pmd of dpdk does not have this feature)
>
> Guest with VIRTIO_GUEST_ANNOUNCE feature sends automatically some GARP
> after a migration if this feature has been negotiated. So the only thing to
> do it is to negotiate the VIRTIO_GUEST_ANNOUNCE feature between QEMU, vhost
> backend and the guest.
> For this kind of guest the vhost-backend must announce the support of
> VIRTIO_GUEST_ANNOUNCE feature. As vhost-backend has no particular action to
> do in this case the support of VIRTIO_GUEST_ANNOUNCE feature can be
> unconditionally set in QEMU in the future.
>
> For guest without VIRTIO_GUEST_ANNOUNCE feature we have to send a fake
> RARP: QEMU knows the MAC address of the guest and can create and broadcast
> a RARP. But in case of vhost-backend QEMU is not able to broadcast this
> fake RARP and must ask to the vhost backend to do it through the
> VHOST_USER_SEND_RARP request. When the vhost backend receives this message
> it must create a fake RARP message (as done by QEMU) and do the appropriate
> operation as this message has been sent by the guest through the virtio
> rings.
>
>
> To solve this point 2 solutions are implemented:
> - After the migration the guest automatically sends GARP. This solution
> occurs if VIRTIO_GUEST_ANNOUNCE feature has been negotiated between QEMU
> and the guest.
> * VIRTIO_GUEST_ANNOUNCE
>
Sorry my previous message will be sent by error (it is a draft with rework
in progress)
The full explanation are:
Hi,
After a migration, to avoid network outage, the guest must announce its new
location to the L2 layer, typically with a GARP. Otherwise requests sent to
the guest arrive to the old host until a ARP request is sent (after 30
seconds) or the guest sends some data.
QEMU implementation of self announce after a migration with a vhost backend
is the following:
- If the VIRTIO_GUEST_ANNOUNCE feature has been negotiated the guest sends
automatically a GARP.
- Else if the vhost backend implements VHOST_USER_SEND_RARP this request
is sent to the vhost backend. When this message is received the vhost
backend must act as it receives a RARP from the guest (purpose of this RARP
is to update switches' MAC->port maaping as a GARP). This RARP is a false
one, created by the vhost backend,
- Else nothing is done and we have a network outage until a ARP is sent or
the guest sends some data.
VIRTIO_GUEST_ANNOUNCE feature is negotiated if:
- the vhost backend announces the support of this feature. Maybe QEMU can
be updated to support unconditionnaly this feature
- the virtio driver of the guest implements this feature. It is not the
case for old kernel or dpdk virtio pmd.
Regarding dpdk to have a migration of vhost interface with limited network
outage we have to:
- In the vhost pmd
* Announce supports of VIRTIO_GUEST_ANNOUNCE feature
* Implement management of VHOST_USER_SEND_RARP request to emulate a
fake RARP if the VIRTIO_GUEST_ANNOUNCE feature is not implemented by the
guest
- In the virtio pmd
* Support VIRTIO_GUEST_ANNOUNCE feature to avoid RARP emission by
the host after a migration.
Hope this explanation will help
Regards.
Thibaut.
next prev parent reply other threads:[~2015-12-15 11:47 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-12-11 8:26 Pavel Fedin
2015-12-11 9:49 ` Yuanhan Liu
2015-12-11 10:22 ` Pavel Fedin
2015-12-14 3:58 ` Peter Xu
2015-12-14 7:30 ` Pavel Fedin
2015-12-14 9:04 ` Peter Xu
2015-12-14 9:46 ` Pavel Fedin
2015-12-14 10:09 ` Peter Xu
2015-12-14 12:09 ` Yuanhan Liu
2015-12-14 13:00 ` Peter Xu
2015-12-14 13:21 ` Yuanhan Liu
2015-12-14 13:28 ` Peter Xu
2015-12-14 13:51 ` Yuanhan Liu
2015-12-14 14:54 ` Pavel Fedin
2015-12-15 8:23 ` Yuanhan Liu
2015-12-15 8:45 ` Pavel Fedin
2015-12-15 8:56 ` Yuanhan Liu
2015-12-15 9:04 ` Pavel Fedin
2015-12-15 10:05 ` Peter Xu
2015-12-15 11:43 ` Thibaut Collet
2015-12-15 11:47 ` Thibaut Collet [this message]
2015-12-15 12:24 ` Pavel Fedin
2015-12-15 13:36 ` Yuanhan Liu
2015-12-15 13:48 ` Pavel Fedin
2015-12-15 13:59 ` Yuanhan Liu
2015-12-15 14:58 ` Pavel Fedin
2015-12-16 7:28 ` Yuanhan Liu
2015-12-16 11:57 ` Pavel Fedin
2015-12-16 12:08 ` Yuanhan Liu
2015-12-16 12:43 ` Pavel Fedin
2015-12-16 13:00 ` Yuanhan Liu
2015-12-15 13:18 ` Yuanhan Liu
2015-12-15 15:07 ` Thibaut Collet
2015-12-15 15:36 ` Pavel Fedin
2015-12-16 2:38 ` Peter Xu
2015-12-16 2:50 ` Yuanhan Liu
2015-12-16 7:05 ` Pavel Fedin
2015-12-15 9:42 ` Peter Xu
-- strict thread matches above, loose matches on Subject: below --
2015-12-02 3:43 Yuanhan Liu
2015-12-02 14:10 ` Victor Kaplansky
2015-12-02 14:33 ` Yuanhan Liu
2015-12-09 3:41 ` Xie, Huawei
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CABUUfwOkSG92yJ_OH+un4Xp2v+9aN5O_z7Md9z-j-DgNkTwabg@mail.gmail.com \
--to=thibaut.collet@6wind.com \
--cc=dev@dpdk.org \
--cc=peterx@redhat.com \
--cc=victork@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).