diff options
| author | Stefano Brivio <sbrivio@redhat.com> | 2025-07-17 10:38:17 +0200 |
|---|---|---|
| committer | Stefano Brivio <sbrivio@redhat.com> | 2025-07-29 17:57:01 +0200 |
| commit | a8782865c342eb2682cca292d5bf92b567344351 (patch) | |
| tree | 6a08c05a86e3d00d2f5369b4ec3718452f684ecd /test | |
| parent | 79de81ef6fb04327f76faf4f17ce1fcb298275f5 (diff) | |
| download | passt-a8782865c342eb2682cca292d5bf92b567344351.tar passt-a8782865c342eb2682cca292d5bf92b567344351.tar.gz passt-a8782865c342eb2682cca292d5bf92b567344351.tar.bz2 passt-a8782865c342eb2682cca292d5bf92b567344351.tar.lz passt-a8782865c342eb2682cca292d5bf92b567344351.tar.xz passt-a8782865c342eb2682cca292d5bf92b567344351.tar.zst passt-a8782865c342eb2682cca292d5bf92b567344351.zip | |
treewide: By default, don't quit source after migration, keep sockets open
We are hitting an issue in the KubeVirt integration where some data is
still sent to the source instance even after migration is complete. As
we exit, the kernel closes our sockets and resets connections. The
resulting RST segments are sent to peers, effectively terminating
connections that were meanwhile migrated.
At the moment, this is not done intentionally, but in the future
KubeVirt might enable OVN-Kubernetes features where source and
destination nodes are explicitly getting mirrored traffic for a while,
in order to decrease migration downtime.
By default, don't quit after migration is completed on the source: the
previous behaviour can be enabled with the new, but deprecated,
--migrate-exit option. After migration (as source), the -1 / --one-off
option has no effect.
Also, by default, keep migrated TCP sockets open (in repair mode) as
long as we're running, and ignore events on any epoll descriptor
representing data channels. The previous behaviour can be enabled with
the new, equally deprecated, --migrate-no-linger option.
By keeping sockets open, and not exiting, we prevent the kernel
running on the source node to send out RST segments if further data
reaches us.
Reported-by: Nir Dothan <ndothan@redhat.com>
Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Diffstat (limited to 'test')
| -rwxr-xr-x | test/lib/setup | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/test/lib/setup b/test/lib/setup index 575bc21..5994598 100755 --- a/test/lib/setup +++ b/test/lib/setup @@ -350,7 +350,7 @@ setup_migrate() { sleep 1 - __opts="--vhost-user" + __opts="--vhost-user --migrate-exit --migrate-no-linger" [ ${PCAP} -eq 1 ] && __opts="${__opts} -p ${LOGDIR}/passt_1.pcap" [ ${DEBUG} -eq 1 ] && __opts="${__opts} -d" [ ${TRACE} -eq 1 ] && __opts="${__opts} --trace" @@ -360,7 +360,7 @@ setup_migrate() { context_run_bg passt_repair_1 "./passt-repair ${STATESETUP}/passt_1.socket.repair" - __opts="--vhost-user" + __opts="--vhost-user --migrate-exit --migrate-no-linger" [ ${PCAP} -eq 1 ] && __opts="${__opts} -p ${LOGDIR}/passt_2.pcap" [ ${DEBUG} -eq 1 ] && __opts="${__opts} -d" [ ${TRACE} -eq 1 ] && __opts="${__opts} --trace" |
