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”.
Sumber : http://belajarjaringanringan.blogspot.com/2013/12/remote-procedure-call.html
0 komentar:
Posting Komentar