Line 28:
Line 28:
* Suggested by: Andrei Vagin <avagin@gmail.com>
* Suggested by: Andrei Vagin <avagin@gmail.com>
* Mentors: Alexander Mikhalitsyn <alexander@mihalicyn.com>, Andrei Vagin <avagin@gmail.com>
* Mentors: Alexander Mikhalitsyn <alexander@mihalicyn.com>, Andrei Vagin <avagin@gmail.com>
−
−
=== Add support for checkpoint/restore of CORK-ed UDP socket ===
−
−
'''Summary:''' Support C/R of corked UDP socket
−
−
There's UDP_CORK option for sockets. As man page says:
−
<pre>
−
If this option is enabled, then all data output on this socket
−
is accumulated into a single datagram that is transmitted when
−
the option is disabled. This option should not be used in
−
code intended to be portable.
−
</pre>
−
−
Currently criu refuses to dump this case, so it's effectively a bug. Supporting
−
this will need extending the kernel API to allow criu read back the write queue
−
of the socket (see [[TCP connection|how it's done]] for TCP sockets, for example). Then
−
the queue is written into the image and is restored into the socket (with the CORK
−
bit set too).
−
−
'''Links:'''
−
* https://github.com/checkpoint-restore/criu/issues/409
−
* https://github.com/criupatchwork/criu/commit/a532312
−
* [[Sockets]], [[TCP connection]]
−
* [[https://groups.google.com/forum/#!topic/comp.os.linux.networking/Uz8PYiTCZSg UDP cork explained]]
−
−
'''Details:'''
−
* Skill level: intermediate (+linux kernel)
−
* Language: C
−
* Expected size: 350 hours
−
* Mentors: Alexander Mikhalitsyn <alexander@mihalicyn.com>, Pavel Tikhomirov <ptikhomirov@virtuozzo.com>, Andrei Vagin <avagin@gmail.com>
=== Use eBPF to lock and unlock the network ===
=== Use eBPF to lock and unlock the network ===