NSIS-ka
A free C++ implementation of NSIS protocols

Changeset 2374

Show
Ignore:
Timestamp:
11/24/06 14:12:02 (7 years ago)
Author:
stud-matfried
Message:

thesis: Corrected the NF state machine (missing transition).
Added two diagrams showing the test setups used during development.

Location:
natfw-nslp/trunk/thesis
Files:
4 added
7 modified

Legend:

Unmodified
Added
Removed
  • natfw-nslp/trunk/thesis/Gnuplot/nf_vergleich.gpl

    r2369 r2374  
    66set boxwidth 0.8 
    77set grid ytics 
    8 set ylabel "Mittlere Verarbeitungszeit in µs" 
     8set ylabel "Mittlere Verarbeitungszeit in µs" 
    99set xtics border nomirror ('CREATE' 1.5, 'RESPONSE' 4.5) 
    1010plot [0:6] [0:60] \ 
  • natfw-nslp/trunk/thesis/diplarb.bib

    r2352 r2374  
    9191@techreport{state_machine, 
    9292        title           = {NAT/FW NSLP State Machine}, 
    93         editor          = {Constantin Werner and others}, 
     93        editor          = {Constantin Werner}, 
    9494        institution     = {IETF NSIS Working Group}, 
    9595        type            = {Working Draft}, 
     
    244244  year          = 1996, 
    245245} 
     246 
     247 
     248@article{GISTka, 
     249  author        = {Thomas Herzog}, 
     250  title         = {Implementierung und Evaluierung des NSIS Transport Layer 
     251                   Protocols zum Transport von Signalisierungsnachrichten 
     252                   im Internet}, 
     253  month         = jan, 
     254  year          = 2006, 
     255} 
  • natfw-nslp/trunk/thesis/entwurf.tex

    r2354 r2374  
    217217 
    218218Um die Verwaltung der Sitzungen kümmert sich der Session-Manager 
    219 (Klasse \texttt{session\_manager}). Seine Aufgabe ist es, Sessions 
    220 verschiedener Typen abzuspeichern, sie über einen Schlüssel (die 
    221 Session-ID) aufzufinden und auf Anfrage zu löschen. Er dient außerdem 
    222 als Fabrik für neue Sessions, die er basierend auf der Konfiguration 
    223 des lokalen Knotens erzeugt. Der Session-Manager ist ein reiner 
    224 Datenspeicher, der nur auf Anfrage von außen aktiv wird und von mehreren 
    225 Worker-Threads genutzt werden kann. Ein Mutex stellt sicher, dass 
    226 hierbei innerhalb des Session-Managers keine Race Conditions auftreten 
    227 können. 
     219(eine Instanz der Klasse \texttt{session\_manager}). Seine Aufgabe 
     220ist es, Sessions verschiedener Typen abzuspeichern, sie über einen 
     221Schlüssel (die Session-ID) aufzufinden und auf Anfrage zu löschen. Er 
     222dient außerdem als Fabrik für neue Sessions, die er basierend auf der 
     223Konfiguration des lokalen Knotens erzeugt. Der Session-Manager ist ein 
     224reiner Datenspeicher, der nur auf Anfrage von außen aktiv wird und von 
     225mehreren Worker-Threads genutzt werden kann. Ein Mutex stellt sicher, 
     226dass hierbei innerhalb des Session-Managers keine Race Conditions 
     227auftreten können. 
    228228 
    229229Für alle Session-Typen wurde eine gemeinsame abstrakte Oberklasse 
     
    868868 
    869869Basiskomponente für NATFWka ist Thomas Herzogs prototypische 
    870 GIST-Implemen"-tierung GISTka, die im Rahmen seiner Diplomarbeit entstand. 
    871 Außerdem kommt für das Lesen und Schreiben von Protokollnachrichten die 
    872 am Institut für Telematik entwickelte Bibliothek ProtLib zum Einsatz. 
     870GIST-Implemen"-tierung GISTka, die im Rahmen seiner Diplomarbeit 
     871\cite{GISTka} entstand. Außerdem kommt für das Lesen und Schreiben 
     872von Protokollnachrichten die am Institut für Telematik entwickelte 
     873Bibliothek ProtLib zum Einsatz. 
    873874 
    874875Beide Softwarepakete mussten zunächst zunächst angepasst werden, bevor 
  • natfw-nslp/trunk/thesis/eval.tex

    r2372 r2374  
    77 
    88Bei der vorliegenden prototypischen Implementierung wurde das 
    9 Hauptaugenmerk auf ein übersichtliches Design und leicht lesbaren Code 
    10 gelegt. Eine Optimierung zugunsten des Durchsatzes war nicht explizit 
    11 gefordert, aber trotzdem sollen Messungen durchgeführt werden, um die 
    12 Leistungsfähigkeit der Implementierung einschätzen zu können. 
    13  
    14  
    15 %% ============================== 
    16 \section{Die Testsuite} 
     9Hauptaugenmerk auf ein übersichtliches Design, leicht lesbaren 
     10Code und eine vollständige Abdeckung der Funktionalität 
     11des NATFW-Drafts gelegt. Dieses Kapitel beschreibt in 
     12Abschnitt~\ref{ch:Evaluierung:sub:funktionale_tests} die funktionalen 
     13funktionalen Tests, die während der Entwicklungseit durchgeführt wurden, 
     14um ein ordnungsgemäßes Funktionieren des Codes sicherzustellen. 
     15 
     16Eine Optimierung zugunsten des Durchsatzes war nicht explizit 
     17gefordert, aber trotzdem wurden Messungen durchgeführt, um die 
     18Leistungsfähigkeit der Implementierung grob einschätzen zu können. 
     19Während der Implementierung standen zu diesem Zweck vier Rechner aus 
     20dem Router-Testbett des Instituts für Telematik zur Verfügung. Das 
     21Testbett besteht aus Linux-Rechnern, die mittels eines Switchs zu 
     22virtuellen Netzen zusammengeschaltet werden können. Der Zugriff auf die 
     23Rechner erfolgte über SSH; der zu testende Code wurde mit Hilfe von 
     24\texttt{rsync} auf die einzelnen Knoten verteilt. 
     25 
     26Sämtliche Messungen wurden auf Testrechnern mit der folgenden Konfiguration 
     27durchgeführt: 
     28 
     29\begin{itemize} 
     30  \item Prozessor: Intel Pentium IV HT 
     31  \item Arbeitsspeicher: 2 GB DDR-400 
     32  \item Betriebssystem: SuSE Linux 9.3 mit Kernel 2.6.11 
     33  \item Compiler: g++ 3.3.5 (Teil der GNU Compiler Collection) 
     34  \item Standardbibliothek: libstdc++ 5 
     35\end{itemize} 
     36 
     37Die Ergebnisse der Messungen werden im zweiten Teil des Kapitels in 
     38Abschnitt~\ref{ch:Evaluierung:sub:leistungstests} vorgestellt. 
     39 
     40 
     41%% ============================== 
     42\section{Funktionale Tests} 
     43%% ============================== 
     44\label{ch:Evaluierung:sub:funktionale_tests} 
     45 
     46% Die Funktionalität der Implementierung  
     47 
     48 
     49%% ============================== 
     50\subsection{Die Testsuite} 
    1751%% ============================== 
    1852 
     
    4983 
    5084%% ============================== 
    51 \section{Das Testnetz} 
    52 %% ============================== 
    53  
    54 Obwohl die Unit-Tests eine große Hilfe während der Entwicklungszeit waren, 
    55 ist ein echter Netzwerktest dadurch nicht zu ersetzen. Während der 
    56 Implementierung standen zu diesem Zweck vier Rechner aus dem Router-Testbett 
    57 des Instituts für Telematik zur Verfügung. Das Testbett besteht aus 
    58 Linux-Rechnern, die mittels eines Switchs zu virtuellen Netzen 
    59 zusammengeschaltet werden können. Der Zugriff auf die Rechner erfolgte 
    60 über SSH; der zu testende Code wurde mit Hilfe von \texttt{rsync} auf die 
    61 einzelnen Knoten verteilt. 
    62  
    63 Sämtliche Messungen wurden auf Testrechnern mit der folgenden Konfiguration 
    64 durchgeführt: 
    65  
    66 \begin{itemize} 
    67   \item Prozessor: Intel Pentium IV HT 
    68   \item Arbeitsspeicher: 2 GB DDR-400 
    69   \item Betriebssystem: SuSE Linux 9.3 mit Kernel 2.6.11 
    70   \item Compiler: g++ 3.3.5 (Teil der GNU Compiler Collection) 
    71   \item Standardbibliothek: libstdc++ 5 
    72 \end{itemize} 
    73  
    74  
    75 %% ============================== 
    76 \section{Messmethoden} 
     85\subsection{Das Testnetz} 
     86%% ============================== 
     87 
     88Obwohl die Unit-Tests eine große Hilfe während der Entwicklungszeit 
     89waren, und ihre häufige Ausführung dabei half, Fehler früh aufzudecken, 
     90können sie einen echten Netzwerktest nicht ersetzen. Tests auf Systemen 
     91im Netzwerk sind weniger statisch als Unit-Tests und ermöglichen es, 
     92unter anderem durch Analyse der Logging-Meldungen, die Implementierung 
     93und ihr Verhalten in verschiedenen Szenarien zu untersuchen. 
     94 
     95Der Schwerpunkt der durchgeführten Tests lag darin, alle Knoten-Typen 
     96im Zusammenspiel miteinander zu testen. 
     97 
     98Die in \ref{GISTka} durchgeführten Tests wurden als funktionierend 
     99vorausgesetzt. 
     100 
     101\begin{figure}[h] 
     102\begin{center} 
     103\includegraphics[width=12cm,angle=0]{Bilder/Test_Setup_1} 
     104\caption{Test Setup 1} 
     105\label{img:Test_Setup_1} 
     106\end{center} 
     107\end{figure} 
     108 
     109\begin{figure}[h] 
     110\begin{center} 
     111\includegraphics[width=12cm,angle=0]{Bilder/Test_Setup_2} 
     112\caption{Test Setup 2} 
     113\label{img:Test_Setup_2} 
     114\end{center} 
     115\end{figure} 
     116 
     117 
     118%% ============================== 
     119\subsection{Interop-Tests} 
     120%% ============================== 
     121 
     122Interop-Tests Mitte Oktober 2006 in Coimbra, Portugal. 
     123 
     124 
     125 
     126%% ============================== 
     127\section{Leistungsmessungen} 
     128%% ============================== 
     129\label{ch:Evaluierung:sub:leistungstests} 
     130 
     131 
     132%% ============================== 
     133\subsection{Messmethoden} 
    77134%% ============================== 
    78135\label{ch:Evaluierung:sec:Messmethoden} 
     
    134191 
    135192%% ============================== 
    136 \section{Leistungsbestimmung des NATFW-Codes} 
     193\subsection{Leistungsbestimmung des NATFW-Codes} 
    137194%% ============================== 
    138195\label{ch:Evaluierung:sec:NATFW} 
     
    187244 
    188245%% ============================== 
    189 \subsection{Leistungsbestimmung eines NI-Knotens} 
     246\subsubsection{Leistungsbestimmung eines NI-Knotens} 
    190247%% ============================== 
    191248 
     
    277334 
    278335%% ============================== 
    279 \subsection{Leistungsbestimmung eines NF-Knotens} 
     336\subsubsection{Leistungsbestimmung eines NF-Knotens} 
    280337%% ============================== 
    281338 
     
    447504\begin{center} 
    448505\includegraphics[angle=0]{Gnuplot/nf_vergleich} 
    449 \caption{Verarbeitung von Nachrichten auf einem NF-Knoten} 
     506\caption{NF: Verarbeitung von Nachrichten} 
    450507\label{img:nf_vergleich} 
    451508\end{center} 
     
    476533allozierte. 
    477534 
    478 \begin{figure}[ht] 
     535\begin{figure}[p] 
    479536\begin{center} 
    480537\includegraphics[angle=0]{Gnuplot/nf_1_session_mgr} 
     
    492549unter dieser Grenze liegen. 
    493550 
    494 \begin{figure}[ht] 
     551\begin{figure}[p] 
    495552\begin{center} 
    496553\includegraphics[angle=0]{Gnuplot/nf_3_session_mgr} 
     
    595652 
    596653%% ============================== 
    597 \subsection{Leistungsbestimmung eines NR-Knotens} 
     654\subsubsection{Leistungsbestimmung eines NR-Knotens} 
    598655%% ============================== 
    599656 
     
    635692 
    636693%% ============================== 
    637 \section{Optimierungsmöglichkeiten} 
     694\subsection{Optimierungsmöglichkeiten} 
    638695%% ============================== 
    639696\label{ch:Evaluierung:sec:optimierung}