Sockets Redesign Exercise
Goal for this in-class exercise: redesign the sockets kernel calls to improve on the current kernel-calls.
You will work in groups of 4 or 5 students; you and your project partner should be in different groups.
Existing kernel calls to consider (click for manual pages):
- socket
- bind
- listen
- accept
- accept4
- connect
- read
- recv
- recvfrom
- recvmsg
- write
- send
- sendto
- sendmsg
- shutdown
- close
- getsockopt
- setsockopt
- getpeername
Step 1: familiarize yourselves with the existing calls. Focus on the basics:
you do not need to become expert in every exotic feature of calls such as
recvmsg
and getsockopt
.
Step 2: discuss what you like and don't like about the existing calls, based on your experiences working with them.
Step 3: redesign the system calls to make them better.
- Your group can decide what "better" means.
- Given a choice between something that is a smaller change and something that is more radical, I encourage you to try the radical approach (within reason).
- If you have time to come up with 2 alternatives, that would be even better.
- Make a list of the strengths and weaknesses of your alternative design(s).
Step 4: put together a set of slides to present in class (see lecture notes for that class for details).