Käyttäjä kertoo, että sisäinen sovellus toimii yhdeltä koneelta ja epäonnistuu toiselta, kun taas yhdyskäytävältä ajettu ping onnistuu molemmissa tapauksissa. Kun usealla tunnelilla on sama hinta, kyse ei ole ristiriidasta. Jokainen virta sijoitetaan omalle seuraavalle hypylleen, joten testisi ja käyttäjän istunto saattavat yksinkertaisesti käyttää eri polkuja. Alla oleva läpikäynti toistaa valinnan ennen kuin mitään muutetaan.

Yksi ping, useita mahdollisia polkuja

Kun reitillä on useampi kuin yksi seuraava hyppy samalla hinnalla, reitittimen on valittava yksi pakettia kohden. Useimmat toteutukset tiivistävät paketin kenttiä, tavallisesti lähde- ja kohdeosoitteet sekä protokollan ja portit, jotta vastaukset pysyvät samalla polulla. Eri sovellukset, jopa yhden sovelluksen eri yhteydet, tuottavat eri tiivisteitä.

Siksi yhdyskäytävältä tehty diagnoosi todistaa niin vähän. Yhdyskäytävän oma testi käyttää omia osoitteitaan ja porttejaan ja siten omaa tiivistettään. Se voi päätyä terveelle tunnelille, kun käyttäjä päätyy yhä rikkinäiselle.

Miten alusta valitsee seuraavan hypyn

Toista valinta sen sijaan, että arvaisit sen. Kysy ytimeltä, mitä reittiä se käyttäisi samalle lähteelle ja kohteelle kuin epäonnistuva istunto. Haku sisältää kenttiä, jotka tavallinen kohdehaku jättää huomiotta. Aja se myös toimivalta asiakkaalta ja vertaa kahta vastausta:

ip route get 10.20.5.7 from 10.20.0.14

Uudemmat iproute2-versiot hyväksyvät myös protokollan ja kohdeportin, millä on merkitystä, kun tiiviste sisältää ne. Vertaa tuota tulostetta samaan hakuun toimivalta asiakkaalta, ja ero on se todiste, joka sinulta puuttui.

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

Seuraa epäonnistuvaa virtaa, älä reititystaulukkoa

Reititystaulukko luettelee molemmat tunnelit ja näyttää määritelmän mukaan oikealta. Kysymys on, mitä kukin tunneli tekee paketille, kun se on valittu. Varmista, että molemmat kuljettavat samat suojatut etuliitteet, saman edelleenlähetysluvan ja paluupolun, joka saavuttaa saman asiakkaan.

Kiinnitä huomiota tilaa ylläpitäviin laitteisiin välissä. Jos pyyntö lähtee yhden tunnelin kautta ja vastaus palaa toisen kautta, palomuuri tai NAT, joka ei koskaan nähnyt alkuperäistä virtaa, pudottaa sen. Molemmat tunnelit välittävät liikennettä oikein, ja yhteys epäonnistuu silti.

Tarkista myös MTU poluittain. Ylimääräisen kapseloinnin polku pienentää käytettävissä olevaa kokoa, ja siirto, joka onnistuu yhden tunnelin kautta, pysähtyy toisella täsmälleen siinä koossa, jossa pienempi katkeaa.

Vertaa yhtä polkua kerrallaan

Missä suunnittelu sallii huollon, ota yksi tunneli pois käytöstä ja toista käyttäjän tehtävä. Jos vika katoaa, ongelma kuuluu poistettuun polkuun, ja seuraava askel on verrata sen kokoonpanoa naapuriin sen sijaan, että tutkisit reititystaulukkoa uudelleen.

Vertaa todellista sovellusta, älä toistuvia pingejä. Kirjaa, seuraako vika tiettyä seuraavaa hyppyä, pakettikokoa vai uudelleenyhdistämisen jälkeistä siirtymää, koska nämä kolme kuvioa viittaavat eri korjauksiin.

Kirjoita lopuksi muistiin, miksi polut katsotaan samanarvoisiksi ja miten vian on tarkoitus poistaa yksi niistä käytöstä. Monipolkuisuus on turvallista vain, kun polut todella ovat vaihdettavissa, ja se on suunnitteluväite, joka kannattaa tarkistaa eikä olettaa.

Aiheeseen liittyvät artikkelit