diff --git a/Appendices.aux b/Appendices.aux index a1323e1..65262d8 100644 --- a/Appendices.aux +++ b/Appendices.aux @@ -1,13 +1,13 @@ \relax -\@writefile{toc}{\contentsline {section}{\hspace {-\parindent }APPENDIX A:\ \ {\bf \uppercase {THE FIRST APPENDIX}} }{42}{}\protected@file@percent } -\newlabel{App:A}{{A}{42}} -\@writefile{toc}{\contentsline {section}{\hspace {-\parindent }APPENDIX B:\ \ {\bf \uppercase {THE SECOND APPENDIX}} }{43}{}\protected@file@percent } -\newlabel{App:B}{{B}{43}} -\@writefile{toc}{\contentsline {section}{\numberline {B.1}\bf A Heading in an Appendix}{43}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {B.1.1}\it A Subheading in an Appendix}{43}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{A Sub-subsection in an Appendix}{43}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\hspace {-\parindent }APPENDIX A:\ \ {\bf \uppercase {THE FIRST APPENDIX}} }{45}{}\protected@file@percent } +\newlabel{App:A}{{A}{45}} +\@writefile{toc}{\contentsline {section}{\hspace {-\parindent }APPENDIX B:\ \ {\bf \uppercase {THE SECOND APPENDIX}} }{46}{}\protected@file@percent } +\newlabel{App:B}{{B}{46}} +\@writefile{toc}{\contentsline {section}{\numberline {B.1}\bf A Heading in an Appendix}{46}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {B.1.1}\it A Subheading in an Appendix}{46}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{A Sub-subsection in an Appendix}{46}{}\protected@file@percent } \@setckpt{Appendices}{ -\setcounter{page}{44} +\setcounter{page}{47} \setcounter{equation}{0} \setcounter{enumi}{4} \setcounter{enumii}{0} @@ -24,6 +24,10 @@ \setcounter{subparagraph}{0} \setcounter{figure}{0} \setcounter{table}{0} +\setcounter{caption@flags}{0} +\setcounter{continuedfloat}{0} +\setcounter{subfigure}{0} +\setcounter{subtable}{0} \setcounter{lofdepth}{1} \setcounter{lotdepth}{1} \setcounter{appendixno}{2} diff --git a/Chapter1.aux b/Chapter1.aux index 41636da..ccca1de 100644 --- a/Chapter1.aux +++ b/Chapter1.aux @@ -39,6 +39,10 @@ \setcounter{subparagraph}{0} \setcounter{figure}{0} \setcounter{table}{0} +\setcounter{caption@flags}{0} +\setcounter{continuedfloat}{0} +\setcounter{subfigure}{0} +\setcounter{subtable}{0} \setcounter{lofdepth}{1} \setcounter{lotdepth}{1} } diff --git a/Chapter2.aux b/Chapter2.aux index 4ddd58b..83350c2 100644 --- a/Chapter2.aux +++ b/Chapter2.aux @@ -47,6 +47,10 @@ \setcounter{subparagraph}{0} \setcounter{figure}{0} \setcounter{table}{0} +\setcounter{caption@flags}{0} +\setcounter{continuedfloat}{0} +\setcounter{subfigure}{0} +\setcounter{subtable}{0} \setcounter{lofdepth}{1} \setcounter{lotdepth}{1} } diff --git a/Chapter3.aux b/Chapter3.aux index d147cec..b53bdce 100644 --- a/Chapter3.aux +++ b/Chapter3.aux @@ -4,7 +4,8 @@ \@writefile{toc}{\contentsline {section}{\numberline {3.2}\bf Compound Operators}{8}{}\protected@file@percent } \newlabel{sec:compops}{{3.2}{8}} \citation{cook_rage_2018} -\@writefile{lof}{\contentsline {figure}{\numberline {3.1}{\ignorespaces Path Walking to State 14}}{9}{}\protected@file@percent } +\@writefile{lof}{\contentsline {figure}{\numberline {3.1}{\ignorespaces Path Walking to State 14\relax }}{9}{}\protected@file@percent } +\providecommand*\caption@xref[2]{\@setref\relax\@undefined{#1}} \newlabel{fig:PW}{{3.1}{9}} \@writefile{toc}{\contentsline {section}{\numberline {3.3}\bf Color Coding}{10}{}\protected@file@percent } \citation{cook_rage_2018} @@ -17,7 +18,7 @@ \@writefile{toc}{\contentsline {section}{\numberline {3.4}\bf Intermediate Database Storage}{11}{}\protected@file@percent } \newlabel{sec:db-stor}{{3.4}{11}} \@writefile{toc}{\contentsline {subsection}{\numberline {3.4.1}\it Memory Constraint Difficulties}{11}{}\protected@file@percent } -\@writefile{lof}{\contentsline {figure}{\numberline {3.2}{\ignorespaces Color Coding a Small Network Based on Violations}}{12}{}\protected@file@percent } +\@writefile{lof}{\contentsline {figure}{\numberline {3.2}{\ignorespaces Color Coding a Small Network Based on Violations\relax }}{12}{}\protected@file@percent } \newlabel{fig:CC}{{3.2}{12}} \citation{zhang_boosting_2017} \@writefile{toc}{\contentsline {subsection}{\numberline {3.4.2}\it Maximizing Performance with Intermediate Database Storage}{13}{}\protected@file@percent } @@ -42,6 +43,10 @@ \setcounter{subparagraph}{0} \setcounter{figure}{2} \setcounter{table}{0} +\setcounter{caption@flags}{0} +\setcounter{continuedfloat}{0} +\setcounter{subfigure}{0} +\setcounter{subtable}{0} \setcounter{lofdepth}{1} \setcounter{lotdepth}{1} } diff --git a/Chapter4.aux b/Chapter4.aux index f0f42ce..52a909c 100644 --- a/Chapter4.aux +++ b/Chapter4.aux @@ -7,7 +7,7 @@ \citation{louthan_hybrid_2011} \citation{louthan_hybrid_2011} \citation{cook_rage_2018} -\@writefile{lof}{\contentsline {figure}{\numberline {4.1}{\ignorespaces A network without Synchronous Firing generating infeasible states}}{18}{}\protected@file@percent } +\@writefile{lof}{\contentsline {figure}{\numberline {4.1}{\ignorespaces A network without Synchronous Firing generating infeasible states\relax }}{18}{}\protected@file@percent } \newlabel{fig:non-sync_ex}{{4.1}{18}} \@writefile{toc}{\contentsline {subsection}{\numberline {4.1.1}\it Synchronous Firing in Literature}{18}{}\protected@file@percent } \newlabel{sec:sync-lit}{{4.1.1}{18}} @@ -16,17 +16,23 @@ \@writefile{toc}{\contentsline {section}{\numberline {4.2}\bf Necessary Alterations}{19}{}\protected@file@percent } \@writefile{toc}{\contentsline {subsection}{\numberline {4.2.1}\it GNU Bison and Flex}{19}{}\protected@file@percent } \@writefile{toc}{\contentsline {subsection}{\numberline {4.2.2}\it PostgreSQL}{20}{}\protected@file@percent } -\@writefile{lof}{\contentsline {figure}{\numberline {4.2}{\ignorespaces Inclusion of Synchronous Firing into GNU Bison, GNU Flex, and the overall program}}{21}{}\protected@file@percent } +\@writefile{lof}{\contentsline {figure}{\numberline {4.2}{\ignorespaces Inclusion of Synchronous Firing into GNU Bison, GNU Flex, and the overall program\relax }}{21}{}\protected@file@percent } \newlabel{fig:bison-flex}{{4.2}{21}} \@writefile{toc}{\contentsline {subsection}{\numberline {4.2.3}\it Compound Operators}{21}{}\protected@file@percent } \@writefile{toc}{\contentsline {subsection}{\numberline {4.2.4}\it Graph Generation}{21}{}\protected@file@percent } \@writefile{toc}{\contentsline {section}{\numberline {4.3}\bf Example Networks and Results}{22}{}\protected@file@percent } +\newlabel{sec:test-platform}{{4.3}{22}} \@writefile{toc}{\contentsline {subsection}{\numberline {4.3.1}\it Example Networks}{22}{}\protected@file@percent } -\@writefile{lof}{\contentsline {figure}{\numberline {4.3}{\ignorespaces Synchronous Firing in the Graph Generation Process}}{23}{}\protected@file@percent } +\newlabel{sec:Sync-Test}{{4.3.1}{22}} +\@writefile{lof}{\contentsline {figure}{\numberline {4.3}{\ignorespaces Synchronous Firing in the Graph Generation Process\relax }}{23}{}\protected@file@percent } \newlabel{fig:sync-fire}{{4.3}{23}} \@writefile{toc}{\contentsline {subsection}{\numberline {4.3.2}\it Results}{24}{}\protected@file@percent } +\@writefile{lof}{\contentsline {figure}{\numberline {4.4}{\ignorespaces Bar Graph and Line Graph Representations of Synchronous Firing on Runtime\relax }}{26}{}\protected@file@percent } +\newlabel{fig:Sync-RT}{{4.4}{26}} +\@writefile{lof}{\contentsline {figure}{\numberline {4.5}{\ignorespaces Bar Graph and Line Graph Representations of Synchronous Firing on State Space\relax }}{27}{}\protected@file@percent } +\newlabel{fig:Sync-State}{{4.5}{27}} \@setckpt{Chapter4}{ -\setcounter{page}{25} +\setcounter{page}{28} \setcounter{equation}{0} \setcounter{enumi}{4} \setcounter{enumii}{0} @@ -41,8 +47,12 @@ \setcounter{subsubsection}{0} \setcounter{paragraph}{0} \setcounter{subparagraph}{0} -\setcounter{figure}{3} +\setcounter{figure}{5} \setcounter{table}{0} +\setcounter{caption@flags}{0} +\setcounter{continuedfloat}{0} +\setcounter{subfigure}{0} +\setcounter{subtable}{0} \setcounter{lofdepth}{1} \setcounter{lotdepth}{1} } diff --git a/Chapter4.tex b/Chapter4.tex index 8d95705..424b4bf 100644 --- a/Chapter4.tex +++ b/Chapter4.tex @@ -89,7 +89,7 @@ The implementation of synchronous firing in the graph generation process relies \end{figure} -\TUsection{Example Networks and Results} +\TUsection{Example Networks and Results} \label{sec:test-platform} All data was collected on a 13 node cluster, with 12 nodes serving as dedicated compute nodes, and 1 node serving as the login node. Each compute node has a configuration as follows: \begin{itemize} \item{OS: CentOS release 6.9} @@ -100,7 +100,7 @@ All data was collected on a 13 node cluster, with 12 nodes serving as dedicated \end{itemize} All nodes are connected with an Infiniband interconnect. -\TUsubsection{Example Networks} +\TUsubsection{Example Networks} \label{sec:Sync-Test} The example networks for testing the effectiveness of synchronous firing follow the compliance graph generation approach. These networks analyze two assets, both of which are identical 2006 Toyota Corolla cars with identical qualities. The generation examines both cars at their current states, and proceeds to advance in time by a pre-determined amount, up to a pre-determined limit. Each time increment updates each car by an identical amount of mileage. During the generation process, it is determined if a car is out of compliance either through mileage or time since last maintenance in accordance with the Toyota Corolla Maintenance Schedule manual. In addition, the tests employ the use of ``services", where if a car is out of compliance, it will go through a correction process and reset the mileage and time since last service. Each test varies in the number of services used. The 1 Service test only employs one service, and it is dedicated to brake pads. The 2 Service test employs two services, where the first service is dedicated to the brake pads, and the second is for exhaust pipes. This process extends to the 3 and 4 Service tests. @@ -116,4 +116,23 @@ The testing information is as follows: \end{itemize} \TUsubsection{Results} +Using the testing setup described in Section \ref{sec:Sync-Test} on the platform described at the beginning of Section \ref{sec:test-platform}, results were collected in regards to the effect of synchronous firing on both state space and runtime. These results can be seen in Figures \ref{fig:Sync-RT} and \ref{fig:Sync-State}. Both figures depict a decrease in the number of states and a decrease in the runtime when synchronous firing is leveraged. Since synchronous firing prevents the generation of illegitimate states, there is no meaningful information loss that occurs in the graphs generated from the synchronous firing method. It is also noteworthy that even for the smallest graph generated (which only resulted in 394 states with synchronous firing enabled), the computation cost of additional work for group vectors was justified by the decrease in runtime. Since the resulting number of states was also reduced, there will be increased justification for the synchronous firing approach due to a reduced runtime for the analysis process. Further elaboration is seen in Section \ref{sec:FW}, but it is hypothesized that the synchronous firing approach will lead to an increased runtime reduction and state space reduction when more assets exist in the network due to the increased number of illegitimate state permutations. + +\begin{figure} + \centering + \includegraphics[width=\linewidth]{"./Chapter4_img/Sync-Runtime-Bar.png"} + \includegraphics[width=\linewidth]{"./Chapter4_img/Sync-Runtime.png"} + \caption{Bar Graph and Line Graph Representations of Synchronous Firing on Runtime} + \label{fig:Sync-RT} +\end{figure} + +\begin{figure} + \centering + \includegraphics[width=\linewidth]{"./Chapter4_img/Sync-StateSpace-Bar.png"} + \includegraphics[width=\linewidth]{"./Chapter4_img/Sync-StateSpace.png"} + \caption{Bar Graph and Line Graph Representations of Synchronous Firing on State Space} + \label{fig:Sync-State} +\end{figure} + + diff --git a/Chapter5_img/Sync-Runtime-Bar.png b/Chapter4_img/Sync-Runtime-Bar.png similarity index 100% rename from Chapter5_img/Sync-Runtime-Bar.png rename to Chapter4_img/Sync-Runtime-Bar.png diff --git a/Chapter5_img/Sync-Runtime.png b/Chapter4_img/Sync-Runtime.png similarity index 100% rename from Chapter5_img/Sync-Runtime.png rename to Chapter4_img/Sync-Runtime.png diff --git a/Chapter5_img/Sync-StateSpace-Bar.png b/Chapter4_img/Sync-StateSpace-Bar.png similarity index 100% rename from Chapter5_img/Sync-StateSpace-Bar.png rename to Chapter4_img/Sync-StateSpace-Bar.png diff --git a/Chapter5_img/Sync-StateSpace.png b/Chapter4_img/Sync-StateSpace.png similarity index 100% rename from Chapter5_img/Sync-StateSpace.png rename to Chapter4_img/Sync-StateSpace.png diff --git a/Chapter5.aux b/Chapter5.aux index 9514e70..e59231a 100644 --- a/Chapter5.aux +++ b/Chapter5.aux @@ -1,46 +1,46 @@ \relax -\@writefile{toc}{\contentsline {chapter}{\numberline {CHAPTER 5: }{\bf \uppercase {Utilization OF MESSAGE PASSING INTERFACE}}}{25}{}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {5.1}\bf Introduction to MPI Utilization for Attack Graph Generation}{25}{}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {5.2}\bf Necessary Components}{25}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {5.2.1}\it Serialization}{25}{}\protected@file@percent } +\@writefile{toc}{\contentsline {chapter}{\numberline {CHAPTER 5: }{\bf \uppercase {Utilization OF MESSAGE PASSING INTERFACE}}}{28}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {5.1}\bf Introduction to MPI Utilization for Attack Graph Generation}{28}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {5.2}\bf Necessary Components}{28}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {5.2.1}\it Serialization}{28}{}\protected@file@percent } \citation{li_concurrency_2019} \citation{9150145} \citation{7087377} -\@writefile{toc}{\contentsline {subsection}{\numberline {5.2.2}\it Data Consistency}{26}{}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {5.3}\bf Tasking Approach}{26}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {5.3.1}\it Introduction to the Tasking Approach}{26}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {5.3.2}\it Algorithm Design}{26}{}\protected@file@percent } -\@writefile{lof}{\contentsline {figure}{\numberline {5.1}{\ignorespaces Task Overview of the Attack Graph Generation Process}}{27}{}\protected@file@percent } -\newlabel{fig:tasks}{{5.1}{27}} -\@writefile{lof}{\contentsline {figure}{\numberline {5.2}{\ignorespaces Node Allocation for each Task}}{28}{}\protected@file@percent } -\newlabel{fig:node-alloc}{{5.2}{28}} -\@writefile{toc}{\contentsline {subsubsection}{Communication Structure}{29}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{Task 0}{29}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{Task 1}{29}{}\protected@file@percent } -\@writefile{lof}{\contentsline {figure}{\numberline {5.3}{\ignorespaces Data Distribution of Task One}}{30}{}\protected@file@percent } -\newlabel{fig:Task1-Data-Dist}{{5.3}{30}} -\@writefile{toc}{\contentsline {subsubsection}{Task 2}{30}{}\protected@file@percent } -\@writefile{lof}{\contentsline {figure}{\numberline {5.4}{\ignorespaces Communication From Task 1 to Task 2 when the Number of Nodes Allocated is Equal}}{31}{}\protected@file@percent } -\newlabel{fig:Task1-Case1}{{5.4}{31}} -\@writefile{lof}{\contentsline {figure}{\numberline {5.5}{\ignorespaces Communication From Task 1 to Task 2 when Task 1 Has More Nodes Allocated}}{32}{}\protected@file@percent } -\newlabel{fig:Task1-Case2}{{5.5}{32}} -\@writefile{toc}{\contentsline {subsubsection}{Task 3}{32}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{Task 4 and Task 5}{32}{}\protected@file@percent } -\newlabel{table:tasking-tag}{{5.3.2}{33}} -\@writefile{lot}{\contentsline {table}{\numberline {5.1}{\ignorespaces MPI Tags for the MPI Tasking Approach}}{33}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{MPI Tags}{33}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {5.3.3}\it Performance Expectations}{34}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {5.3.4}\it Results}{34}{}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {5.4}\bf Subgraphing Approach}{34}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {5.4.1}\it Introduction to the Subgraphing Approach}{34}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {5.4.2}\it Algorithm Design}{34}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{Communication Structure}{34}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{Worker Nodes}{34}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{Root Node}{35}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{Database Node}{35}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {5.4.3}\it Performance Expectations}{35}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {5.2.2}\it Data Consistency}{29}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {5.3}\bf Tasking Approach}{29}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {5.3.1}\it Introduction to the Tasking Approach}{29}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {5.3.2}\it Algorithm Design}{29}{}\protected@file@percent } +\@writefile{lof}{\contentsline {figure}{\numberline {5.1}{\ignorespaces Task Overview of the Attack Graph Generation Process\relax }}{30}{}\protected@file@percent } +\newlabel{fig:tasks}{{5.1}{30}} +\@writefile{lof}{\contentsline {figure}{\numberline {5.2}{\ignorespaces Node Allocation for each Task\relax }}{31}{}\protected@file@percent } +\newlabel{fig:node-alloc}{{5.2}{31}} +\@writefile{toc}{\contentsline {subsubsection}{Communication Structure}{32}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{Task 0}{32}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{Task 1}{32}{}\protected@file@percent } +\@writefile{lof}{\contentsline {figure}{\numberline {5.3}{\ignorespaces Data Distribution of Task One\relax }}{33}{}\protected@file@percent } +\newlabel{fig:Task1-Data-Dist}{{5.3}{33}} +\@writefile{toc}{\contentsline {subsubsection}{Task 2}{33}{}\protected@file@percent } +\@writefile{lof}{\contentsline {figure}{\numberline {5.4}{\ignorespaces Communication From Task 1 to Task 2 when the Number of Nodes Allocated is Equal\relax }}{34}{}\protected@file@percent } +\newlabel{fig:Task1-Case1}{{5.4}{34}} +\@writefile{lof}{\contentsline {figure}{\numberline {5.5}{\ignorespaces Communication From Task 1 to Task 2 when Task 1 Has More Nodes Allocated\relax }}{35}{}\protected@file@percent } +\newlabel{fig:Task1-Case2}{{5.5}{35}} +\@writefile{toc}{\contentsline {subsubsection}{Task 3}{35}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{Task 4 and Task 5}{35}{}\protected@file@percent } +\newlabel{table:tasking-tag}{{\caption@xref {table:tasking-tag}{ on input line 104}}{36}} +\@writefile{lot}{\contentsline {table}{\numberline {5.1}{\ignorespaces MPI Tags for the MPI Tasking Approach\relax }}{36}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{MPI Tags}{36}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {5.3.3}\it Performance Expectations}{37}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {5.3.4}\it Results}{37}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {5.4}\bf Subgraphing Approach}{37}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {5.4.1}\it Introduction to the Subgraphing Approach}{37}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {5.4.2}\it Algorithm Design}{37}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{Communication Structure}{37}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{Worker Nodes}{37}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{Root Node}{37}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{Database Node}{38}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {5.4.3}\it Performance Expectations}{38}{}\protected@file@percent } \@setckpt{Chapter5}{ -\setcounter{page}{36} +\setcounter{page}{39} \setcounter{equation}{0} \setcounter{enumi}{4} \setcounter{enumii}{0} @@ -57,6 +57,10 @@ \setcounter{subparagraph}{0} \setcounter{figure}{5} \setcounter{table}{1} +\setcounter{caption@flags}{0} +\setcounter{continuedfloat}{0} +\setcounter{subfigure}{0} +\setcounter{subtable}{0} \setcounter{lofdepth}{1} \setcounter{lotdepth}{1} } diff --git a/Chapter5.tex b/Chapter5.tex index 518f5ea..3c3e225 100644 --- a/Chapter5.tex +++ b/Chapter5.tex @@ -29,7 +29,7 @@ the class instances were able to be altered with relative ease, and many of the did not expose enough information for the non-intrusive approach to be viable. \TUsubsection{Data Consistency} -\TUsection{Tasking Approach} +\TUsection{Tasking Approach} \label{sec:Tasking-Approach} \TUsubsection{Introduction to the Tasking Approach} The high-level overview of the compliance graph generation process can be broken down into six main tasks. These tasks are described in Figure \ref{fig:tasks}. Prior works such as that seen by the @@ -96,7 +96,7 @@ Each node in Task 2 iterates through the received partial applicable exploit lis Task 3 is performed only by the root node, and no division of work is necessary. The root node will continuously check for new states until the Task 2 finalize signal is detected. This task consists of setting the new state's ID, adding it to the frontier, adding its information to the instance, and inserting information into the hash map. When the root node has processed all states and has received the Task 2 finalize signal, it will complete Task 3 by sending the instance and/or frontier to Task 4 and/or 5, respectively if applicable, then proceeds to Task 0. \TUsubsubsection{Task 4 and Task 5} -Intermediate database operations, though not frequent and may never occur for small graphs, are lengthy and time-consuming when they do occur. As discussed in Section \ref{sec:db-stor}, the two main memory consumers are the frontier and the instance, both of which are contained by the root node. Since the database storage requests are blocking, the pipeline would halt for a lengthy period of time while waiting for the root node to finish potentially two large storages. Tasks 4 and 5 work to alleviate the stall by executing independently of the regular pipeline execution flow. Since Tasks 4 and 5 do not send any data, no other tasks must wait for these tasks to complete. The root node can then asynchronously send the frontier and instance to the appropriate nodes as needed, clear its memory, and continue execution without delay. +Intermediate database operations, though not frequent and may never occur for small graphs, are lengthy and time-consuming when they do occur. As discussed in Section \ref{sec:db-stor}, the two main memory consumers are the frontier and the instance, both of which are contained by the root node. Since the database storage requests are blocking, the pipeline would halt for a lengthy period of time while waiting for the root node to finish potentially two large storages. Tasks 4 and 5 work to alleviate the stall by executing independently of the regular pipeline execution flow. Since Tasks 4 and 5 do not send any data, no other tasks must wait for these tasks to complete. The root node can then asynchronously send the frontier and instance to the appropriate nodes as needed, clear its memory, and continue execution without delay. After initial testing, it was determined that the communication cost of the asynchronous sending of data for Tasks 4 and 5 is less than the time requirement of a database storage operation performed by the root node. \TUsubsubsection{MPI Tags} To ensure that the intended message is received by each node, the MPI message envelopes have their tag fields specified. When a node sends a message, it specifies a tag that corresponds with the data and intent for which it is sent. The tag values were arbitrarily chosen, and tags can be added to the existing list or removed as desired. When receiving a message, a node can specify to only look for messages that have an envelope with a matching tag field. Not only do tags ensure that nodes are receiving the correct messages, they also reduce complexity for program design. Table \ref{table:tasking-tag} displays the list of tags used for the MPI Tasking approach. @@ -131,10 +131,10 @@ To ensure that the intended message is received by each node, the MPI message en Due to the amount of communication between nodes to distribute the necessary data through all stages of the tasking pipeline, this approach is not expected to outperform the serial approach in all cases. This tasking approach was specifically designed to reduce the computation time when the generation of each individual state increases in time. This approach does not offer any guarantees of processing through the frontier at an increased rate; it's main objective is to distribute the workload of individual state generation. As discussed in Section \ref{sec:Intro}, the amount of entries in the National Vulnerability database and any custom vulnerability testing to ensure adequate examination of all assets in the network sums to large number of exploits in the exploit list. Likewise for compliance graphs and compliance examinations, Section \ref{sec:CG-diff} discussed that the number of compliance checks for SOX, HIPAA, GDPR, PCI DSS, and/or any other regulatory compliance also sums to a large number of exploits in the exploit list. Since the generation of each state is largely dependent on the number of exploits present in the exploit list, this approach is best-suited for when the exploit list grows in size. \TUsubsection{Results} -Communication cost of asynchronous send for T4 and T5 is less than the time requirement of a database storage by root. \TUsection{Subgraphing Approach} \TUsubsection{Introduction to the Subgraphing Approach} +As opposed to the Tasking Approach described in Section \ref{sec:Tasking-Approach}, this Section introduces the Subgraphing Approach as a means of reducing runtime by frontier distribution though subgraphing. Section \ref{sec:db-stor} discusses that the frontier is expanded at a rate faster than it can process. This approach attempts to distribute the frontier by assigning MPI nodes a starting state, and each node will generate a subgraph up to a designated depth-limit, where each node will then return their generated subgraph to a merging process. The author of \cite{li_concurrency_2019} presented an alternative method of frontier processing by utilizing OpenMP on a shared-memory system to assign each thread an individual state to explore that would then pass through a critical section. This approach is intended for a distributed system, and additionally differs in that each node will explore multiple states to form a subgraph, rather than exploring one individual state. This approach was implemented with two versions, and both collected results to draw conclusions in regards to speedup, efficiency, and scalability for attack graph and compliance graph generation. \TUsubsection{Algorithm Design} \TUsubsubsection{Communication Structure} diff --git a/Chapter6.aux b/Chapter6.aux index 477f05a..061eab8 100644 --- a/Chapter6.aux +++ b/Chapter6.aux @@ -1,23 +1,23 @@ \relax -\@writefile{toc}{\contentsline {chapter}{\numberline {CHAPTER 6: }{\bf \uppercase {PERFORMANCE ANALYSIS}}}{36}{}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {6.1}\bf Small Networks}{36}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {6.1.1}\it Test Information}{36}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {6.1.2}\it Results}{36}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {6.1.3}\it Analysis}{36}{}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {6.2}\bf Large Networks}{36}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {6.2.1}\it Test Information}{36}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {6.2.2}\it Results}{36}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {6.2.3}\it Analysis}{36}{}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {6.3}\bf Large Exploit Lists}{36}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {6.3.1}\it Test Information}{36}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {6.3.2}\it Results}{36}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {6.3.3}\it Analysis}{36}{}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {6.4}\bf Distributed Hash Tables}{36}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {6.4.1}\it Test Information}{37}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {6.4.2}\it Results}{37}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {6.4.3}\it Analysis}{37}{}\protected@file@percent } +\@writefile{toc}{\contentsline {chapter}{\numberline {CHAPTER 6: }{\bf \uppercase {PERFORMANCE ANALYSIS}}}{39}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {6.1}\bf Small Networks}{39}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.1.1}\it Test Information}{39}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.1.2}\it Results}{39}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.1.3}\it Analysis}{39}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {6.2}\bf Large Networks}{39}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.2.1}\it Test Information}{39}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.2.2}\it Results}{39}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.2.3}\it Analysis}{39}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {6.3}\bf Large Exploit Lists}{39}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.3.1}\it Test Information}{39}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.3.2}\it Results}{39}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.3.3}\it Analysis}{39}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {6.4}\bf Distributed Hash Tables}{39}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.4.1}\it Test Information}{40}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.4.2}\it Results}{40}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.4.3}\it Analysis}{40}{}\protected@file@percent } \@setckpt{Chapter6}{ -\setcounter{page}{38} +\setcounter{page}{41} \setcounter{equation}{0} \setcounter{enumi}{4} \setcounter{enumii}{0} @@ -34,6 +34,10 @@ \setcounter{subparagraph}{0} \setcounter{figure}{0} \setcounter{table}{0} +\setcounter{caption@flags}{0} +\setcounter{continuedfloat}{0} +\setcounter{subfigure}{0} +\setcounter{subtable}{0} \setcounter{lofdepth}{1} \setcounter{lotdepth}{1} } diff --git a/Chapter7.aux b/Chapter7.aux index 1269324..222897c 100644 --- a/Chapter7.aux +++ b/Chapter7.aux @@ -1,8 +1,9 @@ \relax -\@writefile{toc}{\contentsline {chapter}{\numberline {CHAPTER 7: }{\bf \uppercase {CONCLUSIONS AND FUTURE WORKS}}}{38}{}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {7.1}\bf Future Work}{38}{}\protected@file@percent } +\@writefile{toc}{\contentsline {chapter}{\numberline {CHAPTER 7: }{\bf \uppercase {CONCLUSIONS AND FUTURE WORKS}}}{41}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {7.1}\bf Future Work}{41}{}\protected@file@percent } +\newlabel{sec:FW}{{7.1}{41}} \@setckpt{Chapter7}{ -\setcounter{page}{39} +\setcounter{page}{42} \setcounter{equation}{0} \setcounter{enumi}{4} \setcounter{enumii}{0} @@ -19,6 +20,10 @@ \setcounter{subparagraph}{0} \setcounter{figure}{0} \setcounter{table}{0} +\setcounter{caption@flags}{0} +\setcounter{continuedfloat}{0} +\setcounter{subfigure}{0} +\setcounter{subtable}{0} \setcounter{lofdepth}{1} \setcounter{lotdepth}{1} } diff --git a/Chapter7.tex b/Chapter7.tex index b44a99c..4044058 100644 --- a/Chapter7.tex +++ b/Chapter7.tex @@ -1,6 +1,7 @@ \TUchapter{CONCLUSIONS AND FUTURE WORKS} -\TUsection{Future Work} +\TUsection{Future Work} \label{sec:FW} +%Sync Fire more assets %Blending OpenMP and MPI %Subgraphing Work %DHT alts diff --git a/Schrick-Noah_MS-Thesis.aux b/Schrick-Noah_MS-Thesis.aux index 0644fdb..dcbf563 100644 --- a/Schrick-Noah_MS-Thesis.aux +++ b/Schrick-Noah_MS-Thesis.aux @@ -32,9 +32,9 @@ \bibcite{cook_rage_2018}{9} \bibcite{berry_graph_2007}{10} \@writefile{toc}{{\hfill \ }} -\@writefile{toc}{\contentsline {section}{\hspace {-\parindent }NOMENCLATURE}{39}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\hspace {-\parindent }NOMENCLATURE}{42}{}\protected@file@percent } \@writefile{toc}{\addvspace {10pt}} -\@writefile{toc}{\contentsline {section}{\hspace {-\parindent }BIBLIOGRAPHY}{39}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\hspace {-\parindent }BIBLIOGRAPHY}{42}{}\protected@file@percent } \@writefile{toc}{{\hfill \ }} \bibcite{ainsworth_graph_2016}{11} \bibcite{yao_efficient_2018}{12} @@ -54,4 +54,4 @@ \bibcite{louthan_hybrid_2011}{26} \bibstyle{ieeetr} \@input{Appendices.aux} -\gdef \@abspage@last{53} +\gdef \@abspage@last{56} diff --git a/Schrick-Noah_MS-Thesis.lof b/Schrick-Noah_MS-Thesis.lof index fa2d4db..7a88436 100644 --- a/Schrick-Noah_MS-Thesis.lof +++ b/Schrick-Noah_MS-Thesis.lof @@ -1,11 +1,13 @@ {\vspace {\baselineskip }} -\contentsline {figure}{\numberline {3.1}{\ignorespaces Path Walking to State 14}}{9}{}% -\contentsline {figure}{\numberline {3.2}{\ignorespaces Color Coding a Small Network Based on Violations}}{12}{}% -\contentsline {figure}{\numberline {4.1}{\ignorespaces A network without Synchronous Firing generating infeasible states}}{18}{}% -\contentsline {figure}{\numberline {4.2}{\ignorespaces Inclusion of Synchronous Firing into GNU Bison, GNU Flex, and the overall program}}{21}{}% -\contentsline {figure}{\numberline {4.3}{\ignorespaces Synchronous Firing in the Graph Generation Process}}{23}{}% -\contentsline {figure}{\numberline {5.1}{\ignorespaces Task Overview of the Attack Graph Generation Process}}{27}{}% -\contentsline {figure}{\numberline {5.2}{\ignorespaces Node Allocation for each Task}}{28}{}% -\contentsline {figure}{\numberline {5.3}{\ignorespaces Data Distribution of Task One}}{30}{}% -\contentsline {figure}{\numberline {5.4}{\ignorespaces Communication From Task 1 to Task 2 when the Number of Nodes Allocated is Equal}}{31}{}% -\contentsline {figure}{\numberline {5.5}{\ignorespaces Communication From Task 1 to Task 2 when Task 1 Has More Nodes Allocated}}{32}{}% +\contentsline {figure}{\numberline {3.1}{\ignorespaces Path Walking to State 14\relax }}{9}{}% +\contentsline {figure}{\numberline {3.2}{\ignorespaces Color Coding a Small Network Based on Violations\relax }}{12}{}% +\contentsline {figure}{\numberline {4.1}{\ignorespaces A network without Synchronous Firing generating infeasible states\relax }}{18}{}% +\contentsline {figure}{\numberline {4.2}{\ignorespaces Inclusion of Synchronous Firing into GNU Bison, GNU Flex, and the overall program\relax }}{21}{}% +\contentsline {figure}{\numberline {4.3}{\ignorespaces Synchronous Firing in the Graph Generation Process\relax }}{23}{}% +\contentsline {figure}{\numberline {4.4}{\ignorespaces Bar Graph and Line Graph Representations of Synchronous Firing on Runtime\relax }}{26}{}% +\contentsline {figure}{\numberline {4.5}{\ignorespaces Bar Graph and Line Graph Representations of Synchronous Firing on State Space\relax }}{27}{}% +\contentsline {figure}{\numberline {5.1}{\ignorespaces Task Overview of the Attack Graph Generation Process\relax }}{30}{}% +\contentsline {figure}{\numberline {5.2}{\ignorespaces Node Allocation for each Task\relax }}{31}{}% +\contentsline {figure}{\numberline {5.3}{\ignorespaces Data Distribution of Task One\relax }}{33}{}% +\contentsline {figure}{\numberline {5.4}{\ignorespaces Communication From Task 1 to Task 2 when the Number of Nodes Allocated is Equal\relax }}{34}{}% +\contentsline {figure}{\numberline {5.5}{\ignorespaces Communication From Task 1 to Task 2 when Task 1 Has More Nodes Allocated\relax }}{35}{}% diff --git a/Schrick-Noah_MS-Thesis.log b/Schrick-Noah_MS-Thesis.log index 7e86b30..13324ea 100644 --- a/Schrick-Noah_MS-Thesis.log +++ b/Schrick-Noah_MS-Thesis.log @@ -1,4 +1,4 @@ -This is pdfTeX, Version 3.141592653-2.6-1.40.23 (TeX Live 2021/Arch Linux) (preloaded format=pdflatex 2022.2.14) 20 MAR 2022 14:51 +This is pdfTeX, Version 3.141592653-2.6-1.40.23 (TeX Live 2021/Arch Linux) (preloaded format=pdflatex 2022.2.14) 20 MAR 2022 15:52 entering extended mode restricted \write18 enabled. %&-line parsing enabled. @@ -57,6 +57,29 @@ File: pdftex.def 2020/10/05 v1.2a Graphics/color driver for pdftex \Gin@req@height=\dimen139 \Gin@req@width=\dimen140 ) +(/usr/share/texmf-dist/tex/latex/caption/subcaption.sty +Package: subcaption 2020/10/07 v1.3j Sub-captions (AR) + +(/usr/share/texmf-dist/tex/latex/caption/caption.sty +Package: caption 2020/10/26 v3.5g Customizing captions (AR) + +(/usr/share/texmf-dist/tex/latex/caption/caption3.sty +Package: caption3 2020/10/21 v2.2e caption3 kernel (AR) +\captionmargin=\dimen141 +\captionmargin@=\dimen142 +\captionwidth=\dimen143 +\caption@tempdima=\dimen144 +\caption@indent=\dimen145 +\caption@parindent=\dimen146 +\caption@hangindent=\dimen147 +Package caption Info: Standard document class detected. +) +\c@caption@flags=\count192 +\c@continuedfloat=\count193 +) +\c@subfigure=\count194 +\c@subtable=\count195 +) (/usr/share/texmf-dist/tex/latex/tocloft/tocloft.sty Package: tocloft 2017/08/31 v2.3i parameterised ToC, etc., typesetting Package tocloft Info: The document has chapter divisions on input line 51. @@ -89,8 +112,8 @@ Package tocloft Info: The document has chapter divisions on input line 51. \cftbeforefigskip=\skip77 \cftfigindent=\skip78 \cftfignumwidth=\skip79 -\c@lofdepth=\count192 -\c@lotdepth=\count193 +\c@lofdepth=\count196 +\c@lotdepth=\count197 \cftbeforelottitleskip=\skip80 \cftafterlottitleskip=\skip81 \cftbeforetabskip=\skip82 @@ -103,12 +126,12 @@ Package: ifpdf 2019/10/25 v3.4 ifpdf legacy package. Use iftex instead. (/usr/share/texmf-dist/tex/generic/iftex/iftex.sty Package: iftex 2020/03/06 v1.0d TeX engine tests )) (./TUthesis.sty -\numofchapters=\count194 -\committeesize=\count195 +\numofchapters=\count198 +\committeesize=\count199 ) (/usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def File: l3backend-pdftex.def 2021-12-14 L3 backend support: PDF output (pdfTeX) -\l__color_backend_stack_int=\count196 +\l__color_backend_stack_int=\count266 \l__pdf_internal_box=\box51 ) (./Schrick-Noah_MS-Thesis.aux (./Chapter1.aux) (./Chapter2.aux) (./Chapter3.aux @@ -116,32 +139,32 @@ File: l3backend-pdftex.def 2021-12-14 L3 backend support: PDF output (pdfTeX) (./Appendices.aux)) \openout1 = `Schrick-Noah_MS-Thesis.aux'. -LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 119. -LaTeX Font Info: ... okay on input line 119. -LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 119. -LaTeX Font Info: ... okay on input line 119. -LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 119. -LaTeX Font Info: ... okay on input line 119. -LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 119. -LaTeX Font Info: ... okay on input line 119. -LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 119. -LaTeX Font Info: ... okay on input line 119. -LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 119. -LaTeX Font Info: ... okay on input line 119. -LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 119. -LaTeX Font Info: ... okay on input line 119. +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 121. +LaTeX Font Info: ... okay on input line 121. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 121. +LaTeX Font Info: ... okay on input line 121. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 121. +LaTeX Font Info: ... okay on input line 121. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 121. +LaTeX Font Info: ... okay on input line 121. +LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 121. +LaTeX Font Info: ... okay on input line 121. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 121. +LaTeX Font Info: ... okay on input line 121. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 121. +LaTeX Font Info: ... okay on input line 121. (/usr/share/texmf-dist/tex/context/base/mkii/supp-pdf.mkii [Loading MPS to PDF converter (version 2006.09.02).] -\scratchcounter=\count197 -\scratchdimen=\dimen141 +\scratchcounter=\count267 +\scratchdimen=\dimen148 \scratchbox=\box52 -\nofMPsegments=\count198 -\nofMParguments=\count199 +\nofMPsegments=\count268 +\nofMParguments=\count269 \everyMPshowfont=\toks17 -\MPscratchCnt=\count266 -\MPscratchDim=\dimen142 -\MPnumerator=\count267 -\makeMPintoPDFobject=\count268 +\MPscratchCnt=\count270 +\MPscratchDim=\dimen149 +\MPnumerator=\count271 +\makeMPintoPDFobject=\count272 \everyMPtoPDFconversion=\toks18 ) (/usr/share/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty Package: epstopdf-base 2020-01-24 v2.11 Base part for package epstopdf @@ -151,10 +174,13 @@ Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4 (/usr/share/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv e -)) [1 +)) +Package caption Info: Begin \AtBeginDocument code. +Package caption Info: End \AtBeginDocument code. + [1 {/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] -Underfull \hbox (badness 10000) in paragraph at lines 180--180 +Underfull \hbox (badness 10000) in paragraph at lines 182--182 [] @@ -267,107 +293,146 @@ File: ./Chapter4_img/Sync-Fire.png Graphic file (type png) Package pdftex.def Info: ./Chapter4_img/Sync-Fire.png used on input line 85. (pdftex.def) Requested size: 244.9144pt x 526.46559pt. - [22] [23 <./Chapter4_img/Sync-Fire.png>]) [24] + [22] [23 <./Chapter4_img/Sync-Fire.png>] [24] +<./Chapter4_img/Sync-Runtime-Bar.png, id=126, 435.591pt x 238.491pt> +File: ./Chapter4_img/Sync-Runtime-Bar.png Graphic file (type png) + +Package pdftex.def Info: ./Chapter4_img/Sync-Runtime-Bar.png used on input lin +e 123. +(pdftex.def) Requested size: 469.75499pt x 257.2098pt. +<./Chapter4_img/Sync-Runtime.png, id=127, 402.522pt x 236.082pt> +File: ./Chapter4_img/Sync-Runtime.png Graphic file (type png) + +Package pdftex.def Info: ./Chapter4_img/Sync-Runtime.png used on input line 12 +4. +(pdftex.def) Requested size: 469.75499pt x 275.52676pt. +<./Chapter4_img/Sync-StateSpace-Bar.png, id=128, 434.058pt x 230.169pt> +File: ./Chapter4_img/Sync-StateSpace-Bar.png Graphic file (type png) + +Package pdftex.def Info: ./Chapter4_img/Sync-StateSpace-Bar.png used on input +line 131. +(pdftex.def) Requested size: 469.75499pt x 249.11264pt. +<./Chapter4_img/Sync-StateSpace.png, id=129, 402.741pt x 236.301pt> +File: ./Chapter4_img/Sync-StateSpace.png Graphic file (type png) + +Package pdftex.def Info: ./Chapter4_img/Sync-StateSpace.png used on input line + 132. +(pdftex.def) Requested size: 469.75499pt x 275.63454pt. +) [25] [26 <./Chapter4_img/Sync-Runtime-Bar.png> <./Chapter4_img/Sync-Runtime.p +ng>] [27 <./Chapter4_img/Sync-StateSpace-Bar.png> <./Chapter4_img/Sync-StateSpa +ce.png>] \openout2 = `Chapter5.aux'. (./Chapter5.tex CHAPTER 5. -[25 +[28 ] -<./Chapter5_img/horiz_task.drawio.png, id=129, 1125.20375pt x 738.76pt> +<./Chapter5_img/horiz_task.drawio.png, id=147, 1125.20375pt x 738.76pt> File: ./Chapter5_img/horiz_task.drawio.png Graphic file (type png) Package pdftex.def Info: ./Chapter5_img/horiz_task.drawio.png used on input li ne 42. (pdftex.def) Requested size: 469.75499pt x 308.4171pt. - [26] [27 <./Chapter5_img/horiz_task.drawio.png>] -<./Chapter5_img/node-alloc.png, id=138, 818.30719pt x 536.75531pt> + [29] [30 <./Chapter5_img/horiz_task.drawio.png>] +<./Chapter5_img/node-alloc.png, id=155, 818.30719pt x 536.75531pt> File: ./Chapter5_img/node-alloc.png Graphic file (type png) Package pdftex.def Info: ./Chapter5_img/node-alloc.png used on input line 54. (pdftex.def) Requested size: 469.75499pt x 308.1323pt. - [28 <./Chapter5_img/node-alloc.PNG>] -<./Chapter5_img/Task1-Data-Dist.png, id=143, 1017.04968pt x 336.50719pt> + [31 <./Chapter5_img/node-alloc.PNG>] +<./Chapter5_img/Task1-Data-Dist.png, id=160, 1017.04968pt x 336.50719pt> File: ./Chapter5_img/Task1-Data-Dist.png Graphic file (type png) Package pdftex.def Info: ./Chapter5_img/Task1-Data-Dist.png used on input line 70. (pdftex.def) Requested size: 469.75499pt x 155.42674pt. - [29] -<./Chapter5_img/Task1-Case1.png, id=147, 586.44093pt x 339.51843pt> + [32] +<./Chapter5_img/Task1-Case1.png, id=164, 586.44093pt x 339.51843pt> File: ./Chapter5_img/Task1-Case1.png Graphic file (type png) Package pdftex.def Info: ./Chapter5_img/Task1-Case1.png used on input line 79. (pdftex.def) Requested size: 469.75499pt x 271.9622pt. -<./Chapter5_img/Task1-Case2.png, id=148, 702.37407pt x 414.79968pt> +<./Chapter5_img/Task1-Case2.png, id=165, 702.37407pt x 414.79968pt> File: ./Chapter5_img/Task1-Case2.png Graphic file (type png) Package pdftex.def Info: ./Chapter5_img/Task1-Case2.png used on input line 86. (pdftex.def) Requested size: 469.75499pt x 277.43332pt. - [30 <./Chapter5_img/Task1-Data-Dist.PNG>] [31 <./Chapter5_img/Task1-Case1.PNG> -] [32 <./Chapter5_img/Task1-Case2.PNG>] + [33 <./Chapter5_img/Task1-Data-Dist.PNG>] [34 <./Chapter5_img/Task1-Case1.PNG> +] [35 <./Chapter5_img/Task1-Case2.PNG>] + +Package caption Warning: \label without proper reference on input line 104. +See the caption package documentation for explanation. + + +LaTeX Warning: Reference `table:tasking-tag' on page 36 undefined on input line + 102. + LaTeX Warning: No positions in optional float specifier. Default added (so using `tbp') on input line 104. -[33] [34]) [35] +[36]) [37] [38] \openout2 = `Chapter6.aux'. (./Chapter6.tex CHAPTER 6. -[36 +[39 -]) [37] +]) [40] \openout2 = `Chapter7.aux'. (./Chapter7.tex CHAPTER 7. -) [38 +) [41 -] (./Schrick-Noah_MS-Thesis.bbl [39 +] (./Schrick-Noah_MS-Thesis.bbl [42 -] [40]) -\c@appendixno=\count269 - [41] +] [43]) +\c@appendixno=\count273 + [44] \openout2 = `Appendices.aux'. - (./Appendices.tex [42 + (./Appendices.tex [45 ]) -[43] (./Schrick-Noah_MS-Thesis.aux (./Chapter1.aux) (./Chapter2.aux) +[46] (./Schrick-Noah_MS-Thesis.aux (./Chapter1.aux) (./Chapter2.aux) (./Chapter3.aux) (./Chapter4.aux) (./Chapter5.aux) (./Chapter6.aux) -(./Chapter7.aux) (./Appendices.aux)) ) +(./Chapter7.aux) (./Appendices.aux)) + +LaTeX Warning: There were undefined references. + + ) (\end occurred inside a group at level 6) -### semi simple group (level 6) entered at line 198 (\begingroup) -### semi simple group (level 5) entered at line 180 (\begingroup) -### semi simple group (level 4) entered at line 180 (\begingroup) -### semi simple group (level 3) entered at line 180 (\begingroup) -### semi simple group (level 2) entered at line 180 (\begingroup) +### semi simple group (level 6) entered at line 200 (\begingroup) +### semi simple group (level 5) entered at line 182 (\begingroup) +### semi simple group (level 4) entered at line 182 (\begingroup) +### semi simple group (level 3) entered at line 182 (\begingroup) +### semi simple group (level 2) entered at line 182 (\begingroup) ### semi simple group (level 1) entered at line 52 (\begingroup) ### bottom level Here is how much of TeX's memory you used: - 2228 strings out of 478353 - 40208 string characters out of 5854635 - 345133 words of memory out of 5000000 - 20290 multiletter control sequences out of 15000+600000 + 3599 strings out of 478353 + 67673 string characters out of 5854635 + 369698 words of memory out of 5000000 + 21648 multiletter control sequences out of 15000+600000 407326 words of font info for 40 fonts, out of 8000000 for 9000 1141 hyphenation exceptions out of 8191 - 55i,8n,62p,1290b,1305s stack positions out of 5000i,500n,10000p,200000b,80000s + 67i,8n,77p,1398b,1420s stack positions out of 5000i,500n,10000p,200000b,80000s {/usr/share/texmf-dist/fonts/enc/dvips/cm-super/cm-super-ts1.en c} -Output written on Schrick-Noah_MS-Thesis.pdf (53 pages, 599307 bytes). +Output written on Schrick-Noah_MS-Thesis.pdf (56 pages, 822041 bytes). PDF statistics: - 235 PDF objects out of 1000 (max. 8388607) - 145 compressed objects within 2 object streams + 253 PDF objects out of 1000 (max. 8388607) + 152 compressed objects within 2 object streams 0 named destinations out of 1000 (max. 500000) - 51 words of extra memory for PDF output out of 10000 (max. 10000000) + 71 words of extra memory for PDF output out of 10000 (max. 10000000) diff --git a/Schrick-Noah_MS-Thesis.lot b/Schrick-Noah_MS-Thesis.lot index 47bb15c..716731b 100644 --- a/Schrick-Noah_MS-Thesis.lot +++ b/Schrick-Noah_MS-Thesis.lot @@ -1,2 +1,2 @@ {\vspace {\baselineskip }} -\contentsline {table}{\numberline {5.1}{\ignorespaces MPI Tags for the MPI Tasking Approach}}{33}{}% +\contentsline {table}{\numberline {5.1}{\ignorespaces MPI Tags for the MPI Tasking Approach\relax }}{36}{}% diff --git a/Schrick-Noah_MS-Thesis.pdf b/Schrick-Noah_MS-Thesis.pdf index a0d196d..3ab152f 100644 Binary files a/Schrick-Noah_MS-Thesis.pdf and b/Schrick-Noah_MS-Thesis.pdf differ diff --git a/Schrick-Noah_MS-Thesis.tex b/Schrick-Noah_MS-Thesis.tex index a5551e9..5f9b48c 100644 --- a/Schrick-Noah_MS-Thesis.tex +++ b/Schrick-Noah_MS-Thesis.tex @@ -91,6 +91,8 @@ \RequirePackage{setspace} \usepackage{boxedminipage} \usepackage{graphicx} +\usepackage{subcaption} + % Added by Richard D Redner 2017-08-16 % If, in the List of Tables or List of Figures, the figure/table numbers diff --git a/Schrick-Noah_MS-Thesis.toc b/Schrick-Noah_MS-Thesis.toc index 2d8dff6..df87c55 100644 --- a/Schrick-Noah_MS-Thesis.toc +++ b/Schrick-Noah_MS-Thesis.toc @@ -41,57 +41,57 @@ \contentsline {section}{\numberline {4.3}\bf Example Networks and Results}{22}{}% \contentsline {subsection}{\numberline {4.3.1}\it Example Networks}{22}{}% \contentsline {subsection}{\numberline {4.3.2}\it Results}{24}{}% -\contentsline {chapter}{\numberline {CHAPTER 5: }{\bf \uppercase {Utilization OF MESSAGE PASSING INTERFACE}}}{25}{}% -\contentsline {section}{\numberline {5.1}\bf Introduction to MPI Utilization for Attack Graph Generation}{25}{}% -\contentsline {section}{\numberline {5.2}\bf Necessary Components}{25}{}% -\contentsline {subsection}{\numberline {5.2.1}\it Serialization}{25}{}% -\contentsline {subsection}{\numberline {5.2.2}\it Data Consistency}{26}{}% -\contentsline {section}{\numberline {5.3}\bf Tasking Approach}{26}{}% -\contentsline {subsection}{\numberline {5.3.1}\it Introduction to the Tasking Approach}{26}{}% -\contentsline {subsection}{\numberline {5.3.2}\it Algorithm Design}{26}{}% -\contentsline {subsubsection}{Communication Structure}{29}{}% -\contentsline {subsubsection}{Task 0}{29}{}% -\contentsline {subsubsection}{Task 1}{29}{}% -\contentsline {subsubsection}{Task 2}{30}{}% -\contentsline {subsubsection}{Task 3}{32}{}% -\contentsline {subsubsection}{Task 4 and Task 5}{32}{}% -\contentsline {subsubsection}{MPI Tags}{33}{}% -\contentsline {subsection}{\numberline {5.3.3}\it Performance Expectations}{34}{}% -\contentsline {subsection}{\numberline {5.3.4}\it Results}{34}{}% -\contentsline {section}{\numberline {5.4}\bf Subgraphing Approach}{34}{}% -\contentsline {subsection}{\numberline {5.4.1}\it Introduction to the Subgraphing Approach}{34}{}% -\contentsline {subsection}{\numberline {5.4.2}\it Algorithm Design}{34}{}% -\contentsline {subsubsection}{Communication Structure}{34}{}% -\contentsline {subsubsection}{Worker Nodes}{34}{}% -\contentsline {subsubsection}{Root Node}{35}{}% -\contentsline {subsubsection}{Database Node}{35}{}% -\contentsline {subsection}{\numberline {5.4.3}\it Performance Expectations}{35}{}% -\contentsline {chapter}{\numberline {CHAPTER 6: }{\bf \uppercase {PERFORMANCE ANALYSIS}}}{36}{}% -\contentsline {section}{\numberline {6.1}\bf Small Networks}{36}{}% -\contentsline {subsection}{\numberline {6.1.1}\it Test Information}{36}{}% -\contentsline {subsection}{\numberline {6.1.2}\it Results}{36}{}% -\contentsline {subsection}{\numberline {6.1.3}\it Analysis}{36}{}% -\contentsline {section}{\numberline {6.2}\bf Large Networks}{36}{}% -\contentsline {subsection}{\numberline {6.2.1}\it Test Information}{36}{}% -\contentsline {subsection}{\numberline {6.2.2}\it Results}{36}{}% -\contentsline {subsection}{\numberline {6.2.3}\it Analysis}{36}{}% -\contentsline {section}{\numberline {6.3}\bf Large Exploit Lists}{36}{}% -\contentsline {subsection}{\numberline {6.3.1}\it Test Information}{36}{}% -\contentsline {subsection}{\numberline {6.3.2}\it Results}{36}{}% -\contentsline {subsection}{\numberline {6.3.3}\it Analysis}{36}{}% -\contentsline {section}{\numberline {6.4}\bf Distributed Hash Tables}{36}{}% -\contentsline {subsection}{\numberline {6.4.1}\it Test Information}{37}{}% -\contentsline {subsection}{\numberline {6.4.2}\it Results}{37}{}% -\contentsline {subsection}{\numberline {6.4.3}\it Analysis}{37}{}% -\contentsline {chapter}{\numberline {CHAPTER 7: }{\bf \uppercase {CONCLUSIONS AND FUTURE WORKS}}}{38}{}% -\contentsline {section}{\numberline {7.1}\bf Future Work}{38}{}% +\contentsline {chapter}{\numberline {CHAPTER 5: }{\bf \uppercase {Utilization OF MESSAGE PASSING INTERFACE}}}{28}{}% +\contentsline {section}{\numberline {5.1}\bf Introduction to MPI Utilization for Attack Graph Generation}{28}{}% +\contentsline {section}{\numberline {5.2}\bf Necessary Components}{28}{}% +\contentsline {subsection}{\numberline {5.2.1}\it Serialization}{28}{}% +\contentsline {subsection}{\numberline {5.2.2}\it Data Consistency}{29}{}% +\contentsline {section}{\numberline {5.3}\bf Tasking Approach}{29}{}% +\contentsline {subsection}{\numberline {5.3.1}\it Introduction to the Tasking Approach}{29}{}% +\contentsline {subsection}{\numberline {5.3.2}\it Algorithm Design}{29}{}% +\contentsline {subsubsection}{Communication Structure}{32}{}% +\contentsline {subsubsection}{Task 0}{32}{}% +\contentsline {subsubsection}{Task 1}{32}{}% +\contentsline {subsubsection}{Task 2}{33}{}% +\contentsline {subsubsection}{Task 3}{35}{}% +\contentsline {subsubsection}{Task 4 and Task 5}{35}{}% +\contentsline {subsubsection}{MPI Tags}{36}{}% +\contentsline {subsection}{\numberline {5.3.3}\it Performance Expectations}{37}{}% +\contentsline {subsection}{\numberline {5.3.4}\it Results}{37}{}% +\contentsline {section}{\numberline {5.4}\bf Subgraphing Approach}{37}{}% +\contentsline {subsection}{\numberline {5.4.1}\it Introduction to the Subgraphing Approach}{37}{}% +\contentsline {subsection}{\numberline {5.4.2}\it Algorithm Design}{37}{}% +\contentsline {subsubsection}{Communication Structure}{37}{}% +\contentsline {subsubsection}{Worker Nodes}{37}{}% +\contentsline {subsubsection}{Root Node}{37}{}% +\contentsline {subsubsection}{Database Node}{38}{}% +\contentsline {subsection}{\numberline {5.4.3}\it Performance Expectations}{38}{}% +\contentsline {chapter}{\numberline {CHAPTER 6: }{\bf \uppercase {PERFORMANCE ANALYSIS}}}{39}{}% +\contentsline {section}{\numberline {6.1}\bf Small Networks}{39}{}% +\contentsline {subsection}{\numberline {6.1.1}\it Test Information}{39}{}% +\contentsline {subsection}{\numberline {6.1.2}\it Results}{39}{}% +\contentsline {subsection}{\numberline {6.1.3}\it Analysis}{39}{}% +\contentsline {section}{\numberline {6.2}\bf Large Networks}{39}{}% +\contentsline {subsection}{\numberline {6.2.1}\it Test Information}{39}{}% +\contentsline {subsection}{\numberline {6.2.2}\it Results}{39}{}% +\contentsline {subsection}{\numberline {6.2.3}\it Analysis}{39}{}% +\contentsline {section}{\numberline {6.3}\bf Large Exploit Lists}{39}{}% +\contentsline {subsection}{\numberline {6.3.1}\it Test Information}{39}{}% +\contentsline {subsection}{\numberline {6.3.2}\it Results}{39}{}% +\contentsline {subsection}{\numberline {6.3.3}\it Analysis}{39}{}% +\contentsline {section}{\numberline {6.4}\bf Distributed Hash Tables}{39}{}% +\contentsline {subsection}{\numberline {6.4.1}\it Test Information}{40}{}% +\contentsline {subsection}{\numberline {6.4.2}\it Results}{40}{}% +\contentsline {subsection}{\numberline {6.4.3}\it Analysis}{40}{}% +\contentsline {chapter}{\numberline {CHAPTER 7: }{\bf \uppercase {CONCLUSIONS AND FUTURE WORKS}}}{41}{}% +\contentsline {section}{\numberline {7.1}\bf Future Work}{41}{}% {\hfill \ } -\contentsline {section}{\hspace {-\parindent }NOMENCLATURE}{39}{}% +\contentsline {section}{\hspace {-\parindent }NOMENCLATURE}{42}{}% \addvspace {10pt} -\contentsline {section}{\hspace {-\parindent }BIBLIOGRAPHY}{39}{}% +\contentsline {section}{\hspace {-\parindent }BIBLIOGRAPHY}{42}{}% {\hfill \ } -\contentsline {section}{\hspace {-\parindent }APPENDIX A:\ \ {\bf \uppercase {THE FIRST APPENDIX}} }{42}{}% -\contentsline {section}{\hspace {-\parindent }APPENDIX B:\ \ {\bf \uppercase {THE SECOND APPENDIX}} }{43}{}% -\contentsline {section}{\numberline {B.1}\bf A Heading in an Appendix}{43}{}% -\contentsline {subsection}{\numberline {B.1.1}\it A Subheading in an Appendix}{43}{}% -\contentsline {subsubsection}{A Sub-subsection in an Appendix}{43}{}% +\contentsline {section}{\hspace {-\parindent }APPENDIX A:\ \ {\bf \uppercase {THE FIRST APPENDIX}} }{45}{}% +\contentsline {section}{\hspace {-\parindent }APPENDIX B:\ \ {\bf \uppercase {THE SECOND APPENDIX}} }{46}{}% +\contentsline {section}{\numberline {B.1}\bf A Heading in an Appendix}{46}{}% +\contentsline {subsection}{\numberline {B.1.1}\it A Subheading in an Appendix}{46}{}% +\contentsline {subsubsection}{A Sub-subsection in an Appendix}{46}{}%