Selasa, 17 November 2015

Implementasi RPC




Pada bagian ini akan dibahas, bahasa yang digunakan pada RPC, port mapper untuk prosedur RPC, pemodelan RPC pada layer, dan cara kerja RPC. 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 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.

Bahasa RPC 

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 konstan dibutuhkan. 
7. Program 
Program RPC dideklarasikan dengan syntax berikut secara berurutan: program definiton, 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.

Lapisan RPC

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 layer ini yang berhubungan langsung dengan informasi yang banyak dibutuhkan.

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 user hanya melakukan proses remote pada suatu mesin. Layer ini merupakan layer yang digunakan untuk semua program RPC.

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.

Model dan Cara Kerja RPC
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 prosedurremote ini memiliki cara kerja yang sedikit banyak mirip, namun berbeda dengan prosedurcall biasa. Berikut adalah gambar cara kerja dari RPC.

  1. Client procedure calls client stub in normal way. 
  2. Client's OS sends message to remote OS. 
  3. Remote OS gives message to server stub. 
  4. Server stub unpacks parameters, calls server. 
  5. Server does work, returns result to the stub. 
  6. Server stub packs it in message, calls local OS. 
  7. Server's OS sends message to client's OS. 
  8. Client's OS gives message to client stub. 
  9. 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 rinci mengenai proses yang terjadi pada klien dan server dalam eksekusi suatu prosedur RPC.

Berikut penjelasan dari diagram diatas: 
  • Klien memanggil prosedur stub lokal. Prosedur Stub akan memberikan parameter dalam suatu paket yang akan dikirim ke jaringan. Proses ini disebut sebagai marshalling. 
  • Fungsi Network pada O/S (Operating System - Sistem Operasi) akan dipanggil oleh stub untuk mengirim suatu message. 
  • Kemudian Kernel ini akan mengirim message ke sistem remote. Kondisi ini dapat berupa connectionless atau connection-oriented. 
  • Stub pada sisi server akan melakukan proses unmarshals pada paket yang dikirim oleh network. 
  • Stub pada server kemudian mengeksekusi prosedur panggilan lokal. 
  • Jika eksekusi prosedur ini telah selesai, maka eksekusi diberikan kembali ke stub pada server. 
  • Stub server akan melakukan proses marshals lagi dan mengirimkan message nilai balikan (hasilnya) kembali ke jaringan. 
  • Message ini akan dikirim kembali ke klien. 
  • Stub klien akan membaca message ini dengan menggunakan fungsi pada jaringan. 
  • Proses unmarshalled kemudian dilakukan pada message ini dan nilai balikan akan diambil untuk kemudian diproses pada proses lokal. 





Tidak ada komentar:

Posting Komentar