Cara termudah untuk memahami perbedaan antara keduanya adalah melalui contoh yang menunjukkan sifat hirarki dari awalan.
Contoh hierarki
ISP telah dialokasikan awalan dari RIR (Regional Internet Registry) yang dalam contoh ini kita asumsikan 2001:db8::/32
. Awalan ini berbeda dengan awalan yang diberikan kepada pelanggan dalam arti bahwa ISP harus mengumumkannya melalui BGP ke ISP lain yang diintipnya.
ISP sekarang akan mengalokasikan awalan ke pelanggan. Pertama, mereka menetapkan 2001:db8:0:1::/64
tautan yang menghubungkan router ISP ke router CPE (peralatan pelanggan). Ini adalah awalan tautan karena ditugaskan ke tautan. Sebagai rekomendasi umum semua awalan tautan dalam IPv6 seharusnya /64
.
Router ISP akan mengirim iklan router yang mengumumkan awalan ini dan CPE akan menggunakan SLAAC untuk membangun alamat untuk antarmuka eksternal yang mengarah ke router ISP di dalamnya /64
. Mari kita asumsikan antarmuka eksternal mendapatkan alamat IP 2001:db8:0:1:42:ff:fe00:42/64
(dalam notasi /64
ini disertakan untuk mengingatkan kita berapa panjang awalan tautan itu, tapi saya bisa saja membiarkannya).
Awalan tautan ini cukup untuk perute CPE untuk berkomunikasi dengan seluruh dunia, tetapi itu tidak membantu perute CPE untuk mendukung klien mana pun di LAN yang terhubung ke antarmuka internalnya. Router CPE memerlukan awalan untuk LAN yang dirutekan melalui router CPE ini, karenanya ini disebut awalan yang dirutekan .
Awalan yang dialihkan dapat dikonfigurasi secara statis atau melalui DHCPv6. Rincian persis tentang cara router CPE menegosiasikan panjang awalan dengan server DHCPv6 yang disediakan oleh ISP berada di luar cakupan jawaban ini. Pencarian untuk delegasi awalan dapat memberi tahu Anda lebih banyak tentang ini. Mari kita asumsikan awalan yang diarahkan berakhir menjadi 2001:db8:1::/48
. Pada router ISP entri tabel routing akan dibuat menunjukkan yang 2001:db8:1::/48
perlu dirutekan melalui gateway 2001:db8:0:1:42:ff:fe00:42
. Entri tabel routing ini adalah fitur mendefinisikan awalan diarahkan.
Router CPE mungkin memiliki beberapa LAN internal, dari /48
itu dapat mengalokasikan /64
awalan tautan untuk setiap LAN internal. Jika kami menganggap salah satu LAN telah ditetapkan 2001:db8:1:1::/64
sebagai awalan tautannya, simpul pada tautan ini dapat memperoleh alamat 2001:db8:1:1::42:ff:fe00:43
melalui SLAAC. Node itu mungkin merupakan router nirkabel yang kebetulan membutuhkan awalan untuk antarmuka nirkabelnya. CPE dapat menetapkan 2001:db8:1:100::/60
sebagai awalan yang diarahkan untuk router nirkabel, dan router nirkabel dapat menetapkan 2001:db8:1:100::/64
sebagai awalan tautan untuk antarmuka nirkabel.
Sekarang dalam pengaturan seperti itu apa yang kita miliki adalah hierarki awalan. Berikut ini semua bersarang di bawah satu sama lain:
2001:db8::/32
BGP mengumumkan awalan
2001:db8:1::/48
awalan diarahkan
2001:db8:1:100::/60
awalan diarahkan
2001:db8:1:100::/64
tautan awalan
Bagaimana sebenarnya paket ditangani
Ketika router ISP menerima paket 2001:db8:0:1::/64
yang merupakan awalan tautan, ia melakukan pencarian tetangga untuk menemukan alamat MAC dari host di dalam /64
.
Dengan cara ini router ISP akan membutuhkan entri cache tetangga yang terpisah untuk setiap alamat IP dalam awalan tautan.
Ketika router ISP menerima paket 2001:db8:1::/48
yang merupakan awalan yang dirutekan, ia melakukan pencarian tetangga untuk menemukan alamat MAC gateway 2001:db8:0:1:42:ff:fe00:42
.
Dengan cara ini router ISP hanya perlu entri cache tetangga tunggal untuk gateway untuk merutekan paket ke alamat IP apa pun dalam awalan yang dirutekan. Properti ini sangat penting untuk skalabilitas internet.
Mengatasi kekurangan awalan yang dialihkan
Kadang-kadang pelanggan menemukan dirinya terjebak dengan ISP yang hanya akan menyediakan awalan tautan dan tidak ada awalan yang dialihkan. Dalam situasi seperti itu adalah mungkin bagi pelanggan untuk menginstal daemon yang menanggapi penemuan tetangga untuk semua alamat IP dalam subrange spesifik dari awalan tautan. Ini akan memiliki efek yang mirip dengan mengonfigurasi awalan itu sebagai awalan yang dialihkan. Tetapi memiliki beberapa kelemahan:
- Secara umum awalan yang diarahkan seharusnya lebih pendek dari
/64
, tetapi daemon yang menanggapi permintaan penemuan tetangga hanya dapat membuat awalan "yang dialihkan" yang lebih panjang dari /64
.
- Ini meningkatkan latensi sedikit karena bolak-balik tambahan setiap kali alamat IP tidak ada di cache tetangga pada router ISP.
- Ini meningkatkan beban pada router ISP karena membutuhkan penemuan tetangga jauh lebih sering. Sangat mungkin bahwa router ISP dapat meneruskan paket ke awalan tujuan yang sudah diketahui murni dalam perangkat keras, tetapi penemuan tetangga akan dilakukan dalam perangkat lunak.
- Ini meningkatkan konsumsi memori pada router ISP. Jika ISP mengalokasikan awalan yang dirutekan ke setiap pelanggan, mereka dapat dengan mudah lolos dengan hanya memiliki satu entri cache tetangga per pelanggan. Tetapi dengan daemon responden tetangga, ini bisa berubah menjadi ribuan entri per pelanggan.
Pemrosesan overhead pada router ISP dapat menjadi masalah yang signifikan. Beberapa router telah begitu buruk dalam menangani banjir paket membutuhkan tetangga penemuan bahwa itu berubah menjadi serangan DoS yang sebenarnya, dan menggunakan prefiks link yang lebih lama (di /120
- 127
range) telah digunakan sebagai solusi untuk serangan DoS tersebut.
Bahkan jika router tidak rentan terhadap serangan DoS, memori yang dibutuhkan untuk entri cache tetangga ketika solusi yang dijelaskan di atas digunakan jauh lebih mahal untuk ISP daripada alamat IP untuk awalan yang disalurkan, jadi ada sedikit alasan bagi ISP untuk menolak membagikan awalan yang dialihkan.
Kasus khusus di sekitar tautan point-to-point
Tautan titik-ke-titik (seperti terowongan 6in4 dan tautan PPP) tidak perlu ditemukan tetangga. Hanya ada satu arah untuk mengirim paket pada tautan seperti itu dan tidak ada alamat perangkat keras yang perlu dilihat sebelum mengirim paket.
Ini berarti overhead penemuan tetangga bukan merupakan masalah pada tautan seperti itu. Jadi memiliki satu ujung titik ke titik tautan menggunakan banyak alamat bukanlah masalah, selama titik akhir memiliki beberapa perjanjian tentang siapa yang menggunakan alamat mana. Kurangnya penemuan tetangga berarti tidak ada deteksi alamat duplikat juga, jadi sebaiknya kedua titik akhir mencoba menggunakan alamat yang sama itu tidak akan berfungsi seperti yang diharapkan (kecuali jika Anda mengharapkannya berperilaku sebagai alamatcast mana pun).
Ada satu peringatan yang perlu diingat di sekitar tautan point to point. Setiap titik akhir akan menganggap bahwa semua alamat pada tautan yang tidak ditetapkan itu sendiri ditugaskan ke ujung lainnya. Ini berarti bahwa alamat yang tidak digunakan pada tautan titik ke titik cenderung memicu loop perutean. Perutean perutean seperti itu (dan beberapa kasus perutean perulangan lainnya) dapat dihindari dengan titik akhir tidak pernah mengirim paket langsung kembali ke simpul tempat ia diterima. Jadi paket yang diterima dari tautan titik ke titik tidak boleh dikirim kembali melalui tautan titik ke titik yang sama, selama satu titik akhir mendapatkan hak ini, perutean perutean terputus. Sebagai node samping pada Ethernet, valid untuk menerima paket dan meneruskannya kembali ke tautan yang sama, tetapi sebaiknya Anda tidak melakukannya jika akan diteruskan kembali ke alamat MAC yang sama dari tempat ia diterima.
Karena sebagian besar alamat pada tautan titik ke titik hanya akan diteruskan ke ujung tautan yang lain tanpa memerlukan penemuan tetangga, itu terlihat sangat mirip dengan awalan yang dialihkan. Sebagai contoh jika ISP menetapkan 2001: db8: 42 :: / 64 ke titik ke titik tautan dengan titik akhir yang ditugaskan alamat 2001: db8: 42 :: 1 dan 2001: db8: 42 :: 2, kemudian paket ke sebagian besar alamat pada tahun 2001: db8: 42 :: / 64 akan diteruskan dari ISP ke pelanggan seperti yang akan mereka lakukan jika ini adalah awalan yang dialihkan menggunakan 2001: db8: 42 :: 2 sebagai gateway.
Ini berarti peretasan tertentu dimungkinkan. Pada CPE dimungkinkan untuk mengkonfigurasi 2001: db8: 42 :: / 64 sebagai awalan tautan pada LAN. Agar CPE mengetahui yang mana dari dua tautan yang menjadi tujuan tertentu, konfigurasi sebenarnya pada tautan titik ke titik menuju ISP kemudian harus diubah menjadi 2001: db8: 42 :: / 126. Ini semua akan bekerja dengan satu pengecualian kecil, host di LAN tidak dapat berkomunikasi dengan empat alamat IP pada tahun 2001: db8: 42 :: / 126. Karena mereka mungkin tidak perlu berkomunikasi dengan mereka, ini bukan masalah besar. Namun tidak disarankan untuk menggunakan peretasan ini, konfigurasi yang tepat adalah untuk mendapatkan awalan yang dialihkan dari ISP.
Retasan lain untuk menyimpan alamat adalah dengan hanya mengalokasikan alamat global untuk awalan yang dialihkan dan menggunakan alamat RFC 4193 untuk tautan titik ke titik. Namun ini adalah hack konyol karena masih memperkenalkan beberapa kelemahan untuk menyelesaikan masalah yang tidak ada.
Dimungkinkan juga untuk tidak menetapkan awalan sama sekali ke tautan titik ke titik. Selama setiap titik akhir memiliki antarmuka lain yang memang memiliki alamat global, mereka dapat menggunakan alamat yang ditetapkan untuk antarmuka lainnya saat berkomunikasi pada tautan titik ke titik. Saya tidak tahu ada kekurangan dari pendekatan ini, jadi jika Anda menemukan bahwa pendekatan ini untuk menunjuk ke titik menyederhanakan konfigurasi jaringan Anda merasa bebas untuk menggunakannya, tetapi jangan menggunakannya sebagai ukuran untuk menyimpan alamat.
Gunakan case untuk awalan yang diarahkan
- Routing hirarkis seperti pada contoh pertama saya adalah apa yang dirancang untuk awalan diarahkan.
- VPN / terowongan menambahkan lapisan lain ke dalam hierarki router yang membutuhkan awalan. Meskipun mereka virtual daripada hardware nyata, mereka tidak berbeda dalam hal pengalamatan dan membutuhkan awalan yang diarahkan seperti halnya tautan fisik.
- Menetapkan banyak alamat ke host . Ada kasus penggunaan untuk menetapkan banyak alamat ke satu host. Untuk beberapa alamat, mereka hanya dapat ditugaskan dan ditangani dengan penemuan tetangga untuk masing-masing dan sebanyak entri cache karena ada alamat. Tetapi jika ribuan alamat diperlukan, awalan yang dialihkan lebih baik.
Contoh yang lebih rinci dari titik terakhir adalah reseptor DNS. Karena saya tidak melihat DNSSEC mendapatkan banyak daya tarik sampai setelah kami selesai berkelahi dengan IPv4, diperlukan langkah-langkah lain melawan keracunan DNS. Upaya telah dilakukan untuk mendapatkan sebanyak mungkin entropi ke dalam pertanyaan. ID dan nomor port dapat menampung paling banyak 32 bit entropi, beberapa bit lainnya dapat disimpan dalam permintaan jika huruf besar dan kecil dicampur dalam nama domain yang harus diselesaikan. Anda jarang mendapatkan total lebih dari 48 bit dengan cara ini. Menugaskan penuh /64
untuk recursor DNS akan memungkinkan entropi meningkat 64 bit dalam sekali jalan, yang lebih dari semua upaya lainnya digabungkan.