Saya mengerti bahwa Linux memilih rute yang paling spesifik ke tujuan ketika melakukan pemilihan rute . Tapi bagaimana dengan metrik rute? Apakah ini memiliki prioritas lebih tinggi daripada kekhususan rute?
Referensi ke detail dari algoritma pemilihan rute yang digunakan oleh Linux juga akan dihargai.
Metrik rute adalah untuk menetapkan preferensi di antara rute dengan spesifisitas yang sama. Itu berlaku untuk perutean secara umum (yaitu Cisco, Windows, dll). Jadi modelnya bekerja seperti:
Temukan rute yang paling spesifik (alias kecocokan awalan terpanjang * )
Jika ada beberapa rute dengan spesifisitas yang sama, pilih satu dengan jarak administratif terendah (Ini membedakan antara hal-hal seperti rute yang terhubung langsung, rute statis, dan berbagai protokol routing).
Dalam protokol routing dan rute tertentu (jika spesifisitas rute dan jarak administrasi sama), pilih rute dengan metrik terendah
Perhatikan bahwa ada hal-hal lain yang bisa terjadi pada perutean berbasis kebijakan yang memungkinkan Anda melakukan hal-hal seperti rute berdasarkan alamat IP sumber. Tetapi kekhasan rute, jarak administrasi, dan kemudian metrik adalah apa yang saya anggap sebagai tiga hal utama.
* Disebut pencocokan awalan terpanjang karena subnet dalam biner (/ 24 misalnya) terlihat seperti 11111111.11111111.11111111.00000000. Jadi router hanya dapat memindai awalan untuk biner 1 dan berhenti setelah mencapai nol, dan kemudian cocok dengan awalan.
Itu tidak sepenuhnya benar di Linux, di mana tidak ada perbedaan antara metrik dan jarak administratif.
jch
1
@ jch Apakah quagga dan co. meniru AD dengan mengatur metrik sesuai? (Bukannya maksud Anda tidak penting, hanya ingin tahu)
Kyle Brandt
1
Tidak, Quagga mengimplementasikan AD secara internal di zebradaemon, dan hanya mengirimkan rute yang dipilih ke kernel - sehingga kernel tidak perlu berurusan dengan AD. Saya perlu memeriksa, tetapi saya berpikir bahwa Quagga menetapkan metrik kernel ke nilai konstan.
jch
Hanya ingin menyebutkan bahwa ini tidak berlaku di jembatan ethernet, misalnya dua rute yang identik melalui perangkat yang berbeda dengan metrik yang sama masih mengakibatkan lalu lintas salah arah melalui tautan yang lebih panjang dan salah.
Areeb Soo Yasir
9
Linux menyediakan sejumlah alat untuk pemilihan rute yang fleksibel.
Tabel routing tunggal
Dalam kasus yang paling sederhana, hanya ada satu tabel routing kernel dan tidak ada rute dengan atribut SRC. Tabel ini berisi sejumlah rute, yang ditempatkan di sana secara manual ( ip route add), oleh daemon DHCP, atau dengan routing daemon. Dalam hal ini, kernel memilih:
rute yang paling spesifik;
jika ada beberapa rute yang sama spesifiknya, rute dengan metrik kernel terkecil.
Perhatikan bahwa metrik kernel (ditampilkan oleh ip route show) dipilih oleh daemon routing, dan tidak harus terkait dengan metrik protokol routing tertentu. Misalnya, Quagga menggunakan metrik yang sama untuk semua rute yang diinstal di kernel, terlepas dari metrik protokol.
Rute khusus sumber
Linux juga mendukung rute dengan atribut SRC yang hanya cocok dengan paket dengan alamat sumber yang diberikan. SRC hanya berfungsi untuk IPv6, dan masih bermasalah hingga saat ini (3.11, jika ingatanku); Saya tidak menyarankan menggunakannya kecuali Anda tahu apa yang Anda lakukan.
Beberapa tabel routing
Jika Anda membutuhkan lebih banyak fleksibilitas daripada yang disediakan di atas, Anda harus bermain dengan beberapa tabel routing, dan menulis aturan untuk memilih satu tabel routing tertentu untuk setiap paket. Teknik yang umum adalah mengirim pada sumber-alamat untuk mensimulasikan rute spesifik sumber. Teknik lain adalah menjalankan setiap daemon perutean dalam tabel peruteannya sendiri, dan mensimulasikan "jarak administratif" Cisco. Semua ini dijelaskan secara rinci dalam Bab 4 LARTC .
Bukan itu srcatributnya. Anda ingin membaca man ip-routeatau dokumen lain. Dan itu berfungsi dengan IPv4. Saya menggunakannya untuk mendapatkan semua lalu lintas termasuk lalu lintas router melalui terowongan IPSec net-to-net tunggal.
Zan Lynx
1
The RTA_SRCatribut tidak persis apa yang saya katakan; itu dapat diakses dengan fromopsi ipperintah. Opsi ipperintah srcmengatur RTA_PREFSRCatribut, yang adalah apa yang Anda gambarkan.
zebra
daemon, dan hanya mengirimkan rute yang dipilih ke kernel - sehingga kernel tidak perlu berurusan dengan AD. Saya perlu memeriksa, tetapi saya berpikir bahwa Quagga menetapkan metrik kernel ke nilai konstan.Linux menyediakan sejumlah alat untuk pemilihan rute yang fleksibel.
Tabel routing tunggal
Dalam kasus yang paling sederhana, hanya ada satu tabel routing kernel dan tidak ada rute dengan atribut SRC. Tabel ini berisi sejumlah rute, yang ditempatkan di sana secara manual (
ip route add
), oleh daemon DHCP, atau dengan routing daemon. Dalam hal ini, kernel memilih:Perhatikan bahwa metrik kernel (ditampilkan oleh
ip route show
) dipilih oleh daemon routing, dan tidak harus terkait dengan metrik protokol routing tertentu. Misalnya, Quagga menggunakan metrik yang sama untuk semua rute yang diinstal di kernel, terlepas dari metrik protokol.Rute khusus sumber
Linux juga mendukung rute dengan atribut SRC yang hanya cocok dengan paket dengan alamat sumber yang diberikan. SRC hanya berfungsi untuk IPv6, dan masih bermasalah hingga saat ini (3.11, jika ingatanku); Saya tidak menyarankan menggunakannya kecuali Anda tahu apa yang Anda lakukan.
Beberapa tabel routing
Jika Anda membutuhkan lebih banyak fleksibilitas daripada yang disediakan di atas, Anda harus bermain dengan beberapa tabel routing, dan menulis aturan untuk memilih satu tabel routing tertentu untuk setiap paket. Teknik yang umum adalah mengirim pada sumber-alamat untuk mensimulasikan rute spesifik sumber. Teknik lain adalah menjalankan setiap daemon perutean dalam tabel peruteannya sendiri, dan mensimulasikan "jarak administratif" Cisco. Semua ini dijelaskan secara rinci dalam Bab 4 LARTC .
sumber
src
atributnya. Anda ingin membacaman ip-route
atau dokumen lain. Dan itu berfungsi dengan IPv4. Saya menggunakannya untuk mendapatkan semua lalu lintas termasuk lalu lintas router melalui terowongan IPSec net-to-net tunggal.RTA_SRC
atribut tidak persis apa yang saya katakan; itu dapat diakses denganfrom
opsiip
perintah. Opsiip
perintahsrc
mengaturRTA_PREFSRC
atribut, yang adalah apa yang Anda gambarkan.