Saya kali ini akan membagi tutorial bagaimana cara untuk forwarding pada sebuah switch yang bisa dijadikan sebagai implementasi Software Define Network, saya menggunakan emulator yang dapat di install pada ubuntu 14.04 atau sistem operasi linux yang lain, berikut tutorial dan sourcecode yang sudah saya pelajari selama kuliah.
Forrwarding
: Meneruskan suatu
paket yang dikirimkan oleh host ke interface lain sesuai dengan tujuan yang
sudah ditentukan oleh pengirim paket.
Topologi
:
Gambar 1 : Topologi 3 switch 6 host
Prosedur
:
1.
Membuka software miniedit pada terminal dengan cara
$sudo ~/mininet/examples/miniedit.py
2.
Membuat topologi 6 host 3 switch dan 1 kontroller
seperti pada gambar 1.
3.
Membuat file python pada folder
/pyretic/pyretic/modules dengan nama Forwarding1.py (nama file bisa
dirubah sesuai dengan keinginan) sesuai dengan source code dibawah ini.
4.
Run topologi yang sudah dibuat dengan cara klik run
pada pojok kiri bawah
5.
Export PYTHONPATH dengan cara
$export
PYTHONPATH=$HOME/pox:$HOME/mininet:$HOME/pyretic
6.
Jalankan Forwarding1.py dengan cara
·
Masuk directory pyretic
$cd
pyretic
·
Jalankan perintah
$python
pyretic.py –m p0 pyretic.modules.forwarding1
7.
Lakukan ping ke
host lain di terminal host miniedit dengan klik kanan host yang dipilih dan
klik terminal.
Source
Code Forwarding1.py :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
from pyretic.lib.corelib import *
from pyretic.lib.std import *
from pyretic.lib.query import *
ip1= IPAddr('10.0.0.1')
ip2= IPAddr('10.0.0.2')
ip3= IPAddr('10.0.0.3')
ip4= IPAddr('10.0.0.4')
ip5= IPAddr('10.0.0.5')
ip6= IPAddr('10.0.0.6')
sw1 = ((match(dstip=ip1)
>> fwd(1))+
(match(dstip=ip2) >>
fwd(2))+
(match(dstip=ip3) >>
fwd(3))+
(match(dstip=ip4) >>
fwd(3))+
(match(dstip=ip5) >>
fwd(3))+
(match(dstip=ip6) >>
fwd(3)))
sw2 = ((match(dstip=ip1) >> fwd(3))+
(match(dstip=ip2) >>
fwd(3))+
(match(dstip=ip3) >>
fwd(1))+
(match(dstip=ip4) >>
fwd(2))+
(match(dstip=ip5) >>
fwd(4))+
(match(dstip=ip6) >>
fwd(4)))
sw3 = ((match(dstip=ip1) >> fwd(3))+
(match(dstip=ip2) >>
fwd(3))+
(match(dstip=ip3) >>
fwd(3))+
(match(dstip=ip4) >>
fwd(3))+
(match(dstip=ip5) >>
fwd(1))+
(match(dstip=ip6) >>
fwd(2)))
l3forward = (if_(match(switch=1),sw1) + (if_(match(switch=2),sw2)) +
(if_(match(switch=3),sw3)))
def main():
return l3forward
|
Penjelasan
:
Pada program forwarding1.py pertama
dilakukan import library pyretic dan inisialisasi awal untuk ip address pada semua host, kemudian dilakukan
inisialisasi pada masing – masing switch, switch pertama mempunyai alur kerja
jika tujuan ke ip1 maka akan dilakukan forward pada port 1, ip2 ke port 2, ip3,
ip4, ip5 ke port 3, switch kedua jika tujuan ke ip1 dan ip2 akan di forward
pada port 3, ip3 ke port 1, ip4 ke port 2, ip5 dan ip6 ke port 4, sedangkan
switch ketiga jika tujuan ke ip1, ip2, ip3, ip4 akan diforward ke port 3 dan
jika tujuan ke ip5 dan ip6 masing-masing akan di forward ke port 1 dan 2.
Kemudian dilakukan pengkondisian jika paket yang dituju ada pada port switch 1
maka akan di teruskan ke switch 1 dan untuk paket yang menuju switch 2 maka
akan diforward ke switch 2 dan begitu pun untuk switch 3.
Screenshoot
:
Gambar 2 : Menjalankan forwarding1.py
Gambar 3 : Ping ke semua host
Oke selamat mencoba, semoga berhasil.
Tidak ada komentar:
Posting Komentar