Pemodelan Protokol Komunikasi Layer Transport Menggunakan Finite State Machine

 
Finite State Machine (FSM) adalah sebuah metodologi perancangan sistem kontrol yang menggambarkan tingkah laku atau prinsip kerja sistem dengan menggunakan tiga hal berikut: State (Keadaan), Event (kejadian) dan action (aksi). Pada satu saat dalam periode waktu yang cukup signifikan, sistem akan berada pada salah satu state yang aktif. Sistem dapat beralih atau bertransisi menuju state lain jika mendapatkan masukan atau event tertentu, baik yang berasal dari perangkat luar atau komponen dalam sistemnya itu sendiri. Transisi keadaan ini umumnya juga disertai oleh aksi yang dilakukan oleh sistem ketika menanggapi masukan yang terjadi. Aksi yang dilakukan tersebut dapat berupa aksi yang sederhana atau melibatkan rangkaian proses yang relatif kompleks (Setiawan : 2006).

Diagram FSM

Diagram tersebut memperlihatkan FSM dengan dua buah state dan dua buah input serta empat buah aksi output yang berbeda : seperti terlihat pada gambar, ketika sistem mulai dihidupkan, sistem akan bertransisi menuju state0, pada keadaan ini sistem akan menghasilkan Action1 jika terjadi masukan Event0, sedangkan jika terjadi Event1 maka Action2 akan dieksekusi kemudian sistem selanjutnya bertransisi ke keadaan State1 dan seterusnya.

 

Secara formal FSM dinyatakan oleh 5 tupel atau M=(Q, ∑, δ, S, F),

(Utdirartama, 2001) dimana:

Q = himpunan state/kedudukan

∑ = himpunan symbol input/masukan/abjad

δ = fungsi transisi

S = state awal/ kedudukan awal (initial state), S Q

F = himpunan state akhir, F Q

3. Jenis-jenis FSM

FSM terdiri dari dua jenis, yaitu FSM ber-output dan FSM tidak ber-output. FSM tidak ber-output digunakan untuk pengenalan bahasa dalam komputer, dengan input yang dimasukkan akan diperoleh apakah input tersebut dikenal oleh bahasa komputer atau tidak. Salah satu penggunaan FSM tidak ber-output adalah program compiler, yaitu program untuk memeriksa apakah perintah yang digunakan pengguna benar atau salah. Sementara untuk FSM ber-output digunakan untuk merancang mesin atau sistem (Zen, 2008). Dan FSM yang akan digunakan dalam penelitian ini adalah FSM ber-output, dan untuk selanjutnya akan dituliskan dengan FSM saja.

Ada dua metode utama untuk memperlakukan FSM untuk menghasilkan output. Yaitu Moore Machine dan Mearly Machine yang dinamakan berdasarkan penemunya.


Kelebihan dan Kekurangan FSM

FSM memiliki beberapa kelebihan (Brownlee, 2010), diantaranya :

1. Sederhana, sehingga mudah diimplementasikan

2. Bisa diprediksi responnya

3. Komputasi ringan

4. Relatif fleksibel

5. Merupakan metode AI lama yang bisa digunakan pada berbagai sistem

6. Mudah ditransfer dari abstrak menjadi kode program

Selain memiliki banyak kelebihan, FSM juga mempunyai beberapa kelemahan (Brownlee, 2010), diantaranya :

1. Karena sifatnya bisa diprediksi, maka implementasi pada game kurang disukai

2. Implementasi pada sistem yang lebih besar lebih sulit karena pengaturan dan pemeliharaannya jadi kompleks

3. Sebaiknya hanya digunakan pada sistem dimana sifat sistem bisa didekomposisi menjadi state.

4. Kondisi untuk transisi state adalah tetap


Dari sudut pandang pengirim, pengiriman ulang adalah obatnya. Pengirim tidak dapat mengetahui tentang paket data yang hilang, paket ACK yang hilang atau jika paket data atau ACK tertunda. Dalam semua kasus, tindakan yang diambil sama: pengiriman ulang. Penerapan mekanisme pengiriman ulang berdasarkan waktu memerlukan timer penghitung mundur yang dapat menginterupsi pengirim setelah waktu yang diberikan habis. Dengan demikian, pengirim diharapkan mampu memulai timer setiap paket dikirimkan, entah paket baru maupun paket yang dikirimkan ulang. Pengirim juga diharapkan dapat merespon interupsi timer (melakukan tindakan yang tepat) dan menghentikan timer.


Gambar 1 menunjukkan FSM pengirim pada rdt3.0, sebuah protokol yang handal dalam mengirimkan data melalui saluran yang mudah korup bahkan sampai kehilangan paket.

 

Gambar 2 merupakan FSM penerima pada protokol rdt 3.0. Penerima harus menambahkan nomor urut paket yang disetujui oleh pesan ACK dengan memasukkan argumen ACK[0] atau ACK[1] dalam udt_send() di FSM penerima. Pada keadaan yang paling kiri, terdapat dua kondisi. Yaitu kondisi menerima paket korup dan kondisi menerima paket baik. Jika kondisi menerima paket korup terjadi, maka akan dikirimkan respon udt_send() dan dikembalikan ke alur sebelumnya. Namun jika yang terjadi justru sebaliknya, maka tetap dikirimkan udt_send() lalu diteruskan ke alur berikutnya dengan kode deliver_data().





Referensi 

Share
Disclaimer: Gambar, artikel ataupun video yang ada di web ini terkadang berasal dari berbagai sumber media lain. Hak Cipta sepenuhnya dipegang oleh sumber tersebut. Jika ada masalah terkait hal ini, Anda dapat menghubungi kami disini.

LATEST ARTICLES

Posting Komentar