xishang0128
57725078e0
chore: Adjust the error log for the search process
2024-10-11 07:35:51 +08:00
wwqgtxx
990de84391
chore: better atomic using
2024-10-02 14:45:06 +08:00
wwqgtxx
43cb48231a
cache: add dns cache in udp packet sender
...
reduce the cost of re-resolving DNS for each packet received and prevent the target IP from jumping between multiple resolution results
2024-09-26 22:21:59 +08:00
wwqgtxx
4fa15c6334
chore: ensures packets can be sent without blocking the tunnel
2024-09-26 11:21:07 +08:00
wwqgtxx
5812a7bdeb
chore: simplify the code
2024-09-25 21:37:15 +08:00
HamsterReserved
3922b17067
chore: deliver UDP packets from same connection in receiving order ( #1540 )
...
All UDP packets are queued into a single channel, and multiple
workers are launched to poll the channel in current design.
This introduces a problem where UDP packets from a single connection
are delivered to different workers, thus forwarded in a random order
if workers are on different CPU cores. Though UDP peers normally
have their own logic to handle out-of-order packets, this behavior will
inevitably cause significant variance in delay and harm connection quality.
Furthermore, this out-of-order behavior is noticeable even if the underlying
transport could provide guaranteed orderly delivery - this is unacceptable.
This commit takes the idea of RSS in terms of NICs: it creates a distinct
queue for each worker, hashes incoming packets, and distribute the packet
to a worker by hash result. The tuple (SrcIP, SrcPort, DstIP, DstPort, Proto)
is used for hashing (Proto is always UDP so it's dropped from final
implementation), thus packets from the same connection can be sent to
the same worker, keeping the receiving order. Different connections can be
hashed to different workers to maintain performance.
Performance for single UDP connection is not affected, as there is already
a lock in natTable that prevents multiple packets being processed in different
workers, limiting single connection forwarding performance to 1 worker.
The only performance penalty is the hashing code, which should be neglectable
given the footprint of en/decryption work.
Co-authored-by: Hamster Tian <haotia@gmail.com>
2024-09-25 21:28:30 +08:00
wwqgtxx
a08aa10630
chore: some internal types support encoding.TextUnmarshaler
2024-09-19 18:36:24 +08:00
wwqgtxx
8483178524
feat: sniff
add skip-src-address
and skip-dst-address
2024-08-27 20:33:43 +08:00
wwqgtxx
27bcb26ecd
chore: better config internal structure
2024-08-24 20:49:12 +08:00
wwqgtxx
313493cc94
chore: add fswatch
2024-07-24 14:37:10 +08:00
wwqgtxx
09be5cbc99
feat: tun support auto-redirect
, route-address-set
and route-exclude-address-set
2024-06-17 22:04:51 +08:00
wwqgtxx
40f40f6d24
fix: dns dial to wrong target
2024-06-15 13:32:57 +08:00
wwqgtxx
d96d7651ca
chore: add inner dns proxied connection log
2024-06-13 09:07:05 +08:00
wwqgtxx
f317baa8de
feat: add respect-rules
for dns
2024-06-12 15:25:34 +08:00
wwqgtxx
40f5c5b987
chore: don't retry when rejected loopback connection
2024-04-03 08:42:15 +08:00
wwqgtxx
367a287153
chore: don't lookup process when Type==INNER
2024-03-28 21:49:44 +08:00
wwqgtxx
e6011301b2
chore: rebuild slowdown code
2024-01-30 19:41:50 +08:00
wwqgtxx
2e12ceeaed
chore: stop retry when couldn't find ip
2024-01-02 21:49:27 +08:00
wwqgtxx
33bc7914e9
chore: read waiter for pipe
2024-01-02 18:34:34 +08:00
PuerNya
4cea3125e6
Revert 8cf14bb6
and 9d8c3b0a
2023-12-24 22:26:18 +08:00
Larvan2
59ab4fe745
chore: better Reject-Drop for UDP
2023-12-22 21:28:54 +08:00
PuerNya
9d8c3b0a3b
fix: udp nat handle
2023-12-19 00:19:40 +08:00
PuerNya
8cf14bb67e
chore: reslove udp host after rule matching
2023-12-18 17:13:53 +08:00
wwqgtxx
cbec564af9
chore: adapt new ReadWait interfaces
2023-12-07 23:32:37 +08:00
wwqgtxx
37791acb59
chore: upgrade xsync to v3
2023-11-23 10:24:01 +08:00
H1JK
1479b449df
chore: Cleanup code
2023-11-17 23:12:10 +08:00
Steve Johnson
aa3c1ac623
fix: fix package name rules match
2023-11-17 19:39:57 +08:00
Steve Johnson
b73382f60a
fix: fix android-arm64 build
2023-11-17 10:53:57 +08:00
Steve Johnson
9e96d70840
feat: share more code from android branch
2023-11-17 01:21:02 +08:00
wwqgtxx
17c9d507be
chore: hello mihomo
2023-11-03 21:58:21 +08:00
5aaee9
de90c276af
feat(sniffer): add quic sniffer
2023-10-19 18:30:20 +08:00
wwqgtxx
270a080b55
fix: sing listener panic
2023-10-11 10:55:12 +08:00
wwqgtxx
7ed25ddc74
chore: better atomic using
2023-10-10 21:28:46 +08:00
wwqgtxx
e0458a8fde
chore: decrease goroutine used in core tunnel
2023-09-28 18:59:31 +08:00
Kiva
67d7e53f7a
feat: recovering preHandleMetadata
failure from sniffing ( #769 )
2023-09-24 19:27:55 +08:00
PuerNya
0d300a3540
chore: handle provider proxies in proxies api
2023-09-24 15:39:14 +08:00
wwqgtxx
1cad615b25
chore: using xsync.MapOf replace sync.Map
2023-09-02 16:54:48 +08:00
wwqgtxx
e2e0fd4eba
chore: using uint16 for ports in Metadata
2023-08-09 13:51:02 +08:00
wwqgtxx
9b50f56e7c
fix: tunnel's handleUDPToLocal panic
2023-07-16 10:35:10 +08:00
wwqgtxx
614cc93cac
chore: better close single connection in restful api
2023-06-26 18:25:36 +08:00
wwqgtxx
1cb75350e2
chore: statistic's Snapshot only contains TrackerInfo
2023-06-26 18:13:17 +08:00
wwqgtxx
42ef4fedfa
chore: avoid unneeded map copy when close connection in restful api
2023-06-26 17:46:14 +08:00
Skyxim
c57f17d094
chore: reduce process lookup attempts when process not exist #613
2023-06-08 18:07:56 +08:00
wwqgtxx
63b5387164
chore: update proxy's udpConn when received a new packet
2023-06-03 21:40:09 +08:00
wwqgtxx
73140ab826
fix: udp panic when server return a domain name
2023-05-27 13:43:41 +08:00
wwqgtxx
1a9104c003
fix: UDP packet should not return io.EOF
2023-05-15 19:06:58 +08:00
wwqgtxx
a22b1cd69e
fix: sing-based listener panic
2023-05-12 09:14:27 +08:00
wwqgtxx
f1be9b3f4a
fix: tuic server return error udp address
2023-05-11 22:45:27 +08:00
wwqgtxx
75cd72385a
chore: decrease direct udp read memory used for no-windows platform
2023-05-11 13:47:51 +08:00
Skyxim
928dcf9af9
chore: better memory fetching time
2023-04-27 06:55:53 +00:00