Upit baze podataka visi preko IPsec-a: preraspodjela UDP ili TCP?
Upit koji visi nakon čistog rukovanja upućuje na unutrašnjost putanje tunela. Tri uslova odlučuju hoćete li popraviti putanju ili se vratiti na TCP na 443.
Upit koji visi nakon TCP rukovanja nije problem rutiranja. Greške rute obaraju rukovanje, pa sesija koja se uspostavi i zatim utihne upućuje na unutrašnjost putanje: inspekciju, MTU ili način na koji UDP paketi tunela stižu. Odluka pred vama je da li popraviti tu putanju ili prebaciti tunel na TCP. Tri uslova to rješavaju, a nijedan nije o bazi podataka.
Klasifikujte zastoj prije nego optužite tunel
Četiri ishoda izgledaju isto korisniku, a inženjeru znače potpuno različite stvari.
| What the client sees | What it rules out |
|---|---|
| Connection refused | Nothing is listening on the address and port the client reached |
| Timeout before the handshake | A filter, a missing route, or the wrong address |
| Handshake completes, query hangs | The session exists, so look at inspection, MTU and packet order |
| Stalls that recover on retry | Often reordering, or a state table entry expiring |
Samo posljednja dva reda opravdavaju vrijeme na tunelu. Odbijena veza preko VPN-a obično je baza podataka koja sluša samo na loopback-u, što je problem slušaoca, a istek vremena prije rukovanja je filter ili ruta. Ni jedno se ne poboljšava promjenom enkapsulacije.
Prvo upišite klasifikaciju u tiket. To je najjeftiniji korak i uklanja većinu prostora za pretragu.
Tri uslova koja odlučuju UDP protiv TCP-a
Enkapsulirani IPsec saobraćaj ide preko UDP-a, a UDP daje putanji slobodu da preraspoređuje i ispušta bez da ikome kaže. Kada preraspodjela izgura pakete izvan prozora protiv ponavljanja tunela, oni se tiho odbacuju i unutrašnja TCP sesija jednostavno čeka. To je mehanizam iza rukovanja koje uspije i upita koji se nikada ne vrati.
Popravljanje putanje ili vraćanje na TCP zavisi od tri stvari. Prvo, postoji li stvarni gubitak paketa na putanji ili samo preraspodjela? Drugo, možete li promijeniti gdje se inspekcija odvija ili isključiti ovaj tunel iz komponente koja preraspoređuje? Treće, je li opterećenje osjetljivo na obrazac zastoja, na primjer mnoge multipleksirane sesije koje dijele jednu vezu?
Ako je prvi odgovor gubitak, a drugi ne,TCP na 443 je pragmatična rezerva. Ako je drugi odgovor da, popravite putanju i zadržite UDP.
Čitajte zapis firewall-a, a ne grešku aplikacije
Aplikacija prijavljuje istek vremena, što vam ne govori ništa o uzroku. Vlastiti log firewall-a je mjesto gdje se odbacivanje ili blokada pojavljuje, pa filtrirajte po adresama baze podataka i aplikacije i tražite odbacivanja kao i prihvatanja.Blade-ovi za prevenciju prijetnji mogu odbaciti pakete bez stvaranja greške na nivou aplikacije, a to je upravo oblik upita koji visi. Tišina u logu je također podatak: upućuje na nešto što ne loguje, kao što je preraspodjela.
Provjerite i klaster. Pogrešno konfigurisan klaster može držati sesiju u tabeli stanja na jednom članu dok paketi idu putanjom drugog člana, pa odgovori stižu tamo gdje stanje ne postoji. Takvi zastoji izgledaju slučajno i ne koreliraju s opterećenjem.
Uporedite oba kraja prije nego što bilo šta promijenite, i upoređujte redoslijed dolaska, a ne broj paketa:
tcpdump -ni any udp port 4500 -w /tmp/encap.pcap
tcpdump -ni any tcp port 5432 -w /tmp/inner.pcapKoliko vas TCP na 443 zaista košta
Prebacivanje tunela na TCP uklanja simptom preraspodjele, jer middlebox sada vidi uređen tok. Ono stvara i TCP-over-TCP. Vanjska veza ponovo šalje ono što je unutrašnja već poslala, i jedan gubitak može zaustaviti sve multipleksirane sesije odjednom. Na čistoj putanji to je nevidljivo. Na putanji s gubicima lijek je gori od simptoma.
Zamjena je prihvatljiva kada je alternativa nikakva povezanost, i treba je dokumentovati kao izuzetak s vlasnikom umjesto prihvatiti kao normalno.
Zabilježite transport, port, primjer upita i izmjereni rezultat, plus datum. Bez tog zapisa sljedeći inženjer ponavlja eksperiment, a izuzetak tiho postaje arhitektura.
Neka odluka ostane podobna za reviziju
Dijagnoza putanje brzo stari. Middlebox se zamjenjuje, konfiguracija blade-a mijenja, veza nadograđuje, i razlog za TCP na 443 nestaje dok konfiguracija ostaje. Stavite datum revizije na izuzetak i navedite uslov koji bi vam omogućio povratak na UDP.
Testirajte oba transporta malim upitom i velikim skupom rezultata. Preraspodjela se pojavljuje kao zastoji zavisni od veličine, dok kvar slušaoca zaustavlja obje veličine jednako.