UDP nije uvijek brži: kako odabrati OpenVPN transport
UDP je razuman zadani izbor za OpenVPN, a ne presuda. Usporedite transporte na istom putu i zadatku i provjerite koji listener zaista radi.
Svaki vodič kaže da UDP pobjeđuje TCP za OpenVPN, a taj je savjet zadana postavka, ne mjerenje. Transport mijenja kako se paketi dostavljaju i što se događa kada ih put izgubi, a ne kako se tunel šifrira. Iza captive portala ili proxyja koji dopušta samo port 443, sporija je opcija ona koja se uopće povezuje. Ono što slijedi razdvaja što protokol radi od onoga što vaša pristupna mreža dopušta.
Što transport zapravo mijenja
TCP isporučuje pouzdan, uređen tok bajtova i ponovno šalje sve što se izgubi, kako propisuje RFC 9293. UDP predaje datagrame mreži, a OpenVPN vodi vlastiti sloj pouzdanosti preko tog socketa. Enkapsuliranje TCP-a u TCP slaže dvije petlje oporavka, pa jedan izgubljeni segment može zadržati unutarnji tok dok ne stigne vanjsko ponovno slanje. Ta je interakcija pravi argument za UDP i pojavljuje se kao latencija, a ne kao propusnost.
Učinak raste s gubicima i vremenom kružnog puta. Na čistom lokalnom putu oba transporta djeluju identično, zato laboratorijski benchmark rijetko reproducira pritužbu. Na zagušenoj mobilnoj vezi razlika se vidi u interaktivnim sesijama mnogo prije nego što veliki prijenos išta primijeti.
Ništa od ovoga ne dira povjerljivost ni cjelovitost. TLS rukovanje i šifra podatkovnog kanala isti su za oba transporta, pa prebacivanje ne može spasiti slab skup šifri.
Gdje TCP zaslužuje svoje mjesto
Pristupne mreže uobičajen su razlog za odabir TCP-a. Hotel, zračna luka ili gostinska mreža mogu dopustiti odlazni 443 i odbaciti sve ostalo, a TCP listener na tom portu jedini je profil koji radi. To je dostupnost, a ne performansa, i dovoljno je dobar razlog sam po sebi.
TCP pomaže i kada je put stabilan, ali su posredni uređaji neprijateljski. Neke mreže resetiraju dugotrajne UDP tokove dok toleriraju TCP sesije koje nalikuju običnom web prometu. Hoće li ta sličnost uspjeti, svojstvo je konkretne mreže i nijedan vodič to ne može obećati za sve. Testirajte unutar mreže koja pada prije nego optužite protokol.
Odbijena prijava nije problem transporta. Isključivanje provjere certifikata da se veza progura druga je promjena s mnogo gorim ishodom.
Držati TCP profil spremnim praktičan je kompromis. Većina klijenata čuva oba i dopušta prebacivanje kada mreža odbije UDP put, što ništa ne stoji dok ne zatreba. Ono što ne treba raditi jest isporučiti dva profila usmjerena na različite krajnje točke, jer tada vaša usporedba mjeri poslužitelje.
Provjerite koji listener zaista imate
Prije usporedbe performansi potvrdite da se obje strane slažu o transportu i portu. Promjena proto udp u proto tcp u klijentskoj datoteci ne stvara poslužiteljski listener. Poslužitelj mora biti konfiguriran za taj protokol, a profil se mora s njim podudarati.
grep -E '^(proto|port|remote)' /etc/openvpn/server.conf
ss -lunp | grep openvpn
ss -ltnp | grep openvpn
grep ispisuje što je poslužitelju rečeno da koristi, dok dva popisa socketa pokazuju na što je vezan. UDP listener pojavljuje se samo na prvom popisu, a TCP listener samo na drugom, pa je red koji nedostaje najbrži način da nađete profil koji nikada nije primijenjen. Usporedite i port, jer TCP profil na 1194 ponaša se drugačije od onoga na 443 u većini pristupnih mreža. Ponovno pokrenite servis nakon promjene i pročitajte red u dnevniku koji izvješćuje o povezivanju.
Potvrda na strani klijenta je jeftina: pokrenite vezu s --verb 4 i pročitajte red o transportu u dnevniku. Ako klijent kaže UDP dok poslužitelj sluša na TCP, rukovanje nikada ne počinje i nikakvo podešavanje ne pomaže.
Usporedite radno opterećenje, ne oznaku transporta
Poštena usporedba drži sve osim transporta konstantnim. Isti uređaj, ista pristupna mreža, isti odredišni host, ista aplikacija i idealno isti poslužitelj. Ako dva profila pokazuju na različite hostove, mjerite i te hostove.
Zabilježite tri ishoda za svako pokretanje: uspostavlja li se tunel, ostaje li uspostavljen i dovršava li se zadatak. Mali zahtjevi koji rade dok se veliki prijenosi zaglave upućuju na veličinu paketa i MTU, a ne na transport. Ponovna povezivanja upućuju na put ili na istek vremena posrednog uređaja.
Zadržite profil koji radi u uvjetima u kojima se doista nađete, a drugi sačuvajte. Izbor pripada mreži, a ne osobi, i zato je svaki pojedinačni zadani odgovor negdje pogrešan.