Tunneling menyediakan sebuah cara untuk memanfaatkan infrastruktur routing IPv4 yang telah ada untuk membawa traffic IPv6. Host dan router IPv6/IPv4 dapat mengirimkan datagram IPv6 melalui topologi routing IPv4 dengan mengenkapsulasi datagram IPv6 tersebut kedalam paket IPv4. Tunneling dapat digunakan dalam berbagai macam cara:
- Router-to-Router: Router IPv6/IPv4 yang saling terhubung oleh sebuah infrastruktur IPv4 dapat menggunakan tunnel untuk melewatkan paket IPv6 diantara mereka. Dalam hal ini, tunnel merupakan satu segmen jaringan dari end-to-end jalur yang dilalui oleh paket IPv6.
- Host-to-Router: Host IPv6/IPv4 dapat men-tunnel paket IPv6 ke sebuah intermediary router IPv6/IPv4 yang dapat dicapai melalui sebuah infrastruktur IPv4.
- Host-to-Host: Host IPv6/IPv4 yang terhubung melalui sebuah infrastruktur IPv4 dapat men-tunnel paket IPv6 diantara keduanya.
- Router-to-Host: Router IPv6/IPv4 dapat men-tunnel paket IPv4 ke tujuan host IPv6/IPv4. Tunnel ini berada pada segmen terakhir dari jalur.
Configured Tunneling dapat digunakan pada semua kondisi diatas tetapi kebanyakan digunakan pada Router-to-Router karena membutuhkan konfigurasi secara eksplisit terhadap tunneling endpoint.
Mekanisme yang menjadi pokok dari tunneling adalah
- Bagian dimana paket IPv6 memasuki tunnel (entry node [encapsulator]) membuat sebuah header IPv4 yang mengenkapsulasi paket dan mengirimkannya.
- Bagian ujung dari tunnel (exit node [decapsulator]) menerima paket yang terenkapsulasi tersebut kemudian menyusun kembali paket tersebut bila diperlukan, menghapus header IPv4, lalu memproses paket IPv6 yang diterima.
- Encapsulator dapat mungkin perlu memelihara soft-state information dari setiap tunnel seperti parameter sebagai MTU tunnel untuk memproses paket IPv6 yang diteruskan kedalam tunnel.
Enkapsulasi
Enkapsulasi dari sebuah datagram IPv6 didalam IPv4 adalah sebagai berikut
Gambar Peng-engkapsulasi-an datagram IPv6 dalam IPv4 (Sumber: Nordmark et al, 2005)
Dekapsulasi
Saat sebuah host atau router IPv6/IPv4 menerima sebuah datagram IPv4 yang ditujukan ke alamat IPv4 node tersebut atau ke sebuah alamat multicast dan field Protocol pada paket tersebut bernilai 41 maka sangat mungkin itu merupakan sebuah tunnel packet dan perlu diverifikasi apakah termasuk pada salah satu dari tunnel yang telah dikonfigurasi dengan memeriksa alamat sumber/tujuan, menyusun kembali (reassembly) apabila terfragmentasi, dan menghapus header IPv4. Decapsulator harus memastikan keabsahan alamat sumber tunnel sebelum memproses paket lebih jauh untuk mengurangi masalah dengan address spoofing. Pengecekan ini juga berlaku terhadap paket yang diarahkan kepada protokol transport dari decapsulator. Paket dengan alamat IPv4 sumber yang tidak sesuai harus dibuang dan decapsulator menciptakan pesan kesalahan ICMP. Efek samping dari verifikasi alamat ini adalah node akan membuang secara diam-diam paket dengan alamat sumber yang salah serta paket yang diterima oleh node tetapi tidak ditujukan secara langsung kepadanya (contohnya paket ke alamat broadcast).
Decapsulator harus memiliki IPv6 MRU paling kurang 1500 byte pada tunnel interface dan MTU IPv6 terbesar pada interface IPv6. Decapsulator juga harus dapat menyusun kembali (reassembly) paket IPv4 yang sesudah disusun kembali, maksimum berukuran 1500 byte. Jumlah 1500 byte merupakan dihasilkan oleh encapsulator yang menggunakan skema MTU statis, sedangkan untuk encapsulator yang menggunakan skema MTU dinamis dapat menyebabkan ukuran paket melebihi MTU terbesar pada interface decapsulator. Batasan terhadap reassembly ini membuat penentuan MTU tunnel secara dinamis oleh encapsulator dapat memanfaatkan MTU jalur IPv4 yang lebih besar. Decapsulator menyusun ulang paket IPv4 sebelum melakukan dekapsulasi. Dekapsulasi ditunjukkan sebagai berikut
Gambar Pendekapsulasian IPv6 dari IPv4 (Sumber: Nordmark et al, 2005)
Setelah melakukan dekapsulasi, decapsulator harus menghapus paket dengan alamat IPv6 sumber yang tidak valid yakni:
- Alamat multicast (FF00::/8)
- Alamat loopback (::1)
- IPv4-compatible IPv6 Address (::/96).
- Seluruh IPv4-mapped IPv6 address (::ffff:0:0/96)
Secara logis, maka prosedur tunneling dapat menggunakan beberapa algoritma. Pada dasarnya teknik tunneling dapat digunakan untuk implementasi pada arsitektur jaringan yang memiliki IPv4 dan IPv6.