IPv6: perbedaan antara "awalan diarahkan" dan "awalan tautan"?

14

Apa perbedaan yang pasti antara "awalan diarahkan" dan "awalan tautan" untuk IPv6?
Bagaimana perbedaan-perbedaan ini dalam wireshark-Trace? (jika Anda mengamati Host dengan "awalan diarahkan" yang ditugaskan atau Host dengan "awalan tautan" yang ditugaskan).
Bagaimana perbedaan-perbedaan ini dalam Protokol Penemuan Neighbor? (dari sudut pandang Host lain / eksternal)
Apakah mereka bekerja bersama , kedua jenis awalan ini?

Erik
sumber

Jawaban:

19

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::/64tautan 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 /64ini 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::/48perlu 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 /48itu dapat mengalokasikan /64awalan tautan untuk setiap LAN internal. Jika kami menganggap salah satu LAN telah ditetapkan 2001:db8:1:1::/64sebagai awalan tautannya, simpul pada tautan ini dapat memperoleh alamat 2001:db8:1:1::42:ff:fe00:43melalui SLAAC. Node itu mungkin merupakan router nirkabel yang kebetulan membutuhkan awalan untuk antarmuka nirkabelnya. CPE dapat menetapkan 2001:db8:1:100::/60sebagai awalan yang diarahkan untuk router nirkabel, dan router nirkabel dapat menetapkan 2001:db8:1:100::/64sebagai 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::/64yang 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::/48yang 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- 127range) 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 /64untuk recursor DNS akan memungkinkan entropi meningkat 64 bit dalam sekali jalan, yang lebih dari semua upaya lainnya digabungkan.

kasperd
sumber
Saya akan ditautkan ke T / A tentang CIDR jika saya bisa menemukan yang bagus. Orang pasti perlu memahami CIDR sebelum membaca jawaban ini.
kasperd
Untuk CIDR tampaknya Artikel Wikipedia oke untuk saya, menurut saya tautan ke en.wikipedia.org/wiki/Classless_Inter-Domain_Routing baik untuk pemahaman lebih lanjut.
Erik
Saya memiliki beberapa masalah dengan jawaban Anda. Mereka tidak mencakup perilaku yang diamati, bukan untuk ISP saya di rumah dan tidak untuk penyedia hosting di server saya (keduanya tidak menggunakan penemuan tetangga klasik). <br /> Saya pikir saya perlu deskripsi yang lebih rinci tentang ruang lingkup utama saya pertanyaan. Haruskah saya memperbarui pertanyaan saya atau ada cara lain yang disukai? Maaf, saya baru di serverfault.com / StackExchange.
Erik
Saya menjadi bingung tentang situasi Anda berbicara. Apakah maksud Anda ISP (misalnya pada DSL-Line) untuk koneksi Internet untuk rumah pribadi atau apakah Anda maksud penyedia hosting yang menghubungkan server (dengan LAN berbasis Ethernet nyata)?
Erik
1
@ 1'OR1 - Jika paket ke alamat yang tidak digunakan di dalam /48hasil dalam paket ajakan tetangga untuk IP tujuan, maka memang terdengar seperti penyedia mengkonfigurasi /48sebagai awalan tautan. Mengonfigurasi /48awalan tautan bukan konfigurasi yang disarankan, tapi saya tetap mendengar penyedia melakukannya. Jika itu adalah awalan yang dirutekan maka terlepas dari alamat IP mana di dalam /48suatu paket yang ditargetkan, permintaan tetangga yang akan Anda lihat adalah untuk alamat IP yang sama setiap kali. Dan begitu Anda menanggapinya, Anda tidak akan melihat permintaan tetangga lagi.
kasperd
3

Awalan tautan digunakan antara router Anda dan ISP Anda.

Awalan yang diarahkan digunakan di dalam jaringan Anda.

Jika Anda menerima awalan yang dirutekan / 64 dari ISP Anda, maka Anda hanya perlu memasang iklan perute tersebut di LAN Anda. Jika Anda memiliki awalan yang lebih kecil dari / 64 (mungkin a / 48?) Anda harus mempertimbangkan bagaimana subnet awalan itu dengan cara yang logis, untuk digunakan oleh semua router Anda di organisasi Anda.

Di Wireshark, tergantung di mana Anda menangkap paket, Anda mungkin hanya melihat awalan yang diarahkan yang digunakan (jika Anda menangkap pada LAN) atau Anda mungkin melihat kedua awalan yang digunakan (jika Anda menangkap pada WAN).

Mengenai Neighbor Discovery Protocol, itu juga tergantung pada tautannya. Pada tautan antara ISP dan router Anda, NDP digunakan untuk menemukan alamat MAC antarmuka WAN router Anda dan alamat MAC router upstream ISP Anda. Pada antarmuka LAN Anda, NDP digunakan untuk menemukan alamat MAC host di segmen LAN Anda.

Semoga ini membantu.

Scott Nelson
sumber
1
Kalimat If you received a /64 from your ISP, then you would simply have your router advertise that prefix on your LANitu kemungkinan kecil akan disalahpahami jika Anda membuatnya eksplisit yang /64mengacu pada awalan yang dialihkan.
kasperd
2

Awalan adalah awalan yang dirutekan jika paket ke awalan itu harus melalui router untuk mencapai tujuan mereka. Awalan adalah awalan tautan jika ada pada segmen yang dilampirkan antarmuka jaringan lokal.

Saat sebuah paket bepergian melalui internet, / 64 itu ditargetkan akan menjadi awalan yang dirutekan sampai Anda mencapai hop terakhir. Maka itu akan menjadi awalan tautan.

Awalan yang diarahkan biasanya dikumpulkan. Banyak / 64 dapat digabungkan menjadi satu awalan yang lebih pendek untuk menjaga tabel routing lebih kecil. Pada batas antara penyedia internet adalah umum untuk menerapkan panjang awalan maksimum / 48.

Jika awalan adalah sesuatu dari / 0 hingga / 63 Anda biasanya dapat menganggapnya sebagai awalan yang dialihkan. Jika awalannya adalah / 64 Anda perlu informasi lebih lanjut untuk mengetahui apakah awalan itu dialihkan atau tautan.

rfc2460
sumber