Difference between revisions of "TCP repair TODO"

From CRIU
Jump to navigation Jump to search
(+conntrack)
 
(13 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 +
''Main article: [[TCP connection]]''
 +
 
TCP repair feature in the Linux kernel is supposed to help migrating a TCP socket. It's not yet complete and this page lists what is to be done.
 
TCP repair feature in the Linux kernel is supposed to help migrating a TCP socket. It's not yet complete and this page lists what is to be done.
  
; Transitional states
+
; OOB data
: Currently we support sockets in ''closed'' and ''establised'' states. However, if a socket is in e.g. ''syn-sent'' state the process of turning it into ''established'' can last long. We should teach the kernel and criu to checkpoint and restore this and other states
+
: Nothing to say here actually. This data is just not supported currently.
 +
 
 +
== Done stuff ==
 +
 
 +
; Transitional states & Shutdown sockets repair
 +
: Fixed in [[Download/criu/2.10|2.10]]
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px">
 +
Old description:
 +
<div class="mw-collapsible-content">
 +
Currently we support sockets in ''closed'' and ''establised'' states. However, if a socket is in e.g. ''syn-sent'' state the process of turning it into ''established'' can last long. We should teach the kernel and criu to checkpoint and restore this and other states.
  
; Optimized restore
+
The half-opened connections on the server side can be dropped dump-time with the <code>--skip-in-flight</code> option. This helps in heavily loaded cases when such sockets appear often.
: Currently the whole outgoing queue is restored in a "all was sent, waiting for ACK-s" state. After this the data that was really not sent yet will be re-transmitted after a while. This will make the connection work, but will delay it for some time. Need to improve this.
 
  
; OOB data
+
''For shutdown repair'': Need to place checks in the inet shutdown code similar to those on connect/sendmsg paths.
: Nothing to say here actually. This data is just not supported currently.
+
</div>
 +
</div>
  
 
; Window restore fix
 
; Window restore fix
: Currently what we do it send the window probe skb when repair is OFF. The other side should send us the response, but this process is not guaranteed to work. Need to fix this either by saving and restoring the window value, or by re-transmitting the probe again and again.
+
: Fixed in [[Download/criu/2.5|2.5]]
  
; Shutdown sockets repair
+
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px">
: Need to place checks in the inet shutdown code similar to those on connect/sendmsg paths.
+
Old description:
 +
<div class="mw-collapsible-content">
 +
Currently what we do it send the window probe skb when repair is OFF. The other side should send us the response, but this process is not guaranteed to work. Need to fix this either by saving and restoring the window value, or by re-transmitting the probe again and again.
 +
</div>
 +
</div>
  
 
; Connection tracking
 
; Connection tracking
: The nf_conntrack thing in the kernel is about to be live-migrated too. There's currently a API for
+
: Fixed in [[Download/criu/2.0|2.0]]
getting the conntrack info (/proc file), but no such for restoring it by hands.
+
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px">
 +
Old description:
 +
<div class="mw-collapsible-content">
 +
The nf_conntrack thing in the kernel is about to be live-migrated too.
 +
There's currently an API for getting the conntrack info (/proc file), but no such for restoring it by hands.
 +
</div>
 +
</div>
 +
 
 +
; Optimized restore
 +
: FIxed in [[Download/criu/1.0|1.0]]
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px">
 +
Old description:
 +
<div class="mw-collapsible-content">
 +
: Currently the whole outgoing queue is restored in a "all was sent, waiting for ACK-s" state. After this the data that was really not sent yet will be re-transmitted after a while. This will make the connection work, but will delay it for some time. Need to improve this.
 +
</div>
 +
</div>
 +
 
 +
[[Category:Plans]]
 +
[[Category:Network]]

Latest revision as of 15:27, 24 January 2017

Main article: TCP connection

TCP repair feature in the Linux kernel is supposed to help migrating a TCP socket. It's not yet complete and this page lists what is to be done.

OOB data
Nothing to say here actually. This data is just not supported currently.

Done stuff[edit]

Transitional states & Shutdown sockets repair
Fixed in 2.10

Old description:

Currently we support sockets in closed and establised states. However, if a socket is in e.g. syn-sent state the process of turning it into established can last long. We should teach the kernel and criu to checkpoint and restore this and other states.

The half-opened connections on the server side can be dropped dump-time with the --skip-in-flight option. This helps in heavily loaded cases when such sockets appear often.

For shutdown repair: Need to place checks in the inet shutdown code similar to those on connect/sendmsg paths.

Window restore fix
Fixed in 2.5

Old description:

Currently what we do it send the window probe skb when repair is OFF. The other side should send us the response, but this process is not guaranteed to work. Need to fix this either by saving and restoring the window value, or by re-transmitting the probe again and again.

Connection tracking
Fixed in 2.0

Old description:

The nf_conntrack thing in the kernel is about to be live-migrated too.
There's currently an API for getting the conntrack info (/proc file), but no such for restoring it by hands.
Optimized restore
FIxed in 1.0

Old description:

Currently the whole outgoing queue is restored in a "all was sent, waiting for ACK-s" state. After this the data that was really not sent yet will be re-transmitted after a while. This will make the connection work, but will delay it for some time. Need to improve this.