Commit b8a2fa5e authored by Nawasan Wisitsingkhon's avatar Nawasan Wisitsingkhon

text chap1 finish (await img)

parent 336901ed
...@@ -8,43 +8,51 @@ ...@@ -8,43 +8,51 @@
อย่างไรก็ตาม\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} ซึ่งเป็น\gls{sdn}ประเภทหนึ่ง ที่ถูกรันอยู่น SDN Controller วัตถุประสงค์ของการทดลองครั้งนี้ก็เพื่อหาประสิทธิภาพทั้งในด้านเวลาและการตรวจจับการโจมตีของ \gls{ryu} ซึ่งเป็น\gls{sdn}ประเภทหนึ่ง ที่ถูกรันอยู่น SDN Controller
พร้อมกับการใช้งาน Group table หรือ Proxy ARP ทั้งในรูปแบบ Single Controller และ Multi Controller พร้อมกับการใช้งาน Group table หรือ Proxy ARP ทั้งในรูปแบบ Single Controller และ Multi Controllers
\\ \\
\subsection{การตั้งค่าการจำลอง (Simulation setup)} \subsection{การตั้งค่าการจำลอง (Simulation setup)}
\textbf{เครื่องมือและอุปกร์ที่ใช้ในการทดลองมีดังนี้} \textbf{เครื่องมือและอุปกร์ที่ใช้ในการทดลองมีดังนี้}
\begin{itemize} \notebook รุ่น Lenovo IdeaPad 5 14IIL05 รันด้วยระบบปฏิบัติการ Arch Linux 6.7.4-arch1-1
\item Notebook Lenovo IdeaPad 5 14IIL05 รันด้วยระบบปฏิบัติการ Arch Linux 6.7.4-arch1-1 เป็นอุปกรณ์ที่ใช้สำหรับการรัน\gls{software}ทดสอบทั้งหมด
\hspace{1em}เป็นอุปกรณ์ที่ใช้สำหรับการรัน\gls{software}ทดสอบทั้งหมด
\item GNOME Terminal Version 3.50.1 \hspace{1em}
เป็น\gls{software}อยู่บน Notebook ที่จะใช้ในการ ssh เข้าไปใน server
\item Oracle VM VirtualBox เวอร์ชั่น 7.0.14\hspace{1em}
ใช้สำหรับการจำลองเครื่องเซิร์ฟเวอร์ขึ้นมาเป็นอีกเครื่องหนึ่งบน Notebook
ที่กล่าวไปข้างต้น ซึ่งจะทำให้เหมือนว่ามีเครื่องเซิร์ฟเวอร์แยกเป็นอีกเครื่องหนึ่งจริงๆ
\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}
GNOME Terminal Version 3.50.1
เป็น\gls{software}อยู่บน\notebook ที่จะใช้ในการ ssh เข้าไปใน server เพื่อทำการสั่งการทำงานต่างๆ
Oracle VM VirtualBox เวอร์ชั่น 7.0.14
ใช้สำหรับการจำลอง \gls{server} ขึ้นมาเป็นอีกเครื่องหนึ่งบน\notebook
ที่กล่าวไปข้างต้น ซึ่งจะทำให้เสมือนว่ามี\gls{server}เพิ่มขึ้นมาอีกเครื่องหนึ่ง
ระบบปฏิบัติการ Ubuntu server 22.04.3
คือระบบปฏิบัติการที่ถูกรันอยู่บน\gls{server}ที่จำลองอยู่บน Oracle VM VirtualBox
Python version 3.9.18 และ 2.7.18
คือรันไทม์สำหรับรันสคริปต์ไฟล์ที่เขียนด้วยภาษา Python ซึ่งจะใช้ในการรัน \gls{ryu} รวมไปถึงการจำลอง Topology ของ mininet
RYU version 4.34
คือ \gls{sdn} ที่ได้กล่าวไปข้างต้น ซึ่งเป็น\gls{software}หลักตัวหนึ่ง ที่จะถูกใช้ในการรันเชื่อมต่อกับ \gls{controller} บน mininet
mininet version 2.3.1b4
คือ\gls{software}ที่จะทำการจำลอง Topology ที่ใช้ในการทดสอบขึ้นมาภายในเครื่องจำลอง Ubuntu server ที่รันอยู่บน Oracle VM VirtualBox
wireshark 3.6.2
คือ\gls{software}ที่จะช่วยในการดักจับข้อมูลที่วิ่งผ่าน\gls{network-system} ซึ่งจะเป็น\gls{software}ที่ใช้ในการวัดประสิทธิภาพในด้านเวลาและการป้องกันการโจมตี
vim version 8.2.2121
คือ\gls{software}ที่ใช้ในการแก้ไขไฟล์ข้อความหรือไฟล์ข้อความต่างๆ บนระบบปฏิบัติการ Ubuntu server
Vscode 1.86.1
เป็น\gls{software}อีกตัวหนึ่งที่ใช้ในการแก้ไขไฟล์ข้อความซึ่งมีส่วนเสริมที่ช่วยในการเขียน ซึ่งในการทดลองนี้จะนำมาใช้ในการแก้ไขไฟล์สคริปต์ของ Python ในกรณีที่ต้องการความแม่นยำหรือแก้ปัญหาที่ซับซ้อน
\newline
\subsection{รูปแบบในการทดลอง} \subsection{รูปแบบในการทดลอง}
\indent\indent \indent\indent
ก่อนที่จะทำการทดลองนั้นต้องทำการเตรียม python scripts ที่ใช้ในการสร้าง topology จำลองบน mininet ในการจะทำการทดลองนั้นจำเป็นต้องมี python script ที่ใช้ในการสร้าง topology จำลองบน mininet
ซึ่งต้องสร้างทั้งแบบ Single Controller และ Multi Controllers โดยสามารถใช้ mininet gui สร้างได้ ตามภาพด้านล่างนี้ ซึ่งต้องสร้างทั้งแบบ Single Controller และ Multi Controllers โดยสามารถใช้ mininet gui สร้างได้ ตามภาพด้านล่างนี้
หรือสามารถดาวน์โหลดไฟล์ scripts ได้ที่ http://projectcs.sci.ubu.ac.th/nawasan/sdn-topo-mininet หรือสามารถดาวน์โหลดไฟล์ scripts ได้ที่ http://projectcs.sci.ubu.ac.th/nawasan/sdn-topo-mininet
\\ \\
\begin{figure}[h!] \begin{figure}[h!]
\centering \centering
\includegraphics*[width=20em]{single-edit.png} \includegraphics*[width=20em]{single-edit.png}
...@@ -59,42 +67,162 @@ ...@@ -59,42 +67,162 @@
\label{img:topo_cm} \label{img:topo_cm}
\end{figure} \end{figure}
ในการทดลองครั้งนี้มี 4 รูปแบบ ซึ่งจะกำหนดให้มีความต่างเฉพาะที่กำหนด และขั้นตอนวิธียังคงเหมือนกัน \pagebreak
โดยสิ่งที่ต้องเตรียมคือ Terminal ให้ทำการเปิดขึ้นมา 3 หน้าต่าง และทำการ ssh เข้าไปที่เซิร์ฟเวอร์จำลองให้เรียบร้อย
โดยหน้าต่างที่ 1 จะใช้สำหรับการรัน \gls{ryu} ทั้งแบบ group table และ proxy arp โดยรูปภาพที่ \ref{img:topo_cs} คือ Topology แบบมี 1 \gls{controller} โดยจะทำการกำหนดให้\gls{controller}เป็นแบบ remote
หน้าต่างที่ 2 จะใช้สำหรับการรัน topology จำลอง ทั้งแบบ Single Controller และ Multi Controllers และรูปภาพที่ \ref{img:topo_cm} คือ Topology แบบมีหลาย\gls{controller} โดยจะทำการกำหนดให้\gls{controller}เป็นแบบ remote ทั้งหมด และกำหนด port เป็น 6633 6634 และ 6635
และให้ h2 โจมตีไปยัง h12 นอกจากนั้น เมื่อสร้าง script python ขึ้นมาแล้ว หรือดาวน์โหลดไฟล์จากลิงก์ที่ให้ไว้ จะทำการตั้งชื่อไฟล์เป็นดังนี้ Topology ที่มี 1 \gls{controller}
หน้าต่างที่ 3 จะใช้สำหรับการรัน wireshark สำหรับตรวจจับแพ็กเกจ ดังรูปภาพที่ \ref{img:topo_cs} จะทำการตั้งชื่อเป็น single-topo.py และ Topology ที่มีหลาย\gls{controller} ดังรูปภาพที่ \ref{img:topo_cm} จะทำการตั้งชื่อเป็น multi-topo.py
โดยจะมีขั้นตอนดังนี้
ในการทดลองครั้งนี้ผู้ทำการทดลองได้ออกแบบการทดลองให้มีความเข้มงวดและรัดกุมมากที่สุด เพื่อให้ผลลัพธ์ที่ได้มีความคลาดเคลื่อนน้อยที่สุด
\begin{enumerate} โดยผู้ทำการทดลองจะออกแบบการทดลองโดยให้มี 2 รูปแบบ 4 เงื่อนไข ดังนี้
\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 เงื่อนไขที่ 1. (A1) group table แบบ 1 \gls{controller}\\
\item หน้าต่างที่ 2 ทำการรันคำสั่ง โดยจะทำการรัน ryu-manager ด้วย script ไฟล์ที่ชื่อ ex7\_group\_tables.py
\$ sudo python3 <python script> \\ และทำการรันไฟล์ชื่อ single-topo.py ด้วย python เพื่อจำลอง Topology แบบ 1 \gls{controller}
โดย python script จะแทนด้วย single\_topo.py และ multi\_topo.py
\item หน้าต่างที่ 3 ทำการรันคำสั่ง
\$ sudo wireshark \\ เงื่อนไขที่ 2. (A2) group table แบบหลาย\gls{controller} \\
โดยจับที่ขา s4-eth1 (ที่เชื่อมกับ h2) และ s11-eth2 (ที่เชื่อมกับ h12) ปริมาณ 1,000,000 แพ็กเกจ โดยจะทำการรัน ryu-manager ด้วย script ไฟล์ที่ชื่อ ex7\_group\_tables.py
\item หน้าต่างที่ 2 ให้ h2 โจมตี h12 ด้วยคำสั่ง \$ mininet> h2 hping3 h12 -S --flood -V และทำการรันไฟล์ชื่อ multi-topo.py ด้วย python เพื่อจำลอง Topology แบบหลาย\gls{controller}
\item เมื่อทำการจับแพ็กเกจครบ 1,000,000 แพ็กเกจแล้ว ทำการเก็บข้อมูลวิเคราะห์จาก wireshark จากนั้นให้ทำการหยุดรันในทุกๆ หน้าต่าง หากจะทำการทดลองรอบถัดไปต้องรันขั้นตอนใหม่ตั้งแต่ขั้นตอนที่ 1.
\end{enumerate}
เงื่อนไขที่ 3. (A3) proxy arp แบบ 1 \gls{controller}\\
ในการทดลองครั้งนี้จะมี 4 รูปแบบ โดยทั้ง 4 รูปแบบจะทำการรัน 3 รอบ คือ โดยจะทำการรัน ryu-manager ด้วย script ไฟล์ที่ชื่อ ex8\_arp\_proxy.py
และทำการรันไฟล์ชื่อ single-topo.py ด้วย python เพื่อจำลอง Topology แบบ 1 \gls{controller}
\begin{enumerate}
\item (A1) group table แบบ Single Controller \\ เงื่อนไขที่ 4. (A4) proxy arp แบบหลาย\gls{controller} \\
หน้าต่างที่ 1 จะทำการรัน ryu ด้วย script ไฟล์ที่ชื่อ ex7\_group\_tables.py โดยจะทำการรัน ryu-manager ด้วย script ไฟล์ที่ชื่อ ex8\_arp\_proxy.py
และ หน้าต่างที่ 2 ทำการรัน single-topo.py และทำการรันไฟล์ชื่อ multi-topo.py ด้วย python เพื่อจำลอง Topology แบบหลาย\gls{controller}
\item (A2) group table แบบ Multi Controllers \\
หน้าต่างที่ 1 จะทำการรัน ryu ด้วย script ไฟล์ที่ชื่อ ex7\_group\_tables.py รูปแบบที่ 1. คือ ทำการทดสอบโดยจับแพ็กเก็ตทีละจำนวน 100,000 250,000 500,000 750,000 และ 1,000,000 แพ็กเก็ต
และ หน้าต่างที่ 2 ทำการรัน multi-topo.py จากนั้นนำมาวิเคราะห์เปรียบเทียบหาประสิทธิภาพด้านเวลาและการตรวจจับการโจมตี
\item (A3) proxy arp แบบ Single Controller \\
หน้าต่างที่ 1 จะทำการรัน ryu ด้วย script ไฟล์ที่ชื่อ ex8\_arp\_proxy.py รูปแบบที่ 2. คือ ทำการทดสอบโดยจำแพ็กเก็ตจำนวน 1,000,000 และ 2,000,000 แพ็กเก็ต
และ หน้าต่างที่ 2 ทำการรัน single-topo.py จากนั้นนำมาวิเคราะห์เปรียบเทียบหาประสิทธิภาพด้านเวลาและการตรวจจับการโจมตี
\item (A4) proxy arp แบบ Multi Controllers \\ \\\\
หน้าต่างที่ 1 จะทำการรัน ryu ด้วย script ไฟล์ที่ชื่อ ex8\_arp\_proxy.py สาเหตุที่มีการทดลองสองรูปแบบนั้นก็เพื่อให้สามารถตรวจสอบได้ว่าผลลัพธ์ที่ได้จากการทดสอบมีความถูกต้องน่าเชื่อถือ
และ หน้าต่างที่ 2 ทำการรัน multi-topo.py เป็นต้นว่าหากผลการทดสองจากทั้งสองรูปแบบสอดคล้องกัน ก็สามารถเชื่อได้ว่าผลการทดลองนั้นถูกต้อง นอกจากนั้นผู้ทำการทดลองยังได้กำหนดให้ลำดับวิธีของทั้ง 2 รูปแบบการทดลองมีความต่างกันในบางขั้นตอน เพื่อเพิ่มความเชื่อมั่นและความถูกต้องมากขั้นไปอีก
\\\\
\end{enumerate} \subsection{ขั้นตอนลำดับวิธีทดลอง}
\indent\indent
ในการทดลอง ขั้นตอนลำดับจะต่างกันในส่วนของรูปแบบการทดลองเท่านั้น โดยที่เงื่อนไขต่างๆ จะยังคงมีลำดับการทดลองที่เหมือนกัน กล่าวคือในเงื่อนไขการทดลองนั้นจะต่างกันก็เพียงแต่ไฟล์ที่ทำการรันเท่านั้น โดยที่ลำดับขั้นตอนจะยังคงเหมือนเดิม
ในแต่ละเงิ่อนไขการทดลองจะทำการรันทดสอบ 3 รอบ และเลือกค่ากลางมาทำการวิเคราะห์ กล่าวคือ เลือกค่าที่ไม่น้อยที่สุดและไม่มากที่สุดจากค่าที่ได้จากการทดสอบ
\\\\
\textbf{รูปแบบการทดลองที่ 1 บน 1 \gls{controller}}
ในขั้นต้นผู้ทำการทดลองต้องทำการเปิด gnome terminal ขึ้นมาและเปิดหน้าต่างย่อยเป็นจำนวน 3 หน้าต่าง
ทุกหน้าต่างจะต้องทำการเชื่อมต่อไปยัง\gls{server}ด้วย ssh ให้เรียบร้อย
โดย หน้าต่างที่ 1 จะทำการรัน ryu-manager หน้าต่างที่ 2 จะทำการรัน mininet และหน้าต่างที่ 3 จะทำการรัน wireshark
โดยมีลำดับขั้นตอนการทดลองดังนี้
1. หน้าต่างที่ 1 ทำการรันคำสั่ง
\$ ryu-manager learn-sdn-with-ryu/ryu-exercises/<python script> \\
โดย <python script> จะแทนด้วย ex7\_group\_tables.py หรือ ex8\_arp\_proxy.py ตามเงื่อนไขการทดลอง
2. หน่าต่างที่ 2 ทำการรันคำสั่ง
\$ sudo python3 single\_topo.py \\
เพื่อทำการจำลอง topology แบบ 1 \gls{controller} ขึ้นมา
3. หน้าต่างที่ 3 ทำการรันคำสั่ง
\$ sudo wireshark \\
โดยทำการจับแพ็กเก็ตที่ s4-eth1 (ที่เชื่อมกับ h2) และ s11-eth2 (ที่เชื่อมกับ h12) เป็นจำนวนที่เคยกล่าวไปข้างต้น
4. หลังจากที่ wireshark ทำการเริ่มจับแพ็กเก็ต หน้าต่างที่ 2 จะทำการรันคำสั่ง \$ mininet> h2 hping3 h12 -S --flood -V
โดยทันที เพื่อทำการให้ h2 โจมตีไปที่ h12
5. หลังจากทำการจับแพ็กเก็ตครบตามจำนวนที่กำหนด หน้าต่างที่ 2 ทำการหยุดการโจมตี จากนั้นทำการเก็บค่าสถิติ และทำการปิดโปรแกรม wireshark
หน้าต่างที่ 2 ทำการออกจาก mininet และรันคำสั่ง \$ sudo mn -c หากมีการทดสอบรอบต่อไปต้องเริ่มจากขั้นตอนที่ 1 ใหม่เท่านั้น
\\\\
\textbf{รูปแบบการทดลองที่ 1 บนหลาย\gls{controller}}
ในขั้นต้นผู้ทำการทดลองต้องทำการเปิด gnome terminal ขึ้นมาและเปิดหน้าต่างย่อยเป็นจำนวน 5 หน้าต่าง
ทุกหน้าต่างจะต้องทำการเชื่อมต่อไปยัง\gls{server}ด้วย ssh ให้เรียบร้อย
โดย หน้าต่างที่ 1 2 และ 3 จะทำการรัน ryu-manager หน้าต่างที่ 4 จะทำการรัน mininet และหน้าต่างที่ 5 จะทำการรัน wireshark
โดยมีลำดับขั้นตอนการทดลองดังนี้
1. หน้าต่างที่ 1 ทำการรันคำสั่ง \\
\$ ryu-manager learn-sdn-with-ryu/ryu-exercises/<python script> --ofp-tcp-listen-port 6633 \\
\indent หน้าต่างที่ 2 ทำการรันคำสั่ง \\
\$ ryu-manager learn-sdn-with-ryu/ryu-exercises/<python script> --ofp-tcp-listen-port 6634 \\
\indent หน้าต่างที่ 3 ทำการรันคำสั่ง \\
\$ ryu-manager learn-sdn-with-ryu/ryu-exercises/<python script> --ofp-tcp-listen-port 6635 \\
โดย <python script> จะแทนด้วย
ex7\_group\_tables.py หรือ ex8\_arp\_proxy.py
ตามเงื่อนไขการทดลอง
2. หน่าต่างที่ 4 ทำการรันคำสั่ง
\$ sudo python3 multi\_topo.py \\
เพื่อทำการจำลอง topology แบบหลาย\gls{controller} ขึ้นมา
3. หน้าต่างที่ 5 ทำการรันคำสั่ง
\$ sudo wireshark
โดยทำการจับแพ็กเก็ตที่ s4-eth1 (ที่เชื่อมกับ h2) และ s11-eth2 (ที่เชื่อมกับ h12) เป็นจำนวนที่เคยกล่าวไปข้างต้น
4. หลังจากที่ wireshark ทำการเริ่มจับแพ็กเก็ต หน้าต่างที่ 4 จะทำการรันคำสั่ง \$ mininet> h2 hping3 h12 -S --flood -V
โดยทันที เพื่อทำการให้ h2 โจมตีไปที่ h12
5. หลังจากทำการจับแพ็กเก็ตครบตามจำนวนที่กำหนด หน้าต่างที่ 4 ทำการหยุดการโจมตี จากนั้นทำการเก็บค่าสถิติ และทำการปิดโปรแกรม wireshark
หน้าต่างที่ 2 ทำการออกจาก mininet และรันคำสั่ง \$ sudo mn -c หากมีการทดสอบรอบต่อไปต้องเริ่มจากขั้นตอนที่ 1 ใหม่เท่านั้น
\\\\
\textbf{รูปแบบการทดลองที่ 2 บน 1 \gls{controller}}
ในขั้นต้นผู้ทำการทดลองต้องทำการเปิด gnome terminal ขึ้นมาและเปิดหน้าต่างย่อยเป็นจำนวน 3 หน้าต่าง
ทุกหน้าต่างจะต้องทำการเชื่อมต่อไปยัง\gls{server}ด้วย ssh ให้เรียบร้อย
โดย หน้าต่างที่ 1 จะทำการรัน ryu-manager หน้าต่างที่ 2 จะทำการรัน mininet และหน้าต่างที่ 3 จะทำการรัน wireshark
โดยมีลำดับขั้นตอนการทดลองดังนี้
1. หน้าต่างที่ 1 ทำการรันคำสั่ง
\$ ryu-manager learn-sdn-with-ryu/ryu-exercises/<python script> \\
โดย <python script> จะแทนด้วย ex7\_group\_tables.py หรือ ex8\_arp\_proxy.py ตามเงื่อนไขการทดลอง
2. หน่าต่างที่ 2 ทำการรันคำสั่ง
\$ sudo python3 single\_topo.py \\
เพื่อทำการจำลอง topology แบบ 1 \gls{controller} ขึ้นมา
3. หน้าต่างที่ 2 จะทำการรันคำสั่ง \$ mininet> h2 hping3 h12 -S --flood -V
เพื่อทำการให้ h2 โจมตีไปที่ h12
4. หน้าต่างที่ 3 ทำการรันคำสั่ง
\$ sudo wireshark
จากนั้นจะทำการเริ่มจับแพ็กเก็ตหลังจากเริ่มการโจมตีแล้ว 30 วินาที
โดยทำการจับแพ็กเก็ตที่ s4-eth1 (ที่เชื่อมกับ h2) และ s11-eth2 (ที่เชื่อมกับ h12) เป็นจำนวนที่เคยกล่าวไปข้างต้น
5. หลังจากทำการจับแพ็กเก็ตครบตามจำนวนที่กำหนด หน้าต่างที่ 2 ทำการหยุดการโจมตี จากนั้นทำการเก็บค่าสถิติ และทำการปิดโปรแกรม wireshark
หน้าต่างที่ 2 ทำการออกจาก mininet และรันคำสั่ง \$ sudo mn -c หากมีการทดสอบรอบต่อไปต้องเริ่มจากขั้นตอนที่ 1 ใหม่เท่านั้น
\\\\
\textbf{รูปแบบการทดลองที่ 2 บนหลาย\gls{controller}}
ในขั้นต้นผู้ทำการทดลองต้องทำการเปิด gnome terminal ขึ้นมาและเปิดหน้าต่างย่อยเป็นจำนวน 5 หน้าต่าง
ทุกหน้าต่างจะต้องทำการเชื่อมต่อไปยัง\gls{server}ด้วย ssh ให้เรียบร้อย
โดย หน้าต่างที่ 1 2 และ 3 จะทำการรัน ryu-manager หน้าต่างที่ 4 จะทำการรัน mininet และหน้าต่างที่ 5 จะทำการรัน wireshark
โดยมีลำดับขั้นตอนการทดลองดังนี้
1. หน้าต่างที่ 1 ทำการรันคำสั่ง \\
\$ ryu-manager learn-sdn-with-ryu/ryu-exercises/<python script> --ofp-tcp-listen-port 6633 \\
\indent หน้าต่างที่ 2 ทำการรันคำสั่ง \\
\$ ryu-manager learn-sdn-with-ryu/ryu-exercises/<python script> --ofp-tcp-listen-port 6634 \\
\indent หน้าต่างที่ 3 ทำการรันคำสั่ง \\
\$ ryu-manager learn-sdn-with-ryu/ryu-exercises/<python script> --ofp-tcp-listen-port 6635 \\
โดย <python script> จะแทนด้วย
ex7\_group\_tables.py หรือ ex8\_arp\_proxy.py
ตามเงื่อนไขการทดลอง
2. หน่าต่างที่ 4 ทำการรันคำสั่ง
\$ sudo python3 multi\_topo.py เพื่อทำการจำลอง topology แบบหลาย\gls{controller} ขึ้นมา
4. หน้าต่างที่ 4 จะทำการรันคำสั่ง \$ mininet> h2 hping3 h12 -S --flood -V
เพื่อทำการให้ h2 โจมตีไปที่ h12
3. หน้าต่างที่ 5 ทำการรันคำสั่ง
\$ sudo wireshark
จากนั้นจะทำการเริ่มจับแพ็กเก็ตหลังจากเริ่มการโจมตีแล้ว 30 วินาที
โดยทำการจับแพ็กเก็ตที่ s4-eth1 (ที่เชื่อมกับ h2) และ s11-eth2 (ที่เชื่อมกับ h12) เป็นจำนวนที่เคยกล่าวไปข้างต้น
5. หลังจากทำการจับแพ็กเก็ตครบตามจำนวนที่กำหนด หน้าต่างที่ 4 ทำการหยุดการโจมตี จากนั้นทำการเก็บค่าสถิติ และทำการปิดโปรแกรม wireshark
หน้าต่างที่ 2 ทำการออกจาก mininet และรันคำสั่ง \$ sudo mn -c หากมีการทดสอบรอบต่อไปต้องเริ่มจากขั้นตอนที่ 1 ใหม่เท่านั้น
\\\\
...@@ -34,6 +34,7 @@ ...@@ -34,6 +34,7 @@
]{THSarabunNew.ttf} ]{THSarabunNew.ttf}
%--*********************--% %--*********************--%
%--config--% %--config--%
\def\notebook{คอมพิวเตอร์วางตัก}
\usepackage{hyperref} \usepackage{hyperref}
\hypersetup{ \hypersetup{
pdftitle={การทดลองหาประสิทธิภาพด้านเวลาและการป้องกันการโจมตีของ RYU SDN Framework โดยใช้ Group table และ Proxy arp ในรูปแบบ Single Controller และ Multi Controllers}, pdftitle={การทดลองหาประสิทธิภาพด้านเวลาและการป้องกันการโจมตีของ RYU SDN Framework โดยใช้ Group table และ Proxy arp ในรูปแบบ Single Controller และ Multi Controllers},
...@@ -43,7 +44,9 @@ ...@@ -43,7 +44,9 @@
\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 }
\newacronym{server}{เครื่องแม่ข่าย}{ Server }
\newacronym{software}{ซอฟต์แวร์}{ Software } \newacronym{software}{ซอฟต์แวร์}{ Software }
\newacronym{controller}{ตัวควบคุม}{ Controllers }
\newacronym{network-system}{ระบบเครือข่าย}{ Network system } \newacronym{network-system}{ระบบเครือข่าย}{ Network system }
\glsdisablehyper \glsdisablehyper
\usepackage{titlesec} \usepackage{titlesec}
...@@ -81,8 +84,9 @@ ...@@ -81,8 +84,9 @@
%--***************--% %--***************--%
\tableofcontents \tableofcontents
\clearpage \clearpage
% \include{chapter1}
\input{chapter1.tex} \include{chapter1}
\input{chapter2.tex} \include{chapter2}
% \include{chapter2} % \input{chapter1.tex}
% \input{chapter2.tex}
\end{document} \end{document}
\ No newline at end of file
\contentsline {section}{\numberline {1}ระเบียบวิธี}{2}{section.1}% \contentsline {section}{\numberline {1}ระเบียบวิธี}{2}{section.1}%
\contentsline {subsection}{\numberline {1.1}วัตถุประสงค์}{2}{subsection.1.1}% \contentsline {subsection}{\numberline {1.1}วัตถุประสงค์}{2}{subsection.1.1}%
\contentsline {subsection}{\numberline {1.2}การตั้งค่าการจำลอง (Simulation setup)}{2}{subsection.1.2}% \contentsline {subsection}{\numberline {1.2}การตั้งค่าการจำลอง (Simulation setup)}{2}{subsection.1.2}%
\contentsline {subsection}{\numberline {1.3}รูปแบบในการทดลอง}{3}{subsection.1.3}% \contentsline {subsection}{\numberline {1.3}รูปแบบในการทดลอง}{2}{subsection.1.3}%
\contentsline {section}{\numberline {2}ผลลัพธ์และการอภิปราย (Results and discussion)}{4}{section.2}% \contentsline {subsection}{\numberline {1.4}ขั้นตอนลำดับวิธีทดลอง}{4}{subsection.1.4}%
\contentsline {subsection}{\numberline {2.1}ผลลัพธ์ประสิทธิภาพด้านเวลา}{4}{subsection.2.1}% \contentsline {section}{\numberline {2}ผลลัพธ์และการอภิปราย (Results and discussion)}{7}{section.2}%
\contentsline {subsection}{\numberline {2.2}ผลลัพธ์ประสิทธิภาพด้านการตรวจจับการโจมตี}{5}{subsection.2.2}% \contentsline {subsection}{\numberline {2.1}ผลลัพธ์ประสิทธิภาพด้านเวลา}{7}{subsection.2.1}%
\contentsline {subsection}{\numberline {2.3}สรุปผลการทดลอง}{5}{subsection.2.3}% \contentsline {subsection}{\numberline {2.2}ผลลัพธ์ประสิทธิภาพด้านการตรวจจับการโจมตี}{7}{subsection.2.2}%
\contentsline {subsection}{\numberline {2.4}ข้อเสนอแนะ}{6}{subsection.2.4}% \contentsline {subsection}{\numberline {2.3}สรุปผลการทดลอง}{7}{subsection.2.3}%
\contentsline {subsection}{\numberline {2.4}ข้อเสนอแนะ}{8}{subsection.2.4}%
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