Jaringan Software-Defined (SDN) ini adalah salah satu hal yang telah merevolusi cara kita dalam memandang dan mengelola infrastruktur jaringan ini. Dengan memisahkan kontrol jaringan dari perangkat keras, SDN memberikan fleksibilitas yang jauh lebih besar, efisiensi operasional, dan kemampuan untuk dengan cepat menyesuaikan diri dengan kebutuhan bisnis yang lebih dinamis.
Selain iru, Ubuntu ini juga dikenal sebagai salah satu distribusi Linux yang paling populer saat ini, ini sering dipilih sebagai platform untuk mengimplementasikan solusi SDN karena stabilitas, dukungan komunitas, dan kompatibilitasnya dengan berbagai alat dan perangkat lunak SDN ini.
Langkah-Langkah Implementasi SDN di Ubuntu
Instalasi Ubuntu Server
Langkah pertama adalah menginstal Ubuntu Server pada perangkat keras ataupun mesin virtual. Disarankan juga untuk menggunakan versi LTS seperti Ubuntu 20.04 LTS agar jauh lebih stabil.
# Langkah-langkah dasar untuk instalasi Ubuntu Server
# Mengunduh ISO Ubuntu Server dari situs resmi
# Membuat bootable USB dengan menggunakan alat seperti Rufus atau balenaEtcher
# Booting dari USB dan mengikuti panduan instalasi
Instalasi dan Konfigurasi OpenDaylight
OpenDaylight adalah salah satu pengontrol SDN paling populer. Berikut adalah langkah-langkah dasar untuk menginstalnya di Ubuntu:
- Unduh dan Instal OpenDaylight
# Update dan instalasi dependency
sudo apt-get update
sudo apt-get install default-jdk maven
# Unduh OpenDaylight
wget https://nexus.opendaylight.org/content/repositories/public/org/opendaylight/integration/distribution-karaf/0.6.1-Carbon/distribution-karaf-0.6.1-Carbon.tar.gz
# Ekstrak file yang diunduh
tar -xvf distribution-karaf-0.6.1-Carbon.tar.gz
# Pindah ke direktori OpenDaylight
cd distribution-karaf-0.6.1-Carbon
# Jalankan OpenDaylight
./bin/karaf
- Konfigurasi OpenDaylight
Setelah OpenDaylight berjalan, kita perlu menginstal fitur dasar yang diperlukan untuk operasional:
feature:install odl-restconf
feature:install odl-l2switch-switch
feature:install odl-mdsal-apidocs
Instalasi dan Konfigurasi Mininet
Mininet adalah emulator jaringan yang memungkinkan kita membuat jaringan SDN virtual untuk pengujian dan pengembangan.
- Instalasi Mininet
# Update dan instalasi dependency
sudo apt-get update
sudo apt-get install mininet
# Jalankan Mininet
sudo mn –topo single,3 –mac –controller remote –switch ovsk
- Konfigurasi Mininet untuk Terhubung dengan OpenDaylight
# Menjalankan Mininet dengan kontroler OpenDaylight
sudo mn –topo single,3 –mac –controller=remote,ip=<IP_ADDRESS_ODL>,port=6653 –switch ovsk
Contoh Implementasi SDN di Ubuntu
Contoh 1: Mengatur Aliran Jaringan dengan OpenDaylight dan Mininet
Berikut adalah contoh cara mengatur aliran jaringan menggunakan OpenDaylight dan Mininet:
- Membuat Topologi Jaringan dengan Mininet
# Jalankan Mininet dengan topologi sederhana
sudo mn –topo single,3 –mac –controller remote –switch ovsk
- Mengatur Aliran dengan OpenDaylight
Buka antarmuka REST OpenDaylight dan tambahkan aturan aliran baru. Berikut adalah contoh menggunakan curl untuk menambahkan aturan aliran:
curl -X PUT -d @flow.json -H “Content-Type: application/json” http://<IP_ADDRESS_ODL>:8181/restconf/config/opendaylight-inventory:nodes/node/openflow:1/table/0/flow/1 –user admin:admin
Dengan file flow.json sebagai berikut:
{
“flow”: {
“id”: “1”,
“table_id”: “0”,
“priority”: “500”,
“match”: {
“ethernet-match”: {
“ethernet-type”: {
“type”: “2048”
}
},
“ipv4-destination”: “10.0.0.2/32”
},
“instructions”: {
“instruction”: [
{
“order”: “0”,
“apply-actions”: {
“action”: [
{
“order”: “0”,
“output-action”: {
“output-node-connector”: “2”
}
}
]
}
}
]
}
}
}
Contoh 2: Monitoring Jaringan dengan Ryu Controller
Ryu adalah pengontrol SDN berbasis Python yang memungkinkan kita memonitor dan mengelola jaringan dengan mudah.
- Instalasi Ryu
# Update dan instalasi dependency
sudo apt-get update
sudo apt-get install python3-pip
pip3 install ryu
- Menjalankan Ryu Controller
Buat file Python simple_switch_13.py sebagai berikut:
from ryu.base import app_manager
from ryu.controller import ofp_event
from ryu.controller.handler import MAIN_DISPATCHER, CONFIG_DISPATCHER
from ryu.controller.handler import set_ev_cls
from ryu.ofproto import ofproto_v1_3
from ryu.lib.packet import packet
from ryu.lib.packet import ethernet
class SimpleSwitch13(app_manager.RyuApp):
OFP_VERSIONS = [ofproto_v1_3.OFP_VERSION]
def __init__(self, *args, **kwargs):
super(SimpleSwitch13, self).__init__(*args, **kwargs)
self.mac_to_port = {}
@set_ev_cls(ofp_event.EventOFPSwitchFeatures, CONFIG_DISPATCHER)
def switch_features_handler(self, ev):
datapath = ev.msg.datapath
ofproto = datapath.ofproto
parser = datapath.ofproto_parser
match = parser.OFPMatch()
actions = [parser.OFPActionOutput(ofproto.OFPP_CONTROLLER, ofproto.OFPCML_NO_BUFFER)]
self.add_flow(datapath, 0, match, actions)
def add_flow(self, datapath, priority, match, actions):
ofproto = datapath.ofproto
parser = datapath.ofproto_parser
inst = [parser.OFPInstructionActions(ofproto.OFPIT_APPLY_ACTIONS, actions)]
mod = parser.OFPFlowMod(datapath=datapath, priority=priority, match=match, instructions=inst)
datapath.send_msg(mod)
@set_ev_cls(ofp_event.EventOFPPacketIn, MAIN_DISPATCHER)
def _packet_in_handler(self, ev):
msg = ev.msg
datapath = msg.datapath
ofproto = datapath.ofproto
parser = datapath.ofproto_parser
in_port = msg.match[‘in_port’]
pkt = packet.Packet(msg.data)
eth = pkt.get_protocols(ethernet.ethernet)[0]
dst = eth.dst
src = eth.src
dpid = datapath.id
self.mac_to_port.setdefault(dpid, {})
self.logger.info(“packet in %s %s %s %s”, dpid, src, dst, in_port)
self.mac_to_port[dpid][src] = in_port
if dst in self.mac_to_port[dpid]:
out_port = self.mac_to_port[dpid][dst]
else:
out_port = ofproto.OFPP_FLOOD
actions = [parser.OFPActionOutput(out_port)]
match = parser.OFPMatch(in_port=in_port, eth_dst=dst)
if out_port != ofproto.OFPP_FLOOD:
self.add_flow(datapath, 1, match, actions)
data = None
if msg.buffer_id == ofproto.OFP_NO_BUFFER:
data = msg.data
out = parser.OFPPacketOut(datapath=datapath, buffer_id=msg.buffer_id, in_port=in_port, actions=actions, data=data)
datapath.send_msg(out)
- Menjalankan Ryu Controller
ryu-manager simple_switch_13.py
- Menjalankan Mininet
sudo mn –topo single,3 –mac –controller remote –switch ovsk
Tantangan dalam Implementasi SDN
- Skalabilitas : Pengontrol SDN harus mampu menangani skala jaringan yang besar tanpa kehilangan kinerja. Pengontrol harus dirancang untuk dapat diskalakan secara horizontal.
- Keamanan : Pengontrol terpusat dalam SDN merupakan titik kegagalan tunggal. Oleh karena itu, keamanan pengontrol harus diperhatikan dengan serius untuk menghindari kompromi yang dapat berdampak pada seluruh jaringan.
- Interoperabilitas : Integrasi SDN dengan perangkat keras dan perangkat lunak jaringan yang ada dapat menjadi tantangan. Standarisasi protokol dan praktik terbaik dapat membantu mengatasi masalah interoperabilitas ini.
- Kompleksitas Manajemen : Meskipun SDN dapat menyederhanakan manajemen jaringan secara keseluruhan, proses konfigurasi awal dan pemeliharaan dapat menjadi kompleks, terutama jika organisasi tidak memiliki keahlian yang cukup dalam SDN.
Masa Depan SDN
- Evolusi Teknologi : Teknologi SDN terus berkembang dengan integrasi teknologi baru seperti AI dan machine learning yang memungkinkan optimasi jaringan yang lebih canggih dan responsif.
- Standarisasi : Upaya standarisasi protokol dan praktik terbaik semakin meningkat dengan semakin banyaknya adopsi SDN. Ini mempermudah interoperabilitas dan mengurangi kompleksitas implementasi.
- Ekosistem yang Berkembang : Ekosistem SDN terus berkembang dengan semakin banyaknya perangkat lunak, alat, dan layanan yang mendukung SDN. Ini akan mempercepat adopsi SDN di berbagai industri.
- Penerapan di Jaringan 5G : Dengan peluncuran jaringan 5G, SDN akan memainkan peran penting dalam mengelola jaringan yang lebih kompleks dan padat. SDN memungkinkan penyedia layanan untuk menawarkan layanan baru dengan lebih cepat dan efisien.
Kesimpulan
Software-Defined Networking (SDN) adalah salah satu hal yang menawarkan paradigma baru yang jauh lebih revolusioner kedalam dunia jaringan ini. Dengan memisahkan fungsi kontrol dari perangkat keras jaringan, SDN memberikan fleksibilitas, efisiensi, dan keamanan yang jauh lebih baik dibandingkan jaringan tradisional. Ubuntu ini juga telah dikenal sebagai salah satu distribusi Linux yang populer, menyediakan platform stabil dan bisa diandalkan untuk implementasi SDN.
Meskipun menghadapi beberapa tantangan yang cukup sulit, namun masa depan SDN ini terlihat cerah dengan berbagai perkembangan teknologi dan standarisasi yang terus berlangsung. Dengan adopsi yang semakin luas, maka SDN ini juga akan menjadi fondasi infrastruktur jaringan masa depan, mendukung berbagai macam aplikasi mulai dari data center hingga jaringan 5G dan IoT.