\newpage \begin{appendix} \section{Appendix} % Fixed Bugs \addcontentsline{toc}{subsection}{Corrected Bugs and Optimizations} \subsection*{Corrected Bugs and Optimizations} \label{fixed-bugs} Below is a brief summary of the bugs that could be identified and fixed during the development of this thesis. The items have been extracted from the commit logs of the version control system used, and only bugs which were not introduced by the author himself are included. Some minor optimizations, which were not mentioned in the main part of the thesis are included as well. \begin{itemize} \item Fixed the use of an unitialized address length parameter in the Open MPI BTL component. \item Fixed the dereferencing of a \NULL\/ pointer in \fname{mca\_btl\_tcp\_proc\_remove}. \item Optimization: Two-split the acknowledgement processing: First, check if the ACK is valid and update \fname{una\_seq}, then send out pending packets, and finally remove the ack'd packets from the write queue. This gets new data on wire earlier. \item Some code expected the sequence number to increase with every packet, but only data, SYN and FIN frames eat sequence numbers. \item Several cleanups on socket close / destroy to avoid state diagramm violations in cases where the application and the remote host both want to close the connection at the same time. \item Taking care to always stop the RTX timer on socket close. \item Taking care to always clone the socket buffer prior to xmission. \item Optimization: Doing backlog processing without leaving the \fname{recvmsg} loop by releasing and locking the socket. \item There was another severe problem with simultaneous close, which is resolved now. \item Purge receive queue on \fname{FIN\_WAIT\_2} timeout. The memory was leaked previously. \item Added \fname{set\_state(ESP\_CLOSE)} in \fname{sock\_esp\_release} if unread data was purged to avoid state diagramm violation. \item Under certain conditions, the socket was not completely removed from the established hash table. \item Fixed the endless FIN retransmission bug. Finally, we're doing the \fname{CLOSE\_WAIT} to \fname{LAST\_ACK} transition. \item Taking care not to send out duplicate ACKs if they are not needed. \item Fixed hanging userspace application in sendmsg handler for closing / closed sockets. \item Fixed a \fname{dev} $\leftrightarrow$ \fname{input\_dev} mistaken bug in \fname{esp\_send\_rst(...)}. \item The \fname{ack\_seq} was not always incremented when it needed to. \item Added a missing \fname{dev\_put(...)} for the case when \fname{esp\_connect(...)} fails. \item Added missing write lock for the bound hash table in \fname{esp\_sk\_spawn\_child(...)}. \item Fixed some kernel-version dependent debugging code. \item Fix for change of struct \fname{packet\_type} as of kernel version 2.6.14. \item A crash in the function \fname{esp\_get\_port(...)} was fixed. \end{itemize} % Clusters \newpage \addcontentsline{toc}{subsection}{Configuration of the Cluster test Systems} \subsection*{Configuration of the Cluster test Systems} \bgroup \tabcolsep=0.3cm % bissel Abstand zwischen den Spalten \subsubsection*{Cluster 1} \begin{tabular}{rrl} -- & CPU & 2 $\times$ AMD Athlon MP 1600+\\ -- & main memory & 512 MB\\ -- & network interface & SysKonnect SK-9821 V2.0 GigE Adapter (66MHz PCI)\\ -- & support for TSO & no\\ -- & operating system & CentOS 4.2 (Linux 2.6.9-22.ELsmp \#6 SMP) \end{tabular} \subsubsection*{Cluster 2} \begin{tabular}{rrl} -- & CPU & 2 $\times$ Intel Xeon (Woodcrest) Dual Core CPU, 2.0 GHz\\ -- & main memory & 2.0 GB\\ -- & network interface & Intel 631xESB/632xESB DPT (PCI-X)\\ -- & support for TSO & yes\\ -- & operating system & CentOS 4.2 (Linux 2.6.9-22.ELsmp \#6 SMP) \end{tabular} \egroup % References \newpage \addcontentsline{toc}{subsection}{References} \bibliography{cites} % List of figures \newpage %\markboth{List of Figures}{List of Figures} \addcontentsline{toc}{subsection}{List of Figures} \listoffigures \newpage \centering \begin{minipage}{0.8 \textwidth} \vspace{3cm} \addcontentsline{toc}{subsection}{Statutory Declaration} \subsection*{Statutory Declaration} I hereby declare that this thesis is my own work and that, to the best of my knowledge and belief, no other sources or auxiliary tools except those stated, referenced and acknowledged have been used. \setlength{\parindent}{0cm} \vspace{1cm} Chemnitz, \today \vspace{2cm} Matthias Treydte \end{minipage} \end{appendix} %%% Local Variables: %%% mode: latex %%% TeX-master: "main" %%% End: