UDP nije uvijek brži: kako izabrati OpenVPN transport
UDP je razuman podrazumijevani izbor za OpenVPN, a ne presuda. Uporedite 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 savjet je podrazumijevana postavka, ne mjerenje. Transport mijenja kako se paketi dostavljaju i šta se dešava kada ih put izgubi, a ne kako se tunel šifrira. Iza captive portala ili proxyja koji dozvoljava samo port 443, sporija opcija je ona koja se uopšte povezuje. Ono što slijedi razdvaja šta protokol radi od onoga što vaša pristupna mreža dozvoljava.
Šta transport zapravo mijenja
TCP isporučuje pouzdan, uređen tok bajtova i ponovo šalje sve što se izgubi, kako propisuje RFC 9293. UDP predaje datagrame mreži, a OpenVPN vodi sopstveni sloj pouzdanosti preko tog socketa. Enkapsuliranje TCP-a u TCP slaže dvije petlje oporavka, pa jedan izgubljeni segment može zadržati unutrašnji tok dok ne stigne vanjsko ponovno slanje. Ta interakcija je 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 reprodukuje žalbu. Na zagušenoj mobilnoj vezi razlika se vidi u interaktivnim sesijama mnogo prije nego što veliki prenos išta primijeti.
Ništa od ovoga ne dira povjerljivost ni integritet. 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 su uobičajen razlog za izbor TCP-a. Hotel, aerodrom ili gostinska mreža mogu dozvoliti 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 resetuju dugotrajne UDP tokove dok tolerišu TCP sesije koje liče na običan web saobraćaj. Da li ta sličnost uspijeva, 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 košta dok ne zatreba. Ono što ne treba raditi jeste isporučiti dva profila usmjerena na različite krajnje točke, jer tada vaše poređenje mjeri servere.
Provjerite koji listener zaista imate
Prije poređenja performansi potvrdite da se obje strane slažu o transportu i portu. Promjena proto udp u proto tcp u klijentskoj datoteci ne stvara serverski listener. Server mora biti konfigurisan 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 šta je serveru rečeno da koristi, dok dva popisa socketa pokazuju na šta 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. Uporedite i port, jer TCP profil na 1194 ponaša se drugačije od onog na 443 u većini pristupnih mreža. Ponovo pokrenite servis nakon promjene i pročitajte red u dnevniku koji izvještava 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 server sluša na TCP, rukovanje nikada ne počinje i nikakvo podešavanje ne pomaže.
Uporedite radno opterećenje, ne oznaku transporta
Pošteno poređenje drži sve osim transporta konstantnim. Isti uređaj, ista pristupna mreža, isti odredišni host, ista aplikacija i idealno isti server. Ako dva profila pokazuju na različite hostove, mjerite i te hostove.
Zabilježite tri ishoda za svako pokretanje: da li se tunel uspostavlja, da li ostaje uspostavljen i da li se zadatak dovršava. Mali zahtjevi koji rade dok se veliki prenosi 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 uslovima u kojima se zaista nađete, a drugi sačuvajte. Izbor pripada mreži, a ne osobi, i zato je svaki pojedinačni podrazumijevani odgovor negdje pogrešan.