Remote
Prosedure Call
Gagasan tentang RPC (Remote Procedure Call) pertama
kali ditemukan pada tahun 1976. Perusahaan yang pertama kali menggunakan RPC
adalah Xerox pada tahun 1981. RPC di implementasikan pertama kali di sistem
operasi Unix, Sun's RPC (sekarang disebut ONC RPC). ONC RPC masih banyak
digunakan saat ini pada beberapa platform. Implementasi Unix yang lain
digunakan oleh Apollo Computer Network Computing System(NCS). NCS kemudian
digunakan sebagai dasar fondasi DCE/RPC di OSF Distributed Computing
Environment (DCE). Satu dekade kemudian diadopsi oleh perusahaan Microsoft
DCE/RP, Microsoft RPC (MSRPC) sebagai dasar mekanisme mereka, dan berjalan pada
DCOM (Distributed Object Component Model). Sekitar waktu yang sama pertengahan
tahun 90-an, Xerox PARC's ILU, dan Object Management Group CORBA, menawarkan
paradigma RPC yang lain berdasarkan objek terdistribusi dengan mekanisme yang
menggunakan metode warisan.
A. Definisi
Remote Prosedure Call
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 dilakuan 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
adalah suatu protokol
yang menyediakan suatu
mekanisme komunikasi antar proses
yang mengijinkan suatu
program untuk berjalan pada
suatu komputer tanpa
terasa adanya eksekusi
kode pada sistem
yang jauh (remote system).
RPC mengasumsi keberadaan
dari low-level protokol transportasi seperti
TCP atau UDP
untuk membawa pesan
data dalam komunikasi suatu
program. Protokol RPC
dibangun diatas protokol
eXternal Data Representation (XDR),
yang merupakan standar
dari representasi data dalam komunikasi remote. Protokol XDR
mengubah parameter dan hasil dari tiap servis RPC yang disediakan.
Protokol
RPC mengijinkan pengguna
(users) untuk bekerja
dengan prosedur remote sebagaimana
bekerja dengan prosedur
lokal. Prosedur panggilan remote
(remote procedure calls)
didefinisikan melalui rutin
yang terkandung didalam protokol
RPC. Tiap message
dari panggilan akan disesuaikan dengan message balikan.
Protokol RPC sendiri sebenarnya adalah suatu
protokol untuk ”meneruskan
pesan” yang mengimplemntasikan protokol non-RPC
lain seperti panggilan
remote batching dan
broadcasting. Protokol ini juga mendukung adanya prosedur callback dan
select subroutine pada sisi server.
RPC masih menggunakan cara primitif dalam
pemrograman, yaitu menggunakan paradigma 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.
B. Prinsip
Remote Prosedure Call
Client
adalah komputer atau proses yang mengakses suatu layanan, resources dari proses
atau komputer pada suatu jaringan. Server adalah komputer yang menyediakan
servis/layanan dan resources, dan yang mengimplementasikan servis jaringan.
Tiap servis pada network adalah susunan dari program remote, dan tiap program
remote mengimplementasi prosedur remote. Semua prosedur berikut parameternya
dan hasilnya didokumentasi secara spesifik pada protokol suatu program.
C. Fitur
Dalam Remote Prosedure Call
RPC
memiliki fitur-fitur sebagai berikut: batching calls, broadcasting calls,
callback procedures dan using the select subroutine.
1.
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
replyterhadap tiap messagesyang 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 messageyang 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.
2.
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. BroadcastRPC membutuhkan layanan port mapperRPC untuk mengimplementasikan
fungsinya.
3.
Callback
Procedures
Fitur Callback Procedures mengijinkan server untuk
bertindak sebagai klien dan melakukan pemanggilan RPC kembali ke proses yang
dijalankan oleh klien.
4.
Select
Subroutine.
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.
D. Otentifikasi
Remote Prosedure Call
Proses
otentifikasi adalah proses yang digunakan untuk mengidentifikasi server dan
klien pada RPC. (Newmarch, 1995). Untuk setiap prosedur remoteyang 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:
1.
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.
2.
Otentifikasi
NULL
Otentifikasi NULL digunakan pada sistem
dimana pemanggil (caller) RPC tidak mengetahui identitasnya sendiri dan server
tidak membutuhkan identitas pemanggil.
3.
Otentifikasi
Data Encryption Standard(DES)
Otentifikasi DES membutuhkan keyserv
daemonyang harus berjalan baik di sisi server maupun klien. Tiap pengguna pada
sistem ini harus memiliki kunci publik (public key) yang disahkan pada database
kunci publik oleh Administrator jaringan tersebut.
4.
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
username pada jaringan yang digunakan.
5.
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.
6.
Enkripsi
Diffie-Hellman
Enkripsi Diffie-Hellman digunakan pada pembuatan
kunci publik pada otentifikasi DES dengan menggunakan 192-bit kunci. Enkripsi
ini memiliki dua buah variabel konstan, yaitu BASE dan MODULUS yang digunakan
pada protokol otentifikasi DES.
RPC
hanya berhubungan dengan proses otentifikasi, tidak dengan kontrol akses
terhadap servis/layanan individual yang diberikan. Tiap layanan
mengimplementasikan peraturan mengenai kontrol akses masing-masing. Subsistem
otentifikasi pada paket RPC bersifat open-ended, artinya beberapa otentifikasi
dapat diasosiasikan pada RPC klien.
E. Kelebihan
Dan Kekurangan Remote Prosedure Call
Kelebihan RPC
·
Relatif
mudah digunakan :
Pemanggilan
remote procedure tidak jauh berbeda dibandingkan pemanggilan local procedure.
Sehingga pemrogramdapat berkonsentrasi pada software logic, tidak
perlumemikirkan low level details seperti socket, marshalling&
unmarshalling.
·
Robust
(Sempurna):
Sejak
th 1980-an RPC telah banyakdigunakan dlm pengembangan missioncritical
application yg memerlukan scalability, fault tolerance, & reliability.
Kekurangan RPC
·
Tidak
fleksibel terhadap perubahan:
-
Static
relationship between client & server at run-time.
·
Berdasarkan
prosedural/structured programming yang sudah ketinggalan jaman
dibandingkan
OOP.
F. Lapisan
Remote Prosedure Call
Bagian
antar-muka (interface) dari RPC dibagi menjadi 3 lapisan/bagian (layer) yaitu:
1. Lapisan Tertinggi (Highest Layer)
Lapisan
ini merupakan lapisan yang bersentuhan langsung dengan sistem operasi, mesin
dan jaringan tempat RPC berjalan. Layer ini umumnya banyak digunakan pada
pembuatan dan pemprograman RPC karena penggunaan layer ini sama saja dengan penggunaan RPC.
Banyak servis/layanan pada layerini yang berhubungan langsung dengan informasi
yang banyak dibutuhkan. Berikut ini jenis-jenis servis lainnya yang banyak
digunakan pada layer ini
2. Lapisan Menengah (Intermediate Layer)
Lapisan
ini merupakan implementasi dari RPC sesungguhnya. Pada layer ini, seorang user
tidak harus berhubungan dengan soket, sistem operasi atau implementasi lo-level
lainnya. Pada layer ini, seorang
userhanya melakukan proses remotepada suatu mesin. Layer ini merupakan
layer yang digunakan untuk semua program RPC.
Pada layer
ini terdapat rutin-rutin
mengenai ”registerrpc()”, ”callrpc”, dan scv
run. Dua rutin
yang disebut pertama
adalah rutin-rutin yang fundamental. ”registerrpc() digunakan
untuk memperoleh nomor unik dari tiap
prosedur identifikasi dalam
tiap sistem. Sedangkan
”callrpc()” digunakan untuk mengeksekusi
prosedur remote. Implementasi
layer diatasnya dilakukan pada layer ini
3. Lapisan Terendah (Lowest Layer)
Lapisan ini merupakan lapisan yang mengatur tentang
soket dan sistem call. Lapisan ini tidak memberikan data dan servis secara
detail untuk dapat digunakan. Umumnya program yang dibuat untuk lapisan ini
merupakan program yang paling efisien. Permasalahan yang timbul pada sistem ini
berkaitan dengan penyesuaian implementasi RPC untuk sistem operasi yang
berbeda.
G. Implementasi
Remote Prosedure Call
a. Bahasa
Remote Prosedure Call
Bahasa RPC
(RPC Language -
RPCL) merupakan bahasa
yang dikembangkan dari bahasa
XDR. Bahasa RPC
memiliki kemiripan dengan bahasa
XDR namun dengan
beberapa penambahan yaitu
program definisi.
Implementasi layanan protokol
dan rutin menggunakan
command rpcgen yang
berkorespondensi dengan bahasa pemprograman C. Deskripsi dari bahasa RPC
meliputi :
1. Definition
File dengan
bahasa RPC memiliki
beberapa definisi, diantaranya adalah enum, struct, union,
typedef, const, dan program.
2. Structure
Struktur pada bahasa
RPC dideklarasikan seperti
pada pendeklarasian struktur dalam bahasa C
3. Union
Union
pada bahasa RPC berbeda dengan bahasa C. Kemiripan lebih ditunjukkan dengan
variasi pada bahasa Pascal
4. Enumeration
Enumerasi pada
bahasa ini memiliki
syntax yang sama
dengan bahasa C.
5. TypeDef
Tipe Definisi
( Typedef ) pada bahasa
ini memiliki syntax
yang
sama
dengan typedef pada bahasa C.
6. Constant
Constant pada
bahasa ini dapat
digunakan jika variabel
integer konstant dibutuhkan.
7. Programs
Program RPC
dideklarasikan dengan syntax
berikut secara berurutan :
programdefiniton,
version-list, version, procedure-list, procedure.
8. Declarations
Dalam bahasa
ini, terdapat empat
jenis tipe deklarasi
yaitu : simple
declarations,
fixed-length array declarations, variable -length declaration, dan
pointer
declaration
b. Port
Mapper
Port
adalah kanal komunikasi diantara klien dan server. Port-port komunikasi ini
dibedakan berdasarkan nomor yang dimilikinya dengan fungsi masing-masing. Namun
nomor-nomor port ini, terutama yang memberikan layanan RPC, tidak diberikan
pada jaringan transport. Jaringan transport hanya menyediakan layanan
pemprosesan messagedi dalam jaringan. (Spangler, 2004).
Untuk
mengatasi hal ini, maka programpada komputer klien harus mampu untuk mencari
nomor portuntuk tiap program di server yang hendak digunakan. Protokol port
mapper adalah suatu layanan pada jaringan yang dapat mengatasi masalah ini.
Protokol ini memberikan hak pada klien untuk mencari nomor port untuk semua
program remote yang disediakan oleh
server. Dengan demikian maka implementasi protokol ini pada suatu program port
mapperakan memetakan tiap-tiap program RPC dan nomor versinya dengan
nomor-nomor port yang spesifik.
c. Meregister
Port
Port
Mapper terletak pada nomor port111 pada setiap mesin (hostmaupun server) dan
merupakan satu-satunya layanan jaringan yang mempunyai portyang khusus dan
tetap. Sedangkan untuk jenis layanan jaringan lainnya, nomor port-nya dapat
statis atau berubah-ubah asalkan kesemuanya terdaftar pada port mapper.
Penempatan nomor portuntuk tiap program remoteke dalam port mapper akan
mengotomatisasi administrasi nomor-nomor port. Hasilnya akan disimpan dalam
satu file dimana file ini akan diduplikat ke setiap klien. Sehingga akan
terjadi proses pembaruan data (update) setiap kali ada program remotebaru yang
disediakan oleh jaringan. Salah satu cara alternatif agar sistem tidak harus
selalu meng-update file mapper-nya adalah dengan menempatkan hasil pemetaan
portprogram remote pada suatu file Network File System(NFS) yang di-sharing.
Namun hal ini membawa masalah apabila server tidak dapat berfungsi, maka
seluruh jaringan juga tidak dapat menggunakan fungsi ini.
Pemetaan
port program yang disimpan pada suatu port mapper di server disebut dengan
portmap. Port mapperini akan dijalankan secara otomatis tiap kali mesin server
dijalankan. Lalu baik program server maupun klien akan memanggil prosedur port
mapper. Kemudian sebagai bagian dariproses inisialisasi, program server akan
memanggil port mapperpada hostuntuk membuat entri pada portmap. Setelah itu,
program server akan meng-updateentri pada portmap, sedangkan program klien akan
memanggil query dari entri portmap ini. Untuk mencari nomor port yang
diinginkan, program klien kemudian mengirimkan RPC call messageke port mapper
pada server. Apabila proses ini berhasil (server mendukung remoteprogram yang
diminta), port mapperserver akan mengirimkan nomor portyang sesuai pada RPC
reply message. Kemudian proses remote dapat dilakukan dengan menggunakan nomor
porttersebut. Proses ini akan selalu dijalankan setiap kali ada permintaan
remote program dari klien ke server. Namun untuk meminimalisasi pemanggilan
port mapper, pada sisi klien disediakan cacheuntuk menyimpan nomor-nomor port yang
sering digunakan.
d. Prosedur
Port Mapper
Program
port mappermendukung dua protokol, yaitu UDPdan TCP/IP. Program ini terhubung
pada port 111 untuk kedua protokol ini. Berikut ini adalah prosedurprosedur
yang digunakan program port mapperpada kedua protokol ini:
ร
NULL
Prosedur ini tidak berfungsi, prosedur ini tidak memberikan parameter dan juga
tidak memberikan hasil.
ร
SET
Prosedur ini akan meregister program pada
port mapper dengan memberikan parameter sebagai berikut: program
number(prog), version number(vers), transport protocol number(prot), dan nomor
portyang diminta untuk layanan ini. Hasil dari prosedur ini berupa Boolean True
atau Falseyang mengindikasikan sukses tidaknya proses mapping.
ร
UNSET
Prosedur ini digunakan untuk me-unregisterprogram pada port mappingjika program
remotetidak lagi digunakan. Parameter yang dibawa sama dengan prosedur SET
dikuranginomor protokol dan nomor port.
ร
GETPORT
Prosedur ini memberikan parameter berupa nomor program (prog), version
number(vers), dan transport protocol number(prot) untuk mendapatkan hasil
berupa nomor portuntuk program yang diminta.
ร
DUMP
Prosedur ini akan mencatat semua entri dalam database port mapper. Prosedur ini
tidak membutuhkan parameter dan memberikan hasil berupa (prog), (prot), (vers),
dan nomor port.
ร
CALLIT
Prosedur
ini digunakan untuk memanggil suatu program remotelain pada mesin yang sama
tanpa harus mengetahui nomor portdari program yang diminta.
H. Algoritma
Remote Prosedure Call
Input
pesan yang berisi parameter yang akan dikirim ke jaringan dari user
1.
Mengirim
pesan ke sistem remote (server)
2.
Server
membaca dan mengolah pesan
3.
Pesan
dikirim dari server ke client
4.
Client
menerima pesan
5.
Proses
diatas akan dilakukan berulang-ulang sesuai permintaan user dalam
pengeksekusian RPC dalam suatu remote sistem.
I.
Struktur Protokol Message RPC
1.
Call
Message
Dilakukan
oleh klien, dimana meminta server untuk mengeksekusi suatu prosedur. Terdapat nilai-nilai
unsigned integer yang digunakan untuk mengidentifikasi prosedur remote yang
diminta:
·
Nomor
Program
·
Nomor
Versi dari Program
·
Nomor
Prosedur
2.
Reply
Message
Dikirimkan
oleh server jaringan, bervariasi tergantung apakah call messages yang diminta
klien diterima atau ditolak. Mengandung informasi:
·
RPM
mengeksekusi call message dengan sukses
·
Implementasi
remote tidak sesuai dengan protokol yang digunakan (versi yang lebih tinggi
atau lebih rendah ditolak)
·
Program
remote tidak tersedia pada sistem remote
·
Program
remote tidak mendukung versi yang diminta klien
·
Nomor
prosedur yang diminta tidak ada
J.
Prinsip Kerja Remote Prosedure Call
Prosedur
call umumnya berkaitan dengan penggunaan stack, penyimpanan parameter yang
diterima dalam stack tersebut dan pengalokasian ruang untuk lokal variabel.
Namun selain itu ada yang disebut dengan Prosedur Call remote, yang berarti
pelaksanaan proses diatas namun pada suatu sistem lain yang berhubungan melalui
suatu jaringan. Sistem prosedur remoteini memiliki cara kerja yang sedikit
banyak mirip, namun berbeda dengan prosedur callbiasa. Berikut adalah gambar
cara kerja dari RPC.
1.
Client
procedure calls client stub in normal way.
2.
Client
stub builds message, calls local OS.
3.
Client's
OS sends message to remote OS.
4.
Remote
OS gives message to server stub.
5.
Server
stub unpacks parameters, calls server.
6.
Server
does work, returns result to the stub.
7.
Server
stub packs it in message, calls local OS.
8.
Server's
OS sends message to client's OS.
9.
Client's
OS gives message to client stub.
10. Stub unpacks result, returns to client.
Tiap
prosedur yang dipanggil dalam RPC, harus berkoneksi dengan server remote dengan
mengirimkan semua parameter yang dibutuhkan, menunggu balasan dari server dan
melakukan proses kemudian selesai. Proses di atas disebut juga dengan stub pada
sisi klien. Sedangkan Stub pada sisi server adalah proses menunggu tiap message
yang berisi permintaan mengenai prosedur tertentu. (Newmarch, 1995). Server harus membaca tiap parameter
yang diberikan, kemudian memberikan prosedur lokal yang sesuai dengan
permintaan dan parameter. Kemudian setelah eksekusi, server harus mengirimkan
hasil kepada pihak pemanggil proses.
Berikut
ini adalah diagram yang akan menjelaskan secara rince mengenai proses yang
terjadi pada klien dan server dalam eksekusi suatu prosedur RPC :
Berikut
penjelasan dari diagram diatas :
1.
Klien memanggil
prosedur stub lokal.
Prosedur Stub akan
memberikan parameter dalam suatu
paket yang akan
dikirim ke jaringan.
Proses ini disebut sebagai
marshalling.
2.
Fungsi Network
pada O/S (Operating
system - Sistem
Operasi) akan dipanggil oleh stub
untuk mengirim suatu message.
3.
Kemudian Kernel
ini akan mengirim
message ke sistem
remote. Kondisi ini dapat berupa
connectionless atau connection-oriented.
4.
Stub pada
sisi server akan
melakukan proses unmarshals
pada paket yang dikirim pada network.
5.
Stub
pada server kemudian mengeksekusi prosedur panggilan lokal.
6.
Jika
eksekusi prosedur ini telah selesai,
maka eksekusi diberikan
kembali ke stub pada server.
7.
Stub server
akan melakukan proses
marshals lagi dan
mengirimkan message nilai balikan ( hasilnya ) kembali ke jaringan.
8.
Message
ini akan dikirim kembali ke klien.
9.
Stub
klien akan membaca message ini dengan menggunakan fungsi pada jaringan.
10. Proses
unmarshalled kemudian dilakukan
pada message ini
dan nilai balikan akan diambil
untuk kemudian diproses pada proses lokal.
11. Proses
diatas akan dilakukan
berulang-ulang (rekursif) dalam pengeksekusian RPC dalam suatu remote
sistem.
K. Remote Prosedure Call
L. Study
Contoh studi
kasus RPC yaitu
pada jasa penge-print-an di
rental pengetikan yang di
dalamnya terdapat 1
komputer server, beberapa komputer client
dan sebuah printer
yang hanya terhubung
dengan server. User dari
computer client ingin
mencetak data dari
komputernya. Biasanya user memindah
data dengan bantuan
device external seperti
disket, flash disk, hard
disk, atau cd-rw.
Namun dengan RPC
hal tersebut akan
menjadi lebih efisien.
Solusinya adalah :
Dengan RPC,
untuk mencetak data
dari computer client,
computer client mengirim pesan
“cetak” kepada computer server. Kemudian computer server menerima perintah
tersebut dan kemudian
menjalankan perintah mencetak data. Setelah itu
server mengirimkan pesan
pada client berupa
informasi “file telah dicetak”.
permisi gan, saya ada sedikit tulisan mengenai protokol websocket dalam beberapa bahasa pemrograman berikut: http://datacomlink.blogspot.co.id/2015/11/implementasi-server-websocket-rfc-6455.html ditunggu feedback-nya ya gan, semoga menambah wawasan bersama.. terima kasih gan..
ReplyDelete