Commit b8a2fa5e authored by Nawasan Wisitsingkhon's avatar Nawasan Wisitsingkhon

text chap1 finish (await img)

parent 336901ed
......@@ -8,43 +8,51 @@
อย่างไรก็ตาม\gls{sdn}นั้นก็คือ \gls{software} รูปแบบหนึ่ง
ดังนั้นก็จะมี\gls{software}หลายตัวที่ถูกพัฒนาขึ้นเป็น ``\gls{sdn}'' เช่น RYU OpenDaylight NOX POX ฯลฯ
ดังนั้น
วัตถุประสงค์ของการทดลองครั้งนี้ก็เพื่อหาประสิทธิภาพทั้งในด้านเวลาและการตรวจจับการโจมตีของ \gls{ryu} ซึ่งเป็น\gls{sdn}ประเภทหนึ่ง ที่ถูกรันอยู่น SDN Controller
พร้อมกับการใช้งาน Group table หรือ Proxy ARP ทั้งในรูปแบบ Single Controller และ Multi Controller
วัตถุประสงค์ของการทดลองครั้งนี้ก็เพื่อหาประสิทธิภาพทั้งในด้านเวลาและการตรวจจับการโจมตีของ \gls{ryu} ซึ่งเป็น\gls{sdn}ประเภทหนึ่ง ที่ถูกรันอยู่น SDN Controller
พร้อมกับการใช้งาน Group table หรือ Proxy ARP ทั้งในรูปแบบ Single Controller และ Multi Controllers
\\
\subsection{การตั้งค่าการจำลอง (Simulation setup)}
\textbf{เครื่องมือและอุปกร์ที่ใช้ในการทดลองมีดังนี้}
\begin{itemize}
\item Notebook Lenovo IdeaPad 5 14IIL05 รันด้วยระบบปฏิบัติการ Arch Linux 6.7.4-arch1-1
\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}
\notebook รุ่น Lenovo IdeaPad 5 14IIL05 รันด้วยระบบปฏิบัติการ Arch Linux 6.7.4-arch1-1
เป็นอุปกรณ์ที่ใช้สำหรับการรัน\gls{software}ทดสอบทั้งหมด
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{รูปแบบในการทดลอง}
\indent\indent
ก่อนที่จะทำการทดลองนั้นต้องทำการเตรียม python scripts ที่ใช้ในการสร้าง topology จำลองบน mininet
ในการจะทำการทดลองนั้นจำเป็นต้องมี python script ที่ใช้ในการสร้าง 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}
......@@ -59,42 +67,162 @@
\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 สำหรับตรวจจับแพ็กเกจ
โดยจะมีขั้นตอนดังนี้
\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-eth1 (ที่เชื่อมกับ h2) และ s11-eth2 (ที่เชื่อมกับ h12) ปริมาณ 1,000,000 แพ็กเกจ
\item หน้าต่างที่ 2 ให้ h2 โจมตี h12 ด้วยคำสั่ง \$ mininet> h2 hping3 h12 -S --flood -V
\item เมื่อทำการจับแพ็กเกจครบ 1,000,000 แพ็กเกจแล้ว ทำการเก็บข้อมูลวิเคราะห์จาก wireshark จากนั้นให้ทำการหยุดรันในทุกๆ หน้าต่าง หากจะทำการทดลองรอบถัดไปต้องรันขั้นตอนใหม่ตั้งแต่ขั้นตอนที่ 1.
\end{enumerate}
ในการทดลองครั้งนี้จะมี 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}
\pagebreak
โดยรูปภาพที่ \ref{img:topo_cs} คือ Topology แบบมี 1 \gls{controller} โดยจะทำการกำหนดให้\gls{controller}เป็นแบบ remote
และรูปภาพที่ \ref{img:topo_cm} คือ Topology แบบมีหลาย\gls{controller} โดยจะทำการกำหนดให้\gls{controller}เป็นแบบ remote ทั้งหมด และกำหนด port เป็น 6633 6634 และ 6635
นอกจากนั้น เมื่อสร้าง script python ขึ้นมาแล้ว หรือดาวน์โหลดไฟล์จากลิงก์ที่ให้ไว้ จะทำการตั้งชื่อไฟล์เป็นดังนี้ Topology ที่มี 1 \gls{controller}
ดังรูปภาพที่ \ref{img:topo_cs} จะทำการตั้งชื่อเป็น single-topo.py และ Topology ที่มีหลาย\gls{controller} ดังรูปภาพที่ \ref{img:topo_cm} จะทำการตั้งชื่อเป็น multi-topo.py
ในการทดลองครั้งนี้ผู้ทำการทดลองได้ออกแบบการทดลองให้มีความเข้มงวดและรัดกุมมากที่สุด เพื่อให้ผลลัพธ์ที่ได้มีความคลาดเคลื่อนน้อยที่สุด
โดยผู้ทำการทดลองจะออกแบบการทดลองโดยให้มี 2 รูปแบบ 4 เงื่อนไข ดังนี้
เงื่อนไขที่ 1. (A1) group table แบบ 1 \gls{controller}\\
โดยจะทำการรัน ryu-manager ด้วย script ไฟล์ที่ชื่อ ex7\_group\_tables.py
และทำการรันไฟล์ชื่อ single-topo.py ด้วย python เพื่อจำลอง Topology แบบ 1 \gls{controller}
เงื่อนไขที่ 2. (A2) group table แบบหลาย\gls{controller} \\
โดยจะทำการรัน ryu-manager ด้วย script ไฟล์ที่ชื่อ ex7\_group\_tables.py
และทำการรันไฟล์ชื่อ multi-topo.py ด้วย python เพื่อจำลอง Topology แบบหลาย\gls{controller}
เงื่อนไขที่ 3. (A3) proxy arp แบบ 1 \gls{controller}\\
โดยจะทำการรัน ryu-manager ด้วย script ไฟล์ที่ชื่อ ex8\_arp\_proxy.py
และทำการรันไฟล์ชื่อ single-topo.py ด้วย python เพื่อจำลอง Topology แบบ 1 \gls{controller}
เงื่อนไขที่ 4. (A4) proxy arp แบบหลาย\gls{controller} \\
โดยจะทำการรัน ryu-manager ด้วย script ไฟล์ที่ชื่อ ex8\_arp\_proxy.py
และทำการรันไฟล์ชื่อ multi-topo.py ด้วย python เพื่อจำลอง Topology แบบหลาย\gls{controller}
รูปแบบที่ 1. คือ ทำการทดสอบโดยจับแพ็กเก็ตทีละจำนวน 100,000 250,000 500,000 750,000 และ 1,000,000 แพ็กเก็ต
จากนั้นนำมาวิเคราะห์เปรียบเทียบหาประสิทธิภาพด้านเวลาและการตรวจจับการโจมตี
รูปแบบที่ 2. คือ ทำการทดสอบโดยจำแพ็กเก็ตจำนวน 1,000,000 และ 2,000,000 แพ็กเก็ต
จากนั้นนำมาวิเคราะห์เปรียบเทียบหาประสิทธิภาพด้านเวลาและการตรวจจับการโจมตี
\\\\
สาเหตุที่มีการทดลองสองรูปแบบนั้นก็เพื่อให้สามารถตรวจสอบได้ว่าผลลัพธ์ที่ได้จากการทดสอบมีความถูกต้องน่าเชื่อถือ
เป็นต้นว่าหากผลการทดสองจากทั้งสองรูปแบบสอดคล้องกัน ก็สามารถเชื่อได้ว่าผลการทดลองนั้นถูกต้อง นอกจากนั้นผู้ทำการทดลองยังได้กำหนดให้ลำดับวิธีของทั้ง 2 รูปแบบการทดลองมีความต่างกันในบางขั้นตอน เพื่อเพิ่มความเชื่อมั่นและความถูกต้องมากขั้นไปอีก
\\\\
\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 @@
]{THSarabunNew.ttf}
%--*********************--%
%--config--%
\def\notebook{คอมพิวเตอร์วางตัก}
\usepackage{hyperref}
\hypersetup{
pdftitle={การทดลองหาประสิทธิภาพด้านเวลาและการป้องกันการโจมตีของ RYU SDN Framework โดยใช้ Group table และ Proxy arp ในรูปแบบ Single Controller และ Multi Controllers},
......@@ -43,7 +44,9 @@
\usepackage{glossaries}
\newacronym{sdn}{ระบบเครือข่ายที่กําหนดโดยซอฟต์แวร์}{ Software-defined networking }
\newacronym{ryu}{RYU}{ RYU SDN framework }
\newacronym{server}{เครื่องแม่ข่าย}{ Server }
\newacronym{software}{ซอฟต์แวร์}{ Software }
\newacronym{controller}{ตัวควบคุม}{ Controllers }
\newacronym{network-system}{ระบบเครือข่าย}{ Network system }
\glsdisablehyper
\usepackage{titlesec}
......@@ -81,8 +84,9 @@
%--***************--%
\tableofcontents
\clearpage
% \include{chapter1}
\input{chapter1.tex}
\input{chapter2.tex}
% \include{chapter2}
\include{chapter1}
\include{chapter2}
% \input{chapter1.tex}
% \input{chapter2.tex}
\end{document}
\ No newline at end of file
\contentsline {section}{\numberline {1}ระเบียบวิธี}{2}{section.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.3}รูปแบบในการทดลอง}{3}{subsection.1.3}%
\contentsline {section}{\numberline {2}ผลลัพธ์และการอภิปราย (Results and discussion)}{4}{section.2}%
\contentsline {subsection}{\numberline {2.1}ผลลัพธ์ประสิทธิภาพด้านเวลา}{4}{subsection.2.1}%
\contentsline {subsection}{\numberline {2.2}ผลลัพธ์ประสิทธิภาพด้านการตรวจจับการโจมตี}{5}{subsection.2.2}%
\contentsline {subsection}{\numberline {2.3}สรุปผลการทดลอง}{5}{subsection.2.3}%
\contentsline {subsection}{\numberline {2.4}ข้อเสนอแนะ}{6}{subsection.2.4}%
\contentsline {subsection}{\numberline {1.3}รูปแบบในการทดลอง}{2}{subsection.1.3}%
\contentsline {subsection}{\numberline {1.4}ขั้นตอนลำดับวิธีทดลอง}{4}{subsection.1.4}%
\contentsline {section}{\numberline {2}ผลลัพธ์และการอภิปราย (Results and discussion)}{7}{section.2}%
\contentsline {subsection}{\numberline {2.1}ผลลัพธ์ประสิทธิภาพด้านเวลา}{7}{subsection.2.1}%
\contentsline {subsection}{\numberline {2.2}ผลลัพธ์ประสิทธิภาพด้านการตรวจจับการโจมตี}{7}{subsection.2.2}%
\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