Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
S
sdn-ryu_testing-report
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Nawasan Wisitsingkhon
sdn-ryu_testing-report
Commits
b8a2fa5e
Commit
b8a2fa5e
authored
Feb 16, 2024
by
Nawasan Wisitsingkhon
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
text chap1 finish (await img)
parent
336901ed
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
209 additions
and
75 deletions
+209
-75
chapter1.tex
chapter1.tex
+193
-65
main.tex
main.tex
+9
-4
main.toc
main.toc
+7
-6
No files found.
chapter1.tex
View file @
b8a2fa5e
...
...
@@ -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 Controller
s
\\
\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 ใหม่เท่านั้น
\\\\
main.tex
View file @
b8a2fa5e
...
...
@@ -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
main.toc
View file @
b8a2fa5e
\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
}
%
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment