Commit ee3ab82e authored by Nawasan Wisitsingkhon's avatar Nawasan Wisitsingkhon

finish state one

parent da2b8dd5
Pipeline #1940 canceled with stages
...@@ -3,39 +3,98 @@ ...@@ -3,39 +3,98 @@
\subsection{วัตถุประสงค์} \subsection{วัตถุประสงค์}
\indent\indent \indent\indent
\gls{sdn} นั้นมีการใช้งานและการตั้งค่าที่หลากหลาย \gls{sdn} นั้นมีการใช้งานและการตั้งค่าที่หลากหลาย
ไม่ว่าจะเพื่อให้เหมาะกับ \gls{network-system} ขององค์กรหรือหน่วยงานของตนเอง ยังต้องช่วยเพิ่มประสิทธิภาพของ\gls{network-system}อีกด้วย ไม่ว่าจะเพื่อให้เหมาะกับ \gls{network-system} ขององค์กรหรือหน่วยงานของตน ยังต้องช่วยเพิ่มประสิทธิภาพของ\gls{network-system}อีกด้วย
นอกจากนั้น \gls{sdn} ยังถูกนำมาใช้เพื่อป้องกันการโจมตีผ่าน\gls{network-system} ไม่ว่าจะเป็น Dos หรือ DDos นอกจากนั้น \gls{sdn} ยังถูกนำมาใช้เพื่อป้องกันการโจมตีผ่าน\gls{network-system} ไม่ว่าจะเป็น Dos หรือ DDos
อย่างไรก็ดี\gls{sdn}นั้นก็คือ \gls{software} รูปแบบหนึ่ง อย่างไรก็ตาม\gls{sdn}นั้นก็คือ \gls{software} รูปแบบหนึ่ง
ดังนั้นก็จะมี\gls{software}หลายตัวที่ถูกพัฒนาขึ้นเป็น ``\gls{sdn}'' เช่น RYU OpenDaylight NOX POX ดังนั้นก็จะมี\gls{software}หลายตัวที่ถูกพัฒนาขึ้นเป็น ``\gls{sdn}'' เช่น RYU OpenDaylight NOX POX ฯลฯ
ตังนั้น
วัตถุประสงค์ของการทดลองนี้เพื่อหาประสิทธิภาพทั้งในด้านเวลาและการตรวจจับการโจมตีของ \gls{ryu} ที่ถูกรันอยู่ใน SDN Controller วัตถุประสงค์ของการทดลองนี้ก็เพื่อหาประสิทธิภาพทั้งในด้านเวลาและการตรวจจับการโจมตีของ \gls{ryu} ซึ่งเป็น\gls{sdn}ประเภทหนึ่ง ที่ถูกรันอยู่ใน SDN Controller
พร้อมกับการใช้งาน Group table หรือ Proxy ARP ทั้งในรูปแบบ Single Controller และ Multi Controller พร้อมกับการใช้งาน Group table หรือ Proxy ARP ทั้งในรูปแบบ Single Controller และ Multi Controller
\\ \\
\subsection{การตั้งค่าการจำลอง (Simulation setup)} \subsection{การตั้งค่าการจำลอง (Simulation setup)}
\indent\indent
ให้นักศึกษา บอกถึง เครื่องมือ (Tools) ทั้งหมด ที่นักศึกษาใช้ ทดสอบระบบ เช่น ใช้ emulation Mininet จำลอง Topology แบบ Single Controller และ Multiple
Controlleres ดังภาพที่ 1.1 หรือ อะไรก็ว่าไป เป็นต้น
น่าจะกล่าวถึง Ryu Controller Famework, emulation Mininet, ภาษา Python
\\--------------\\
\textbf{เครื่องมือและอุปกร์ที่ใช้ในการทดลองมีดังนี้} \textbf{เครื่องมือและอุปกร์ที่ใช้ในการทดลองมีดังนี้}
\begin{itemize} \begin{itemize}
\item Oracle VM VirtualBox เวอร์ชั่น 7.0.14 ใช้สำหรับการจำลองเครื่องเซิร์ฟเวอร์ \item Notebook Lenovo IdeaPad 5 14IIL05 รันด้วยระบบปฏิบัติการ Arch Linux 6.7.4-arch1-1
\item ระบบปฏิบัติการ Ubuntu server 22.04.3 \hspace{1em}เป็นอุปกรณ์ที่ใช้สำหรับการรัน\gls{software}ทดสอบทั้งหมด
\item Python 3.9.18 และ 2.7.18 \item GNOME Terminal Version 3.50.1 \hspace{1em}
\item RYU version 4.34 เป็น\gls{software}อยู่บน Notebook ที่จะใช้ในการ ssh เข้าไปใน server
\item mininet version 2.3.1b4 \item Oracle VM VirtualBox เวอร์ชั่น 7.0.14\hspace{1em}
\item wireshark 3.6.2 ใช้สำหรับการจำลองเครื่องเซิร์ฟเวอร์ขึ้นมาเป็นอีกเครื่องหนึ่งบน Notebook
\item vim version 8.2.2121 ที่กล่าวไปข้างต้น ซึ่งจะทำให้เหมือนว่ามีเครื่องเซิร์ฟเวอร์แยกเป็นอีกเครื่องหนึ่งจริงๆ
\item ระบบปฏิบัติการ Ubuntu server 22.04.3\hspace{1em}
คือระบบปฏิบัติการที่ถูกรันอยู่บนเครื่อง Oracle VM VirtualBox
\item Python version 3.9.18 และ 2.7.18 \hspace{1em}
คือ runtime สำหรับรัน script ไฟล์ที่เขียนด้วยภาษา Python ซึ่งจะใช้ในการรัน \gls{ryu} รวมไปถึงการจำลอง Topology ของ mininet
\item RYU version 4.34\hspace{1em}
คือ \gls{software} ที่ได้กล่าวไปข้างต้น ซึ่งเป็น\gls{software}หลักตัวหนึ่ง ที่จะถูกใช้ในการทดลองครั้งนี้
\item mininet version 2.3.1b4\hspace{1em}
คือ\gls{software}ที่จะทำการจำลอง Topology ขึ้นมาภายในเครื่องจำลอง Ubuntu server ที่รันอยู่บน Oracle VM VirtualBox
\item wireshark 3.6.2 \hspace{1em}
คือ\gls{software}ที่จะช่วยในการดักจับข้อมูลที่วิ่งผ่าน\gls{network-system} ซึ่งจะเป็น\gls{software}ที่ใช้ในการวัดประสิทธิภาพในด้านเวลาและการป้องกันการโจมตี
\item vim version 8.2.2121\hspace{1em}
คือ\gls{software}ที่ใช้ในการแก้ไขไฟล์ข้อความหรือไฟล์ script ต่างๆ บนระบบปฏิบัติการ Ubuntu server
\item Vscode 1.86.1\hspace{1em}
เป็น\gls{software}อีกตัวหนึ่งที่ใช้ในการแก้ไขไฟล์ข้อความซึ่งมี Extensions ช่วยในการเขียน ซึ่งในการทดลองนี้จะนำมาใช้ในการแก้ไขไฟล์ script ของ Python ในกรณีที่ต้องการความแม่นยำหรือแก้ปัญหาที่ซับซ้อน
\end{itemize} \end{itemize}
\\
\begin{LARGE}
ถึงตรงนี้ และจะเขียนคำอธิบายเพิ่มเติมสำหรับ เครื่องมือ
\end{LARGE}
\subsection{รูปแบบในการทดลอง} \subsection{รูปแบบในการทดลอง}
\indent\indent \indent\indent
การทดลองมี 4 รูปแบบ ดัง (A1)-(A4) โดย (A1) และ (A3) ใช้คำสั้ง XXX ในการจำลอง Topology และ (A2) และ (A4) ใช้ภาษา Python 3.9 ในการจำลอง Topology ซึ่งทั้ง 4 รูปแบบมีการจองลองการโจมตีโดยการใช้คำสั้ง ping จาก Node-N ใดไปยัง Node-M ใด ด้วยจำนวน Package เท่าไร ก่อนที่จะทำการทดลองนั้นต้องทำการเตรียม python scripts ที่ใช้ในการสร้าง topology จำลองบน mininet
ซึ่งต้องสร้างทั้งแบบ Single Controller และ Multi Controllers โดยสามารถใช้ mininet gui สร้างได้ ตามภาพด้านล่างนี้
หรือสามารถดาวน์โหลดไฟล์ scripts ได้ที่ http://projectcs.sci.ubu.ac.th/nawasan/sdn-topo-mininet
\\
\begin{figure}[h!]
\centering
\includegraphics*[width=20em]{single-edit.png}
\caption{Topology แบบ Single Controller}
\label{img:topo_cs}
\end{figure}
\begin{figure}[h!]
\centering
\includegraphics*[width=20em]{multi-edit.png}
\caption{Topology แบบ Multi Controller}
\label{img:topo_cm}
\end{figure}
ในการทดลองครั้งนี้มี 4 รูปแบบ ซึ่งจะกำหนดให้มีความต่างเฉพาะที่กำหนด และขั้นตอนวิธียังคงเหมือนกัน
โดยสิ่งที่ต้องเตรียมคือ Terminal ให้ทำการเปิดขึ้นมา 3 หน้าต่าง และทำการ ssh เข้าไปที่เซิร์ฟเวอร์จำลองให้เรียบร้อย
โดยหน้าต่างที่ 1 จะใช้สำหรับการรัน \gls{ryu} ทั้งแบบ group table และ proxy arp
หน้าต่างที่ 2 จะใช้สำหรับการรัน topology จำลอง ทั้งแบบ Single Controller และ Multi Controllers
และให้ h2 โจมตีไปยัง h12
หน้าต่างที่ 3 จะใช้สำหรับการรัน wireshark สำหรับตรวจจับแพ็กเกจ
โดยจะมีขั้นตอนดังนี้
\$ ryu-manager learn-sdn-with-ryu/ryu-exercises/ex7\_group\_tables.py \begin{enumerate}
\item หน้าต่างที่ 1 ทำการรันคำสั่ง
\$ ryu-manager learn-sdn-with-ryu/ryu-exercises/<python script> \\โดย python script จะแทนด้วย ex7\_group\_tables.py และ ex8\_arp\_proxy.py
\\ซึ่งได้มาจาก https://github.com/knetsolutions/learn-sdn-with-ryu.git
\item หน้าต่างที่ 2 ทำการรันคำสั่ง
\$ sudo python3 <python script> \\
โดย python script จะแทนด้วย single\_topo.py และ multi\_topo.py
\item หน้าต่างที่ 3 ทำการรันคำสั่ง
\$ sudo wireshark \\
โดยจับที่ขา s4-eth0 และ s11-eth2 ปริมาณ 1,000,000 แพ็กเกจ
\item หน้าต่างที่ 2 ให้ h2 โจมตี h12 ด้วยคำสั่ง \$ mininet> h2 hping3 h12 -S --flood -V
\item เมื่อทำการจับแพ็กเกจครบ 1,000,000 แพ็กเกจแล้ว ทำการเก็บข้อมูลวิเคราะห์จาก wireshark จากนั้นให้ทำการหยุดรันในทุกๆ หน้าต่าง หากจะทำการทดลองรอบถัดไปต้องรันขั้นตอนใหม่ตั้งแต่ขั้นตอนที่ 1.
\end{enumerate}
\$ sudo python3 (ชื่อไฟล์).py ในการทดลองครั้งนี้จะมี 4 รูปแบบ โดยทั้ง 4 รูปแบบจะทำการรัน 3 รอบ คือ
\begin{enumerate}
\item (A1) group table แบบ Single Controller \\
หน้าต่างที่ 1 จะทำการรัน ryu ด้วย script ไฟล์ที่ชื่อ ex7\_group\_tables.py
และ หน้าต่างที่ 2 ทำการรัน single-topo.py
\item (A2) group table แบบ Multi Controllers \\
หน้าต่างที่ 1 จะทำการรัน ryu ด้วย script ไฟล์ที่ชื่อ ex7\_group\_tables.py
และ หน้าต่างที่ 2 ทำการรัน multi-topo.py
\item (A3) proxy arp แบบ Single Controller \\
หน้าต่างที่ 1 จะทำการรัน ryu ด้วย script ไฟล์ที่ชื่อ ex8\_arp\_proxy.py
และ หน้าต่างที่ 2 ทำการรัน single-topo.py
\item (A4) proxy arp แบบ Multi Controllers \\
หน้าต่างที่ 1 จะทำการรัน ryu ด้วย script ไฟล์ที่ชื่อ ex8\_arp\_proxy.py
และ หน้าต่างที่ 2 ทำการรัน multi-topo.py
\end{enumerate}
\section{ผลลัพธ์และการอภิปราย (Results and discussion)} \section{ผลลัพธ์และการอภิปราย (Results and discussion)}
\ No newline at end of file \indent\indent
เหตุผลที่ต้องทำการรัน 3 รอบ ในแต่ละรูปแบบนั้น เนื่องมาจากในขั้นตอนการเตรียมเครื่องมือและซอฟต์แวร์นั้นได้มีการรันทดสอบ และพบว่าค่ามีความแกว่งในบางครั้ง โดยในการรันครั้งแรกดรอปแพ็กเกจได้ 8\% ในการรันครั้งที่ 2 อาจจะเพิ่มเป็น 30\% หรือ 35\%
ดังนั้นจึงได้มีการออกแบบขั้นตอนการทดลองที่เหมือนกันมากที่สุดเพื่อลดปัจจัยที่อาจจะกระทบและทำให้ผลลัพธ์เปลี่ยนไปอย่างมีนัยยะสำคัญ นอกจากนั้นจึงได้มีการรันทดสอบ 3 รอบของแต่ละรูปแบบเพื่อลดโอกาสที่ค่าจะออกมาคลาดเคลื่อนหรือผิดไปจากที่ควรจะเป็น
และในการรันทดสอบนั้นมีการจับแพ็กเกจด้วย wireshark ที่ s4-eth1 และ s11-eth2 ซึ่งทำให้มี 2 ค่าที่เกิดขึ้นจากทั้ง 2 ขาของการจับแพ็กเกจ ทางผู้ทดลองต้องการทำให้เป็นค่าเพียงหนึ่งค่า
จึงจะทำการรวมค่าจาก s4-eth1 และ s11-eth2 ให้เป็นค่าหนึ่งโดยการบวก และในการรันทดสอบ 3 ครั้งนั้น
ผู้ทำการทดลองพิจารณาแล้วว่าจะเลือกค่าอัตราการดรอปแพ็กเกจที่น้อยที่สุดมาใช้ในการวิเคราะห์ ด้วยเหตุที่ว่าค่าที่มีการแกว่งนั้นมักจะเป็นค่าที่มีค่ามากหรือมากที่สุด
\\
\subsection{ผลลัพธ์ประสิทธิภาพด้านเวลา}
\indent\indent
ผลลัพธ์การรันทดสอบการโจมตีในด้านประสิทธิภาพเวลา มีผลลัพธ์เป็นดังนี้
Group table แบบ Single Controller (A1) มีค่า time span เท่ากับ 18.7
Group table แบบ Multi Controllers (A2) มีค่า time span เท่ากับ 21.5
Proxy Arp แบบ Single Controller (A3) มีค่า time span เท่ากับ 14.1
Proxy Arp แบบ Multi Controllers (A4) มีค่า time span เท่ากับ 22.3
\begin{figure}[h]
\centering
\begin{tikzpicture}
\begin{axis}[
title=\textbf{ประสิทธิภาพด้านเวลา},
ylabel=time (s),
ybar,
ymax=30,
ymin=0,
nodes near coords,
nodes near coords align={vertical},
bar width=1em,
symbolic x coords={A1,A2,A3,A4},
xtick=data,
enlarge x limits=0.5,
]
\addplot[fill=blue] coordinates {
(A1,18.7)
(A2,21.5)
(A3,14.1)
(A4,22.3)
};
% \legend{A1,A2,A3,A4}
% \legend{Men,Women}
\end{axis}
\end{tikzpicture}
\caption{แผนภูมิแสดงผลลัพธ์ประสิทธิภาพด้านเวลา}
\end{figure}
\subsection{ผลลัพธ์ประสิทธิภาพด้านการตรวจจับการโจมตี}
\indent\indent
ผลลัพธ์การรันทดสอบการโจมตีในด้านประสิทธิภาพการตรวจจับการโจมตี มีผลลัพธ์เป็นดังนี้
Group table แบบ Single Controller (A1) มีค่า droped packages เท่ากับ 8.7\%
Group table แบบ Multi Controllers (A2) มีค่า droped packages เท่ากับ 20.4\%
Proxy Arp แบบ Single Controller (A3) มีค่า droped packages เท่ากับ 6.3\%
Proxy Arp แบบ Multi Controllers (A4) มีค่า droped packages เท่ากับ 19.4\%
\\
\begin{figure}[h!]
\centering
\begin{tikzpicture}
\begin{axis}[
title=\textbf{ประสิทธิภาพด้านการตรวจจับการโจมตี},
ylabel=droped packages (\%),
ybar,
ymax=30,
ymin=0,
nodes near coords,
nodes near coords align={vertical},
bar width=1em,
symbolic x coords={A1,A2,A3,A4},
xtick=data,
enlarge x limits=0.5,
]
\addplot[fill=red] coordinates {
(A1,8.7)
(A2,20.4)
(A3,6.3)
(A4,19.4)
};
% \legend{A1,A2,A3,A4}
% \legend{Men,Women}
\end{axis}
\end{tikzpicture}
\caption{แผนภูมิแสดงผลลัพธ์ประสิทธิภาพด้านการตรวจจับการโจมตี}
\end{figure}
\pagebreak
\subsection{สรุปผลการทดลอง}
\indent\indent
จากผลลัพธ์ที่ได้รายงานข้างต้น จะสังเกตได้ว่าในประสิทธิภาพด้านเวลานั้นไม่ได้มีความแตกต่างกันมาก แต่ก็พอจะกล่าวได้ว่าการใช้ Proxy Arp นั้นให้ประสิทธิภาพด้านความเร็วที่มากกว่า group table รวมไปถึงการใช้ Multi Controller ก็ให้ประสิทธิภาพด้านความเร็วที่มากกว่า Single Controllers
และหากพิจารณาระหว่าง group table และ proxy arp บน Single Controller จะเห็นได้ว่า Proxy arp ให้ประสิทธิภาพด้านความเร็วอย่างเห็นได้ชัด
แต่หากพิจารณาบน Muti Controllers ก็จะพบว่าไม่ได้มีความต่างเท่าใดนัก อาจกล่าวได้ว่าให้ประสิทธิภาพที่เท่าๆ กัน
\\\indent
ในประสิทธิภาพด้านการตรวจจับการโจมตีนั้น จะสังเกตได้ว่า ทั้ง Group table และ Proxy arp ไม่ได้มีความต่างอย่างมีนัยสำคัญ แต่ว่าสิ่งที่ต่างอย่างเห็นได้ชัดเจนคือการรันแบบ Single Controller และ Multi Controllers โดยการรันแบบ Multi Controllers จะสามารถตรวจจับการโจมตีและทำการ drop packages ได้มากกว่าการรันแบบ Single Controller
ดังนั้นหากพิจารณาต้องการการตรวจจับและป้องกันการโจมตี การรันด้วย Multi Controllers ก็ถือเป็นตัวเลือกที่น่าสนใจ
\\
\subsection{ข้อเสนอแนะ}
\indent\indent
ในการทดลองครั้งนี้ถูกรันบนเครื่องเซิร์ฟเวอร์จำลอง และสร้าง Topology จำลองขึ้น นอกจากนั้นการออกแบบขั้นตอนการทดลองยังคงไม่รัดกุมและชัดเจนมากเท่าที่ควร
ซึ่งอาจจะทำให้ผลลัพธ์คลาดเคลื่อนจากความเป็นจริง อาจกล่าวได้ว่าการทดลองนี้เป็นเพียงการทดลองเบื้องต้นเพียงเท่านั้น
ดังนั้นผู้อ่านจึงต้องมีความระมัดระวัง และรอบคอบในการนำไปใช้
\begin{comment}
group_single 8.7 80.4 44.2 | 44.4 | 8.7
group_single 18.7 8.4 6.8 | 18.7
group_multi 32.5 31.2 20.4 | 28.0 | 20.4
group_multi 23.5 21.8 21.5 | 21.5
arp_single 12 6.3 70.3 | 29.5 | 6.3
arp_single 19.2 14.1 7.8 | 14.1
arp_multi 37.2 25.6 19.4 | 27.4 | 19.4
arp_multi 24.1 25.5 22.3 | 22.3
\end{comment}
\ No newline at end of file
...@@ -13,9 +13,10 @@ ...@@ -13,9 +13,10 @@
\usepackage{fancyhdr} \usepackage{fancyhdr}
\pagestyle{fancyplain} \pagestyle{fancyplain}
\fancyhead[L]{software defined networks ใบงานที่ 9} \fancyhead[L]{การทดลองหาประสิทธิภาพด้านเวลาและการป้องกันการโจมตีของ RYU SDN Framework}
\fancyhead[R]{\thepage} \fancyhead[R]{\thepage}
%--*********--% %--*********--%
\usepackage{comment}
\usepackage[no-math]{fontspec} % จัดการเกี่ยวกับฟ้อนต์ \usepackage[no-math]{fontspec} % จัดการเกี่ยวกับฟ้อนต์
\usepackage{graphicx} % จัดการเกี่ยวกับภาพ \usepackage{graphicx} % จัดการเกี่ยวกับภาพ
\graphicspath{ {./img/} } \graphicspath{ {./img/} }
...@@ -30,6 +31,7 @@ ...@@ -30,6 +31,7 @@
]{THSarabunNew.ttf} ]{THSarabunNew.ttf}
%--*********************--% %--*********************--%
%--config--% %--config--%
\usepackage{pgfplots}
\usepackage{glossaries} \usepackage{glossaries}
\newacronym{sdn}{ระบบเครือข่ายที่กําหนดโดยซอฟต์แวร์}{ Software-defined networking } \newacronym{sdn}{ระบบเครือข่ายที่กําหนดโดยซอฟต์แวร์}{ Software-defined networking }
\newacronym{ryu}{RYU}{ RYU SDN framework } \newacronym{ryu}{RYU}{ RYU SDN framework }
...@@ -40,6 +42,7 @@ ...@@ -40,6 +42,7 @@
{\normalfont\fontsize{16}{15}\bfseries}{\thesection}{1em}{} {\normalfont\fontsize{16}{15}\bfseries}{\thesection}{1em}{}
\titleformat{\subsection} \titleformat{\subsection}
{\normalfont\fontsize{16}{15}\bfseries}{\thesubsection}{1em}{} {\normalfont\fontsize{16}{15}\bfseries}{\thesubsection}{1em}{}
\renewcommand{\figurename}{รูปภาพที่}
% %
\titlespacing*{\section} \titlespacing*{\section}
{0pt}{5.5ex plus 1ex minus .2ex}{0ex plus 0ex} {0pt}{5.5ex plus 1ex minus .2ex}{0ex plus 0ex}
...@@ -52,18 +55,23 @@ ...@@ -52,18 +55,23 @@
\begin{titlepage} \begin{titlepage}
\begin{figure} \begin{figure}
\centering \centering
\includegraphics[width=4cm]{latex.png} \includegraphics[width=1.5cm]{Ubu_logo.png}
\end{figure} \end{figure}
\begin{center} \begin{center}
\Huge Latex Template \\ \LARGE การทดลองหาประสิทธิภาพด้านเวลาและการป้องกันการโจมตีของ RYU SDN Framework โดยใช้ Group table และ Proxy arp ในรูปแบบ Single Controller และ Multi Controllers\\
\vspace{5cm} \vspace{6cm}
\LARGE Name Lastname \\ \LARGE ณวสันต์ วิศิษฏ์ศิงขร \\
\vfill \vfill
\LARGE Somewhere in the world \LARGE แขนงวิชาเทคโนโลยีเครือข่ายและความมั่นคงทางไซเบอร์ \\
สาขาวิชาเทคโนโลยีสารสนเทศและการสื่อสาร \\
คณะวิทยาศาสตร์
มหาวิทยาลัยอุบลราชธานี
\pagebreak \pagebreak
\end{center} \end{center}
\end{titlepage} \end{titlepage}
%--***************--% %--***************--%
\include{chapter1} % \include{chapter1}
\include{chapter2} \input{chapter1.tex}
\input{chapter2.tex}
% \include{chapter2}
\end{document} \end{document}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment