Addressing Reviewer #2 and Reviewer #4

This commit is contained in:
Noah L. Schrick 2024-02-27 15:16:33 -06:00
parent 95d748f279
commit 52982d9e85
6 changed files with 303 additions and 56 deletions

View File

@ -32,29 +32,34 @@
\citation{cook_rage_2018} \citation{cook_rage_2018}
\citation{li_concurrency_2019} \citation{li_concurrency_2019}
\citation{li_combining_2019} \citation{li_combining_2019}
\citation{zhang_boosting_2017}
\@writefile{toc}{\contentsline {section}{\numberline {II}Related Work}{2}{}\protected@file@percent } \@writefile{toc}{\contentsline {section}{\numberline {II}Related Work}{2}{}\protected@file@percent }
\newlabel{sec:Rel-Works}{{II}{2}} \newlabel{sec:Rel-Works}{{II}{2}}
\@writefile{toc}{\contentsline {section}{\numberline {III}Methodology}{2}{}\protected@file@percent } \@writefile{toc}{\contentsline {section}{\numberline {III}Methodology}{2}{}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {III-A}}Checkpointing}{2}{}\protected@file@percent } \@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {III-A}}Experimental Setup}{2}{}\protected@file@percent }
\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces An Attack or Compliance Graph Undergoing Generation}}{2}{}\protected@file@percent } \@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {III-B}}Checkpointing}{2}{}\protected@file@percent }
\newlabel{fig:cr}{{1}{2}} \newlabel{sec:checkpoint}{{\mbox {III-B}}{2}}
\newlabel{sec:mem-constraint}{{\mbox {III-A}1}{2}} \newlabel{sec:mem-constraint}{{\mbox {III-B}1}{2}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {III-A}1}Memory Constraint Difficulties}{2}{}\protected@file@percent } \@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {III-B}1}Memory Constraint Difficulties}{2}{}\protected@file@percent }
\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {III-A}2}Implementation}{2}{}\protected@file@percent } \citation{zhang_boosting_2017}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {III-A}3}Portability}{3}{}\protected@file@percent } \@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces Program Flow of the Attack and Compliance Graph Generation Process with C/R}}{3}{}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {III-B}}Restarting}{3}{}\protected@file@percent } \newlabel{fig:prog-flow}{{1}{3}}
\@writefile{toc}{\contentsline {section}{\numberline {IV}Results}{3}{}\protected@file@percent } \@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces An Attack or Compliance Graph Undergoing Generation}}{3}{}\protected@file@percent }
\newlabel{fig:cr}{{2}{3}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {III-B}2}Implementation}{3}{}\protected@file@percent }
\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {III-B}3}Portability}{4}{}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {III-C}}Restarting}{4}{}\protected@file@percent }
\newlabel{sec:restart}{{\mbox {III-C}}{4}}
\@writefile{toc}{\contentsline {section}{\numberline {IV}Results}{4}{}\protected@file@percent }
\@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces Time Taken to Checkpoint as the Size of the Instance Grows}}{4}{}\protected@file@percent }
\newlabel{fig:inst-time}{{3}{4}}
\citation{CR-Simple} \citation{CR-Simple}
\@writefile{lof}{\contentsline {figure}{\numberline {4}{\ignorespaces Time Taken to Checkpoint as the Size of the Frontier Grows}}{5}{}\protected@file@percent }
\newlabel{fig:front-chk-time}{{4}{5}}
\@writefile{lof}{\contentsline {figure}{\numberline {5}{\ignorespaces Time Taken to Restart as the Size of the Frontier Grows}}{5}{}\protected@file@percent }
\newlabel{fig:front-rest-time}{{5}{5}}
\@writefile{toc}{\contentsline {section}{\numberline {V}Conclusions and Future Work}{5}{}\protected@file@percent }
\bibdata{Bibliography} \bibdata{Bibliography}
\bibcite{schneier_modeling_1999}{1} \bibcite{schneier_modeling_1999}{1}
\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces Time Taken to Checkpoint as the Size of the Instance Grows}}{4}{}\protected@file@percent }
\newlabel{fig:inst-time}{{2}{4}}
\@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces Time Taken to Checkpoint as the Size of the Frontier Grows}}{4}{}\protected@file@percent }
\newlabel{fig:front-chk-time}{{3}{4}}
\@writefile{lof}{\contentsline {figure}{\numberline {4}{\ignorespaces Time Taken to Restart as the Size of the Frontier Grows}}{4}{}\protected@file@percent }
\newlabel{fig:front-rest-time}{{4}{4}}
\@writefile{toc}{\contentsline {section}{\numberline {V}Conclusions and Future Work}{4}{}\protected@file@percent }
\bibcite{j_hale_compliance_nodate}{2} \bibcite{j_hale_compliance_nodate}{2}
\bibcite{cook_rage_2018}{3} \bibcite{cook_rage_2018}{3}
\bibcite{berry_graph_2007}{4} \bibcite{berry_graph_2007}{4}
@ -76,5 +81,5 @@
\bibcite{li_combining_2019}{20} \bibcite{li_combining_2019}{20}
\bibcite{CR-Simple}{21} \bibcite{CR-Simple}{21}
\bibstyle{ieeetr} \bibstyle{ieeetr}
\@writefile{toc}{\contentsline {section}{References}{5}{}\protected@file@percent } \@writefile{toc}{\contentsline {section}{References}{6}{}\protected@file@percent }
\gdef \@abspage@last{5} \gdef \@abspage@last{6}

View File

@ -1,8 +1,8 @@
This is pdfTeX, Version 3.141592653-2.6-1.40.25 (TeX Live 2023/Arch Linux) (preloaded format=pdflatex 2023.9.6) 14 DEC 2023 13:17 This is pdfTeX, Version 3.141592653-2.6-1.40.25 (TeX Live 2023/Arch Linux) (preloaded format=pdflatex 2024.1.24) 27 FEB 2024 15:15
entering extended mode entering extended mode
restricted \write18 enabled. restricted \write18 enabled.
%&-line parsing enabled. %&-line parsing enabled.
**Schrick-Noah_AG-CG-CR.tex **Schrick-Noah_AG-CG-CR
(./Schrick-Noah_AG-CG-CR.tex (./Schrick-Noah_AG-CG-CR.tex
LaTeX2e <2022-11-01> patch level 1 LaTeX2e <2022-11-01> patch level 1
L3 programming layer <2023-02-22> L3 programming layer <2023-02-22>
@ -368,62 +368,85 @@ nts/enc/dvips/base/8r.enc}
] ]
<./images/schri1.png, id=10, 755.82375pt x 402.50375pt> Underfull \hbox (badness 7451) in paragraph at lines 75--77
\OT1/ptm/m/n/10 All nodes are connected with a 10Gbps Infiniband
[]
Underfull \hbox (badness 10000) in paragraph at lines 75--77
[]
Underfull \hbox (badness 10000) in paragraph at lines 89--90
[]
Underfull \hbox (badness 1484) in paragraph at lines 91--92
[]\OT1/ptm/m/n/10 The network models and exploit patterns for testing,
[]
<./images/Program-Flow.png, id=10, 833.1125pt x 1170.3725pt>
File: ./images/Program-Flow.png Graphic file (type png)
<use ./images/Program-Flow.png>
Package pdftex.def Info: ./images/Program-Flow.png used on input line 95.
(pdftex.def) Requested size: 252.0pt x 354.00752pt.
<./images/schri1.png, id=12, 755.82375pt x 402.50375pt>
File: ./images/schri1.png Graphic file (type png) File: ./images/schri1.png Graphic file (type png)
<use ./images/schri1.png> <use ./images/schri1.png>
Package pdftex.def Info: ./images/schri1.png used on input line 72. Package pdftex.def Info: ./images/schri1.png used on input line 106.
(pdftex.def) Requested size: 252.0pt x 134.19624pt. (pdftex.def) Requested size: 252.0pt x 134.19624pt.
Underfull \hbox (badness 3158) in paragraph at lines 78--83 Underfull \hbox (badness 3158) in paragraph at lines 112--117
\OT1/ptm/m/it/10 1) Memory Constraint Difficulties: [][] \OT1/ptm/m/n/10 While \OT1/ptm/m/it/10 1) Memory Constraint Difficulties: [][] \OT1/ptm/m/n/10 While
the design the design
[] []
[2]
Underfull \hbox (badness 10000) in paragraph at lines 91--97 Underfull \hbox (badness 10000) in paragraph at lines 125--131
\OT1/ptm/m/it/10 2) Implementation: [][] \OT1/ptm/m/n/10 Rather than only a st \OT1/ptm/m/it/10 2) Implementation: [][] \OT1/ptm/m/n/10 Rather than only a st
atic atic
[] []
[2 <./images/schri1.png>] [3 <./images/Program-Flow.png> <./images/schri1.png>]
Underfull \hbox (badness 4660) in paragraph at lines 113--118 Underfull \hbox (badness 4660) in paragraph at lines 147--152
\OT1/ptm/m/it/10 3) Portability: [][] \OT1/ptm/m/n/10 The checkpointing proces \OT1/ptm/m/it/10 3) Portability: [][] \OT1/ptm/m/n/10 The checkpointing proces
s is greatly s is greatly
[] []
[3] <./images/schri2.png, id=23, 720.6925pt x 297.11pt>
<./images/schri2.png, id=20, 720.6925pt x 297.11pt>
File: ./images/schri2.png Graphic file (type png) File: ./images/schri2.png Graphic file (type png)
<use ./images/schri2.png> <use ./images/schri2.png>
Package pdftex.def Info: ./images/schri2.png used on input line 129. Package pdftex.def Info: ./images/schri2.png used on input line 163.
(pdftex.def) Requested size: 252.0pt x 103.88577pt. (pdftex.def) Requested size: 252.0pt x 103.88577pt.
<./images/schri3.png, id=21, 695.59875pt x 341.275pt> [4 <./images/schri2.png>]
<./images/schri3.png, id=28, 695.59875pt x 341.275pt>
File: ./images/schri3.png Graphic file (type png) File: ./images/schri3.png Graphic file (type png)
<use ./images/schri3.png> <use ./images/schri3.png>
Package pdftex.def Info: ./images/schri3.png used on input line 138. Package pdftex.def Info: ./images/schri3.png used on input line 172.
(pdftex.def) Requested size: 252.0pt x 123.6348pt. (pdftex.def) Requested size: 252.0pt x 123.6348pt.
<./images/schri4.png, id=22, 612.2875pt x 331.2375pt> <./images/schri4.png, id=29, 612.2875pt x 331.2375pt>
File: ./images/schri4.png Graphic file (type png) File: ./images/schri4.png Graphic file (type png)
<use ./images/schri4.png> <use ./images/schri4.png>
Package pdftex.def Info: ./images/schri4.png used on input line 147. Package pdftex.def Info: ./images/schri4.png used on input line 181.
(pdftex.def) Requested size: 252.0pt x 136.32883pt. (pdftex.def) Requested size: 252.0pt x 136.32883pt.
Underfull \hbox (badness 1622) in paragraph at lines 153--154 Underfull \hbox (badness 1622) in paragraph at lines 187--188
\OT1/ptm/m/n/10 function calls or snapshots that are required. The C/R \OT1/ptm/m/n/10 function calls or snapshots that are required. The C/R
[] []
Underfull \hbox (badness 2150) in paragraph at lines 155--156 Underfull \hbox (badness 2150) in paragraph at lines 189--190
\OT1/ptm/m/n/10 checkpoint times and sizes, as well as time taken to \OT1/ptm/m/n/10 checkpoint times and sizes, as well as time taken to
[] []
Underfull \hbox (badness 1565) in paragraph at lines 155--156 Underfull \hbox (badness 1565) in paragraph at lines 189--190
\OT1/ptm/m/n/10 settings to alter or enable, or communication strategies \OT1/ptm/m/n/10 settings to alter or enable, or communication strategies
[] []
(./Schrick-Noah_AG-CG-CR.bbl [4 <./images/schri2.png> <./images/schri3.png> <./ [5 <./images/schri3.png> <./images/schri4.png>] (./Schrick-Noah_AG-CG-CR.bbl
images/schri4.png>]
Underfull \hbox (badness 2351) in paragraph at lines 27--30 Underfull \hbox (badness 2351) in paragraph at lines 27--30
[]\OT1/ptm/m/n/8 S. Ainsworth and T. M. Jones, ``Graph prefetching using data []\OT1/ptm/m/n/8 S. Ainsworth and T. M. Jones, ``Graph prefetching using data
[] []
@ -451,26 +474,26 @@ Before submitting the final camera ready copy, remember to:
uses only Type 1 fonts and that every step in the generation uses only Type 1 fonts and that every step in the generation
process uses the appropriate paper size. process uses the appropriate paper size.
[5 [6
] (./Schrick-Noah_AG-CG-CR.aux) ) ] (./Schrick-Noah_AG-CG-CR.aux) )
Here is how much of TeX's memory you used: Here is how much of TeX's memory you used:
5332 strings out of 477985 5343 strings out of 477985
84855 string characters out of 5840059 85135 string characters out of 5840058
1864388 words of memory out of 5000000 1867388 words of memory out of 5000000
25473 multiletter control sequences out of 15000+600000 25483 multiletter control sequences out of 15000+600000
549821 words of font info for 106 fonts, out of 8000000 for 9000 549821 words of font info for 106 fonts, out of 8000000 for 9000
14 hyphenation exceptions out of 8191 14 hyphenation exceptions out of 8191
57i,11n,62p,1435b,333s stack positions out of 10000i,1000n,20000p,200000b,200000s 57i,11n,62p,1431b,333s stack positions out of 10000i,1000n,20000p,200000b,200000s
</usr/share/texmf-dist/fonts/type1/public/amsf </usr/share/texmf-dist/fonts/type1/public/amsf
onts/cm/cmmi10.pfb></usr/share/texmf-dist/fonts/type1/urw/times/utmb8a.pfb></us onts/cm/cmmi10.pfb></usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy7.
r/share/texmf-dist/fonts/type1/urw/times/utmbi8a.pfb></usr/share/texmf-dist/fon pfb></usr/share/texmf-dist/fonts/type1/urw/times/utmb8a.pfb></usr/share/texmf-d
ts/type1/urw/times/utmr8a.pfb></usr/share/texmf-dist/fonts/type1/urw/times/utmr ist/fonts/type1/urw/times/utmbi8a.pfb></usr/share/texmf-dist/fonts/type1/urw/ti
i8a.pfb> mes/utmr8a.pfb></usr/share/texmf-dist/fonts/type1/urw/times/utmri8a.pfb>
Output written on Schrick-Noah_AG-CG-CR.pdf (5 pages, 190866 bytes). Output written on Schrick-Noah_AG-CG-CR.pdf (6 pages, 260300 bytes).
PDF statistics: PDF statistics:
55 PDF objects out of 1000 (max. 8388607) 65 PDF objects out of 1000 (max. 8388607)
29 compressed objects within 1 object stream 34 compressed objects within 1 object stream
0 named destinations out of 1000 (max. 500000) 0 named destinations out of 1000 (max. 500000)
21 words of extra memory for PDF output out of 10000 (max. 10000000) 26 words of extra memory for PDF output out of 10000 (max. 10000000)

View File

@ -63,7 +63,41 @@ Numerous efforts have been presented for C/R techniques with various categories
Other investigations into attack and compliance graphs attempt to improve performance and scalability to mitigate state space explosion or lengthy runtimes, rather than focus on C/R. These investigations include the works by the authors of \cite{GraphDB}, which implement attack graph methodologies using Neo4j for efficient storage techniques. This approach has seen other implementations, such as that shown by the authors of \cite{Graph-DB}. Other attack graph scalability studies involve the alteration of the representation schemes. The authors of \cite{ou_scalable_2006} make use of logical statements for logical attack graphs. This approach has seen continued investigations, and similar logic-based attack graphs can be seen in the work presented by the authors of \cite{LAPA}. These logical based attack graphs aim to improve scalability by minimizing the resulting information. Other representation schemes include those seen by the authors of \cite{cook_scalable_2016} and the authors of \cite{li_concurrency_2019}, which make use of qualities and topologies through graph states. Scalability improvements have also been examined through sampling, such as the approach presented by the authors of \cite{AG-Sample}. Parallelization techniques have been investigated for runtime improvement, and successful results have been seen in the work by the authors of \cite{7087377}. Other investigations into attack and compliance graphs attempt to improve performance and scalability to mitigate state space explosion or lengthy runtimes, rather than focus on C/R. These investigations include the works by the authors of \cite{GraphDB}, which implement attack graph methodologies using Neo4j for efficient storage techniques. This approach has seen other implementations, such as that shown by the authors of \cite{Graph-DB}. Other attack graph scalability studies involve the alteration of the representation schemes. The authors of \cite{ou_scalable_2006} make use of logical statements for logical attack graphs. This approach has seen continued investigations, and similar logic-based attack graphs can be seen in the work presented by the authors of \cite{LAPA}. These logical based attack graphs aim to improve scalability by minimizing the resulting information. Other representation schemes include those seen by the authors of \cite{cook_scalable_2016} and the authors of \cite{li_concurrency_2019}, which make use of qualities and topologies through graph states. Scalability improvements have also been examined through sampling, such as the approach presented by the authors of \cite{AG-Sample}. Parallelization techniques have been investigated for runtime improvement, and successful results have been seen in the work by the authors of \cite{7087377}.
\section{Methodology} \section{Methodology}
\subsection{Checkpointing} \subsection{Experimental Setup}
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}
\item{CPU: Two Intel Xeon E5-2620 v3}
\item{Two Intel Xeon Phi Co-Processors}
\item{One FPGA (Nallatech PCIE-385n A7 Altera Stratix V)}
\item{Memory: 64318MiB}
\end{itemize}
All nodes are connected with a 10Gbps Infiniband interconnect.
\ \\
Software versioning relevant to this work is as follows:
\begin{itemize}
\item{PostgreSQL: 13.4}
\item{C++: std=c++17}
\item{CMake: 3.22.0}
\item{gcc: 8.2.0}
\item{OpenMPI: 4.1.2}
\item{Bison: 2.4.1}
\item{Flex: 2.5.35 }
\item{Graphviz: 2.49.1}
\end{itemize}
\ \\
The network models and exploit patterns for testing, analyzing, and validating the C/R process were simplistic in nature, and served only to rapidly expand the size of the instance and frontier. Graph nodes had very minimal embedded information, and connectivity of the graph was low. Each node consisted of an internal counter that ensured uniqueness, but no other information was embedded within the nodes. Each node had only a single ``in-edge", but had multiple ``out-edges" to rapidly pressure the frontier's contribution to memory strain. An overview of the program flow can be seen in Fig. \ref{fig:prog-flow}. This figure presents the importing and initialization process for RAGE, the new check for any restarting or recovering, the generation loop, and the new checks for checkpointing and memory relief. Section \ref{sec:checkpoint} presents the checkpointing methodology and implementation details, and Section \ref{sec:restart} presents the restart methodology and implementation details.
\begin{figure}[htp]
\centering
\includegraphics[width=\linewidth]{"./images/Program-Flow.png"}
\caption{Program Flow of the Attack and Compliance Graph Generation Process with C/R}
\label{fig:prog-flow}
\end{figure}
\subsection{Checkpointing} \label{sec:checkpoint}
Previous works with RAGE have been designed around maximizing performance to limit the longer runtime caused by the state space explosion, such as the works seen by the authors of \cite{cook_rage_2018}, Previous works with RAGE have been designed around maximizing performance to limit the longer runtime caused by the state space explosion, such as the works seen by the authors of \cite{cook_rage_2018},
\cite{li_concurrency_2019}, and \cite{li_combining_2019}. To this end, the output graph is contained in memory during the generation process to minimize disk writing and reading. RAGE does incorporate PostgreSQL as an initial and final storage mechanism to write the starting and resulting graph information, but no intermediate storage is otherwise conducted. Based on the inclusion of PostgreSQL in RAGE, the C/R approach was based around this dependency. Fig. \ref{fig:cr} shows an image of an attack or compliance graph that is undergoing the generation process. All nodes and edges within the ``instance" box have been fully explored, and all information is stored in memory. All nodes within the ``frontier" box have their information stored in memory, but they have not yet undergone exploration. To checkpoint at this point in time, both the instance and the frontier need to be saved. Additionally, since the instance will no longer be used, it can be fully removed from memory. Section \ref{sec:mem-constraint} highlights the advantages and necessities of this removal. \cite{li_concurrency_2019}, and \cite{li_combining_2019}. To this end, the output graph is contained in memory during the generation process to minimize disk writing and reading. RAGE does incorporate PostgreSQL as an initial and final storage mechanism to write the starting and resulting graph information, but no intermediate storage is otherwise conducted. Based on the inclusion of PostgreSQL in RAGE, the C/R approach was based around this dependency. Fig. \ref{fig:cr} shows an image of an attack or compliance graph that is undergoing the generation process. All nodes and edges within the ``instance" box have been fully explored, and all information is stored in memory. All nodes within the ``frontier" box have their information stored in memory, but they have not yet undergone exploration. To checkpoint at this point in time, both the instance and the frontier need to be saved. Additionally, since the instance will no longer be used, it can be fully removed from memory. Section \ref{sec:mem-constraint} highlights the advantages and necessities of this removal.
@ -116,7 +150,7 @@ Previous works with RAGE have been designed around maximizing performance to lim
by using a job scheduler argument such as Slurm's ``--exclusive" option, but this may not be desirable. Instead, a user could pass in the amount of total memory to use (and can be reused from a job scheduler's memory allocation by using a job scheduler argument such as Slurm's ``--exclusive" option, but this may not be desirable. Instead, a user could pass in the amount of total memory to use (and can be reused from a job scheduler's memory allocation
request option), and the checkpointing process would function in the same fashion. Since PostgreSQL is used for the checkpointing, no file system dependencies are necessary for the cluster. request option), and the checkpointing process would function in the same fashion. Since PostgreSQL is used for the checkpointing, no file system dependencies are necessary for the cluster.
\subsection{Restarting} \subsection{Restarting} \label{sec:restart}
The restarting process for attack and compliance graph generation requires only a limited set of information. In order for a proper generation restart, the generator first needs to pull the unexplored queue (``frontier") database table into memory. After the frontier is loaded, the generator tool needs to know at which integer to begin tagging new states. This is accomplished by checking the ID of the latest state in the frontier. Since the instance has already been explored, it does not need to be retrieved from disk. In addition, the frontier is a queue of unexplored nodes. Since these nodes have yet to be explored, no edge information is available, and as a result, no edge information is required. At this point, the generator tool is able to pop the first node from the queue and resume the generation process. The restarting process for attack and compliance graph generation requires only a limited set of information. In order for a proper generation restart, the generator first needs to pull the unexplored queue (``frontier") database table into memory. After the frontier is loaded, the generator tool needs to know at which integer to begin tagging new states. This is accomplished by checking the ID of the latest state in the frontier. Since the instance has already been explored, it does not need to be retrieved from disk. In addition, the frontier is a queue of unexplored nodes. Since these nodes have yet to be explored, no edge information is available, and as a result, no edge information is required. At this point, the generator tool is able to pop the first node from the queue and resume the generation process.
\section{Results} \section{Results}
@ -155,7 +189,10 @@ This work presents an application-level approach at C/R. This approach was built
Future work includes performance and size comparisons to available C/R libraries. This would include implementing SCR, BLCR, and/or DMTCP and measuring their respective checkpoint times and sizes, as well as time taken to restart. This timing information can then be compared to the checkpoint and restart time presented by this work. Future work could also include new optimization techniques. Additional investigations can provide insight on techniques for reducing the runtime of database queries, PostgreSQL database settings to alter or enable, or communication strategies between distributed nodes. Other work can involve alternative approaches at C/R. This work made use of PostgreSQL since it was already incorporated into RAGE, but future work can look toward alternatives. Filesystem C/R approaches can be investigated to determine possible advantages over a dedicated database. One other route for future work involves identifying the checkpointing interval. The work presented by the authors of \cite{CR-Simple} discusses a multitude of options for determining an optimal interval. Various options presented in their work can be implemented, along with their closed-form solution for identifying a default checkpointing interval that can be built into RAGE. Future work includes performance and size comparisons to available C/R libraries. This would include implementing SCR, BLCR, and/or DMTCP and measuring their respective checkpoint times and sizes, as well as time taken to restart. This timing information can then be compared to the checkpoint and restart time presented by this work. Future work could also include new optimization techniques. Additional investigations can provide insight on techniques for reducing the runtime of database queries, PostgreSQL database settings to alter or enable, or communication strategies between distributed nodes. Other work can involve alternative approaches at C/R. This work made use of PostgreSQL since it was already incorporated into RAGE, but future work can look toward alternatives. Filesystem C/R approaches can be investigated to determine possible advantages over a dedicated database. One other route for future work involves identifying the checkpointing interval. The work presented by the authors of \cite{CR-Simple} discusses a multitude of options for determining an optimal interval. Various options presented in their work can be implemented, along with their closed-form solution for identifying a default checkpointing interval that can be built into RAGE.
%\bibliographyp %\bibliographyp
\clearpage
\IEEEtriggeratref{12}
\bibliography{Bibliography} \bibliography{Bibliography}
\bibliographystyle{ieeetr} \bibliographystyle{ieeetr}
\end{document} \end{document}

View File

@ -0,0 +1,182 @@
<mxfile host="app.diagrams.net" modified="2024-02-27T19:51:58.758Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36" etag="rZHhMlSZi8XVTqh9Gr62" version="21.7.4" type="device">
<diagram name="Page-1" id="IUVMWeIDhFmNr3cxVqMv">
<mxGraphModel dx="2252" dy="1162" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="LZPtcvw2TvERN0WiDFPM-10" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.25;entryDx=0;entryDy=0;fontFamily=Times New Roman;fontSize=17;" parent="1" source="LZPtcvw2TvERN0WiDFPM-1" target="LZPtcvw2TvERN0WiDFPM-3" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="LZPtcvw2TvERN0WiDFPM-1" value="Exploit Patterns (.xp)" style="ellipse;whiteSpace=wrap;html=1;fontFamily=Times New Roman;fontSize=17;" parent="1" vertex="1">
<mxGeometry x="80" y="100" width="210" height="60" as="geometry" />
</mxCell>
<mxCell id="LZPtcvw2TvERN0WiDFPM-12" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.75;entryDx=0;entryDy=0;fontFamily=Times New Roman;fontSize=17;" parent="1" source="LZPtcvw2TvERN0WiDFPM-2" target="LZPtcvw2TvERN0WiDFPM-3" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="LZPtcvw2TvERN0WiDFPM-2" value="Network Models (.nm)" style="ellipse;whiteSpace=wrap;html=1;fontFamily=Times New Roman;fontSize=17;" parent="1" vertex="1">
<mxGeometry x="80" y="180" width="210" height="60" as="geometry" />
</mxCell>
<mxCell id="LZPtcvw2TvERN0WiDFPM-13" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;fontFamily=Times New Roman;fontSize=17;" parent="1" source="LZPtcvw2TvERN0WiDFPM-3" target="LZPtcvw2TvERN0WiDFPM-4" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="GUT8gNouMzrGcxfox_9A-12" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;fontFamily=Times New Roman;fontSize=17;" edge="1" parent="1" source="LZPtcvw2TvERN0WiDFPM-3" target="GUT8gNouMzrGcxfox_9A-4">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="LZPtcvw2TvERN0WiDFPM-3" value="Parse, Acquire, and Import Environmental and Transitional Conditions" style="whiteSpace=wrap;html=1;aspect=fixed;fontFamily=Times New Roman;fontSize=17;" parent="1" vertex="1">
<mxGeometry x="330" y="90" width="160" height="160" as="geometry" />
</mxCell>
<mxCell id="LZPtcvw2TvERN0WiDFPM-4" value="Model Database" style="shape=datastore;whiteSpace=wrap;html=1;fontFamily=Times New Roman;fontSize=17;" parent="1" vertex="1">
<mxGeometry x="570" y="125" width="150" height="90" as="geometry" />
</mxCell>
<mxCell id="GUT8gNouMzrGcxfox_9A-2" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fontFamily=Times New Roman;fontSize=17;" edge="1" parent="1" source="LZPtcvw2TvERN0WiDFPM-5" target="LZPtcvw2TvERN0WiDFPM-6">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="LZPtcvw2TvERN0WiDFPM-5" value="Attack and Compliance Graph Generation" style="whiteSpace=wrap;html=1;aspect=fixed;fontFamily=Times New Roman;fontSize=17;" parent="1" vertex="1">
<mxGeometry x="330" y="470" width="160" height="160" as="geometry" />
</mxCell>
<mxCell id="LZPtcvw2TvERN0WiDFPM-30" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fontFamily=Times New Roman;fontSize=17;" parent="1" source="LZPtcvw2TvERN0WiDFPM-6" target="LZPtcvw2TvERN0WiDFPM-9" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="LZPtcvw2TvERN0WiDFPM-31" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fontFamily=Times New Roman;fontSize=17;" parent="1" source="LZPtcvw2TvERN0WiDFPM-6" target="LZPtcvw2TvERN0WiDFPM-7" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="GUT8gNouMzrGcxfox_9A-27" value="Yes" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontFamily=Times New Roman;fontSize=17;" vertex="1" connectable="0" parent="LZPtcvw2TvERN0WiDFPM-31">
<mxGeometry x="-0.7968" y="1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="GUT8gNouMzrGcxfox_9A-16" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;jumpStyle=arc;jumpSize=11;fontFamily=Times New Roman;fontSize=17;" edge="1" parent="1" source="LZPtcvw2TvERN0WiDFPM-6" target="LZPtcvw2TvERN0WiDFPM-22">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="GUT8gNouMzrGcxfox_9A-26" value="No" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontFamily=Times New Roman;fontSize=17;" vertex="1" connectable="0" parent="GUT8gNouMzrGcxfox_9A-16">
<mxGeometry x="-0.4544" y="-1" relative="1" as="geometry">
<mxPoint x="-37" y="-14" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="LZPtcvw2TvERN0WiDFPM-6" value="New Graph &lt;br style=&quot;font-size: 17px;&quot;&gt;States?" style="rhombus;whiteSpace=wrap;html=1;fontFamily=Times New Roman;fontSize=17;" parent="1" vertex="1">
<mxGeometry x="350" y="740" width="120" height="110" as="geometry" />
</mxCell>
<mxCell id="LZPtcvw2TvERN0WiDFPM-32" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;fontFamily=Times New Roman;fontSize=17;" parent="1" source="LZPtcvw2TvERN0WiDFPM-7" target="LZPtcvw2TvERN0WiDFPM-25" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="GUT8gNouMzrGcxfox_9A-30" value="Yes" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontFamily=Times New Roman;fontSize=17;" vertex="1" connectable="0" parent="LZPtcvw2TvERN0WiDFPM-32">
<mxGeometry x="-0.7337" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="LZPtcvw2TvERN0WiDFPM-7" value="Frontier &lt;br&gt;Size &amp;gt;&amp;nbsp;&lt;font style=&quot;font-size: 17px;&quot;&gt;α&lt;/font&gt;&lt;br style=&quot;font-size: 17px;&quot;&gt;&amp;nbsp;" style="rhombus;whiteSpace=wrap;html=1;fontFamily=Times New Roman;fontSize=17;" parent="1" vertex="1">
<mxGeometry x="270" y="920" width="130" height="120" as="geometry" />
</mxCell>
<mxCell id="GUT8gNouMzrGcxfox_9A-21" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.15;exitY=0.05;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.25;entryY=1;entryDx=0;entryDy=0;fontFamily=Times New Roman;fontSize=17;" edge="1" parent="1" source="LZPtcvw2TvERN0WiDFPM-8" target="GUT8gNouMzrGcxfox_9A-8">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="LZPtcvw2TvERN0WiDFPM-8" value="Graph Database" style="shape=datastore;whiteSpace=wrap;html=1;fontFamily=Times New Roman;fontSize=17;" parent="1" vertex="1">
<mxGeometry x="665" y="520" width="150" height="90" as="geometry" />
</mxCell>
<mxCell id="LZPtcvw2TvERN0WiDFPM-33" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.75;entryY=0;entryDx=0;entryDy=0;fontFamily=Times New Roman;fontSize=17;" parent="1" source="LZPtcvw2TvERN0WiDFPM-9" target="LZPtcvw2TvERN0WiDFPM-25" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="LZPtcvw2TvERN0WiDFPM-34" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;jumpStyle=arc;jumpSize=18;fontFamily=Times New Roman;fontSize=17;" parent="1" source="LZPtcvw2TvERN0WiDFPM-9" target="LZPtcvw2TvERN0WiDFPM-5" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="590" y="980" />
<mxPoint x="590" y="680" />
<mxPoint x="460" y="680" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="GUT8gNouMzrGcxfox_9A-28" value="No" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontFamily=Times New Roman;fontSize=17;" vertex="1" connectable="0" parent="LZPtcvw2TvERN0WiDFPM-34">
<mxGeometry x="-0.9461" y="4" relative="1" as="geometry">
<mxPoint x="7" y="-10" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="LZPtcvw2TvERN0WiDFPM-9" value="Instance&lt;br&gt;&amp;nbsp;Size &amp;gt;&amp;nbsp;&lt;font style=&quot;font-size: 17px;&quot;&gt;α&lt;/font&gt;&lt;br style=&quot;font-size: 17px;&quot;&gt;&amp;nbsp;" style="rhombus;whiteSpace=wrap;html=1;fontFamily=Times New Roman;fontSize=17;" parent="1" vertex="1">
<mxGeometry x="420" y="920" width="130" height="120" as="geometry" />
</mxCell>
<mxCell id="GUT8gNouMzrGcxfox_9A-17" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;fontFamily=Times New Roman;fontSize=17;" edge="1" parent="1" source="LZPtcvw2TvERN0WiDFPM-22" target="LZPtcvw2TvERN0WiDFPM-8">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="LZPtcvw2TvERN0WiDFPM-22" value="Finalize, Post-Process, Cleanup, Analysis" style="whiteSpace=wrap;html=1;aspect=fixed;fontFamily=Times New Roman;fontSize=17;" parent="1" vertex="1">
<mxGeometry x="660" y="715" width="160" height="160" as="geometry" />
</mxCell>
<mxCell id="GUT8gNouMzrGcxfox_9A-1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontFamily=Times New Roman;fontSize=17;" edge="1" parent="1" source="LZPtcvw2TvERN0WiDFPM-25" target="LZPtcvw2TvERN0WiDFPM-5">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="130" y="1175" />
<mxPoint x="130" y="550" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="GUT8gNouMzrGcxfox_9A-18" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;fontFamily=Times New Roman;fontSize=17;" edge="1" parent="1" source="LZPtcvw2TvERN0WiDFPM-25" target="LZPtcvw2TvERN0WiDFPM-8">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="900" y="1175" />
<mxPoint x="900" y="565" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="LZPtcvw2TvERN0WiDFPM-25" value="Checkpoint" style="whiteSpace=wrap;html=1;aspect=fixed;fontFamily=Times New Roman;fontSize=17;" parent="1" vertex="1">
<mxGeometry x="340" y="1095" width="160" height="160" as="geometry" />
</mxCell>
<mxCell id="LZPtcvw2TvERN0WiDFPM-36" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fontFamily=Times New Roman;fontSize=17;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" parent="1" edge="1" source="LZPtcvw2TvERN0WiDFPM-7">
<mxGeometry relative="1" as="geometry">
<mxPoint x="270" y="988" as="sourcePoint" />
<mxPoint x="360" y="630" as="targetPoint" />
<Array as="points">
<mxPoint x="230" y="980" />
<mxPoint x="230" y="680" />
<mxPoint x="360" y="680" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="GUT8gNouMzrGcxfox_9A-29" value="No" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontFamily=Times New Roman;fontSize=17;" vertex="1" connectable="0" parent="LZPtcvw2TvERN0WiDFPM-36">
<mxGeometry x="-0.8933" y="-3" relative="1" as="geometry">
<mxPoint x="8" y="-13" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="GUT8gNouMzrGcxfox_9A-11" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;fontFamily=Times New Roman;fontSize=17;" edge="1" parent="1" source="GUT8gNouMzrGcxfox_9A-4" target="LZPtcvw2TvERN0WiDFPM-5">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="GUT8gNouMzrGcxfox_9A-24" value="No" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=17;fontFamily=Times New Roman;" vertex="1" connectable="0" parent="GUT8gNouMzrGcxfox_9A-11">
<mxGeometry x="-0.25" y="1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="GUT8gNouMzrGcxfox_9A-13" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontFamily=Times New Roman;fontSize=17;" edge="1" parent="1" source="GUT8gNouMzrGcxfox_9A-4" target="GUT8gNouMzrGcxfox_9A-8">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="GUT8gNouMzrGcxfox_9A-23" value="Yes" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontFamily=Times New Roman;fontSize=17;" vertex="1" connectable="0" parent="GUT8gNouMzrGcxfox_9A-13">
<mxGeometry x="-0.0569" y="-5" relative="1" as="geometry">
<mxPoint x="-13" y="10" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="GUT8gNouMzrGcxfox_9A-4" value="Restart?" style="rhombus;whiteSpace=wrap;html=1;fontFamily=Times New Roman;fontSize=17;" vertex="1" parent="1">
<mxGeometry x="350" y="290" width="120" height="110" as="geometry" />
</mxCell>
<mxCell id="GUT8gNouMzrGcxfox_9A-20" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=1;exitDx=0;exitDy=0;entryX=0.85;entryY=0.05;entryDx=0;entryDy=0;entryPerimeter=0;fontFamily=Times New Roman;fontSize=17;" edge="1" parent="1" source="GUT8gNouMzrGcxfox_9A-8" target="LZPtcvw2TvERN0WiDFPM-8">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="670" y="425" />
<mxPoint x="670" y="450" />
<mxPoint x="792" y="450" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="GUT8gNouMzrGcxfox_9A-22" value="Connect/Request" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontFamily=Times New Roman;fontSize=17;" vertex="1" connectable="0" parent="GUT8gNouMzrGcxfox_9A-20">
<mxGeometry x="-0.0386" y="4" relative="1" as="geometry">
<mxPoint x="43" y="-9" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="GUT8gNouMzrGcxfox_9A-33" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.75;exitDx=0;exitDy=0;entryX=0.75;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="GUT8gNouMzrGcxfox_9A-8" target="LZPtcvw2TvERN0WiDFPM-5">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="GUT8gNouMzrGcxfox_9A-8" value="Restart" style="whiteSpace=wrap;html=1;aspect=fixed;fontFamily=Times New Roman;fontSize=17;" vertex="1" parent="1">
<mxGeometry x="540" y="265" width="160" height="160" as="geometry" />
</mxCell>
<mxCell id="GUT8gNouMzrGcxfox_9A-32" value="Yes" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontFamily=Times New Roman;fontSize=17;" vertex="1" connectable="0" parent="1">
<mxGeometry x="484.99765202335016" y="1050.001146927862" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB