Kiel distingi enkursigan buklon disde svingiĝanta itinero ĉe VPN-ejoj
Enkursiga buklo kaj svingiĝanta itinero kaŭzas la saman intermitan perdon. Tri kontroloj ĉe la pordegoj distingas ilin antaŭ ol vi ŝanĝos ion ajn.
Du ejoj, unu tunelo kaj fora prefikso, kiu respondas dum iom da tempo kaj poste silentas. La reflekso estas nomi tion buklo de enkursigado, kaj foje ĝi estas ĝuste tio. Sed buklo kaj svingiĝanta itinero produktas la saman plendon kaj bezonas kontraŭajn riparojn: unu estas plusenda decido, kiu neniam finiĝas, la alia estas prefikso, kiu daŭre forlasas la tabelon. Tri observoj apartigas ilin, kaj vi povas kolekti ĉiujn tri el la komandlinio de la pordego antaŭ ol tuŝi filtrilon aŭ rekomencigi tunnelon.
Buklo decidiĝas salte post salto. Ejo A elektas B kiel sekvan salton por la celo, B elektas A por la sama celo, kaj la paketo finiĝas sur TTL post du rondiroj. Svingiĝon male decidas la enkursiga protokolo: la prefikso estas retirata, reinstalata aŭ anstataŭigata per alternativa sekva salto, tiel ke iuj paketoj tute ne havas itinerojn dum aliaj sekvas tute bonan.
La tri kontroloj, kiuj solvas la demandon
Vi ne bezonas paketkaptadon por fari la unuan decidon. Vi bezonas la staton de la prefikso ĉe ambaŭ finoj, la sekvan salton, kiun ĉiu flanko elektas, kaj saltonombron, kiu aŭ ripetiĝas aŭ ne. Se la prefikso restas instalita kun la sama sekva salto dum trafiko malsukcesas, la buklo loĝas en la plusenda vojo. Se la prefikso malaperas kaj revenas, la difekto estas super la plusendado kaj la riparo apartenas al la enkursiga protokolo, ne al statika itinero.
| Observation | Routing loop | Route flapping |
|---|---|---|
| Prefix in the table | Installed, same next hop throughout | Withdrawn and reinstalled, or next hop alternates |
| Hop count | Reaches zero at the same two gateways | Expires only while the prefix is missing |
| Failure shape | Consistent loss for that prefix from every source | Bursts, often after a link or peer event |
| Where the fix belongs | The site that owns the prefix, plus filters on the transit path | Advertisement, hold timers, or the flapping link |
Unu averto antaŭ ol vi komencos. Se vi legas ĉi tion tra la tunelo, kiu buklas, via sesio mortas en la momento, kiam vi ŝanĝos la itineron. Malfermu konzolon aŭ administran vojon, kiu ne dependas de la prefikso, kiun vi estas riparonta.
Kontrolo unua: ĉu la prefikso estas stabila aŭ kirliĝas
Demandu la kernon, kion ĝi instalas, ne kion promesas la agorda dosiero. Sur Linuksa pordego, ip route get 10.20.30.40 plenumas la saman serĉon kiel la plusenda vojo, inkluzive de politikaj tabeloj, dum ip route show 10.20.30.0/24 montras la enskribon mem. ip monitor route elsendas ĉiun ŝanĝon en la momento de ĝia okazo, kio estas la plej rapida maniero vidi prefikson alveni kaj foriri.
Sur enkursigilo kun FRR aŭ BIRD, la plusenda tabelo ne estas la interesa. show ip bgp 10.20.30.0/24 redonas la elektitan vojon kaj ĝian funkcian tempon; funkcia tempo, kiu restarigas ĉiujn kelkajn minutojn, estas svingiĝo, kiun vi povas nomi, ne buklo. show ip bgp summary montras la staton de najbaroj kaj nombrojn de prefiksoj, do najbaro, kiu daŭre falas, forprenas la kulpon de la plusenda vojo.
Skribu la respondon antaŭ ol ŝanĝi ion ajn. Stabilo dum dek minutoj dum pingoj malsukcesis, kaj malapero kvar fojojn en dek minutoj, kondukas al malsamaj sekvaj paŝoj. La dua faras ĉiun teorion pri statika itinero nerelevanta.
Kontrolo dua: ĉu la sekva salto montras reen en la alvenan tunnelon
Buklo bezonas du pordegojn, kiuj konsentas. Ĉe la ejo, kiu ricevas la paketon, rigardu la itineron, kiun la paketo uzos por eliri: ip route get 10.20.30.40 from 10.10.5.20 kun la reala fontadreso, ĉar politika regulo povas respondi alie ol la ĉefa tabelo. Poste ripetu la serĉon ĉe la ejo, kiu ĝin sendis. Se ĉiu flanko elektas la alian kiel sekvan salton por la sama prefikso, la buklo estas pruvita kaj neniu kaptado aldonos ion.
La kaŭzo estas preskaŭ ĉiam anonco, kiu ne devintus transiri la tunnelon. Defaŭlta itinero redistribuita en la tunnelon, agregado, kiu kovras la propran subreton de la fora ejo, aŭ statika itinero montranta al la samtavolano por ĉiu okazo ĉiuj kreas la saman reciprokan sekvan salton. La tunelo povas esti plene starigita kaj tamen porti trafikon en cirklo; la notoj pri plusendado de strongSwan priskribas la enkursigan flankon de tiu postulo.
WireGuard meritas propran noton, ĉar ne estas anonco por kulpigi. wg show listigas la AllowedIPs por ĉiu samtavolano, kaj la kerno akceptas celon por samtavolano nur se ĝi falas ene de tiu intervalo. Buklo tie estas interkovranta intervalo de AllowedIPs aŭ statika itinero montranta reen trans la interfacon, do la riparo loĝas en tiuj du lokoj kaj nenie alie.
Kontrolo tria: legu la saltonombron, ne la stelojn
traceroute -n -I 10.20.30.40 kaj mtr -n -r -c 20 10.20.30.40 ambaŭ montras la vojon, kaj ICMP-reĝimo ofte postvivas filtradon, kiu manĝas UDP-sondojn. Buklo aspektas kiel mallonga ripetiĝanta sinsekvo de la samaj du pordegaj adresoj, kun la TTL grimpanta ĉiufoje. Falego aspektas kiel steloj post la lasta pordego, kiu respondis, kaj unu silenta salto ne estas pruvo de io ajn.
Kiam la vojo estas dusenca, legu la TTL sur la drato. tcpdump -ni any -vv icmp sur ambaŭ pordegoj montras la TTL de ĉiu paketo kaj la fontadreson de ĉiu respondo pri superita tempo. Se paketo atingas la foran ejon kun TTL pli malalta ol la nombro de saltoj, kiujn la vojo povas enhavi, io aldonas saltojn, kiujn traceroute ne montras al vi, kaj tio okazas, kiam la fajroŝirmilo de unu ejo respondas sondojn nome de alia.
Riparu la posedanton de la prefikso, poste kontrolu ambaŭ direktojn
Decidu, kiu ejo originas la celon kaj kiuj trairitaj vojoj estas permesataj, poste ŝanĝu la anoncon aŭ la statikan itineron ĉe tiu posedanto. Korekti la ricevan ejon estas tentanta kaj kutime malĝusta: ĝi kaŝas la buklon por unu prefikso kaj lasas la malbonan anoncon en loko por la sekva. Itinero-etikedoj, distribuaj listoj kaj reguloj de split-horizon ekzistas por haltigi tion ĉe la fonto, kaj ili estas pli malmultekostaj ol filtrilo, kiu kongruas kun unu sola prefikso.
Post la ŝanĝo, kontrolu la antaŭan kaj la rean direktojn aparte, ĉar buklo povas esti anstataŭigita per nigra truo sen ia videbla plibonigo de la simptomo. Rulu ip route get de ambaŭ finoj, sendu trafikon de gastiganto, kiu ne estas la pordego, kaj lasu ip monitor route funkcii almenaŭ unu tenan tempigilon, por ke svingiĝo ne estu prenita kiel riparo.
Antaŭ ol ŝanĝi ion ajn, konfirmu ĉi tiujn kvin punktojn: la prefikso estas stabila aŭ kirliĝas, la sekva salto ĉe ambaŭ finoj montras al tunelo, la saltonombro ripetiĝas aŭ ne, unu ejo posedas la prefikson, kaj vi havas administran vojon, kiu postvivas la ŝanĝon. Se iu el la kvin estas nekonata, la aliaj kvar estas konjektoj.