Hal 790−799 http://ejurnal.stmik-budidarma.ac.id/index.php/jurikom

## Studi Perbandingan Library Untuk Implementasi Network Automation Menggunakan Paramiko Dan Netmiko Pada Router Mikrotik
Luis Geraldo Mauboy 1 , Theophilus Wellem 2,*
Fakultas Teknologi Informasi, Teknik Informatika, Universitas Kristen Satya Wacana, Salatiga, Indonesia Email: 1 672018138@student.uksw.edu, 2,* theophilus.wellem@uksw.edu Email Penulis Korespondensi: theophilus.wellem@uksw.edu Submitted 04-07-2022 ; Accepted 20-07-2022 ; Published 30-08-2022

## Abstrak
Pada beberapa tahun terakhir, network automation atau otomatisasi jaringan muncul sebagai solusi untuk mengatasi ketidakpraktisan konfigurasi  peralatan  pada  jaringan  komputer  secara  manual  oleh  administrator  jaringan.  Dengan  mengimplementasikan  network automation,  administrator jaringan  dapat  melakukan konfigurasi  dan  pengelolaan peralatan jaringan  secara otomatis  menggunakan script atau perangkat lunak yang dijalankan dari salah satu host atau server dalam jaringan.  Penelitian ini bertujuan untuk melakukan studi  perbandingan  melalui  implementasi  kasus  untuk  network  automation.    Implementasi  script  untuk  otomatisasi  dilakukan menggunakan library pada bahasa pemrograman Python, yaitu Paramiko dan Netmiko. Empat skenario diambil sebagai contoh untuk implementasi network automation antara lain, static routing, dynamic routing, network address translation (NAT), dan simple network management protocol (SNMP). Pengujian dan simulasi dilakukan menggunakan  perangkat lunak  simulator GNS3 dengan topologi jaringan yang terdiri dari dua router Mikrotik, satu Ethernet switch, satu server Network Automation, dan dua komputer sebagai client. Berdasarkan hasil simulasi dan pengujian yang dilakukan didapatkan bahwa otomatisasi menggunakan  library Paramiko lebih  baik daripada otomatisasi menggunakan Netmiko dari sisi waktu yang dibutuhkan untuk eksekusi script konfigurasi. Waktu eksekusi rata- rata untuk keempat skenario yang diimplementasikan adalah 3.66 detik.
Kata Kunci: Network Automation; Python; Paramiko; Netmiko; GNS3

## Abstract
In  recent  years,  network  automation  has  emerged  as  a  solution  to  the  impracticality  of  manually  configuring  network  devices  by network administrators. By implementing network automation, network administrators can configure and manage network  devices automatically  using  scripts  or  software  that  is  run  from  one  of  the  hosts  or  servers  in  the  network.  This  paper  aims  to  conduct  a comparative  study  through  the  implementation  of  cases  for  network  automation.  Four  scenarios  are  taken  as  examples  for  the implementation of network automation, among others, static routing, dynamic routing, network address translation (NAT), and simple network management protocol (SNMP). The automation scripts are realized using Python libraries, namely Paramiko and Netmiko. Tests and simulations were carried out using the GNS3 simulator software with a network topology consisting of two Mikrotik routers, one Ethernet switch, one Network Automation server, and two computers as clients. The experiment results show that automation using the Paramiko library is better than automation using the Netmiko library in terms of the time required for the execution of configuration scripts. The average execution time for the four implemented scenarios is 3.66 seconds.
Keywords : Network Automation; Python; Paramiko; Netmiko; GNS3

## 1. PENDAHULUAN
Pada era teknologi informasi saat ini, layanan akses data melalui jaringan komputer merupakan hal yang esensial dalam aktivitas sehari-hari. Ketersedian ( availability ) dan kehandalan ( reliability ) dari jaringan yang dikelola oleh perusahaan penyedia jasa layanan akses Internet ( Internet Service Provider , ISP) sangat penting karena berkaitan dengan kepuasan pelanggan dan profit bagi perusahaan. Pada pengelolaaan suatu jaringan yang besar, terdapat banyak peralatan jaringan ( network device ) seperti router, switch, dan access point yang harus dikonfigurasi oleh administrator atau teknisi jaringan. Cara konfigurasi  secara manual  pada setiap peralatan merupakan proses yang membutuhkan waktu yang tidak sedikit sehingga tidak praktis untuk dilakukan pada jaringan yang besar, seperti jaringan yang umumnya dimiliki oleh perusahaan penyedia jasa layanan akses Internet. Selain itu, konfigurasi secara manual rentan terhadap kesalahan konfigurasi yang dapat menyebabkan layanan jaringan menjadi terganggu. Untuk mengatasi masalah ini, perlu adanya sebuah cara yang lebih praktis untuk  mengatur dan mengkonfigurasikan perangkat-perangkat  jaringan tersebut  dalam waktu  yang cepat, terlebih lagi saat terdapat konfigurasi yang harus diperbarui ( update ) secara berkala. Pada lebih dari satu dekade terakhir, perusahaan-perusahaan  jaringan  terkemuka  seperti  Cisco,  Juniper,  Brocade,  dan  Huawei,  maupun  akademisi  dari perguruan tinggi, serta Internet Engineering Task Force (IETF) berupaya untuk mengembangkan cara atau metode yang lebih  praktis  untuk  konfigurasi  peralatan  jaringan.  Salah  satu  contohnya  adalah  dengan  membuat  protokol  untuk konfigurasi  jaringan  yang  dikenal  dengan Network  Configuration  Protocol (NETCONF)  pada  tahun  2006  [1] dan diperbarui  pada  tahun  2011 [2].  NETCONF  merupakan  protokol  yang  menyediakan  mekanisme  untuk  menginstall, memanipulasi, dan menghapus konfigurasi pada peralatan jaringan. Contoh berikutnya adalah RESTCONF (dibuat pada tahun 2017) yang merupakan protokol berbasis hypertext transfer protocol (HTTP) yang menyediakan interface untuk mengakses data konfigurasi pada peralatan jaringan [3]. Selanjutnya, berkembang pula konsep network automation atau otomatisasi jaringan di mana pengaturan dan pengujian konfigurasi perangkat jaringan dilakukan menggunakan perangkat lunak ( software ) secara otomatis  dengan cara  mengirimkan perintah konfigurasi  ke peralatan jaringan melalui koneksi secure  shell (SSH).  Oleh  karena  itu, network  automation saat  ini  merupakan  solusi  dalam  menjawab  persoalan ketidakpraktisan  cara  konfigurasi  secara  manual  dan  dapat  mencegah network  downtime yang  lama  karena  adanya kesalahan konfigurasi [4].
Hal 790−799 http://ejurnal.stmik-budidarma.ac.id/index.php/jurikom
Network  automation atau  otomatisasi  jaringan  adalah  suatu  proses  untuk  mengotomatiskan  pengaturan (konfigurasi), pengelolaan, pengujian serta pengoperasian perangkat-perangkat jaringan baik fisik maupun virtual [5][6]. Proses otomatisasi jaringan ini menggunakan logika pemrograman ( programmable logic ) untuk mengatur sumber daya ( resources ) dan layanan jaringan sehingga menjadi lebih efisien dibandingkan dengan proses konfigurasi secara manual [7]. Secara umum, network automation dapat dilakukan menggunakan script (dikenal juga dengan istilah script-driven network  automation )  yang  ditulis  dalam  bahasa  pemrograman  Python  [8].  Saat  ini  terdapat  beberapa library yang digunakan untuk  implementasi network  automation misalnya Paramiko, Netmiko, NAPALM, Genie, NCClient (untuk NETCONF) dan Requests (untuk REST APIs). Penelitian ini bertujuan untuk melakukan studi perbandingan mengenai implementasi network automation menggunakan library Paramiko [9] dan Netmiko [10]. Script untuk otomatisasi yang dibuat akan diterapkan pada empat studi kasus. Studi kasus yang digunakan pada penelitian ini antara lain, konfigurasi static routing ,  konfigurasi dynamic  routing ,  konfigurasi network  address  translation (NAT)  dan  konfigurasi Simple Network  Management  Protocol (SNMP).  Penelitian  ini  diharapkan  dapat  memberikan  gambaran  singkat  mengenai pemanfaatan  Python  dalam network  automation dan  dapat  berguna  sebagai  studi  atau  pembelajaran  tentang teknologi network automation bagi mahasiswa atau pelajar maupun untuk pemula yang akan masuk dalam bidang ini. Kajian  atau review terhadap  beberapa  penelitian  terdahulu  yang  berkaitan  dilakukan  agar  dapat  memberikan gambaran  mengenai  topik  penelitian  ini  dan  perbedaannya  dengan  penelitian  terdahulu.  Pada  penelitian  [11] dikembangkan sebuah aplikasi berbasis web untuk otomatisasi jaringan menggunakan Django framework dan REST API. Selain Django framework dan REST API, Ansible juga digunakan untuk otomatisasi konfigurasi routing Open Short Path First (OSPF) pada router [12]. Ansible [13] merupakan platform untuk otomatisasi jaringan yang bekerja dengan cara melakukan koneksi ke perangkat jaringan dan “menginstall”  suatu program yang disebut dengan Ansible module . Ansible kemudian mengeksekusi modul tersebut melalui koneksi SSH. Penelitian [14] menggunakan Ansible pada laboratorium komputer  di  instansi  pendidikan  untuk  melakukan  otomatisasi  perangkat  jaringan  komputer.  Pada penelitian  tersebut, Ansible  digunakan  sebagai  alat  ( tool )  otomatisasi  yang  menggantikan  beberapa  pekerjaan  yang  seharusnya  dilakukan secara berulang oleh seorang administrator jaringan, yaitu konfigurasi peralatan-peralatan yang digunakan pada jaringan.
Aplikasi  otomatisasi  jaringan  berbasis  web  yang  dapat  membantu  administrator  dalam  melakukan  konfigurasi penambahan gateway otomatis pada sebuah topologi jaringan yang terhubung dengan aplikasi GNS3 juga dikembangkan sebagai alternatif dari aplikasi network automation yang hanya menggunakan script dan dijalankan melalui command line interface atau terminal [15].  Pemanfaatan library Paramiko  untuk  menyediakan  konfigurasi  koneksi  Internet  dan manajemen pada router Mikrotik dibahas pada [16]. Studi kasus pada penelitian tersebut dilakukan di suatu perusahaan penyedia akses Internet. Kasus yang diambil adalah konfigurasi IP address dan subnet  mask , serta konfigurasi Simple Network  Management  Protocol (SNMP), Remote  Authentication  Dial-In  User  Service (RADIUS),  dan Network  Time Protocol (NTP). Selanjutnya, bahasa pemrograman Python dan library Netmiko digunakan dalam mengimplementasikan network  automation sebagai  solusi  untuk  melakukan  konfigurasi  perangkat  jaringan  baru  secara  otomatis  [17]. Otomatisasi menggunakan Python dan Netmiko diharapkan dapat menghemat waktu dan sumber daya yang digunakan, serta mengurangi faktor kesalahan konfigurasi oleh administrator jaringan. Perbandingan kinerja antara library Paramiko dan Netmiko dalam proses otomatisasi jaringan dengan mengambil studi kasus konfigurasi routing OSPF dibahas pada [18]. Pada penelitian tersebut disimpulkan bahwa performansi menggunakan Paramiko lebih baik dibandingkan Netmiko. Waktu konfigurasi dengan Paramiko mencapai empat kali lebih cepat dibandingkan konfigurasi menggunakan Netmiko. Berbeda dengan penelitian-penelitian terdahulu, penelitian ini berfokus pada contoh-contoh kasus pemanfaatan Paramiko dan Netmiko secara umum untuk implementasi network automation dengan mengambil empat kasus atau skenario, yaitu konfigurasi static routing , konfigurasi dynamic routing , konfigurasi NAT, dan konfigurasi SNMP.

## 2. METODOLOGI PENELITIAN

## 2.1 Tahapan Penelitian
Tahapan dalam melaksanakan penelitian studi perbandingan library Paramiko dan Netmiko ini ditunjukkan pada Gambar 1 dan dapat dijelaskan sebagai berikut. Penelitian dimulai dengan melakukan studi pustaka atau studi literatur mengenai network  automation menggunakan  Python.  Studi  pustaka  ini  dilakukan  dengan  mengkaji  penelitian-penelitian sebelumnya yang berkaitan, termasuk  mempelajari  buku-buku mengenai network automation .   Selanjutnya, dilakukan identifikasi kasus-kasus atau skenario otomatisasi (misalnya, konfigurasi routing , konfigurasi SNMP) yang akan diangkat sebagai contoh dalam pemanfaatan library Paramiko dan Netmiko pada penelitian ini. Pada tahap selanjutnya dilakukan perancangan (desain) topologi jaringan dan implementasi dari setiap kasus yang telah ditetapkan. Implementasi dilakukan dengan  menuliskan script Python  untuk  melakukan  otomatisasi  konfigurasi  pada  peralatan  jaringan.  Pada  tahap pengujian, dilakukan simulasi menggunakan perangkat lunak GNS3 untuk menguji script yang telah diimplementasikan untuk  masing-masing library (Paramiko  dan  Netmiko).  Pada  tahap  ini  juga  dilakukan  evaluasi  terhadap  hasil  yang diperoleh dari pengujian. Tahap terakhir dari penelitian ini adalah penyimpulan hasil penelitian dan penulisan laporan. Pada tahap ini, dilakukan analisis dari penelitian yang sudah dilakukan untuk mengambil kesimpulan berdasarkan hasil penelitian dan ketercapaian tujuan penelitian.
Hal 790−799 http://ejurnal.stmik-budidarma.ac.id/index.php/jurikom
Gambar 1. Tahapan Penelitian

## 2.2 Network Automation dengan Python
Pada penelitian ini, network automation menggunakan Python diimplementasikan menggunakan library Paramiko dan Netmiko. Paramiko adalah implementasi protokol SSH versi 2 menggunakan Python yang menyediakan fungsionalitas client dan server. Semua perangkat yang dapat dikonfigurasikan melalui SSH juga dapat menggunakan library ini [19]. Contoh metode atau fungsi yang ada pada Paramiko antara lain: a. Metode send , metode untuk mengirim sebuah string . Contoh: ssh.send() . b. Metode recv , metode untuk menerima data. Contoh: ssh.recv() . c. Metode close , metode untuk menutup sesi. Contoh: ssh.close() . Netmiko merupakan suatu library yang dikembangkan berdasarkan Paramiko untuk menyederhanakan manajemen SSH ke peralatan atau perangkat jaringan. Netmiko menggunakan Paramiko tetapi juga membuat interfaces dan methods yang baru dan dibutuhkan untuk bekerja pada berbagai perangkat jaringan. Perangkat yang kompatibel dengan Netmiko adalah Arista vEOS, Cisco ASA, Cisco IOS, Cisco IOS-XE, Cisco IOS-XR, Cisco NR-OS, Cisco SG300, HP Comware7, HP ProCurve, Juniper Junos, Linux, dan lain-lain [20]. Contoh metode atau fungsi pada Netmiko antara lain: a. Metode send , metode untuk mengirim perintah. Contoh: net_connect.send_command() . b. Metode enable , metode untuk masuk ke mode enable pada perangkat jaringan. Contoh: net_connect.enable() . c. Metode disconnect , metode untuk menutup koneksi. Contoh: net_connect.disconnect() .

## 2.3 GNS3
GNS3 adalah perangkat lunak yang dapat digunakan untuk melakukan simulasi jaringan komputer ( network simulator ). User dapat melakukan simulasi jaringan komputer pada GNS3 seperti pada perangkat jaringan yang sebenarnya karena GNS3 mendukung real device maupun virtual device . GNS3 dapat dijalankan pada sistem operasi Windows, Linux dan Mac. Perbedaan mendasar antara GNS3 dengan aplikasi simulator lainnya seperti Cisco Packet Tracer adalah GNS3 dapat menjalankan  simulasi  menggunakan  perangkat  dengan  vendor  yang  berbeda-beda. User dapat  mengeksplorasi  lebih banyak device dari berbagai vendor menggunakan GNS3 [21]. Pada penelitian ini, GNS3 digunakan untuk melakukan simulasi dan menguji hasil implementasi network automation yang dibuat.

## 3. HASIL DAN PEMBAHASAN
Penelitian  ini  menggunakan  perangkat  lunak  GNS3  untuk  merancang  topologi  jaringan  dan  melakukan  simulasi  dari implementasi network  automation yang  telah  dibuat.  Topologi  jaringan  ini  menggunakan  satu  komputer  server  yang mengeksekusi script untuk network automation , satu Ethernet switch , dua router dan dua PC sebagai client . Router yang dipakai adalah Mikrotik dan PC client menggunakan VPCS ( default PC pada GNS3). Topologi jaringan yang digunakan dalam simulasi untuk menguji script yang telah dibuat ditunjukkan pada Gambar 2. Sebagai catatan, topologi ini hanya merupakan  salah  satu  contoh  topologi  yang  dapat  digunakan  untuk  simulasi  dan  pengujian network  automation pada penelitian ini. Network automation menggunakan script Python dapat diterapkan pada berbagai macam topologi jaringan selama komputer atau server yang mengeksekusi script dapat menjangkau atau berkomunikasi dengan peralatan jaringan yang  akan  dikonfigurasi.  Selain  itu,  router  yang  dapat  dikonfigurasi  menggunakan script Python  tidak  hanya  router Mikrotik tetapi juga router dari berbagai vendor dengan cukup melakukan modifikasi pada perintah yang digunakan untuk konfigurasi.  Pada  jaringan  yang  ditunjukkan  pada  Gambar  2,  saat  inisialisasi  masing-masing  perangkat  diberikan  IP address sebagai  berikut:  Server  NetworkAutomation-1  menggunakan  alamat  10.10.10.3  pada interface ether1,   router Mikrotik1 menggunakan alamat 10.10.10.1 pada interface ether1 dan 192.168.1.1 pada interface ether2, router Mikrotik2 menggunakan  alamat  10.10.10.2  pada interface ether  1  dan  192.168.2.1  pada interface ether2.  Selanjutnya,  PC1 menggunakan  alamat  192.168.1.2  dan  PC2  menggunakan  alamat  192.168.2.2.  Semua  perangkat  menggunakan subnet mask 255.255.255.0  atau /24. Pada  server  NetworkAutomation-1 dibuat  satu file teks (dengan nama address.txt ) yang menyimpan IP address tiap router. Server NetworkAutomation-1 akan terhubung dengan tiap router melalui IP address tersebut. Selain itu, terdapat juga kumpulan script untuk implementasi network automation yang dieksekusi menggunakan perintah python3  <namascript.py> . Script yang  menggunakan    Paramiko  dan  Netmiko  dibuat  dalam  file  yang terpisah. Berikut ini dijelaskan skenario, implementasi, dan hasil eksekusi dari script yang telah dibuat sebagai contoh kasus untuk network automation .
Hal 790−799 http://ejurnal.stmik-budidarma.ac.id/index.php/jurikom
Gambar 2. Topologi Jaringan untuk pengujian script network automation

## 3.1 Skenario 1: Static Routing
Tujuan dari skenario ini adalah untuk melakukan konfigurasi pada router Mikrotik1 dan router Mikrotik2 agar PC1 dan PC2 dapat berkomunikasi melalui kedua router tersebut. Konfigurasi static routing dilakukan pada setiap router dengan perintah ip  route  add  dst-address=(ip  tujuan/subnet)  gateway=(ip  router  tujuan) . Script untuk konfigurasi static routing menggunakan Paramiko dan Netmiko ditunjukkan pada Gambar 3 .
Hal 790−799 http://ejurnal.stmik-budidarma.ac.id/index.php/jurikom
Pada script yang  ditunjukkan  pada  Gambar  3,  perintah  import  dan f rom  …  import  … digunakan  untuk mengimpor library Paramiko atau Netmiko dan library timeit untuk menghitung waktu eksekusi dari script . Beberapa metode atau fungsi penting pada Paramiko yang dipakai adalah sebagai berikut: paramiko.SSHClient() digunakan untuk  merepresentasikan  suatu  sesi  koneksi  SSH  ke  perangkat  jaringan  atau  router  dalam  skenario static  routing ini, set_missing_host_key_policy(paramiko.AutoAddPolicy()) untuk mengatur policy yang akan digunakan saat melakukan koneksi SSH ke router tanpa suatu host key tertentu, connect() untuk membuka koneksi SSH ke router, dan exec_command() untuk  mengeksekusi  perintah  yang akan diberikan ke router. IP address untuk  masing-masing router pada script ini dibaca dari file address.txt . Variabel start dibuat di baris awal script dan variabel end di baris akhir script . Selisih dua variabel ini menunjukkan waktu eksekusi script . Selain itu, terdapat juga fungsi close() untuk menutup  koneksi  SSH.  Fungsi check_result() digunakan  untuk  memeriksa  apakah  konfigurasi  sudah  berhasil dilakukan atau tidak. Fungsi-fungsi ini juga digunakan pada script Paramiko untuk skenario yang lain dalam penelitian ini.
Untuk script yang menggunakan Netmiko, fungsi-fungsi  penting yang digunakan adalah ConnectHandler() , send_command() , dan disconnect() .  Salah satu  parameter yang diterima oleh fungsi ConnectHandler() adalah device_type yang  menentukan  jenis device yang  akan  dihubungi,  misalnya mikrotik_routeros untuk  router Mikrotik  atau arista_eos untuk  router  dari  Arista.  Gambar  4  menunjukkan  tampilan output pada  server NetworkAutomation-1 untuk konfigurasi static routing .
Gambar 4. Contoh tampilan output hasil eksekusi script Paramiko dan Netmiko (static routing )
3.2 Skenario 2: Dynamic Routing
Dynamic  routing merupakan  konfigurasi routing secara  otomatis  yang  dilakukan  oleh  router  dengan  mempelajari informasi routing yang diperoleh dari router-router lain dalam suatu jaringan. Dynamic routing dilakukan menggunakan algoritma routing ( routing  protocol )  tertentu.  Tidak  seperti static  routing yang  membutuhkan  administrator  untuk melakukan penyesuaian saat ada perubahan dalam topologi, administrator cukup melakukan konfigurasi routing protocol yang akan digunakan  untuk dynamic routing . Beberapa contoh routing protocol antara lain: Routing Information Protocol (RIP), Interior Gateway Routing Protocol (IGRP),  OSPF, Enhanced Interior Gateway Routing Protocol (EIGRP) dan Border Gateway Protocol (BGP). Tujuan pada skenario ini adalah untuk melakukan konfigurasi routing protocol pada router Mikrotik1 dan router Mikrotik2 agar PC1 dan PC2 dapat berkomunikasi melalui kedua router tersebut. Routing protocol yang digunakan adalah Routing Information Protocol (RIP) versi 2 yang merupakan protokol berbasis distance- vector dan menggunakan hop count sebagai metrik-nya. RIP umumnya digunakan pada jaringan dengan jumlah router yang tidak terlalu besar (jaringan berskala kecil hingga sedang). Perbedaan antara RIPv2 dengan RIPv1 adalah dukungan terhadap Variable  Length  Subnet  Mask (VLSM)  dan  fungsi  keamanan  berupa authentication .  Konfigurasi dynamic routing menggunakan  RIPv2  dilakukan  dengan  perintah routing  rip  interface  add  interface untuk mendefinisikan interface yang  digunakan  untuk  mengirimkan  informasi routing dan routing  rip  network  add network untuk  mendefinisikan  jaringan  yang  menggunakan  RIPv2. Script untuk  konfigurasi dynamic  routing menggunakan Paramiko dan Netmiko ditunjukkan pada Gambar 5 . Gambar 6 menunjukkan tampilan output pada server NetworkAutomation-1 untuk konfigurasi dynamic routing .
Gambar 5. Contoh tampilan output hasil eksekusi script Paramiko dan Netmiko ( dynamic routing )
Hal 790−799 http://ejurnal.stmik-budidarma.ac.id/index.php/jurikom
Gambar 6. Script Paramiko dan Netmiko untuk konfigurasi dynamic routing
3.3 Skenario 3: Firewall (Network Address Translation, NAT)
Firewall digunakan untuk memantau dan mengontrol trafik jaringan yang masuk atau keluar dari suatu jaringan  untuk mencegah akses yang tidak diinginkan. Pada router Mikrotik salah satu penerapan firewall adalah konfigurasi network address translation (NAT). Tujuan pada skenario ini adalah untuk melakukan konfigurasi NAT agar IP address privat yang digunakan pada jaringan internal ditranslasikan menjadi IP address publik  saat  keluar untuk mengakses jaringan publik  (Internet).  Konfigurasi  NAT  dilakukan  pada  setiap  router  dengan  perintah ip  firewall  nat  add chain=(nama chain) action=(nama action) di mana chain yang digunakan adalah srcnat dan action -nya adalah masquerade . Action ini bertujuan untuk menyembunyikan IP address privat sehingga tidak terlihat secara publik (dan digantikan oleh IP address publik). Script untuk konfigurasi NAT menggunakan Paramiko dan Netmiko ditunjukkan pada Gambar 7 . Gambar 8 menunjukkan tampilan output pada server NetworkAutomation-1 untuk konfigurasi NAT.
Hal 790−799 http://ejurnal.stmik-budidarma.ac.id/index.php/jurikom
Gambar 8. Script Paramiko dan Netmiko untuk konfigurasi network address translation (NAT)

## 3.4 Skenario 4: SNMP (Simple Network Management Protocol)
SNMP merupakan protokol yang digunakan untuk memonitor dan mengatur perangkat jaringan. Pada penerapan SNMP terdapat komputer yang berperan sebagai SNMP manager yang berkomunikasi dengan SNMP agent yang dipasang atau diaktifkan pada setiap peralatan jaringan yang dimonitor ( managed device ). Agent yang terletak pada peralatan jaringan inilah yang melaporkan informasi mengenai peralatan tersebut melalui SNMP dengan cara membuka data pada peralatan jaringan yang dimonitor sebagai variabel-variabel sehingga dapat diakses dan diatur oleh SNMP manager . Tujuan pada skenario ini adalah untuk melakukan konfigurasi SNMP pada router Mikrotik agar dapat diakses oleh SNMP manager . Konfigurasi  untuk  mengaktifkan  SNMP  pada  router  Mikrotik  dilakukan  menggunakan  perintah snmp  set dengan parameter enabled=yes . Script untuk  konfigurasi  SNMP  menggunakan  Paramiko  dan  Netmiko  ditunjukkan  pada Gambar 9 . Gambar 10 menunjukkan tampilan output pada server NetworkAutomation-1 untuk konfigurasi SNMP.
Gambar 9. Contoh tampilan output hasil eksekusi script Paramiko dan Netmiko (NAT)
Hal 790−799 http://ejurnal.stmik-budidarma.ac.id/index.php/jurikom
Gambar 10. Script Paramiko dan Netmiko untuk konfigurasi network address translation (SNMP)

## 3.5 Hasil Pengujian
Pada  tahap  pengujian  dari  implementasi script  network  automation menggunakan simulator GNS3,  hal  yang  pertama diverifikasi adalah kebenaran ( correctness ) konfigurasi yang dikirimkan ke router setelah satu kali eksekusi script . Hal ini dilakukan dengan memeriksa hasil konfigurasi pada router melalui perintah-perintah untuk menampilkan konfigurasi (misalnya: ip route print , ip firewall nat print , interface print ). Setelah itu dilakukan eksekusi script sebanyak lima kali untuk setiap skenario (konfigurasi static routing , dynamic routing , NAT, dan SNMP) baik untuk script yang menggunakan Paramiko dan yang menggunakan Netmiko. Pengujian ini dilakukan untuk membandingkan waktu eksekusi dari script dan untuk mendapatkan nilai waktu yang lebih umum (bukan hanya waktu untuk satu kali eksekusi). Pada setiap eksekusi, waktu  yang dibutuhkan untuk  eksekusi script dicatat dan nilai rata-rata  ( average ) dari  lima kali eksekusi  dihitung  saat  pengujian berakhir. Hasil pengujian  dan perbandingan  rata-rata waktu  eksekusi masing-masing ditunjukkan pada Tabel 1 dan Gambar 11. Berdasarkan hasil pengujian dapat dilihat bahwa waktu eksekusi script yang menggunakan  Paramiko  lebih  cepat  dari script yang  menggunakan  Netmiko.  Rata-rata  selisih  waktu  eksekusi  antara Paramiko dan Netmiko untuk keempat skenario adalah 3.66 detik.
Tabel 1. Nilai rata-rata ( average ) waktu eksekusi script dari 5 kali percobaan Skenario Waktu (detik) Selisih waktu (detik) Paramiko  Netmiko Static routing 21.494 26.535 5.041 Dynamic routing 19.602 24.028 4.426 Firewall 16.199 18.288 2.089 SNMP 5.107 8.202 3.095 Nilai rata-rata - - 3.66
Hal 790−799 http://ejurnal.stmik-budidarma.ac.id/index.php/jurikom
Gambar 11. Nilai rata-rata waktu eksekusi script
Selain  pada  topologi  jaringan  yang  ditunjukkan  pada  Gambar  2,  pengujian  juga  dilakukan  pada  topologi  yang menggunakan tiga router.  Hal  ini dilakukan untuk mengetahui  atau memperkirakan  waktu  eksekusi script jika jumlah router yang dikonfigurasi bertambah. Gambar 12 menunjukkan topologi yang digunakan. Langkah pengujian yang sama seperti  yang  dijelaskan  sebelumnya  dilakukan  untuk  mendapatkan  rata-rata  waktu  eksekusi  untuk  setiap  skenario (konfigurasi static routing , dynamic routing , NAT, dan SNMP). Hasil yang diperoleh adalah sebagai berikut: a. Static routing (Paramiko: 65.563 detik, Netmiko: 76.655 detik).
b. Dynamic routing (Paramiko: 32.408 detik, Netmiko: 37.809 detik).
c. NAT (Paramiko: 16.926 detik, Netmiko: 22.768 detik).
d. SNMP (Paramiko: 6.720 detik, Netmiko: 15.610 detik).
e. Rata-rata selisih waktu eksekusi antara Paramiko dan Netmiko: 7.8 detik. Berdasarkan hasil ini, dapat diketahui bahwa waktu eksekusi script yang menggunakan Paramiko tetap lebih cepat dibanding script yang menggunakan Netmiko. Selain itu, waktu eksekusi akan semakin besar dengan penambahan jumlah router yang harus dikonfigurasi.
Gambar 12. Topologi jaringan untuk pengujian menggunakan tiga router Mikrotik

## 4. KESIMPULAN
Penelitian ini membahas implementasi network automation dan perbandingannya menggunakan dua library Python yang umum  digunakan  untuk network  automation yaitu  Paramiko  dan  Netmiko.  Sebanyak  empat  studi kasus  atau  skenario diambil  sebgai  contoh  untuk  diimplementasikan  dan  dibandingkan,  yaitu  konfigurasi static  routing , dynamic  routing menggunakan RIPv2, NAT, dan SNMP.  Berdasarkan hasil implementasi  dan pengujian terhadap script menggunakan kedua library tersebut, didapatkan bahwa Paramiko menunjukkan hasil yang lebih baik dari sisi waktu eksekusi script . Waktu  eksekusi script dengan Paramiko lebih cepat  dibandingkan script yang  menggunakan Netmiko meskipun  pada skenario yang dibahas pada penelitian ini perbedaan waktu tersebut tidak begitu besar. Rata-rata ( average ) selisih waktu
Hal 790−799 http://ejurnal.stmik-budidarma.ac.id/index.php/jurikom
eksekusi  antara  Netmiko  dan  Paramiko  adalah  3.66  detik.  Selanjutnya  dari  sisi  penggunaannya,  dalam  hal  waktu pengembangan dan kemudahan penulisan script , Netmiko lebih mudah dibandingkan Paramiko dengan penamaan fungsi yang lebih mudah dipahami. Netmiko juga lebih mendukung lebih banyak perangkat ( device ) dan platform dari berbagai perusahaan penyedia peralatan jaringan.  Untuk pengembangan lebih lanjut, dapat ditambahkan jumlah contoh kasus yang dipelajari.  Selain  itu,  dapat  juga  diimplementasikan network  automation menggunakan library yang  lain,  misalnya menggunakan library untuk NETCONF dan RESTCONF, atau menerapkan network automation berbasiskan Software- defined Networking (SDN) dan OpenFlow.

## REFERENCES
[1] R. Enns, “RFC 4741 NETCONF Configuration Protocol.” Internet Engineering Task Force (IETF), 2006.
[2] R. Enns, M. Bjorklund, J. Schoenwaelder, and A. Bierman, “RFC 6241 Network Configuration Protocol (NETCONF).” Internet Engineering Task Force (IETF), 2011.
[3] A. Bierman, M. Bjorklund, and K. Watsen, “RFC 8040 RESTCONF Protocol.” Internet Engineering Task Force (IETF), 2017.
[4] J. Edelman, S. S. Lowe, and M. Oswalt, Network Programmability and Automation: Skills for the Next-Generation Network Engineer, 1st ed. O’Reilly Media, 2018.
[5] I. Pinto, Network Automation Made Easy, 1st ed. Cisco Press, 2021.
[6] K. Abuelenain, J. Doyle, A. Karneliuk, and V. Jain,  Network Programmability and Automation Fundamentals, 1st ed. Cisco Press, 2021.
[7] M. Neidinger, Python network programming techniques: 50 real-world recipes to automate infrastructure networks, 1st ed. Packt Publishing, 2021.
[8] J. Alex, Network Automation using Python 3: An Administrator’s Handbook, 1st ed. Independent, 2020.
[9] “Paramiko - A Python Implementation of SSHv2.” https://www.paramiko.org/ (accessed Jun. 30, 2022).
[10]  K.  Byers,  “Netmiko:  Multi-vendor  library  to  simplify  Paramiko  SSH  connections  to  network  devices.” https://github.com/ktbyers/netmiko (accessed Jul. 04, 2022).
[11]  A.  F.  Rochim,  A.  Rafi,  A.  Fauzi,  and  K.  T.  Martono,  “As-RaD  System  as  a  Design  Model  of  the  Network  Automation Configuration System Based on the REST-API and Django Framework,” Kinet. Game Technol. Inf. Syst. Comput. Network, Comput. Electron. Control, vol. 4, pp. 291–298, 2020, doi: 10.22219/kinetik.v5i4.1093.
[12]  E. N. Fadhila, E. R. Gumelar, H. R. Pratama, and G. M. Suranegara, “Otomasi Konfigurasi Routing pada Router menggunakan Ansible,” TELNECT, vol. 1, no. 2, pp. 93–98, 2021.
[13]  W. Irtaza, IT Infrastructure Automation using Ansible, 1st ed.  BPB Publications, 2021.
[14]  M. R. Afandi, P. Hatta, and A. Efendi, “Otomatisasi Perangkat Jaringan Komputer Menggunakan Ansible Pada Laboratorium Komputer,” SMARTICS J., vol. 6, no. 2, pp. 48–53, 2020, [Online]. Available: https://doi.org/10.21067/smartics.v6i2.4599.
[15]  E. S. Ginting, S. Suroso, and I. Hadi, “Pengujian Konfigurasi Otomatis Penambahan Gateway Pada Virtual Router Menggunakan Aplikasi  Otomatisasi  Jaringan  Berbasis  Web,”  J.  Media  Inform.  Budidarma,  vol.  4,  no.  4,  pp.  1126–1131,  Oct.  2020,  doi: 10.30865/MIB.V4I4.2485.
[16]  M. Fahmi, M. Maisyaroh, I. Komarudin, S. Faizah, and I. Fadhilah, “Otomatisasi Jaringan Menggunakan Script Python Untuk Penyediaan  Konfigurasi  Internet  Dan  Manajemen  Mikrotik,”  Bina  Insa.  Ict  J.,  vol.  8,  no.  1,  p.  53,  2021,  doi: 10.51211/biict.v8i1.1517.
[17]  D. Rahardika and N. Ratama, “Implementasi Network Automation Untuk Konfigurasi Jaringan Baru Dengan Netmiko,” J. Artif. Intell. Innov. Appl., vol. 2, no. 3, pp. 190–200, 2021.
[18]  K. Nugroho, A. D. Abrariansyah, and S. Ikhwan, “Perbandingan Kinerja Library Paramiko dan Netmiko dalam Proses Otomasi Jaringan,” InfoTekJar J. Nas. Inform. dan Teknol. Jar., vol. 5, no. 1, pp. 1–8, 2020.
[19]  George Milios, “Network Automation Using Python,” Master’s Thesis, International Hellenic University, 2020.
[20]  A.  Boumezrag,  “A  Proposed  of  Novel  Network  Management  Platform  for  Network  Automation  and  Programmability  with Implementation on GNS3,” Master’s Thesis, University of Biskra, 2020.
[21]  M. F. Islami, P. Musa, and M. Lamsani, “Implementation of Network Automation using Ansible to Configure Routing Protocol in  Cisco  and  Mikrotik  Router  with  Raspberry  PI,”  J.  Ilm.  Komputasi,  vol.  19,  no.  2,  pp.  127–134,  2020,  doi: 10.32409/jikstik.19.2.80.