| 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 === |