Selasa, 26 Juni 2012

Implementasi IPv6 pada OS LINUX

Tentu saja, sistem operasi LINUX telah support IPv6. Sebut saja RedHat, PLD, SUse, Mandrake dan Debian. Kernel sebagai bagian inti OS Linux.

Kita dapat mengetik perintah dibawah ini untuk mengecek apakah Kernel kita sudah mendukung IPv6:
# test -f /prot/net/if_inet6 echo "IPv6 sudah siap"
atau kita dapat melihat apakah pada direktori/proc sudah terdapat file: 
/proc/net/if_inet6


Jika, melakukan kedua prosedur diatas, masih juga mengalami kegagalan,. maka kemungkinan yang ada adalah IPv6 masih berbentuk modul dan perlu dipanggil terlebih dahulu. Nah, pemanggilan modul IPv6 dapat dilakukan dengan cara: "modprobe ipv6". Apabila perintah tersebut sukses dieksekusi, maka modul IPv6 akan tampak di daftar modul kernel.


Untuk mengecek apakah modul IPv6 sudah terpanggil dapat dengan cara:
# modprobe ipv6
# 1smod | grep -w 'ipv6' && echo "IPv6 modul sukses"


Apabila tampil pernyataan "sukses" di monitor anda, ini berarti IPv6 sudah siap.


Untuk dapat meload kernel modul IPv6 secara otomatis dapat dilakukan dengan menambahkan konfigurasi di file /etc/modules.conf, berupa:
/etc/modules.conf
alias net-pf-10 ipv6 #automatically load IPv6 module on demand


Apabila prosedur-prosedur diatas masih belum berhasil, berarti dapat dipastikan bahwa kernel mesin OS anda masih belum mendukung IPv6. Ini berarti memerlukan kompilasi ulang kernel. Kompilasi ulang kernel dapat dilakukan dengan:
1. Mengunduh source kernel dari http://.kernel.org versi stable.
2. Extrak file kernel yang diunduh tersebut di direktori /usr/src dengan perintah:
# tar -jxvf Linux-2.4.18.tar.bz2 -C /usr/srt
3. Jalankan "make menuconfig" untuk memulai konfigurasi atas kernel.
4. Konfigurasi yang perlu diperhatikan untuk dapat mendukung IPv6 diantaranya adalah:

CONFIG_EXPERIMENTAL=y
CONFIG_NET=y
CONFIG_PACKET=y
CONFIG_PACKET_MMAP=y
CONFIG_NETLINK_DEV=y
CONFIG_NETFILTER=y
CONFIG_NETFILTER_DEBUG=y
CONFIG_FILTER=y
CONFIG_UNIX=y
CONFIG_INET=y
CONFIG_IP_MULTICAST=y
CONFIG_IP_ADVANCED_ROUTER=y
CONFIG_IP_MULTIPLE_TABLES=y
CONFIG_IP_ROUTE_FWMARK=y
CONFIG_IP_ROUTE_NAT=y
CONFIG_IP_ROUTE_MULTIPATH=y
CONFIG_IP_ROUTE_TOS=y
CONFIG_IP_ROUTE_VERBOSE=y
CONFIG_IP_ROUTE_LARGE_TABLES=y
CONFIG_IP_PNP=y
CONFIG_NET_IPIP=m
CONFIG_NET_IPGRE=m
CONFIG_NET_IPGRE_BROADCAST=y
CONFIG_IP_MROUTE=y
CONFIG_IP_PIMSM_V1=y
CONFIG_IP_PIMSM_V2=y
CONFIG_ARPD=y
CONFIG_INET_ECN=y
CONFIG_SYN_COOKIES=y
CONFIG_IPV6=y
CONFIG_IP6_NF_IPTABLES=m
CONFIG_IP6_NF_MATCH_LIMIT=m
CONFIG_IP6_NF_MATCH_MAC=m
CONFIG_IP6_NF_MATCH_MULTIPORT=m
CONFIG_IP6_NF_MATCH_OWNER=m
CONFIG_IP6_NF_MATCH_MARK=m
CONFIG_IP6_NF_FILTER=m
CONFIG_IP6_NF_TARGET_LOG=m
CONFIG_IP6_NF_MANGLE=m
CONFIG_IP6_NF_TARGET_MARK=m

5. Konfigurasi kernel yang lainnya disesuaikan dengan kondisi hardware dan kemampuan dari linux box tersebut.
6. Untuk memulai kompilasi jalankan perintah:
# make dep
#make bssImage atau # make install
#make modules modules_install
7. Re-start mesin Linux tersebut
8. Kemudian lakukan prosedur checking apakah kernel sudah mendukung IPv6, dengan menulis perintah:
# dmesg | grep IPv6

Apabila nampak keluaran seperti dibawah ini, berarti kernel sudah mendukung IPv6
IPv6 v.08 for NET4.0
IPv6 over IPv4 tunneling driver









Protokol Routing pada IPv6


Protokol Routing pada IPv6
Protokol routing yang digunakan pad a IPv6 terbagi atas external routing dan internal routing. Untuk external routing digunakan BGP4+ sedangkan OSPFv6 dan RIPng untuk internal routing.

1) BGP4+
Border Gateway Protokol adalah routing protokol yang memakai system autonomous. Fungsi utama dari BGP adalah untuk saling tukar-menukar informasi konektivitas jaringan antar BGP sistem. Informasi konektifitas ini antara lain adalah daftar dari Autonomous System (ASs). Informasi ini digunakan untuk membuat daftar routing sehingga terjadi suatu koneksi.
BGP4 mampu melakukan suatu advertaisement dan IP-prefix serta menghilangkan keterbatasan tentang network class. BGP memakai pola Hop-by-Hop yang artinya hanya meggunakan jalur yang berikutnya yang terdaftar dalam Autonomous System.
BGP menggunakan TCP sebagai media transport. BGP menggunakan port 179 untuk koneksi BGP. BGP mendukung CIDR.


Gambar Model BGP
BGP mampu mempelajari jalur internet malalui internal atau eksternal BGP dan dapat memilih jalur terbaik dan memasukkannya dalam ip forwarding.
BGP dapat digunakan pada dual maupun multi-homed, dengan syarat memiliki nilai AS. BGP tidak dapat digunakan pada single-homed.

Type dari BGP:
OPEN, tipe pesan yang diterima sewaktu koneksi antar BGP tersambungkan. 
UPDATE, tipe pesan yang dikirimkan untuk mengirimkan informasi routing antar BGP.
KEEPALIVE, tipe pesan yang dikirimkan untuk mengetahui apakah pasangan BGP masih hidup
NOTIFICATION, tipe pesan yang dikirimkan apabila terjadi error.

Atribut yang dimiliki oleh BGP:
AS_path, adalah jalur yang dilalui dan dicatat dalam data BGP route, dan dapat mendeteksi loop.
Next_Hop, adalah jalur berikutnya yang akan dilalui dalam routing BGP, biasanya adalah local network dalam eBGP. Selain itu bisa didapat dari iBGP.
Local Preference, penanda untuk AS BGP local
Multi-Exit Discriminator (MED), bersifat non-transitif digunakan apabila memiliki eBGP yang lebih dari 1.
Community, adalah sekumpulan BGP yang berada dalam satu AS.
Perbandingan BGP-4  antara yang digunakan untuk IPv4 dan IPv6 adalah kemampuan dari BGP yang dapat mengenali scope dari IPv6, yaitu global, site-local, link-local. Apabila IPv6 masih menggunakan IPv4 sebagai transport maka alamat peer pada BGP yang lainnya harus diikutkan pada konfigurasi.

2.) RIPng 
Routing Information Protocol Next Generation adalah protokol routing yang berdasarkan protokol routing RIP di IPv4 yang sudah mendukung IPv6. RIPng ini digunakan untuk internal routing protokol dan menggunakan protokol UDP sebagai transport. RIPng ini menggunakan port 521 sebagai komunikasi antar RIPng.

Metode yang dipakai RIPng adalah distance vector (vektor jarak), yaitu:
1. Jarak local network dihitung 0
2. Kemudian mencari neighbour sekitar dan dihitung jaraknya dan cost.
3. Dibandingkan jarak dan cost antar neighbour. 
4. Dilakukan perhitungan secara kontinue.
5. Menggunakan algoritma Ballman-Ford.

Command pada RIPng Header berisi:
1 Request, meminta daftar tabel routing pada RIPng yang lain
2 Response, membalas request dari RIPng yang lain dan memberikan daftar routing.

Protokol RIPng ini memiliki beberapa kelemahan
1. Hanya bisa sampai 15 HOP
2. Lambat dalam memproses routing, dikarena melakukan pengecekan terus menerus
3. Bersifat Classful

Perbedaan yang terjadi antara RIP pada IPv4 (RIPv2) dan IPv6 (RIPng)  adalah port UDP dimana pada IPv4 menggunakan port 520 sedangkan IPv6 menggunakan port 521 sebagai media transpor. RIPng hanya memiliki 2 perintah yaitu response dan request, berbeda dengan RIPv2 yang memiliki banyak perintah dan banyak yang tidak terpakai dan ada yang dibuang pada RIPng seperti authentifikasi. Perubahan yang terjadi dari RIPv2 ke RIPng antara lain, ukuran routing yang tidak lagi dibatasi, subnet IPv4 digantikan dengan prefix IPv6, next-hop dihilangkan tetapi kegunaannya tidak dihilangkan, authentifikasi dihilangkan, namun kemampuan yang hanya sampai 15 hop masih sama.

3) OSPFv3
Open Shortest Path First adalah routing protokol yang digunakan pada IPv6. OSPF ini berdasarkan atas Link-state dan bukan berdasarkan atas jarak. Setiap node dari OSPF mengumpulkan data state dan mengumpulkan pada Link State Packet. 
LSP dibroadcast pada setiap node untuk mencapai keseluruhan network. Setelah seluruh network memiliki “map” hasil dari informasi LSP dan dijadikan dasar link-state dari OSPF. Kemudian setiap OSPF akan melakukan pencarian dengan metode SPF (Shortest Path First) untuk menemukan jarak yang lebih efisien.
Routing table yang dihasilkan berdasarkan atas informasi LSP yang didapat sehingga OSPF memberikan informasi LSP secara flood, karena OSPF sudah memiliki kemampuan untuk memilih informasi LSP yang sama maka flood ini tidak mengakibat exhousted.

OSPF ini menggunakan protokol TCP bukan UDP, mendukung VLSM (Variable Length Subnet Mask).

OSPF menggunakan algoritma Shortest Path First (SPF) oleh Dijkstra, yaitu:
1. Diasumsikan sudah ada data table sebelumnya. Data yang diperlukan antara lain PATH (ID, path cost, arah forwarding ) TENTATIVE (ID, path cost, arah forwarding), Forwarding database.
2. Taruh local sebagai root dari tree dengna ID,0,0 pada PATH.
3. Temukan link N dan taruh di PATH. Hitung jarak Root-N dan N-M, apabila M belum terdapat di PATH atau TENTATIVE, apabila nilainya lebih baik taruh di TENTATIVE.
4. Apabila TENTATIVE bernilai kosong , batalkan. Lainnya, masukkan nilai TENTATIVE ke PATH.

Transmisi Paket IPv6 melalui Ethernet


Transmisi Paket IPv6 melalui Ethernet 
1. MTU (maximum Transmission Unit)
Ukuran MTU secara default untuk paket IPv6 pada ethernet adalah 1500 oktet. Ukuran ini mungkin dikurangi oleh router advertisement yang berisi pilihan MTU yang menspesifikasikan MTU yang lebih kecil, atau oleh konfigurasi manual setiap node nya. Jika router advertisement diterima pada interface yang mempunyai pilihan MTU yang menspesifikasikan MTU lebih besar dari 1500, atau lebih besar dari nilai yang dikonfigurasi secara manual, pilihan MTU tersebut akan dicatat pada manajemen sistem dan harus diabaikan

2. Format Frame
Paket IPv6 ditransmisikan dalam frame standar ethernet. Header ethernet berisi alamat ethernet tujuan dan asal serta berisi kode tipe ethernet, dimana harus berisi alamat hexadesimal dengan nilai 86DD. Kolom data berisi header IPv6 diikuti secara langsung oleh payload dan oktet padding untuk memenuhi ukuran frame minimum pada link ehternet.

3. Stateless Autoconfiguration
Node yang pertama kali tersambung ke jaringan akan secara otomatis mengkonfigurasi alamat IPv6 site-local dan global tanpa memerlukan manual konfigurasi atau bantuan dari server seperti server DHCP (Dynamic Host Configuration Protocol). Dengan IPv6, router akan mengirimkan pesan router advertisement yang berisi prefix global dan site-local.
Pesan router advertisement ini akan dikirim secara periodik atau dapat dikirm sewaktu-waktu untuk merespon pesan router solicitation yang dikirim oleh host pada waktu startup sistem. Alamat global IPv6 dibentuk oleh prefix yang diberikan oleh pesan router advertisement dan pengidentifikasi unterface (EUI-64). Alamat prefix IPv6 digunakan untuk stateless autoconfiguration dari interface erhernet harus mempunyai panjang 64 bit.
Pengidentifikasi interface untuk interface ethernet berbasis pada pengidentifikasi EUI-64 yang diperoleh dari alamat interface IEEE 802 dengan pangjang 48 bit yang sudah ada pada tiap interface etheternet. Deskripsi EUI-64 sebagai berikut:
Tiga oktet pertama dari lamat ehternet menjadi perusahaan ID dari EUI-64 (tiga oktet pertama). Oktet keemapat dan kelima dari EUI diset tetap dengan nilai FFFE dalam hexadesimal. Tiga oktet terakhir dari alamat ethernet menjadi tiga alamat terakhir dari EUI-64.
Pengidentifikasi interface kemudia dibentuk dari EUI-64 dengan mengkomplemenkan bit “Universal/Local” (U/L), yang mana merupakan bit order terendah dari oktet pertama EUI-64. Mengkomplemenkan hal ini akan berubah dari nilai 0 menjadi 1, karena alamat yang sudah terdapat pada interface diharapkan dari alamat yang dialokasikan secara universal dan mempunyai nilai yang unik. Alamat IEEE 802 yang diaokasikan secara universal atau EUI-64 ditandai dengan 0 pada posisi U/L bitnya, sedangkan pengidentifikasi interface IPV6 secra global ditandai dengan nilai 1 pada posisi yang sama.
Sebagai contoh, pengidentifikasi interface untuk interface ethernet yang mempunyai alamat yang sudah berada didalamnya, dalam hexadesimal:
34-56-78-9A-BC-DE akan menjadi 36-56-78-FF-FE-9A-BC-DE. 

4. Alamat link-local
Alamat link local IPv6 untuk interface ethernet dibentuk oleh dengan menambahkan pengidentifikasi interface dengan prefix FE80::/64.

Senin, 25 Juni 2012

Pesan Error ICMPv6


Pesan Error ICMPv6
Berikut adalah beberapa Pesan Error pada ICMP version 6

1. Pesan Destination Unreachable






Gambar Format Pesan Destination Unreachable

Kolom IPv6 : alamat tujuan dilihat dari kolom alamat asal yang terdapat dari paket
Kolom ICMPv6:











Deskripsi:
Pesan Destination unreachable seharusnya dihasilkan oleh router atau layer IPv6 dalam node asal, untuk memberitahu bahwa paket tidak dapat dikirimkan ke alamat tujuan untuk asalan selain kongesti. Pesan ICMPv6 tidak harus dihasilkan jika paket drop/hilang karena kongesti.
Jika alasan kesalahan pengiriman adalah karena ketidaktepatan antara alamat tujuan dengan tabel routing dalam perutean ke arah node, kolom kode diset ke 0.
Jika alasan untuk kesalahan pengirim adalah larangan secara administratif seperti filter firewall, kolom kode diset 1.
Jika terdapat alasan lain dalam kesalahan pengiriman seperti ketidakmampuan untuk memutuskan alamat tujuan IPv6 ke dalam alamat link yang sesuai, atau link yang secara spesifik digunakan mengalami masalah yang singkat maka kolom kode diset ke 3.
Node tujaun harus mengirim pesan Destination unreachable dengan kode 4 untuk merespon jika paket dengan tujuan protokol transport (misal UDP) tidak mendengarkan atau merespon, atau jika protokol transport tersebut tidak mempunyai alternatif lain untuk menginformasikan pengirim.
Node yang menerima pesan ICMP Destination unreachable harus memberitahu pada proses layer di atasnya.

2. Pesan Packet Too Big









Gambar Format Pesan ICMPv6 Packet Too Big

Kolom IPv6: Alamat tujuan, dilihat dari kolom alamat asal yang terdapat dari paket.
Kolom ICMPv6:







Deskripsi:
Pesan ICMPv6 paket terlalu besar harus dikirim oleh router dalam merespon paket yang tidak dapat diteruskan karena paket lebih besar dari MTU dari link yang akan dilaluinya. Informasi dalam pesan ini digunakan sebagai bagian dari proses penemuan jalut MTU.
Pengirim pesan paket terlalu besar membuat saru perkecualian ke salah satu aturan yang terdapat pada pengiriman pesan kesalahan ICMPv6. Tidak seperti pesan lain, pesan ini dikirim dalam merespon paket yang diterima dengan alamat tujuan multicast, atau alamat layer layer link multicast atau broadcast.
Pesan paket yang terlalu besar yang dapat harus diteruskan ke proses di layer yang lebih atas.

3. Pesan Waktu Habis









Gambar Format Pesan ICMPv6 Time Exceeded

Kolom IPv6: Alamat tujuan dilihat dari kolom alamat asal yang terdapat dari paket.
Kolom ICMPv6:








Deskripsi:
Jika router menerima paket dengan batas hop sama dengan nol, atau router mengurangi limit hop sama dengan nol, router harus membuang paket tersebut dan mengirimkan pesan ICMPv6 bahwa batasan waktu telah terlampau dengan kode 0 ke alamat asal dari paket tersebut. Hal ini menandakan terjadinya routing yang berputar atau inisialisasi nilai batas hop terlalu kecil. Pesan ICMPv6 batas waktu terlampaui yang datang harus diteruskan ke proses pada layer di atasnya.

4. Pesan Masalah Parameter














Gambar Format Pesan ICMPv6 Masalah Parameter

Kolom IPv6: alamat tujuan, dilihat dari kolom alamat asal yang terdapat dari paket.
Kolom ICMPv6

Deskripsi:
Jika dalam pemrosesan paket IPv6, node menemukan masalah dengan kolom dalam header IPv6 atau pada header tambahan, misalkan masalah ini adalah node tidak dapat melakukan pemrisesan paket sampai selesai. Node harus membuang paket dan sebaiknya mengirimkan pesan ICMPv6 masalah parameter ke asal paket, untuk memberitahu tempat dan tipe masalah yang ada.

Spesifikasi ICMPv6 utk IPv6


Spesifikasi Internet Control Message Protocol (ICMPv6) untuk Internet Protocol Version 6 (IPv6) 

Internet Protocol (IP) versi 6 (IPv6) adalah versi baru dari IP. IPv6 menggunakan Internet Control Message Protocol (ICMP) seperti yang didefinisikan untuk IPv4 dalam RFC 793 dengan sejumlah perubahan. Hasil dari protokol ini disebut ICMPv6 dan mempunyai nilai 58 pada next header IPv6.

ICMPv6 (ICMP untuk IPv6)
ICMPv6 digunakan oleh node IPv6 untuk melaporkan kesalahan dalam pengolahan paket dan untuk memberikan pada fungsi layer Internet lainnya, seperti untuk diagnosa (ICMPv6 “ping”). ICMPv6 adalah bagian yang utuh dari IPv6 dan harus diimplementasikan penuh oleh setiap node IPv6.
Format Umum Pesan
Pesan-pesan ICMPv6 dikelompokkan dalam dua kelas yaitu pesan kesalahan dan pesan informasional. Pesan kesalahan diidentifikasi dengan mempunyai nilai nol pada bit-bit awal dari kolom tipe pesan. Sehingga, pesan kesalahan mempunyai nilai tipe-tipe pesan dari 0 sampai 127; pesan informasi mempunyai nilai tipe-tipe pesan 128 sampai 255.
Format untuk pesan ICMPv6 :
Pesan kesalahan ICMPv6:
1. Destination unreachable
2. Packet Too Big
3. Time Exceeded
4. Parameter Problem

Pesan Informasioanl ICMPv6:
128 Echo Request
129 Echo Reply

Setiap pesan ICMPv6 diawali oleh header IPv6 dan nol atau lebih header tambahan. Header ICMPv6 diidentifikasi oleh next header dengan nilai 58 dalam yang terdapat pada header sebelum header ICMPv6.

Pesan-pesan ICMPv6 mempunyai format umum seperti pada gambar dibawah ini:

Format Pesan ICMPv6
Keterangan:
Kolom tipe mengidentifikasikan tipe dari pesan. Nilai ini menentukan format sisa data.
Kolom kode tergantung pada tipe pesan. Ini digunakan untuk membuat tingkatan tambahan ukuran pesan.
Kolom checksum digunakan untuk mendeteksi data yang hilang/rusak dalam pesan ICMPv6 dan bagian dari header IPv6.

Penentuan Asal Alamat Pesan
Node yang mengirimkan pesan ICMPv6 harus menentukan kedua alamat IPv6 asal dan tujuan dalam header IPv6 header sebelumnya menghitung checksum. Jika node mempunyai lebih dari satu alamat unicast, node tersebut harus memilih alamat asal dari pesan sebagai berikut:
1. Jika pesan yang akan dikirim adalah respon ke pesan yang dikirim ke salah satu dari alamat unicast node, alamat asal dari pesan yang akan dibalaskan harus alamat yang sama dengan alamat tujuan dimana pesan tesebut dikirim (ke alamat unicast node). Contoh, jika pesan ICMPv6 dikirim ke a, maka alamat asal dari pesan balasan adalah a.
2. Jika pesan yang akan dikirim adalah respon dari pesan yang dikirim ke group multicast atau anycast yang terdapat node-node sebagai anggora, alamat asal dari pesan balasan harus alamat unicast milik interface node yang menerima paket multicast atau anycast.
3. Jika pesan adalah respon pesan yang dikirim ke alamat yang tidak milik dari node, alamat asal harus alamat unicast milik node yang akan sangat membantu dalam mempelajari kesalahan. Sebagai contoh, jika pesan adalah respon ke suatu tindakan penerusan paket (dalam router) yang tidak dapat berlangsung secara sukses, alamat asal harus alamat unicast milik interface dimana tindakan penerusan paket gagal.
4. Jika tidak, tabel routing dari node harus dipelajari guna menentukan interface ana akan digunakan untuk mengirimkan pesan ke tujuannya dan alamat unicast milik interface tersebut harus digunakan sebagai alamat asal dari pesan.