The goal of this thesis project was to create a high performance TCP/IP protocol stack, written in C++. An additional objective was to find a method to evaluate the performance of a protocol stack.
Our resulting protocol stack does not completely implement the TCP/IP protocol suit. More specifically it only implements the IP, UDP and ARP protocols.
One of the many problems that had to be solved during this project was how to obtain a comparative measurement between our stack and another already existing stack. Two solutions were found to this problem, the first of these compared the round-trip time for a packet sent between two computers. The second and more precise one utilized the parallel port on the computer which stack is being tested, to show when a message enters and leaves the stack. The time between these events was measured with an oscilloscope.
Using these methods, the performance of our protocol stack was evaluated. The results show that it compares well to the Linux stack used as reference, except for long packets with the checksum enabled.
A few possibilities exists that would improve the performance of our stack. Three of the more important ones are CRA, reducing the use of the new and delete operators, and combining copying of data with the checksum calculation.