Conceptes

Com triar entre TCP, Vision i QUIC

Tria el mode segons la xarxa i el trànsit de les aplicacions, amb camins TCP i UDP separats darrere d’una mateixa entrada SOCKS5.

Versió aplicable 1.0.0-alphaTraduït

Visió general

Primer cal distingir dues qüestions: l’aplicació envia TCP o UDP? Umbra fa servir TCP o QUIC per portar-lo al servidor? El tipus de trànsit de l’aplicació i el transport exterior són coses diferents. transport tria el transport exterior principal; udp_transport permet triar per separat el de les peticions UDP i, si s’omet, hereta el valor de transport.

Triar segons les necessitats

Necessitat o condició de xarxaPunt de partidaQuè cal tenir en compte
Establir primer la connexió, o connectar-se quan la xarxa filtra UDPtransport = "tcp"Obre el port TCP al servidor; mux està activat per defecte
Reutilitzar una connexió existent per a diverses peticions TCP simultàniesTCP + mux = trueComparteixen el TCP exterior; la pèrdua de paquets encara pot afectar altres fluxos
Reduir el doble xifratge del trànsit que compleix els requisits, principalment HTTPSTCP + mux = falseUtilitza connexions Vision dedicades; no tot el trànsit TLS admet el reenviament directe
Patir reinicialitzacions TCP RST freqüents mentre UDP és accessibletransport = "quic"QUIC ha d’estar disponible als dos extrems; UDP també pot patir limitacions de velocitat o bloquejos
Mantenir TCP amb Vision i enviar UDP separadament per QUICTCP + udp_transport = "quic" + mux = falseActiva l’escolta TCP i UDP al mateix servidor

No hi ha cap mode que sigui el més ràpid en totes les xarxes. Verifica primer la connectivitat i després compara la latència, l’estabilitat i el cabal de les teves aplicacions reals; no canviïs diversos paràmetres alhora. Aquestes opcions no detecten automàticament la xarxa ni canvien de transport per si soles.

Multiplexació TCP

transport = "tcp"
mux = true

Diverses peticions comparteixen una connexió exterior xifrada, cosa que redueix la necessitat d’establir connexions repetidament. La versió actual ajusta les finestres segons el consum real de trànsit i el temps d’anada i tornada, dins dels límits d’un pressupost de memòria. Pot ser adequat per provar peticions simultànies, però no elimina el bloqueig de cap de línia a la capa de transport TCP.

El mux adaptatiu requereix versions compatibles als dos extrems; quan passis a 1.0.0-alpha, actualitza el client i el servidor alhora. Consulta els paràmetres de recursos a la referència de configuració.

TCP / Vision dedicat

transport = "tcp"
mux = false

Per al trànsit TLS 1.3 intern que compleix els requisits, un cop negociat de manera autenticada el límit de canvi de reenviament, es poden transmetre els registres TLS ja xifrats sense continuar amb el xifratge TLS exterior ni l’encapsulació addicional. El trànsit no TLS o amb TLS no admès continua xifrat: activar Vision no envia en clar les dades de les aplicacions.

Vision utilitza E/S en espai d’usuari, no còpia zero al nucli. Reduir el processament duplicat és un avantatge del mecanisme, no un avantatge de velocitat mesurat respecte de la competència. Continua fent servir HTTPS a la capa d’aplicació.

QUIC

transport = "quic"

QUIC funciona sobre UDP i pot evitar la injecció de TCP RST i el bloqueig de cap de línia entre fluxos QUIC diferents causat per les retransmissions de la capa de transport; dins d’un mateix flux fiable, el lliurament continua sent ordenat, i tots els fluxos comparteixen la capacitat del camí i el control de congestió. El servidor ha d’activar udp_listen, obrir el port UDP al tallafoc i poder accedir al lloc QUIC real de reserva configurat.

Actualment s’utilitza Quinn BBR per defecte; també es pot triar cubic o new-reno. Són paràmetres de QUIC i no modifiquen el control de congestió TCP de Linux. Si la xarxa limita UDP, QUIC no és una alternativa fiable a TCP.

TCP / Vision + QUIC UDP

Afegeix a la configuració completa del client:

transport = "tcp"
udp_transport = "quic"
mux = false
socks_listen = "127.0.0.1:1080"

Al mateix servidor, configura simultàniament:

listen = "0.0.0.0:443"
udp_listen = "0.0.0.0:443"

Aquests fragments s’han d’integrar en una configuració completa; no substitueixen les claus, el lloc real de destinació ni els altres camps obligatoris. Un client, un servidor i una entrada SOCKS5 local són suficients per als dos camins. En un client de tipus Clash, udp: true només permet peticions UDP; no força les peticions TCP ordinàries a passar per QUIC.

Farciment i estratègia d’escriptura TCP

El farciment per defecte afegeix dades de longitud aleatòria al principi de la connexió i després en redueix la freqüència, per dificultar la identificació directa de la negociació interna a partir de la longitud dels registres. Consumeix amplada de banda addicional i no promet eliminar totes les característiques del trànsit. En general, mantén padding_scheme = "default" i modifica’l només si tens resultats de proves que ho justifiquin.

tcp_evasion = "segment" només divideix el ClientHello en escriptures ordenades de l’aplicació; no garanteix els límits dels paquets TCP que acabarà enviant el sistema operatiu. Si hi ha problemes de compatibilitat, pots provar off. Actualment no s’admet Geneva DSL i no s’ha de desplegar com si fos una funció disponible.

Passos següents

En aquesta pàgina