Remote Procedure Call (RPC) adalah sebuah metode yang memungkinkan kita
untuk mengakses sebuah prosedur yang berada di komputer lain. Untuk dapat
melakukan ini sebuah server harus menyediakan layanan remote
procedure. Pendekatan yang dilakukan adalah sebuah server membuka socket,
lalu menunggu client yang meminta prosedur yang disediakan
oleh server. Bila client tidak tahu harus menghubungi port
yang mana, client bisa me-request kepada sebuah matchmaker pada
sebuah RPC port yang tetap. Matchmaker akan memberikan port apa
yang digunakan oleh prosedur yang diminta client.
RPC
masih menggunakan cara primitif dalam pemrograman, yaitu menggunakan paradigm procedural
programming. Hal itu membuat kita sulit ketika menyediakan banyak remote
procedure. RPC menggunakan socket untuk berkomunikasi dengan
proses lainnya. Pada sistem seperti SUN, RPC secara default sudah
ter- install kedalam sistemnya, biasanya RPC ini digunakan untuk
administrasi sistem. Sehingga seorang administrator jaringan dapat mengakses
sistemnya dan mengelola sistemnya dari mana saja, selama sistemnya terhubung ke
jaringan.
RPC
dirancang
sebagai suatu metoda yang powerfull, cepat, efisien, dan aman untuk komunikasi
dan sinkronisasi antara client dan server sehingga lebih mudah memungkinkan
pertukaran data pada proses yang berbeda. Proses bisa berada di komputer yang
sama, LAN atau Internet
Kelebihan RPC
- Relatif mudah digunakan :
Pemanggilan remote procedure tidak jauh berbeda dibandingkan pemanggilan
local procedure. Sehingga pemrogram dapat berkonsentrasi pada software
logic, tidak perlu memikirkan low level details seperti socket,
marshalling & unmarshalling.
- Robust (Sempurna): Sejak th
1980-an RPC telah banyak digunakan dlm pengembangan mission-critical
application yg memerlukan scalability, fault tolerance, & reliability.
Kekurangan
RPC
- Tidak fleksibel terhadap
perubahan: hubungan anatara client dan server bersifat static
- Berdasarkan prosedural/structured programming yang sudah
ketinggalan jaman dibandingkan OOP.
Protokol
Message RPC
Protokol Message RPC didefinisikan dengan menggunakan
deskripsi data eXternal Data Representation ( XDR ) yang meliputi struktur,
enumerasi dan union. Pembahasan lebih
lanjut akan diterangkan pada bab berikutnya mengenai implementasi RPC.
Protokol
Message ini membutuhkan faktor-faktor pendukung sebagai berikut:
1. Spesifikasi yang unik untuk tiap prosedur call
2. Respon message yang sesuai untuk tiap message yang diminta
3. Otentifikasi klien untuk tiap layanan dan sebaliknya
Protokol
Message RPC memiliki dua ( 2 ) struktur yang berbeda, yaitu call message dan
reply message. Tiap klien yang akan melakukan RPC pada suatu server di jaringan
akan menerima balasan (reply) berupa hasil dari eksekusi prosedur tersebut.
Dengan menggunakan spesifikasi yang unik untuk tiap prosedure remote, maka RPC
dapat mencocokkan message balasan untuk tiap call message yang diminta klien.
Call Message
Tiap call message pada RPC mengandung nilai-nilai unsigned integer yang
digunakan untuk mengidentifikasi prosedur remote yang diminta. Nilai-nilai ini
adalah :
1. Nomor Program
2. Nomor Versi dari Program
3. Nomor Prosedur
Reply Message
Reply message yang dikirimkan oleh server jaringan bervariasi tergantung apakah
call messages yang diminta klien diterima atau ditolak. Reply message mengandung
informasi yang digunakan untuk membedakan kondisi-kondisi yang diminta sesuai
dengan call messages. Informasi ini antara lain :
1.
RPM mengeksekusi call message dengan
sukses
2.
Implementasi remote tidak sesuai
dengan protokol yang digunakan. Versi yang lebih
rendah atau tinggi akan ditolak.
3.
Program remote tidak tersedia pada
sistem remote
4.
Program remote tidak mendukung versi
yang diminta klien
5.
Nomor prosedur yang diminta tidak
ada.
Fitur dalam RPC
·
Batching Calls
Fitur Batching calls mengijinkan klien untuk mengirim message calls ke server
dalam jumlah besar secara sequence ( berurutan ). Batching menggunakan protokol
streaming byte seperti TCP / IP sebagai mediumnya. Pada saat melakukan
batching, klien tidak menunggu server untuk memberikan reply terhadap tiap
messages yang dikirim, begitu pula dengan server yang tidak pernah mengirimkan
messages reply. Fitur inilah yang banyak digunakan klien, karena arsitektur RPC
didesain agar pada tiap call message yang dikirimkan oleh klien harus ada
proses menunggu balasan dari server. Oleh karena itu maka pihak klien harus
dapat mengatasi error yang kemungkinan terjadi karena pihak klien tidak akan
menerima peringatan apabila terjadi error pada message yang dikirim.
·
Broadcasting Calls
Fitur Broadcasting mengijinkan klien untuk mengirimkan paket data ke jaringan
dan menunggu balasan dari network. FItur ini menggunakan protokol yang
berbasiskan paket data seperti UDP/IP sebagai mediumnya. Broadcast RPC
membutuhkan layanan port mapper RPC untuk mengimplementasikan fungsinya.
·
Callback Procedures
Fitur Callback Procedures mengijinkan server untuk bertindak sebagai klien dan
melakukan RPC callback ke proses yang dijalankan oleh klien.
·
Menggunakan select Subrutin
Fitur ini akan memeriksa deskripsi dari suatu file dan messages dalam antrian
untuk melihat apakah mereka siap untuk dibaca (diterima) atau ditulis
(dikirim), atau mereka dalam kondisi ditahan sementara. Prosedur ini
mengijinkan server untuk menginterupsi suatu aktivitas, memeriksa datanya, dan
kemudian melanjutkan proses aktivitas tersebut.
·
Otentifikasi RPC
Proses
otentifikasi adalah proses yang digunakan untuk mengidentifikasi server dan
klien pada RPC. Untuk setiap prosedur remote yang dilakukan protokol RPC
menyediakan slot yang dipakai sebagai parameter otentifikasi yang berfungsi
agar pemanggil (caller) dapat, memberikan identitasnya kepada server. Parameter
otentifikasi ini dibuat di paket klien. Otentifikasi RPC terdiri atas beberapa
bagian. Berikut ini adalah bagian-bagian pada otentifikasi RPC :
- Protokol Otentifikasi RPC
Protokol Otentifikasi RPC disediakan sebagai bagian dari protokol RPC.
Untuk setiap prosedur remote, semuanya diotentifikasi oleh paket RPC pada
server. Parameter yang digunakan adalah respon verifier. Sedangkan pada
pihak klien, setiap paket RPC diberikan parameter otentifikasi dan
parameter yang digunakan adalah credential dan
verifier.
- Otentifikasi NULL
Otentifikasi NULL digunakan pada sistem dimana pemanggil (caller) RPC
tidak mengetahui identitasnya sendiri dan server tidak membutuhkan
identitas pemanggil.
- Otentifikasi UNIX
Otentifikasi Unix digunakan pada prosedur remote di sistem UNIX. Jenis
otentifikasi ini dibagi dua (2) yaitu otentifikasi pada sisi klien dan
otentifiksi pada sisi server. Pada sisi klien, otentifikasi ini akan membuat
otentifikasi handle dengan AIX permissions agar dapat berasosiasi dengan
parameter credentials pada sistem UNIX. Sedangkan pada sisi server, server
harus dapat menentukan tipe otentifikasi yang diberikan oleh pemanggil
RPC. Penentuan dukungan terhadap tipe otentifikasi akan memberikan reply
yang berbeda.
- Otentifikasi Data Encryption Standard ( DES )
Otentifikasi DES membutuhkan keyserv daemon yang harus berjalan baik di
sisi server maupun klien. Tiap pengguna pada sistem ini harus memiliki
kunci public ( public key yang disahkan pada database kunci publik oleh
Administrator jaringan tersebut.
- Protokol Otentifikasi DES
Protokol Otentifikasi DES meliputi protokol penanganan DES pada proses
otentifikasi RPC. Protokol ini mencakup 64-bit blok data DES yang terenkripsi
dan menentukan panjang maksimum untuk user name pada jaringan yang
digunakan.
- Enkripsi Diffie-Hellman
Enkripsi Diffie-Hellman digunakan pada pembuatan kunci public pada
otentifikasi DES dengan menggunakan 192-bit kunci. Enkripsi ini memiliki
dua buah variable onstan, yaitu BASE dan MODULUS yang digunakan pada
protokol otentifikasi DES. PC berhubungan hanya dengan proses
otentifikasi, tidak dengan kontrol akses terhadap ervices/layanan
individual yang diberikan. Tiap layanan mengimplementasikan eraturan
mengenai kontrol akses masing-masing.
Prinsip
Dasar RPC
Skema RPC ini dilakukan juga pada
proses-proses yang running di komputer berlainan
Sebelum
mekanisme RPC digunakan, data harus di-packaging ke dalam format transimisi.
Langkah ini dinamakan marshalling. Proxy bertanggung jawab untuk marshalling
data, kemudian mengirimkan data dan meminta instans dari komponen (remote).
Stub menerima request, unmarshall data, dan memanggil method yang diminta.
Kemudian proses mengembalikan nilai yang diinginkan (Stub adalah kode untuk
mengkonversi parameter yang dipassing saat RPC berjalan)
Langkah-langkah dalam RPC
1. Prosedur client memanggil client
stub
2. Client stub membuat pesan dan memanggil OS
client
3. OS client mengirim pesan ke OS server
4. OS server memberikan pesan ke server stub
5. Server stub meng-unpack parameter-parameter
untuk memanggil server
6. Server mengerjakan operasi, dan mengembalikan
hasilnya ke server stub
7. Server stub mem-pack hasil tsb dan memanggil
OS server
8. OS server mengirim pesan (hasil) ke OS client
9. OS client memberikan pesan tersebut ke client
stub
10. Client stub meng-unpack hasil dan
mengembalikan hasil tersebut ke Client
http://deris.unsri.ac.id/materi/sist_terd/bab2-RPC.pdf