Užklausa, kuri stringa po TCP handshake, nėra maršrutizavimo problema. Maršruto klaidos sugriauna handshake, todėl sesija, kuri užsimezga ir paskui nutyla, rodo į maršruto vidų: inspekcija, MTU arba būdas, kuriuo ateina tunelio UDP paketai. Sprendimas priešais jus – taisyti tą maršrutą ar perkelti tunelį į TCP. Trys sąlygos tai nusprendžia, ir nė viena jų ne apie duomenų bazę.

Klasifikuokite sustojimą, prieš kaltindami tunelį

Keturi rezultatai vartotojui atrodo vienodai, o inžinieriui reiškia visiškai skirtingus dalykus.

What the client seesWhat it rules out
Connection refusedNothing is listening on the address and port the client reached
Timeout before the handshakeA filter, a missing route, or the wrong address
Handshake completes, query hangsThe session exists, so look at inspection, MTU and packet order
Stalls that recover on retryOften reordering, or a state table entry expiring

Tik paskutinės dvi eilutės pateisina laiką tunelyje. Atmestas ryšys per VPN paprastai reiškia, kad duomenų bazė klausosi tik loopback, o tai klausytojo problema, o skirtasis laikas prieš handshake yra filtras arba maršrutas. Nė vienas nepagerėja pakeitus inkapsuliavimą.

Pirmiausia įrašykite klasifikaciją į bilietą. Tai pigiausias žingsnis ir pašalina didžiąją dalį paieškos erdvės.

Trys sąlygos, kurios nusprendžia tarp UDP ir TCP

Inkapsuliuotas IPsec srautas keliauja per UDP, o UDP suteikia maršrutui laisvę perrikiuoti ir mesti niekam to nesakant. Kai perrikiavimas išstumia paketus už tunelio apsaugos nuo kartojimosi lango, jie tyliai išmetami, o vidinė TCP sesija tiesiog laukia. Tai mechanizmas, slypintis už sėkmingo handshake ir užklausos, kuri niekada negrįžta.

Taisyti maršrutą ar grįžti prie TCP priklauso nuo trijų dalykų. Pirma, ar maršrute yra tikras paketų praradimas, ar tik perrikiavimas? Antra, ar galite pakeisti, kur vyksta inspekcija, arba išskirti šį tunelį iš komponento, kuris perrikiuoja? Trečia, ar darbo krūvis jautrus sustojimų modeliui, pavyzdžiui, daug multipleksuotų sesijų, besidalijančių viena linija?

Jei pirmas atsakymas yra praradimas, o antras – ne,TCP per 443 yra pragmatiškas atsarginis variantas. Jei antras atsakymas yra taip, taisykite maršrutą ir palikite UDP.

Skaitykite ugniasienės įrašą, o ne programos klaidą

Programa praneša apie skirtąjį laiką, o tai nieko nepasako apie priežastį. Pačios ugniasienės žurnalas yra vieta, kur atsiranda išmetimas arba blokavimas, todėl filtruokite pagal duomenų bazės ir programos adresus ir ieškokite tiek išmetimų, tiek priėmimų.Grėsmių prevencijos moduliai gali išmesti paketus nesukurdami programos lygio klaidos, ir tai yra būtent stringančios užklausos forma. Tyla žurnale taip pat yra duomenys: ji rodo į tai, kas neįrašoma, pavyzdžiui, perrikiavimą.

Patikrinkite ir klasterį. Neteisingai sukonfigūruotas klasteris gali laikyti sesiją vieno nario būsenų lentelėje, kol paketai eina kito nario maršrutu, todėl atsakymai atvyksta ten, kur būsenos nėra. Tokie sustojimai atrodo atsitiktiniai ir nekoreliuoja su apkrova.

Palyginkite abu galus prieš ką nors keisdami ir lyginkite atvykimo tvarką, o ne paketų skaičių:

tcpdump -ni any udp port 4500 -w /tmp/encap.pcap
tcpdump -ni any tcp port 5432 -w /tmp/inner.pcap

Kiek jums iš tikrųjų kainuoja TCP per 443

Tunelio perkėlimas į TCP pašalina perrikiavimo simptomą, nes tarpinė dėžė dabar mato sutvarkytą srautą. Jis taip pat sukuria TCP per TCP. Išorinis ryšys persiunčia tai, ką vidinis jau persiuntė, ir vienas praradimas gali sustabdyti visas multipleksuotas sesijas iš karto. Švariame maršrute tai nematoma. Maršrute su praradimais gydymas blogesnis už simptomą.

Mainai priimtini, kai alternatyva yra visiškas ryšio nebuvimas, ir tai turi būti dokumentuojama kaip išimtis su atsakingu asmeniu, o ne priimama kaip norma.

Užrašykite transportą, prievadą, pavyzdinę užklausą ir išmatuotą rezultatą bei datą. Be to įrašo kitas inžinierius kartoja eksperimentą, o išimtis tyliai tampa architektūra.

Išlaikykite sprendimą peržiūrimą

Maršruto diagnostika greitai sensta. Tarpinė dėžė keičiama, modulio konfigūracija kinta, linija atnaujinama, o priežastis naudoti TCP per 443 išnyksta, konfigūracijai pasiliekant. Uždėkite peržiūros datą išimčiai ir įvardykite sąlygą, kuri leistų grįžti prie UDP.

Išbandykite abu transportus su maža užklausa ir su dideliu rezultatų rinkiniu. Perrikiavimas pasireiškia nuo dydžio priklausančiais sustojimais, o klausytojo gedimas sustabdo abu dydžius vienodai.

Susiję straipsniai