diff mbox

[ovs-dev,1/2] docs: Clarify the superiority of dpdkvhostuserclient

Message ID 20170526141238.31246-1-stephen@that.guru
State Accepted
Headers show

Commit Message

Stephen Finucane May 26, 2017, 2:12 p.m. UTC
Apparently dpdkvhostuser interfaces are inferior to dpdkvhostuserclient.
Explain why.

Signed-off-by: Stephen Finucane <stephen@that.guru>
Cc: Ciara Loftus <ciara.loftus@intel.com>
Cc: Kevin Traynor <ktraynor@redhat.com>
---
I'd like to note what happens to traffic when OVS or a VM is restarted
for both port types. If someone knows the answer to this, please feel
free to take ownership of that patch/ask me for a v2.
---
 Documentation/topics/dpdk/vhost-user.rst | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

Comments

Kevin Traynor May 29, 2017, 3:19 p.m. UTC | #1
On 05/26/2017 03:12 PM, Stephen Finucane wrote:
> Apparently dpdkvhostuser interfaces are inferior to dpdkvhostuserclient.
> Explain why.
> 
> Signed-off-by: Stephen Finucane <stephen@that.guru>
> Cc: Ciara Loftus <ciara.loftus@intel.com>
> Cc: Kevin Traynor <ktraynor@redhat.com>
> ---
> I'd like to note what happens to traffic when OVS or a VM is restarted
> for both port types. If someone knows the answer to this, please feel
> free to take ownership of that patch/ask me for a v2.
> ---
>  Documentation/topics/dpdk/vhost-user.rst | 8 ++++++--
>  1 file changed, 6 insertions(+), 2 deletions(-)
> 
> diff --git a/Documentation/topics/dpdk/vhost-user.rst b/Documentation/topics/dpdk/vhost-user.rst
> index ba22684..2e2396b 100644
> --- a/Documentation/topics/dpdk/vhost-user.rst
> +++ b/Documentation/topics/dpdk/vhost-user.rst
> @@ -54,8 +54,12 @@ vHost User sockets, and the client connects to the server. Depending on which
>  port type you use, ``dpdkvhostuser`` or ``dpdkvhostuserclient``, a different
>  configuration of the client-server model is used.
>  
> -For vhost-user ports, Open vSwitch acts as the server and QEMU the client.  For
> -vhost-user-client ports, Open vSwitch acts as the client and QEMU the server.
> +For vhost-user ports, Open vSwitch acts as the server and QEMU the client. This
> +means if OVS dies, all VMs **must** be restarted. On the other hand, for
> +vhost-user-client ports, OVS acts as the client and QEMU the server. This means
> +OVS can die and be restarted without issue, and it is also possible to restart
> +an instance itself. For this reason, vhost-user-client ports are the preferred
> +type for most use cases.
>  
>  .. _dpdk-vhost-user:
>  
> 
LGTM. Acked-by: Kevin Traynor <ktraynor@redhat.com>
Darrell Ball June 3, 2017, 9:04 p.m. UTC | #2
On 5/26/17, 7:12 AM, "ovs-dev-bounces@openvswitch.org on behalf of Stephen Finucane" <ovs-dev-bounces@openvswitch.org on behalf of stephen@that.guru> wrote:

    Apparently dpdkvhostuser interfaces are inferior to dpdkvhostuserclient.
    Explain why.
    
    Signed-off-by: Stephen Finucane <stephen@that.guru>

    Cc: Ciara Loftus <ciara.loftus@intel.com>
    Cc: Kevin Traynor <ktraynor@redhat.com>
    ---
    I'd like to note what happens to traffic when OVS or a VM is restarted
    for both port types. If someone knows the answer to this, please feel
    free to take ownership of that patch/ask me for a v2.
    ---
     Documentation/topics/dpdk/vhost-user.rst | 8 ++++++--
     1 file changed, 6 insertions(+), 2 deletions(-)
    
    diff --git a/Documentation/topics/dpdk/vhost-user.rst b/Documentation/topics/dpdk/vhost-user.rst
    index ba22684..2e2396b 100644
    --- a/Documentation/topics/dpdk/vhost-user.rst
    +++ b/Documentation/topics/dpdk/vhost-user.rst
    @@ -54,8 +54,12 @@ vHost User sockets, and the client connects to the server. Depending on which
     port type you use, ``dpdkvhostuser`` or ``dpdkvhostuserclient``, a different
     configuration of the client-server model is used.
     
    -For vhost-user ports, Open vSwitch acts as the server and QEMU the client.  For
    -vhost-user-client ports, Open vSwitch acts as the client and QEMU the server.
    +For vhost-user ports, Open vSwitch acts as the server and QEMU the client. This
    +means if OVS dies, all VMs **must** be restarted. On the other hand, for
    +vhost-user-client ports, OVS acts as the client and QEMU the server. This means
    +OVS can die and be restarted without issue,


“ and it is also possible to restart
    +an instance itself.”

Restart a VM instance ?; if so, it seems already implied.
Or OVS instance ?

 For this reason, vhost-user-client ports are the preferred
    +type for most use cases.

At one point, because I am helping to support OVS-DPDK, I had both
vhostuser and vhostuserclient ports configured on our performance servers,
because I thought I should have both, so I could support both. Then, I realized I
just did not want to use vhostuser ports, due to the permissions/security
issues, noticed on OVS restart.

So, what are the use cases (besides self-flagellation) for using vhostuser ports in lieu of
vhostuserclient ports ?
If the answer is none, can we deprecate them in OVS 2.8 (update NEWS etc) and
remove them in OVS 2.9 ?
     
     .. _dpdk-vhost-user:
     
    -- 
    2.9.4
    
    _______________________________________________
    dev mailing list
    dev@openvswitch.org
    https://urldefense.proofpoint.com/v2/url?u=https-3A__mail.openvswitch.org_mailman_listinfo_ovs-2Ddev&d=DwICAg&c=uilaK90D4TOVoH58JNXRgQ&r=BVhFA09CGX7JQ5Ih-uZnsw&m=hjj87k1Hqw8FflJQ7cRgAFD8O4-t89ARPxN1qb1XrZs&s=LCybNvXe55JKD-bmxLDouYfRUdKhk7qHQFv2Wsk7UsA&e=
Aaron Conole June 4, 2017, 4:15 p.m. UTC | #3
Darrell Ball <dball@vmware.com> writes:

> On 5/26/17, 7:12 AM, "ovs-dev-bounces@openvswitch.org on behalf of Stephen Finucane" <ovs-dev-bounces@openvswitch.org on behalf of stephen@that.guru> wrote:
>
>     Apparently dpdkvhostuser interfaces are inferior to dpdkvhostuserclient.
>     Explain why.
>     
>     Signed-off-by: Stephen Finucane <stephen@that.guru>
>     Cc: Ciara Loftus <ciara.loftus@intel.com>
>     Cc: Kevin Traynor <ktraynor@redhat.com>
>     ---
>     I'd like to note what happens to traffic when OVS or a VM is restarted
>     for both port types. If someone knows the answer to this, please feel
>     free to take ownership of that patch/ask me for a v2.
>     ---
>      Documentation/topics/dpdk/vhost-user.rst | 8 ++++++--
>      1 file changed, 6 insertions(+), 2 deletions(-)
>     
>     diff --git a/Documentation/topics/dpdk/vhost-user.rst b/Documentation/topics/dpdk/vhost-user.rst
>     index ba22684..2e2396b 100644
>     --- a/Documentation/topics/dpdk/vhost-user.rst
>     +++ b/Documentation/topics/dpdk/vhost-user.rst
>     @@ -54,8 +54,12 @@ vHost User sockets, and the client connects to the server. Depending on which
>      port type you use, ``dpdkvhostuser`` or ``dpdkvhostuserclient``, a different
>      configuration of the client-server model is used.
>      
>     -For vhost-user ports, Open vSwitch acts as the server and QEMU the client.  For
>     -vhost-user-client ports, Open vSwitch acts as the client and QEMU the server.
>     +For vhost-user ports, Open vSwitch acts as the server and QEMU the client. This
>     +means if OVS dies, all VMs **must** be restarted. On the other hand, for
>     +vhost-user-client ports, OVS acts as the client and QEMU the server. This means
>     +OVS can die and be restarted without issue,
>
>
> “ and it is also possible to restart
>     +an instance itself.”
>
> Restart a VM instance ?; if so, it seems already implied.
> Or OVS instance ?
>
>  For this reason, vhost-user-client ports are the preferred
>     +type for most use cases.
>
> At one point, because I am helping to support OVS-DPDK, I had both
> vhostuser and vhostuserclient ports configured on our performance servers,
> because I thought I should have both, so I could support both. Then, I realized I
> just did not want to use vhostuser ports, due to the permissions/security
> issues, noticed on OVS restart.
>
> So, what are the use cases (besides self-flagellation) for using vhostuser ports in lieu of
> vhostuserclient ports ?

At the time they were introduced, deployed versions of qemu couldn't
support the vhostuserclient mode.  I'm less sure what the state of that
world looks like today.  I know that RHEL 7.3 doesn't ship a QEMU that
supports client-mode ports.

> If the answer is none, can we deprecate them in OVS 2.8 (update NEWS etc) and
> remove them in OVS 2.9 ?

I'm all for deprecating them as long as the major vendors (RH, Debian,
SUSE) support the newer QEMU.  2.9 may be too aggressive for removal -
perhaps the release after?  Just to be sure there is a path to migration
for existing users.

Maybe I'm off my rocker, though.

>      .. _dpdk-vhost-user:
>      
>     -- 
>     2.9.4
>     
>     _______________________________________________
>     dev mailing list
>     dev@openvswitch.org
>     https://urldefense.proofpoint.com/v2/url?u=https-3A__mail.openvswitch.org_mailman_listinfo_ovs-2Ddev&d=DwICAg&c=uilaK90D4TOVoH58JNXRgQ&r=BVhFA09CGX7JQ5Ih-uZnsw&m=hjj87k1Hqw8FflJQ7cRgAFD8O4-t89ARPxN1qb1XrZs&s=LCybNvXe55JKD-bmxLDouYfRUdKhk7qHQFv2Wsk7UsA&e= 
>     
>
> _______________________________________________
> dev mailing list
> dev@openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
Darrell Ball June 5, 2017, 9:05 p.m. UTC | #4
On 6/4/17, 9:15 AM, "Aaron Conole" <aconole@redhat.com> wrote:

    Darrell Ball <dball@vmware.com> writes:
    
    > On 5/26/17, 7:12 AM, "ovs-dev-bounces@openvswitch.org on behalf of Stephen Finucane" <ovs-dev-bounces@openvswitch.org on behalf of stephen@that.guru> wrote:

    >

    >     Apparently dpdkvhostuser interfaces are inferior to dpdkvhostuserclient.

    >     Explain why.

    >     

    >     Signed-off-by: Stephen Finucane <stephen@that.guru>

    >     Cc: Ciara Loftus <ciara.loftus@intel.com>

    >     Cc: Kevin Traynor <ktraynor@redhat.com>

    >     ---

    >     I'd like to note what happens to traffic when OVS or a VM is restarted

    >     for both port types. If someone knows the answer to this, please feel

    >     free to take ownership of that patch/ask me for a v2.

    >     ---

    >      Documentation/topics/dpdk/vhost-user.rst | 8 ++++++--

    >      1 file changed, 6 insertions(+), 2 deletions(-)

    >     

    >     diff --git a/Documentation/topics/dpdk/vhost-user.rst b/Documentation/topics/dpdk/vhost-user.rst

    >     index ba22684..2e2396b 100644

    >     --- a/Documentation/topics/dpdk/vhost-user.rst

    >     +++ b/Documentation/topics/dpdk/vhost-user.rst

    >     @@ -54,8 +54,12 @@ vHost User sockets, and the client connects to the server. Depending on which

    >      port type you use, ``dpdkvhostuser`` or ``dpdkvhostuserclient``, a different

    >      configuration of the client-server model is used.

    >      

    >     -For vhost-user ports, Open vSwitch acts as the server and QEMU the client.  For

    >     -vhost-user-client ports, Open vSwitch acts as the client and QEMU the server.

    >     +For vhost-user ports, Open vSwitch acts as the server and QEMU the client. This

    >     +means if OVS dies, all VMs **must** be restarted. On the other hand, for

    >     +vhost-user-client ports, OVS acts as the client and QEMU the server. This means

    >     +OVS can die and be restarted without issue,

    >

    >

    > “ and it is also possible to restart

    >     +an instance itself.”

    >

    > Restart a VM instance ?; if so, it seems already implied.

    > Or OVS instance ?

    >

    >  For this reason, vhost-user-client ports are the preferred

    >     +type for most use cases.

    >

    > At one point, because I am helping to support OVS-DPDK, I had both

    > vhostuser and vhostuserclient ports configured on our performance servers,

    > because I thought I should have both, so I could support both. Then, I realized I

    > just did not want to use vhostuser ports, due to the permissions/security

    > issues, noticed on OVS restart.

    >

    > So, what are the use cases (besides self-flagellation) for using vhostuser ports in lieu of

    > vhostuserclient ports ?

    
    At the time they were introduced, deployed versions of qemu couldn't
    support the vhostuserclient mode.  I'm less sure what the state of that
    world looks like today.  I know that RHEL 7.3 doesn't ship a QEMU that
    supports client-mode ports.

I understand about the qemu version requirements; I really wanted to make sure
that there were no specific use cases for server mode, per this patch text.

Do you know if there are any issues with RHEL 7.3 supporting QEMU 2.7 ? 


    > If the answer is none, can we deprecate them in OVS 2.8 (update NEWS etc) and

    > remove them in OVS 2.9 ?

    
    I'm all for deprecating them as long as the major vendors (RH, Debian,
    SUSE) support the newer QEMU.  2.9 may be too aggressive for removal -
    perhaps the release after?  Just to be sure there is a path to migration
    for existing users.

Agreed; ideally, qemu should be upgradable to 2.7 on recent versions of
common/important distros such RHEL/centos, SLES and debian.

Many people have a national holiday today, so let us see when they get back.

If we can deprecate, then:
1) We might deprecate now and say in an upcoming release, vhostuserserver port code
will be removed.
2) We can add a log warning to that effect on configuration.
3) We can add text here to suggest upgrading to qemu 2.7 if at all possible
and using client mode. qemu 2.9 is out, upgrade to 2.7 should be possible in many (most ?) cases, for those
serious about using ovs-dpdk with VM connectivity.



    
    Maybe I'm off my rocker, though.
    
    >      .. _dpdk-vhost-user:

    >      

    >     -- 

    >     2.9.4

    >     

    >     _______________________________________________

    >     dev mailing list

    >     dev@openvswitch.org

    >     https://urldefense.proofpoint.com/v2/url?u=https-3A__mail.openvswitch.org_mailman_listinfo_ovs-2Ddev&d=DwICAg&c=uilaK90D4TOVoH58JNXRgQ&r=BVhFA09CGX7JQ5Ih-uZnsw&m=hjj87k1Hqw8FflJQ7cRgAFD8O4-t89ARPxN1qb1XrZs&s=LCybNvXe55JKD-bmxLDouYfRUdKhk7qHQFv2Wsk7UsA&e= 

    >     

    >

    > _______________________________________________

    > dev mailing list

    > dev@openvswitch.org

    > https://urldefense.proofpoint.com/v2/url?u=https-3A__mail.openvswitch.org_mailman_listinfo_ovs-2Ddev&d=DwIFaQ&c=uilaK90D4TOVoH58JNXRgQ&r=BVhFA09CGX7JQ5Ih-uZnsw&m=McRcrdQlkt_TY30rKe-4vvoXejvWEZkHpXG9whN4bt8&s=_9m8xG0PLIC2m9gKAjZ2FJKtW7XIRDhVqQmqOtPUgo0&e=
Ben Pfaff June 6, 2017, 11:05 p.m. UTC | #5
On Fri, May 26, 2017 at 03:12:37PM +0100, Stephen Finucane wrote:
> Apparently dpdkvhostuser interfaces are inferior to dpdkvhostuserclient.
> Explain why.
> 
> Signed-off-by: Stephen Finucane <stephen@that.guru>
> Cc: Ciara Loftus <ciara.loftus@intel.com>
> Cc: Kevin Traynor <ktraynor@redhat.com>
> ---
> I'd like to note what happens to traffic when OVS or a VM is restarted
> for both port types. If someone knows the answer to this, please feel
> free to take ownership of that patch/ask me for a v2.

I applied this to master on the strength of Kevin's ack, even though it
sounds like there is still room for improvement based on Aaron and
Darrell's comment.

Thanks!
Aaron Conole June 7, 2017, 10:49 p.m. UTC | #6
Darrell Ball <dball@vmware.com> writes:

> On 6/4/17, 9:15 AM, "Aaron Conole" <aconole@redhat.com> wrote:
>
>     Darrell Ball <dball@vmware.com> writes:
>     
>     > On 5/26/17, 7:12 AM, "ovs-dev-bounces@openvswitch.org on behalf of Stephen Finucane" <ovs-dev-bounces@openvswitch.org on behalf of stephen@that.guru> wrote:
>     >
>     >     Apparently dpdkvhostuser interfaces are inferior to dpdkvhostuserclient.
>     >     Explain why.
>     >     
>     >     Signed-off-by: Stephen Finucane <stephen@that.guru>
>     >     Cc: Ciara Loftus <ciara.loftus@intel.com>
>     >     Cc: Kevin Traynor <ktraynor@redhat.com>
>     >     ---
>     >     I'd like to note what happens to traffic when OVS or a VM is restarted
>     >     for both port types. If someone knows the answer to this, please feel
>     >     free to take ownership of that patch/ask me for a v2.
>     >     ---
>     >      Documentation/topics/dpdk/vhost-user.rst | 8 ++++++--
>     >      1 file changed, 6 insertions(+), 2 deletions(-)
>     >     
>     >     diff --git a/Documentation/topics/dpdk/vhost-user.rst b/Documentation/topics/dpdk/vhost-user.rst
>     >     index ba22684..2e2396b 100644
>     >     --- a/Documentation/topics/dpdk/vhost-user.rst
>     >     +++ b/Documentation/topics/dpdk/vhost-user.rst
>     >     @@ -54,8 +54,12 @@ vHost User sockets, and the client connects to the server. Depending on which
>     >      port type you use, ``dpdkvhostuser`` or ``dpdkvhostuserclient``, a different
>     >      configuration of the client-server model is used.
>     >      
>     >     -For vhost-user ports, Open vSwitch acts as the server and QEMU the client.  For
>     >     -vhost-user-client ports, Open vSwitch acts as the client and QEMU the server.
>     >     +For vhost-user ports, Open vSwitch acts as the server and QEMU the client. This
>     >     +means if OVS dies, all VMs **must** be restarted. On the other hand, for
>     >     +vhost-user-client ports, OVS acts as the client and QEMU the server. This means
>     >     +OVS can die and be restarted without issue,
>     >
>     >
>     > “ and it is also possible to restart
>     >     +an instance itself.”
>     >
>     > Restart a VM instance ?; if so, it seems already implied.
>     > Or OVS instance ?
>     >
>     >  For this reason, vhost-user-client ports are the preferred
>     >     +type for most use cases.
>     >
>     > At one point, because I am helping to support OVS-DPDK, I had both
>     > vhostuser and vhostuserclient ports configured on our performance servers,
>     > because I thought I should have both, so I could support both. Then, I realized I
>     > just did not want to use vhostuser ports, due to the permissions/security
>     > issues, noticed on OVS restart.
>     >
>     > So, what are the use cases (besides self-flagellation) for using vhostuser ports in lieu of
>     > vhostuserclient ports ?
>     
>     At the time they were introduced, deployed versions of qemu couldn't
>     support the vhostuserclient mode.  I'm less sure what the state of that
>     world looks like today.  I know that RHEL 7.3 doesn't ship a QEMU that
>     supports client-mode ports.
>
> I understand about the qemu version requirements; I really wanted to make sure
> that there were no specific use cases for server mode, per this patch text.
>
> Do you know if there are any issues with RHEL 7.3 supporting QEMU 2.7 ? 

The current RHEV qemu version is 2.6, so it will have problems.

By the time 7.4 releases the RHEV qemu will at least be 2.9, so it's
probably okay.

>     > If the answer is none, can we deprecate them in OVS 2.8 (update NEWS etc) and
>     > remove them in OVS 2.9 ?
>     
>     I'm all for deprecating them as long as the major vendors (RH, Debian,
>     SUSE) support the newer QEMU.  2.9 may be too aggressive for removal -
>     perhaps the release after?  Just to be sure there is a path to migration
>     for existing users.
>
> Agreed; ideally, qemu should be upgradable to 2.7 on recent versions of
> common/important distros such RHEL/centos, SLES and debian.

Yep.

> Many people have a national holiday today, so let us see when they get back.
>
> If we can deprecate, then:

For these two:

> 1) We might deprecate now and say in an upcoming release, vhostuserserver port code
> will be removed.
> 2) We can add a log warning to that effect on configuration.

Good idea.  I just submitted a patch to do this:

https://mail.openvswitch.org/pipermail/ovs-dev/2017-June/333609.html

> 3) We can add text here to suggest upgrading to qemu 2.7 if at all possible
> and using client mode. qemu 2.9 is out, upgrade to 2.7 should be
> possible in many (most ?) cases, for those
> serious about using ovs-dpdk with VM connectivity.

I'm not sure how the upgrade utility would work, since the location of
the vhostuser socket is important part of this.

>     Maybe I'm off my rocker, though.
>     
>     >      .. _dpdk-vhost-user:
>     >      
>     >     -- 
>     >     2.9.4
>     >     
>     >     _______________________________________________
>     >     dev mailing list
>     >     dev@openvswitch.org
>     >     https://urldefense.proofpoint.com/v2/url?u=https-3A__mail.openvswitch.org_mailman_listinfo_ovs-2Ddev&d=DwICAg&c=uilaK90D4TOVoH58JNXRgQ&r=BVhFA09CGX7JQ5Ih-uZnsw&m=hjj87k1Hqw8FflJQ7cRgAFD8O4-t89ARPxN1qb1XrZs&s=LCybNvXe55JKD-bmxLDouYfRUdKhk7qHQFv2Wsk7UsA&e= 
>     >     
>     >
>     > _______________________________________________
>     > dev mailing list
>     > dev@openvswitch.org
>     > https://urldefense.proofpoint.com/v2/url?u=https-3A__mail.openvswitch.org_mailman_listinfo_ovs-2Ddev&d=DwIFaQ&c=uilaK90D4TOVoH58JNXRgQ&r=BVhFA09CGX7JQ5Ih-uZnsw&m=McRcrdQlkt_TY30rKe-4vvoXejvWEZkHpXG9whN4bt8&s=_9m8xG0PLIC2m9gKAjZ2FJKtW7XIRDhVqQmqOtPUgo0&e= 
>     
>
>
>
> _______________________________________________
> dev mailing list
> dev@openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
diff mbox

Patch

diff --git a/Documentation/topics/dpdk/vhost-user.rst b/Documentation/topics/dpdk/vhost-user.rst
index ba22684..2e2396b 100644
--- a/Documentation/topics/dpdk/vhost-user.rst
+++ b/Documentation/topics/dpdk/vhost-user.rst
@@ -54,8 +54,12 @@  vHost User sockets, and the client connects to the server. Depending on which
 port type you use, ``dpdkvhostuser`` or ``dpdkvhostuserclient``, a different
 configuration of the client-server model is used.
 
-For vhost-user ports, Open vSwitch acts as the server and QEMU the client.  For
-vhost-user-client ports, Open vSwitch acts as the client and QEMU the server.
+For vhost-user ports, Open vSwitch acts as the server and QEMU the client. This
+means if OVS dies, all VMs **must** be restarted. On the other hand, for
+vhost-user-client ports, OVS acts as the client and QEMU the server. This means
+OVS can die and be restarted without issue, and it is also possible to restart
+an instance itself. For this reason, vhost-user-client ports are the preferred
+type for most use cases.
 
 .. _dpdk-vhost-user: