From: "Dr. David Alan Gilbert" <dgilb...@redhat.com> Hi, This set adds support for multipath TCP (mptcp), and has been tested for migration and (lightly) for NBD.
Multipath-tcp is a bit like bonding, but at L3; you can use it to handle failure, but can also use it to split traffic across multiple interfaces. Using a pair of 10Gb interfaces, I've managed to get 19Gbps (with the only tuning being using huge pages and turning the MTU up). It needs a bleeding-edge Linux kernel (in some older ones you get false accept messages for the subflows), and a C lib that has the constants defined (as current glibc does). To use it you just need to append ,mptcp to an address; for migration: -incoming tcp:0:4444,mptcp migrate -d tcp:192.168.11.20:4444,mptcp For nbd: (qemu) nbd_server_start 0.0.0.0:3333,mptcp=on -blockdev driver=nbd,server.type=inet,server.host=192.168.11.20,server.port=3333,server.mptcp=on,node-name=nbddisk,export=mydisk \ -device virtio-blk,drive=nbddisk,id=disk0 (Many of the other NBD address parsers/forms would need extra work) All comments welcome. Dave v2 Use of if defined(...) in the json file based on feedback A few missing ifdef's (from a bsd build test) Added nbd example. Dr. David Alan Gilbert (5): channel-socket: Only set CLOEXEC if we have space for fds io/net-listener: Call the notifier during finalize migration: Add cleanup hook for inwards migration migration/socket: Close the listener at the end sockets: Support multipath TCP io/channel-socket.c | 8 ++++---- io/dns-resolver.c | 4 ++++ io/net-listener.c | 3 +++ migration/migration.c | 3 +++ migration/migration.h | 4 ++++ migration/multifd.c | 5 +++++ migration/socket.c | 24 ++++++++++++++++++------ qapi/sockets.json | 5 ++++- util/qemu-sockets.c | 23 +++++++++++++++++++++++ 9 files changed, 68 insertions(+), 11 deletions(-) -- 2.31.1