[pve-devel] [PATCH qemu-server] copy conntrack information on migration

Mira Limbeck m.limbeck at proxmox.com
Mon Oct 19 11:24:38 CEST 2020


I haven't done any performance tests yet. But currently we query all 
conntracks (same as conntrack -L), print them one by one as JSON to STDOUT.
When importing we do it line-by-line, which means one conntrack at a 
time. But if necessary we could batch them, as mentioned in the 
bugtracker, by using the mnl batch interface.

There are no filters implemented yet, and there does not seem to be a 
way to filter by interface. So if we want to limit the conntracks to 
certain VMs, we could use zones and add a filter for them.
We would have to map them somehow though as the zone parameter is only 
16 bits and VMIDs might be bigger.


On 10/17/20 5:42 PM, Alexandre Derumier wrote:
> Hi,
> thanks for this patch !
>
> It could be interesting to see if it's working fine with
> sysctl -w net/netfilter/nf_conntrack_tcp_loose=0
>
> This is to avoid  ack flood ddos  (where random ack packets can add a
> lot of conntrack entries)
> https://2014.rmll.info/slides/356/day_1-1400-Jesper_Brouer-DDoS_protection_using_Netfilter_iptables.pdf
>
> Currently we can't enable it because  when we migrate vms, the already
> opened connected can't readd conntrack without a new syn.
>
>
> Also, is it fast when a lof of entries ? (like 100000 entries for example)
>
>
> Le ven. 16 oct. 2020 à 15:24, Mira Limbeck <m.limbeck at proxmox.com> a écrit :
>> Requires the pve-conntrack-tool. On migration the conntrack information
>> from the source node is dumped and sent to the target node where it is
>> then inserted.
>> This helps with open connections during migration when the firewall is active.
>>
>> Signed-off-by: Mira Limbeck <m.limbeck at proxmox.com>
>> ---
>>   PVE/QemuMigrate.pm | 3 +++
>>   1 file changed, 3 insertions(+)
>>
>> diff --git a/PVE/QemuMigrate.pm b/PVE/QemuMigrate.pm
>> index 11fec4b..a4e24f7 100644
>> --- a/PVE/QemuMigrate.pm
>> +++ b/PVE/QemuMigrate.pm
>> @@ -1065,6 +1065,9 @@ sub phase2 {
>>              die "unable to parse migration status '$stat->{status}' - aborting\n";
>>          }
>>       }
>> +
>> +    $self->log('info', 'copy conntrack information');
>> +    PVE::Tools::run_command([['/usr/bin/pve-conntrack-tool', 'dump'], [@{$self->{rem_ssh}}, '/usr/bin/pve-conntrack-tool', 'insert']]);
>>   }
>>
>>   sub phase2_cleanup {
>> --
>> 2.20.1
>>
>>
>>
>> _______________________________________________
>> pve-devel mailing list
>> pve-devel at lists.proxmox.com
>> https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
>>
> _______________________________________________
> pve-devel mailing list
> pve-devel at lists.proxmox.com
> https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel





More information about the pve-devel mailing list