5
BAB II
LANDASAN TEORI
Pada saat ini, kebutuhan manusia akan data sudah semakin berkembang. Hal ini
dibuktikan dengan semakin bertambahnya volume data setiap tahunnya [1]. Disamping itu,
kebutuhan manusia akan efisiensi waktu dan ketepatan data juga memjadi salah satu faktor
tumbuhnya Big Data pada saat ini. Namun dibalik itu, Big Data juga membutuhkan
perpindahan data yang sangat sering. Sehingga membutuhkan bandwidth yang besar
pengaturan trafik data yang tepat agar tidak terjadi congestion pada saat proses pengiriman atau
perpindahan data. Dalam penelitian sebelumnya [4] dikembangkan Doopnet untuk Performasi
Analisa Hadoop Cluster yang menggunakan Docker. Dalam analisa tersebut, Hadoop Cluster
dijalankan dan di konfigurasikan serupa dengan dijalankan dalam cluster terpisah di physical
server. Pada penelitian ini, akan dilakukan pengujian performasi trafik Big Data dengan
menggunakan Hadoop Clustering didalam Docker dengan menggunakan Software Defined
Network sebagai manajemen queue transfer yang memungkinkan mengatur arus data dari
master dan slave disetiap nodes pada Hadoop Cluster.
2.1 Big Data
Big Data merupakan suatu istilah untuk menggambarkan volume data dalam bentuk yang
besar. Data yang dimaksud disini adalah data yang terstuktur ataupun tidak terstruktur. Aplikasi
Big Data sudah banyak digunakan oleh industri yang bergerak dalam teknologi dan informasi.
Namun juga tak jarang industri non teknologi juga menggunakan Big Data untuk menunjang
proses kerja mereka. Didalam Big Data sendiri, poin utama yang ada bukanlah besaran volume
dari data itu sendiri, melainkan bagaimana dilakukannya pengorganisasian data tersebut.[5]
Konsep Big Data sendiri mulai pada tahun 2000-an ketika seorang analis industri Doug Laney
yang menyampaikan beberapa aspek penting dalam Big Data diantaranya:
a. Variety
Data yang dihasilkan merupakan data yang tidak berada di dalam single category
karena tidak termasuk ke dalam data tradisional tetapi jiga merupakan semi struktur
data dari berbagai sumber seperti halaman web, file log web, situs media sosial, email,
dan masih banyak yang lainnya. Semua data ini sangat berbeda terdiri dari data mentah,
semi terstruktur dan data terstruktur bahkan yang sulit untuk ditangani oleh sistem
analitik tradisional yang sudah ada. [6]
6
b. Velocity
Kecepatan data yang besar adalah sebuah konsep yang berkaitan dengan kecepatan data
yang berasal dari berbagai sumber. Karakteristik ini adalah tidak terbatas untuk
kecepatan data masuk tetapi juga kecepatan di mana data mengalir. Misalnya data dari
perangkat sensor akan terus bergerak ke toko database dan jumlah ini tidak akan cukup
kecil. Dengan demikian kami sistem tradisional tidak cukup mampu melakukan analisis
pada data yang terus-menerus bergerak. [6]
c. Volume
Sekumpulan tipe data yang di-generate dari banyak sumber data dan akan mengalami
perkembangan dalam kuantitas secara terus menerus. Data di-generate oleh mesin
(machines), jaringan (networks) dan manusia (human) yang saling berinteraksi satu
sama lain yang jumlahnya terus bertambah. Total data yang ada saat ini telah mencapai
ukuran zettabytes dan media jejaring sosial adalah penyumbang terbesar dengan
memproduksi dalam jumlah terabytes setiap harinya [6]. Hal yang sangat menyulitkan
tentunya jika ditangani dengan sistem tradisional. [7]
d. Complexity
Data berasal dari berbagai sumber sehingga cukup sulit untuk menghubungkan,
mencocokan, membersihkan dan mengubah data di seluruh sistem. Namun, Big Data
sangat dibutuhkan untuk memiliki korelasi antar data, hierarki dan beberapa keterkaitan
data lainnya atau data yang acak. [5]
e. Variability
Selain kecepatan dalam pengumpulan data yang meningkat dan variasi data yang
semakin beraneka ragam, terkadang aliran arus data di dalam perpindahan data juga
tidak konsisten dalam periode tertentu. Salah satu contohnya adalah hal yang sedang
tren di media sosial. Periodenya bisa harian, musiman, dipicu peristiwa dadakan dan
lain-lain. Beban puncak data dapat menantang untuk analis Big Data, bahkan dengan
data yang tidak terstruktur. [5]
Pada saat ini, masyarakat mulai menyadari bagaimana pentingnya peran Big Data.
Tidak hanya tentang jumlah data yang organisasi miliki, namun hal yang penting adalah
bagaimana mengolah data.
7
Didalam Big Data data biasanya terdistribusi. Karena data yang terdistribusi maka baik
pemrograman dan model statistik yang digunakan juga terdistribusi. Dalam model
pemrograman terdistribusi Big Data biasanya menggunakan Map Reduce yang merupakan
salah satu model pemrograman paralel untuk data yag terdistribusi. Dengan adanya
pemrograman yang terdistribusi membuat statistik arus data pada Big Data. Satu asumsi dasar
semua model statistik/data mining/machine learning/data science konvensional adalah datanya
centralized (terpusat). Centralized data tidak lagi dipandang sebagai solusi efisien ketika
datanya besar (baca disini). Pemodelan statistik untuk data yang terdistribusi berbeda dengan
ketika datanya berada di satu tempat. Jika statistik konvensional hanya fokus pada optimal
parameter untuk generalisasi ke populasi yang terbaik. Pada sistem dengan data terdistribusi,
statistiknya juga dioptimalkan untuk komunikasi antar node yang minimal dan upaya untuk
mencapai optimal global dari berbagai solusi parameter optimal local di node-node yang ada.
[8]
Apache Hadoop
Apache Hadoop adalah software bebas dan open source, yang ditulis dalam kerangka
bahasa pemrograman Java untuk dijalankan secara terdistribusi dan skalabel. Apache Hadoop
dibangun berdasarkan algoritma popular MapReduce dari Google Inc, berikut sistem berkas
yang disarankan Google (GFS = Google File System), yang memungkinkan menjalankan
tugas komputasi dalam mengolah data jumlah besar (sekitar petabyte keatas) di komputer
cluster. Hadoop awalnya diprakarsai oleh Lucene Doug Cutting, yang sejak tanggal 23
Januari 2008 telah menjadi proyek tingkat atas di lingkungan Apache Software Foundation
dan dikembangkan secara terbuka oleh komunitas kontributor secara global. Pengguna
Hadoop adalah, termasuk Facebook, a9.com, AOL, Baidu, IBM, ImageShack, dan Yahoo.
Hadoop tersedia bebas menyandang lisensi Apache License 2.0.
Kerangka kerja Hadoop terdiri dari modul-modul termasuk:
a. Hadoop Common – berisi library dan utilitas yang diperlukan oleh modul Hadoop
lainnya.
b. Hadoop Distributed File System (HDFS) – sebuah sistem berkas terdistribusi dengan
high-availability yang dapat menyimpan data pada mesin komoditas, digunakan untuk
menyediakan bandwidth sangat tinggi yang di agregasi ke semua cluster (node).
Berkas dibagi menjadi blok data dengan panjang yang baku dan didistribusikan pada
node yang saling berpartisipasi. HDFS bekerja menggunakan pendekatan master-
slave, dimana sebuah node master, yang disebut NameNode, memroses permintaan
data yang masuk, mengorganisir berkas di dalam node slave dan menyimpan metadata
8
yang dihasilkannya. HDFS mendukung sistem berkas dengan beberapa ratus juta file.
Baik panjang blok berkas maupun tingkat redundansi, keduanya dapat dikonfigurasi.
c. Hadoop YARN – sebuah platform manajemen sumber daya yang bertanggung jawab
atas pengelolaan sumber daya komputasi dalam sebuah cluster dan digunakan untuk
penjadwalan aplikasi pengguna.
d. Hadoop MapReduce – model pemrograman untuk pengolahan data skala besar.
e. HBase – adalah database sederhana, dan skalabel untuk mengelola data dengan jumlah
yang sangat besar dalam cluster Hadoop. Database HBase didasarkan pada
implementasi bebas dari BigTable besutan Google. Struktur data ini cocok untuk data
yang jarang berubah, tapi sangat sering ditambahkan. Menggunakan HBase dapat
dikelola miliaran baris data secara efisien.
f. Hive – melengkapi Hadoop Hive dengan fungsi Data-Warehouse, yaitu bahasa query
HiveQL dan indeks. HiveQL adalah bahasa query berbasis SQL dan memungkinkan
pengembang untuk menggunakan sintaks seperti SQL. Pada musim panas tahun 2008
Facebook, pengembang asli dari Hive, menyerahkan Hive nebjadi proyek komunitas
open source. Database Hadoop yang digunakan oleh Facebook berkisar diatas 100
petabyte merupakan terbesar (Agustus 2012) di dunia.
g. Pig – dapat digunakan sebagai bahasa pemrograman high-level (Pig Latin) untuk
menulis program pada Hadoop MapReduce. [9]
2.2 Virtualisasi
Virtualisasi adalah istilah yang dapat diartikan sebagai pembuatan suatu bentuk atau
versi virtual dari sesuatu yang bersifat fisik. Definisi lainnya adalah membuat versi maya
(virtual) dari suatu sumber daya (resource) sehingga pada satu sumber daya fisik dapat
dijalankan atau disimpan beberapa sumber daya maya sekaligus [10]. Sumber daya yang dapat
di virtualisasi antara lain adalah perangkat keras komputer, media penyimpanan data (storage),
sistem operasi (OS), dan layanan jaringan (Networking). Virtualisasi dimungkinkan karena
perkembangan teknologi perangkat keras yang sedemikian pesat sehingga kemampuan sebuah
sumber daya fisik berada jauh di atas kebutuhan penggunasnya sehingga sebagian besar waktu
atau kapasitasnya tidak terpakai (idle) [7].
Melihat catatan sejarah istilah virtualisasi mulai dikembangkan sejak pertengahan abad
ke - 20 di mana hanya digunakan untuk kalangan industri saja [11]. Virtualisasi menawarkan
banyak keuntungan dibanding infrastruktur tradisional dalam berbagai aplikasi. Selain dari
penghematan biaya dan mudah pemeliharaannya.
9
Banyak produk virtualisasi memungkinkan guest tertentu untuk diduplikasi dengan
mudah di mana bisa berguna untuk percobaan bagaimana perangkat lunak diperbaharui atau
memodifikasi sebuah sistem yang ditentukan tanpa mempengaruhi sistem produksi. Migrasi
membantu menurunkan atau mengurangi downtime karena mesin virtual bisa di pindahkan
secara sementara atau permanen ke host transparan yang berbeda ke sistem operasi guest.
Usaha pemulihan dari bencana (Disaster Recovery) bisa menjadi benar-benar sederhana
melalui penggunaan virtualisasi. Dalam sebuah kejadian bencana alam, backup mesin virtual
mesin bisa dengan mudah dipindahkan ke lokasi baru pada perangkat keras yang berbeda.
Walaupun dengan semua keuntungan masih terdapat beberapa sisi kekurangan pada
virtualisasi. Contohnya, mesin virtual harus membagi sumber daya dengan mesin virtual yang
lain dalam sistem fisikal yang sama. Aplikasi dengan penyimpanan atau utilitas CPU tinggi
tidak selalu bekerja dengan baik dalam sebuah sistem di mana mesin virtual itu harus membagi
sumber daya. Permasalahan ini bisa dihindari dengan hanya menjalankan satu dari semua
aplikasi dengan utilitas tinggi per host fisikal.
Tipe Virtualisasi
Ada beberapa tipe virtualisasi menurut Jones, dkk (2008), yaitu Virtualisasi
Perangkat Keras dan Virtualisasi Perangkat Lunak [12]. Masing-masing virtualisasi
memiliki keuntungan dan kerugian sendiri-sendiri, yang terkait dengan masalah
kompatibilitas sistem operasi dan kinerja mesin guest yang dijalankan di atas host OS.
1. Virtualisasi Perangkat Keras
Virtualisasi perangkat keras yaitu sebuah upaya untuk menciptakan mesin virtual
yang bekerja layaknya sebuah komputer lengkap dengan memiliki sistem operasi
sendiri. Perangkat lunak yang dieksekusi pada mesin virtual tersebut dipisahkan dari
sumber daya fisik. Dalam virtualisasi perangkat keras, mesin host adalah sebuah istilah
yang digunakan untuk sistem operasi yang terinstal di komputer secara fisik, sedangkan
mesin guest adalah sistem operasi yang terinstal di atas mesin host. Istilah host dan
guest dikenalkan untuk memudahkan dalam membedakan antara sistem operasi fisik
yang terinstal di komputer dengan sistem operasi yang diinstal di atasnya atau bisa
disebut virtualnya.
Virtualisasi perangkat keras memiliki dua pendekatan yang paling umum yaitu
virtualisasi penuh dan para-virtualisasi. Dalam virtualisasi penuh sebuah lapisan berada
di antara (virtual) dan mesin hots, lapisan ini disebut hypervisor. Lapisan ini
menggadakan sumber daya sistem bagi kepentingan masing-masing mesin guest. Para-
virtualisasi berbeda dalam hal hyhpervisor bekerja dengan cara kooperatif.
10
Setiap sistem operasi guest menyadari bahwa mereka berjalan dalam lingkungan virtual
dan bekerja sama dengan hypervisor untuk membuat virtualisasi mesin host.
2. Virtualisasi Perangkat Lunak
Virtualisasi perangkat lunak memungkinkan satu komputer host untuk membuat
dan menjalankan satu atau lebih lingkungan virtual. Virtualisasi perangkat lunak
banyak digunakan untuk membuat simulasi sebuah sistem komputer lengkap dengan
tujuan untuk memungkinkan sistem operasi guest berjalan, sebagai contoh mengizinkan
Linux untuk berjalan sebagai guest di atas komputer yang secara native menjalankan
sistem operasi Windows. Jenis virtualisasi perangkat lunak di antaranya adalah
Operating system-level virtualization [11].
Operating System-level Virtualization
Operating System-level virtualization adalah sebuah metode untuk membuat
virtualisasi server di atas sistem operasi itu sendiri. Metode ini mendukung sebuah
sistem operasi dan mengisolasi server satu sama lain seperti pada Gambar 2.1 [12].
Gambar 2.1 Operating system-level Virtualization Mengisolasi Server-server
Operating System-level virtualization membagi sumber daya mesin fisikal
pada level sistem operasi. Ini artinya semua mesin virtual OS-level membagi satu
kernel pada sebuah sistem operasi. Gambar 2.2 di bawah membandingkan lapisan
virtualisasi Operating System-level virtualization dengan virtualisasi perangkat
keras (hardware-level virtualization) [11]. Metode ini juga sering disebut sebagai
container, virtualization engines (VE), atau virtual private server (VPS) terlihat dan
terasa seperti server asli dari sudut pandang pengguna. Contoh implementasi dari
Operating System-level virtualization ini adalah LXC dan Docker.
Private
Server
Sistem Operasi
Perangkat Keras
Private
Server
Private
Server
11
Gambar 2.2 Perbandingan Operating System-level Virtualization dengan Virtualization
Hardware [1]
2.3 Docker
Docker merupakan project open source yang meyediakan platform teknologi virtualisasi
berbasis container. Project ini ditujukan untuk para developer untuk membangun, mengikat
dan menjalankan aplikasi dimanapun dalam satu container yang ringan. Docker bisa dibilang
mirip dengan Virtual Machine pada umumnya, seperti VMWare, Virtual Box namun yang
menjadi pembeda nya adalah Docker lebih ringan karena tidak membawa keseluruhan sistem
operasi, melainkan hanya berbagi sistem dengan host utamanya.
Didalam Docker, software disatukan dalam filesystem lengkap berisi semua yang
diperlukan untuk menjalankannya seperti: source code, module runtime, perangkat sistem,
sistem pustaka software apa pun yang dapat diinstal pada server. Hal ini menjamin bahwa
perangkat lunak akan selalu berjalan sama, tidak tergantung pada lingkungannya. Contoh nya
adalah apabila Docker dijalankan didalam Sistem Operasi Linux Ubuntu, sistem yang sama
juga akan berjalan sama apabila Docker dijalankan didalam Sistem Operasi Linux CentOS.
Pada perkembangannya saat ini, Docker juga bisa dijalankan di sistem operasi Windows dan
juga MacOS. [13]
Arsitektur dan Komponen Docker
Arsitektur Docker menggunakan mekanisme client dan server, Docker client
mengirimkan permintaan ke server untuk membangun, mendistribusikan dan
menjalankan container Docker. Docker Client dan Docker Server dapat berjalan pada
sistem yang sama yang berkomunikasi via socker menggunakan Restful API [13].
Dalam Docker, ada beberapa komponen yang saling membutuhkan satu sama lain
untuk dapat menjalankan virtualisasi ini, diantaranya:
Guest Processes Guest Processes Guest Processes Guest Processes
Guest OS Guest OS Virtualization Layer
Virtualization Layer OS
Hardware Operating System-Level
Virtualization
Hardware Virtualization Hardware
12
a. Docker Image
Docker Image merupakan sebuah template yang bersifat read-only. Contohnya sebuah
image yang berisi sistem operasi Ubuntu dengan Apache dan aplikasi web yang telah
kita instalkan. Image ini digunakan untuk menjalankan container. Docker
menyediakan cara yang sederhana untuk membangun image baru atau merubah image
yang sudah ada. Jika melihat Docker Index akan menemukan banyak image yang
sudah banyak dibuat oleh pengguna lain yang bisa kita gunakan sebagai base image.
Misalnya kita akan membangun sebuah aplikasi PHP dengan apache web server dan
mysql, maka hanya perlu mendownload base image berupa LAMP server lalu tinggal
menambahkan aplikasi PHP yang sudah dibuat.
b. Docker Container
Docker Container merupakan sebuah image bersifat read-write yang berjalan di atas
image. Docker menggunakan union-file sistem sebagai back-end file sistem
containernya, dimana setiap perubahan yang disimpan pada container akan
menyebabkan terbentuknya layer baru di atas base image. Jadi container merupakan
layer dimana kita bisa melakukan instalasi aplikasi di dalamnya. Masing-masing
container yang berjalan terisolasi dan platform aplikasi yang aman.
c. Docker Registry
Docker registry adalah tempat penyimpanan (public atau private) dimana dapat
dilakukan proses upload dan download image. Registry public Docker disebut dengan
Docker Hub.
d. Docker File
Dockerfile merupakan sebuah skrip otomasi (builder) yang membangun sebuah
image. Sebuah Dockerfile merupakan dokumen text atau skrip yang berisi semua
perintah yang biasanya kita lakukan manual untuk membangun sebuah image. Dengan
menggunakan perintah Docker build dari terminal, kita akan melihat Docker
membangun image step by step mengeksekusi perintah berurutan.
e. Repository
Docker menggunakan repository ini seperti dengan yang digunakan pada Github dan
source control system lainnya, namun memiliki jenis yang berbeda. Didalam
repository terdapat ID untuk setiap image yang disimpan dalam registry. Ketika
menjalankan perintah Docker commit maka image itu akan diberi nama dengan format
username/nama_image. Ketika melakukan proses upload image tersebut dengan
perintah Docker push, index akan melihat nama image dan memastikan tidak ada
13
nama repository yang sama, jika tidak maka index akan memeriksa apakah
pengupload memliki akses terhadap repository tersebut, maka selanjutnya pengupload
diijinkan untuk mengupload image versi baru ke repository tersebut.
f. Docker Index
Docker index dengan Docker hub registry merupakan hal yang terpisah. Index
mengatur user account, permission, search, tagging dan hal lain yang tersimpan pada
web interface public. Ketika menjalankan perintah Docker run, perintah ini digunakan
untuk mencari pada index bukan registry. Atau ketika dijalankan perintah Docker pull
ataupun Docker push, index akan menentukan apakah diijinkan untuk mengakses atau
memodifikasi image, dan selanjutnya registry adalah bagian yang akan menyimpan
image tersebut setelah kita mendapatkan permisi dari index. [14]
Perbedaan Docker dengan Virtual Machine
Didalam bidang virtualisasi terdapat istilah VM atau Virtual Machine dan
Container. Secara prinsip, keduanya memiliki kesamaan yaitu menggunakan skema
virtualisasi. Namun tidak sepenuhnya sama, ada beberapa hal yang membedakan
diantaranya:
1. Virtual Machine menggunakan keseluruhan resource hardware pada host. Sehingga
host langsung menjalankan double sistem operasi sekaligus. Sedangkan container
sendiri hanya bersifat seperti aplikasi dan hanya menggunakan sedikit resource dari
host. Bisa dikatakan Docker seperti menjalankan aplikasi biasa.
2. Virtual Machine menggunakan kernel tersendiri sehingga menjadi beban bagi host
dan akan sangat memberatkan. Sedangkan container membagi kernelnya ke container
yang ada saja sehingga lebih efisien.
3. Alokasi spesifikasi pada Virtual Machine jika sudah di set untuk VM A maka VM B
tidak bisa menggunakan spesifikasi yang sama. Beda halnya dengan Docker, jika ada
container A sedang sibuk melayani trafik dan container B idle, maka container A bisa
menggunakan resources milik container B. Jadi, Docker melakukan efisiensi
resources dengan sebaik-baiknya sistem.
14
Keuntungan Penggunaan Virtualisasi Docker
Ada beberapa keuntungan yang dimiliki pada penggunaan Docker dibanding
dengan Virtual Machine yang lainnya. Diantaranya adalah :
1. Optimalisasi Resource
Mendukung dari penjelasan diatas, virtualisasi Docker sangat menggungulkan
efisiensi resource hardware. Penggunaan resource hardware pada Docker sangat
efisiensi dan tidak memakan banyak resource hardware. Sehingga pada saat
menjalankan banyak container pada sebuah host Docker, host lain masih mampu
menanganinya.
2. Konfigurasi yang simple
Pada virtualisasi Docker, ketika membutuhkan sebuah VM diatas Docker, hanya
dengan menjalankan satu baris perintah untuk menciptakan sebuah container yang
dapat menjalankan images, images tersebut berisi sistem operasi yang dapat langsung
digunakan. Images tersebut pun dapat didownload dari repositori Docker.
3. File System Protection
Docker menggunakan sistem proteksi file read only mount point dan copy on write
dengan tingkatan keamanan dari yang rendah hingga keamanan yang paling tinggi.
Dengan pemasangan sistem file sebagai read only, kernel linux dapat dipertahankan
dan pengguna pun aman tanpa ada resiko kegagalan File System.
4. Multi Cloud Platform
Salah satu manfaat terbesar dari Docker yaitu portabilikitas. Dalam beberapa tahun
terakhir, semua penyedia layanan cloud seperti Amazon Web Service, Google
Compute Platform, Digital Ocean, Linode dan lain lain mulai mengadopsi Docker
sebagai platform virtualisasi. [13]
2.4 Software Defined Network
Software Defined Network atau SDN merupakan paradigma atau pandangan terbaru
dalam bidang jaringan. Software Defined Network memiliki pandangan baru tentang arsitektur
jaringan yang dinamis, manageable, hemat biaya dan mudah diadaptasi. Pada awalnya, konsep
Software Defined Network ini dikembangkan hanya berjarak berdekatan setelah Java dirilis
oleh Sun Microsystem pada tahun 1995. Namun sayangnya pada saat itu teknologi yang baru
dikembangkan ini masih memiliki pengembangan yang belum cukup.
15
Akhirnya pengembangan Software Defined Network dimulai lagi pada tahun 2008 oleh UC
Berkeley dan Stanford University. Kemudian teknologi ini mulai dipromosikan oleh Open
Networking Foundation dan mulai memperkenalkan teknologi SDN dan OpenFlow. [5]
Pada jaringan konvensional yang sebelumnya, sistem pembuat keputusan kemana arus
data dikirimkan dan menyatu dengan perangkat kerasnya. Sedangkan pada konsep baru
Software Defined Network terdapat karakteristik baru yang berbeda dengan jaringan
konvensional sebelumnya. Yaitu terjadi pemisahan antara control plane dan data plane. Hal
ini juga ideal untuk bandwidth yang besar, dinamis dari aplikasi saat ini[5]. Jaringan komputer
dalam skala besar dengan sejumlah besar perangkat jaringan seperti Switch, Router, Firewall
dan lainnya dengan protokol yang kompleks yang dilakukan dan tertanam dalam mereka.
Network Engginer hanya bertanggung jawab dalam hal konfigurasi aturan yang telah
ditentukan dalam berbagai situasi skenario aplikasi yang telah ditentukan. Mereka mengubah
aturan tingkat tinggi menjadi perintah konfigurasi low level. Hal ini dapat membuat pekerjaan
yang kompleks yang sering dilakukan dengan menggunakan akses dengan tools yang dapat
dengan mudah dilakukan [6].
Ada beberapa aspek penting yang ada di dalam Software Defined Network yang menjadi
keunggulan dari paradigma baru dalam hal jaringan ini. Pertama, sesuai dengan konsep dasar
dari Software Defined Network sendiri yaitu melakukan pemisahan antara control plane dan
data plane. Control Plane dan Data Plane sendiri adalah Kedua, dengan adanya standar
interface (vendor-agnosic) yang digunakan untuk memprogram perangkat jaringan. Dengan
menggunakan standart interface ini sendiri, memudahkan administrator jaringan dalam hal
konfigurasi terpusat di dalam satu controller. Ketiga, Control Plane yang terpusat. Dengan
adanya pusat control atau control plane yang terpusat, dapat dibentuk logical map dari jaringan
yang kemudian akan direpesentasikan dengan menggunakan API (Application Programming
Interface). Dan yang terakhir, dapat melakukan virtualisasi menggunakan beberapa sistem
operasi jaringan. Dengan ini dapat juga melakukan kontrol beberapa bagian dari perangkat
jaringan yang sudah terhubung dalam jaringan Software Defined Network [14]. Didalam
konsep Software Defined Network juga tersedia open interface. Open Interface yang dimaksud
disini adalah interface yang memungkinkan software/aplikasi mengendalikan konektivitas yg
disediakan oleh sejumlah sumber-daya jaringan, mengendalikan aliran trafik yg melewatinya
serta melakukan inspeksi terhadap atau memodifikasi trafik tersebut [14]. Adapun arsitektur
Software Defined Network adalah sebagai berikut:
16
Gambar 2.3 Arsitekur Software Defined Network [14]
Terdapat 3 komponen utama di dalam Software Defined Network, diantaranya adalah:
a. Application Plane (aplikasi) : Komponen ini merupakan komponen pertama dan paling
atas didalam arsitektur SDN. Aplikasi didalam SDN maruk kedalam komponen
pertama ini. Beberapa aplikasi dapat saling berjalan dan berkolaborasi satu sama lain
dengan controller menggunakan API. API ini juga sering disebut Northbound Interface
atau NBI.
b. Control Plane (controller) : Fungsi controller pada SDN sendiri adalah sebagai
penerjemah kebutuhan yang dibutuhkan oleh Application Plane dengan memberikan
perintah untuk SDN datapath. Control Plane sendiri akan memberikan informasi yang
sesuai dan dibutuhkan oleh Application Plane.
c. Data Plane : Terdiri dari elemen-elemen jaringan yang dapat mengatur SDN datapath
sesuai dengan instruksi yang diberikan oleh controller. Control plane mengirim
intruksi ke infrastructure layer melalui antarmuka yang disebut dengan Soutbound
interface. [15]
Controller
Didalam SDN terdapat controller yang nantinya akan digunakan untuk mengontrol
jaringan SDN yang akan di dalamnya. Didalam controller, mengenal dengan adanya
OpenFlow. Salah satu Ada beberapa controller yang digunakan didalam Software Defined
Network, diantaranya adalah Floodlight.
17
Floodlight [16] merupakan salah satu SDN controller yang sudah
menerapkan GUI dan user interface yang user friendly. Floodlight sendiri
merupakan controller SDN yang sudah berlisensi Apache dan juga OpenFlow
Controller yang berbasis Java. Hingga saat ini, Floodlight didukung oleh para
developer termasuk engginer dari Big Switch Network. Floodlight didesain untuk
bekerja untuk perkembangan switch, router, virtual switch dan access point yang
mendukung standar OpenFlow. Fitur yang dimiliki oleh Floodlight diantaranya :
- Mudah digunakan, karena kemudahan set up dengan dependansi yang minimal.
- Bisa menangani gabungan dari beberapa OpenFlow dan jaringan yang bukan
OpenFlow. Ini dapat digunakan untuk mengatur beberapa baian dari switch
OpenFlow.
- Floodlight dirancang untuk performansi yang tinggi.
- Mendukung untuk Cloud OpenStack orchestation platform.
2.4.1.1 OpenFlow
Protokol OpenFlow [16] merupakan elemen yang penting didalam arsitektur SDN. Protokol
ini digunakan untuk komunikasi antara controller dengan switch OpenFlow atau bisa disebut
juga sounthbound interface. Flow table dari switch OpenFlow dapat diubah dengan
menggunakan protokol ini. Ketika switch OpenFlow menerima paket, switch akan mencoba
mencocokan nilai header dari paket dengan aturan yang telah ada pada flow table. Apabila
paket tidak ditemukan pada flow table maka switch OpenFlow, akan mengirimkan ke
controller. Controller akan mengambil keputusan bagaimana menangani paket tersebut. Paket
dapat di-drop atau dapat juga dimasukan kedalam flow table switch, sehingga berikutnya switch
dapat
mengetahui bagaimana jika mendapatkan paket yang serupa. Selain fitur tersebut switch
OpenFlow memiliki fitur pengaturan QoS. Pengaturan QoS pada switch OpenFlow dilakukan
dengan mekanisme queuing. Tiap queue dapat digunakan untuk mengkategorikan jaringan
sesuai dengan karakteristik jaringan yang dibutuhkan. Selain itu juga tiap queue yang dibuat
dapat diatur nilai maksimum dan juga nilai minimum transfer rate. [7]
Top Related