Bothell, WA 98011
This was a project for my Advanced Operating Systems course. It essentially
allows for the changing of the socket connection to a different address and
port transparently to the
programmer/user. It accomplishes this task by modifying the kernel(Linux)
and intercepting messages sent over TCP.
The zip file contains all the source code for this project and the pdf files
show the proposal and the report turned in for class.
To give a little more info, the following is the abstract from our report.
Socket shifting is a client-transparent way to shift a service among a set of servers. It will minimize the overhead and the message exchanges, and it can be used to balance the loads of different servers. In this report, we review and compare existing related work about various ways to provide a socket migration service. Then we introduce our method to implement transparent socket shifting. In our implementation, we use loadable Linux kernel modules (LKM) to override the corresponding kernel functionality, and this kernel modication is only necessary in the client's side. Our LKM functionality exists above the TCP/IP layer; it works by intercepting specific in-stream messages passed by the servers. As directed by these messages, the kernel will provide the socket shifting service for the application level. For our implementation, we decided to modify as little kernel code as possible, to the extent that the servers don't need any kernel modications. The method does provide reliable and transparent services to the client, but the servers' applications must be written with the assumption that the client has our module installed, and the actual performance needs further study.