Seorang pengguna melaporkan bahawa aplikasi dalaman berfungsi dari satu mesin dan gagal dari mesin lain, sedangkan ping yang anda jalankan dari gateway berjaya dalam kedua-dua kes. Dengan beberapa terowong berkos sama, itu bukan percanggahan. Setiap aliran diletakkan pada hop seterusnya sendiri, jadi siasatan anda dan sesi pengguna mungkin hanya menggunakan laluan yang berbeza. Panduan di bawah menghasilkan semula pilihan itu sebelum apa-apa diubah.

Satu ping, beberapa laluan mungkin

Apabila sesuatu laluan mempunyai lebih daripada satu hop seterusnya pada kos yang sama, penghala mesti memilih satu bagi setiap paket. Kebanyakan pelaksanaan melakukan hash pada medan paket, biasanya alamat sumber dan destinasi bersama protokol dan port, supaya respons kekal pada laluan yang sama. Aplikasi berbeza, atau pun sambungan berbeza daripada satu aplikasi, menghasilkan hash yang berbeza.

Itulah sebabnya diagnostik dari gateway membuktikan begitu sedikit. Siasatan gateway sendiri mempunyai alamat dan port sendiri, dan oleh itu hash sendiri. Ia mungkin mendarat pada terowong yang sihat sementara pengguna terus mendarat pada yang rosak.

Bagaimana platform memilih hop seterusnya

Hasilkan semula pilihan itu daripada menekanya. Tanya kernel laluan mana yang akan digunakan untuk sumber dan destinasi yang sama seperti sesi yang gagal. Carian itu merangkumi medan yang diabaikan oleh carian destinasi biasa. Jalankannya juga dari klien yang berfungsi dan bandingkan kedua-dua jawapan:

ip route get 10.20.5.7 from 10.20.0.14

Keluaran iproute2 yang lebih baharu juga menerima protokol dan port destinasi, yang penting apabila hash merangkuminya. Bandingkan keluaran itu dengan carian yang sama dari klien yang berfungsi, dan perbezaannya ialah bukti yang anda hilang.

ObservationLikely causeFirst check
Ping works, application failsA different flow hash selects another tunnelPer-flow lookup from the client's address
Some users fail, others do notOne tunnel lacks a prefix or selectorCompare both tunnels' installed routes
Fails only at larger sizesTunnels have different effective MTUProbe the same size over each path
Fails after a reconnectStateful asymmetry between pathsSession state on both gateways

Ikut aliran yang gagal, bukan jadual laluan

Jadual laluan menyenaraikan kedua-dua terowong dan kelihatan betul mengikut takrifan. Persoalannya ialah apa yang setiap terowong lakukan dengan paket setelah dipilih. Sahkan kedua-duanya membawa awalan terlindung yang sama, kebenaran pemajuan yang sama dan laluan balik yang sampai ke klien yang sama.

Perhatikan peranti berkeadaan di tengah. Jika permintaan keluar melalui satu terowong dan balasan kembali melalui yang lain, firewall atau NAT yang tidak pernah melihat aliran asal akan menggugurkannya. Kedua-dua terowong memajukan trafik dengan betul, dan sambungan masih gagal.

Periksa juga MTU bagi setiap laluan. Laluan dengan penkapsulan tambahan mengecilkan saiz yang boleh digunakan, dan pemindahan yang berjaya pada satu terowong tersekat pada yang lain tepat pada saiz di mana yang lebih kecil patah.

Bandingkan satu laluan pada satu masa

Di mana reka bentuk membenarkan penyelenggaraan, keluarkan satu terowong daripada perkhidmatan dan ulangi tugas pengguna. Jika kegagalan hilang, masalah itu milik laluan yang anda keluarkan, dan langkah seterusnya ialah membandingkan konfigurasinya dengan jirannya dan bukannya memeriksa semula jadual laluan.

Bandingkan aplikasi sebenar, bukan ping berulang. Catat sama ada kegagalan mengikut hop seterusnya tertentu, saiz paket atau peralihan selepas menyambung semula, kerana ketiga-tiga corak itu menunjuk kepada pembaikan yang berbeza.

Akhir sekali, catat mengapa laluan dianggap setara dan bagaimana kegagalan sepatutnya mengeluarkan salah satunya daripada perkhidmatan. Multipath hanya selamat apabila laluan benar-benar boleh ditukar ganti, dan itu ialah pernyataan reka bentuk yang wajar diperiksa dan bukan diandaikan.

Artikel berkaitan