Message ID | 20210421112834.107651-1-dgilbert@redhat.com (mailing list archive) |
---|---|
Headers | show |
Series | mptcp support | expand |
* Dr. David Alan Gilbert (git) (dgilbert@redhat.com) wrote: > From: "Dr. David Alan Gilbert" <dgilbert@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 Queued > > 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 > >
From: "Dr. David Alan Gilbert" <dgilbert@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(-)