As of now, the multi-FD feature supports connection over the default network only. This Patchset series is a Qemu side implementation of providing multiple interfaces support for multi-FD. This enables us to fully utilize dedicated or multiple NICs in case bonding of NICs is not possible.
Introduction ------------- Multi-FD Qemu implementation currently supports connection only on the default network. This forbids us from advantages like: - Separating VM live migration traffic from the default network. - Fully utilize all NICs’ capacity in cases where creating a LACP bond (Link Aggregation Control Protocol) is not supported. Multi-interface with Multi-FD ----------------------------- Multiple-interface support over basic multi-FD has been implemented in the patches. Advantages of this implementation are: - Able to separate live migration traffic from default network interface by creating multiFD channels on ip addresses of multiple non-default interfaces. - Can optimize the number of multi-FD channels on a particular interface depending upon the network bandwidth limit on a particular interface. Implementation -------------- Earlier the 'migrate' qmp command: { "execute": "migrate", "arguments": { "uri": "tcp:0:4446" } } Modified qmp command: { "execute": "migrate", "arguments": { "uri": "tcp:0:4446", "multi-fd-uri-list": [ { "source-uri": "tcp::6900", "destination-uri": "tcp:0:4480", "multifd-channels": 4}, { "source-uri": "tcp:10.0.0.0: ", "destination-uri": "tcp:11.0.0.0:7789", "multifd-channels": 5} ] } } ------------------------------------------------------------------------------ Earlier the 'migrate-incoming' qmp command: { "execute": "migrate-incoming", "arguments": { "uri": "tcp::4446" } } Modified 'migrate-incoming' qmp command: { "execute": "migrate-incoming", "arguments": {"uri": "tcp::6789", "multi-fd-uri-list" : [ {"destination-uri" : "tcp::6900", "multifd-channels": 4}, {"destination-uri" : "tcp:11.0.0.0:7789", "multifd-channels": 5} ] } } ------------------------------------------------------------------------------ Introduced a new flag while spawning a qemu process for 'migrate-incoming' ip addresses (-multi-fd-incoming flag): -multi-fd-incoming "tcp::6900:4,tcp:11.0.0.0:7789:5" --- Het Gala (4): Modifying ‘migrate’ qmp command to add multi-FD socket on particular source and destination pair Adding multi-interface support for multi-FD on destination side Establishing connection between any non-default source and destination pair Adding support for multi-FD connections dynamically chardev/char-socket.c | 4 +- include/io/channel-socket.h | 26 ++-- include/qapi/util.h | 10 ++ include/qemu/sockets.h | 6 +- io/channel-socket.c | 50 +++++-- migration/migration.c | 211 ++++++++++++++++++++++------ migration/migration.h | 3 +- migration/multifd.c | 42 +++--- migration/socket.c | 119 ++++++++++++---- migration/socket.h | 24 +++- monitor/hmp-cmds.c | 68 ++++----- nbd/client-connection.c | 2 +- qapi/migration.json | 92 +++++++++--- qapi/qapi-util.c | 27 ++++ qemu-nbd.c | 4 +- qemu-options.hx | 18 +++ scsi/pr-manager-helper.c | 1 + softmmu/vl.c | 30 +++- tests/unit/test-char.c | 8 +- tests/unit/test-io-channel-socket.c | 4 +- tests/unit/test-util-sockets.c | 16 +-- ui/input-barrier.c | 2 +- ui/vnc.c | 3 +- util/qemu-sockets.c | 71 +++++++--- 24 files changed, 626 insertions(+), 215 deletions(-) -- 2.22.3