[Devel] [patch 0/5][RFC - ipv4/udp checkpoint/restart] dumping/restoring the IPV4/UDP sockets

dlezcano at fr.ibm.com dlezcano at fr.ibm.com
Wed Jun 6 05:18:06 PDT 2007


Hi,

I would like to resurect the discussion we had concerning the socket 
checkpoint/restart.

I began to look how to checkpoint them. I thought the following:

The socket can be checkpointed one by one from userspace. 
That will allow to provide a mechanism to application which wants to 
checkpoint himself (I think for example at the tcpcp project) and 
increase the scope of usability.

If we are inside a container, only the sockets related to the container 
are viewable and by the way, checkpointable, so the socket checkpoint/restart 
will bring mobility to the container.

The socket relies to the socket fs. We can use the inode number to identify the socket. Using that, we can checkpoint/restart a socket associated with a fd 
because inode number can be easily retrieved from a fstat call and we can 
identify orphan sockets. Inode number of orphan sockets are viewable in the 
/proc/net/tcp file.

The checkpoint/restart data can be transfered between kernel and userspace via 
the generic netlink. It is a clean and secure way to define a message format 
with ascendant compatibily, ie : move the socket to an os  with a superior 
kernel version. The generic netlink message can be either used as raw data to 
be directly dumped to disk or can be modified from userspace for some specific 
purpose (I dont have examples)

The way the socket are checkpointed/restored is to stick as much as possible to user/kernel frontier in order to catch errors and bad values the sooner. 
I think for example, all the kernel_setsockopt, kernel_connect, etc ... 
function family, it is more reliable and secure.

The following patchset is a RFC for C/R the UDP sockets. It applies to 2.6.20.

One question is pending. Should we dump/restore send and receive queue knowing 
the protocol is not reliable ?

Regards.

  -- Daniel
-- 
_______________________________________________
Containers mailing list
Containers at lists.linux-foundation.org
https://lists.linux-foundation.org/mailman/listinfo/containers




More information about the Devel mailing list