Kata Pengantar:
Saya telah memutuskan bahwa tugas akhir saya akan bersifat open-source dengan alasan edukasi dan proses pembelajaran. Oleh karena itu, saya mempublikasikan sebagian dari draft tugas akhir saya di blog ini. Insya Allah, jika saya berhasil menjadi sarjana, saya akan mempublikasikan buku tugas akhir saya juga. Semoga tulisan ini bisa bermanfaat. Dan, karena bersifat open-source, saya harap ada masukan dari pembaca untuk memperbaiki tulisan ini, sehingga tugas akhir saya menjadi lebih baik lagi.

Link terkait: IPv6/IPv4 Translator dengan Faith

Januari 2008, Adham Somantrie.

Sistem transport relay translator FAITH ini menggunakan faithd sebagai aplikasi translator daemon dan sebuah pseudo-interface: faith0. Paket paket IPv6 yang akan ditranslasikan menjadi paket IPv4 harus diterima oleh pseudo-interface faith0, untuk itu harus dikonfigurasikan packet routing agar paket-paket IPv6 tersebut diteruskan ke interface faith0.

Pseudo-interface faith0 adalah interface faith yang bekerja untuk menangkap trafik TCP IPv6. Paket paket ini kemudian ditangani oleh aplikasi translator, yakni faithd. Faithd akan mentranslasikan paket-paket tersebut dan akan diteruskan ke tujuan melalui interface yang mampu mengirimkan paket IPv4. faithd akan menggunakan alamat IPv4 yang telah dipetakan ke alamat IPv6 sebagai alamat tujuan paket IPv4 tersebut.

Faithd akan mentranslasikan paket paket IPv6 yang tertangkap oleh interface faith0 yang memiliki prefiks alamat IP tujuan yang sesuai dengan yang telah dikonfigurasikan. Pada skenario tugas akhir ini prefiksnya adalah 3ffe:ffff:eeee::. Jika ada paket yang memiliki alamat IP tujuan dengan prefiks tersebut, maka faithd akan mentranslasikan header IPv6 paket tersebut menjadi header IPv4. Proses ini dinamakan header conversion. Alamat IP sumber paket akan digantikan dengan alamat IPv4 gateway. Sementara alamat IP tujuan akan digantikan dengan 32 bit terakhir dari alamat IPv6 tujuan paket.

Tidak seperti IPv6, IPv4 memiliki header checksum untuk memeriksa integritas paket sesuai dengan RFC 791. Dalam proses translasi, faithd menghitung checksum dari header paket yang telah ditranslasikan.


Gambar 1: Paket dari klien ke gateway


Gambar 2: Paket dari gateway ke server

Untuk segmen di lapis transport, interface faith0 hanya dapat menangkap segmen dengan protokol TCP. Sehingga metode ini tidak dapat digunakan untuk mentranslasikan aplikasi yang menggunakan protokol UDP. Umumnya aplikasi yang mengirim data secara realtime seperti VoIP ataupun aliran video (video streaming) menggunakan protokol RTP yang digabungkan bersama protokol UDP.

Karena IPv4 yang digunakan untuk mewakili komputer-komputer pada jaringan IPv6 hanya ada satu alamat, faith juga melakukan proses multiplexing pada lapis transport seperti overloading NAT (Network Address Translation). Selain merubah alamat IP sumber, faith juga merubah alamat port sumber. Faith menyimpan alamat IP dan alamat port sebelum dan sesudah translasi di address pool untuk mengembalikan alamat tersebut jika ada balasan dari komputer tujuan. Untuk alamat port tujuan, faith tidak melakukan perubahan. Hal ini dilakukan agar lebih dari satu komputer pada jaringan IPv6 dapat mengakses layanan yang sama dari sebuah server di jaringan IPv4 tanpa ada segmen-segmen yang tertukar walaupun komputer-komputer pada jaringan IPv6 tersebut menggunakan alamat port yang sama.

Protokol TCP memiliki checksum untuk menjaga integritas data yang bersumber dari data header dan data payload. Jika ada perubahan pada header maupun payload selama proses translasi, maka checksum ini perlu dikalkulasikan ulang agar penerima dapat memproses data dengan baik.


Gambar 3: Segmen dari klien ke gateway


Gambar 4: Segmen dari gateway ke server

Aplikasi faithd ini juga bekerja sama dengan aplikasi lain dan berfungsi sebagai Application Layer Gateway (ALG). Dalam skenario tugas akhir ini, faithd bekerja sama dengan aplikasi ftpd dan berfungsi sebagai ALG untuk mentranslasikan protokol di lapis aplikasi, yakni protokol FTP. ALG ini berfungsi untuk mentranslasikan protokol lapis aplikasi jika protokol tersebut berbeda syntax untuk jaringan yang berbeda, atau protokol lapis aplikasi tersebut membawa data berupa alamat IP atau alamat port.

Berikut adalah contoh translasi di lapis aplikasi. Perintah dari klien kepada server untuk meminta Passive Mode FTP adalah "PASV" untuk IPv4. Tetapi perintah yang sama untuk jaringan IPv6 adalah "EPSV", sesuai dengan RFC 2428.


Gambar 5: Data lapis aplikasi dari klien ke gateway


Gambar 6: Data lapis aplikasi dari gateway ke server