David Fifield
a579c969e6
encapsulation.paddingBuffer can be statically allocated.
2022-11-16 13:48:34 -07:00
David Fifield
4ae63eccab
Benchmark websocket.Conn Upgrade creation.
...
I had thought to set a buffer size of 2048, half the websocket package
default of 4096. But it turns out when you don't set a buffer size, the
websocket package reuses the HTTP server's read/write buffers, which
empirically already have a size of 2048.
$ go test -bench=BenchmarkUpgradeBufferSize -benchmem -benchtime=5s
BenchmarkUpgradeBufferSize/0-4 25669 234566 ns/op 32604 B/op 113 allocs/op
BenchmarkUpgradeBufferSize/128-4 24739 238283 ns/op 24325 B/op 117 allocs/op
BenchmarkUpgradeBufferSize/1024-4 25352 238885 ns/op 28087 B/op 116 allocs/op
BenchmarkUpgradeBufferSize/2048-4 22660 234890 ns/op 32444 B/op 116 allocs/op
BenchmarkUpgradeBufferSize/4096-4 25668 232591 ns/op 41672 B/op 116 allocs/op
BenchmarkUpgradeBufferSize/8192-4 24908 240755 ns/op 59103 B/op 116 allocs/op
2022-11-16 13:48:34 -07:00
David Fifield
2321642f3c
Hoist temporary buffers outside the loop.
...
Otherwise the buffers are re-allocated on every iteration, which is a
surprise to me. I thought the compiler would do this transformation
itself.
Now there is just one allocation per client←server read (one
messageReader) and two allocations per server←client read (one
messageReader and one messageWriter).
$ go test -bench=BenchmarkReadWrite -benchmem -benchtime=5s
BenchmarkReadWrite/c←s_150-4 481054 12849 ns/op 11.67 MB/s 8 B/op 1 allocs/op
BenchmarkReadWrite/s←c_150-4 421809 14095 ns/op 10.64 MB/s 56 B/op 2 allocs/op
BenchmarkReadWrite/c←s_3000-4 208564 28003 ns/op 107.13 MB/s 16 B/op 2 allocs/op
BenchmarkReadWrite/s←c_3000-4 186320 30576 ns/op 98.12 MB/s 112 B/op 4 allocs/op
2022-11-16 13:48:34 -07:00
David Fifield
264425a488
Use io.CopyBuffer in websocketconn.readLoop.
...
This avoids io.Copy allocating a 32 KB buffer on every call.
https://cs.opensource.google/go/go/+/refs/tags/go1.19.1:src/io/io.go;l=416
$ go test -bench=BenchmarkReadWrite -benchmem -benchtime=5s
BenchmarkReadWrite/c←s_150-4 385740 15114 ns/op 9.92 MB/s 4104 B/op 3 allocs/op
BenchmarkReadWrite/s←c_150-4 347070 16824 ns/op 8.92 MB/s 4152 B/op 4 allocs/op
BenchmarkReadWrite/c←s_3000-4 190257 31581 ns/op 94.99 MB/s 8208 B/op 6 allocs/op
BenchmarkReadWrite/s←c_3000-4 163233 34821 ns/op 86.16 MB/s 8304 B/op 8 allocs/op
2022-11-16 13:48:34 -07:00
David Fifield
3df514ae29
Call WriteMessage directly in websocketconn.Conn.Write.
...
In the client←server direction, this hits a fast path that avoids
allocating a messageWriter.
https://github.com/gorilla/websocket/blob/v1.5.0/conn.go#L760
Cuts the number of allocations in half in the client←server direction:
$ go test -bench=BenchmarkReadWrite -benchmem -benchtime=5s
BenchmarkReadWrite/c←s_150-4 597511 13358 ns/op 11.23 MB/s 33709 B/op 2 allocs/op
BenchmarkReadWrite/s←c_150-4 474176 13756 ns/op 10.90 MB/s 34968 B/op 4 allocs/op
BenchmarkReadWrite/c←s_3000-4 156488 36290 ns/op 82.67 MB/s 68673 B/op 5 allocs/op
BenchmarkReadWrite/s←c_3000-4 190897 34719 ns/op 86.41 MB/s 69730 B/op 8 allocs/op
2022-11-16 13:48:34 -07:00
David Fifield
8cadcaee70
Benchmark for websocketconn.Conn read/write.
...
Current output:
$ go test -bench=BenchmarkReadWrite -benchmem -benchtime=5s
BenchmarkReadWrite/c←s_150-4 451840 13904 ns/op 10.79 MB/s 34954 B/op 4 allocs/op
BenchmarkReadWrite/s←c_150-4 452560 16134 ns/op 9.30 MB/s 36378 B/op 4 allocs/op
BenchmarkReadWrite/c←s_3000-4 202950 40846 ns/op 73.45 MB/s 69833 B/op 8 allocs/op
BenchmarkReadWrite/s←c_3000-4 189262 37930 ns/op 79.09 MB/s 69768 B/op 8 allocs/op
2022-11-16 13:48:34 -07:00
David Fifield
0780f2e809
Add a orport-srcaddr
server transport option.
...
The option controls what source address to use when dialing the
(Ext)ORPort. Using a source address other than 127.0.0.1, or a range of
addresses, can help with localhost ephemeral port exhaustion.
https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/issues/40198
2022-11-16 19:41:42 +01:00
itchyonion
9d72b30603
proxy: Let verbose level act on file logging
2022-11-16 10:08:11 -08:00
itchyonion
768b80dbdf
Use event logger for proxy starting message and NAT info
2022-11-16 10:08:10 -08:00
David Fifield
2f55581098
Reduce the smux KeepAliveTimeout on the server from 10 to 4 minutes.
...
To save memory, we want to more aggressively close stale connections.
https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/issues/40175
2022-11-16 18:48:14 +01:00
David Fifield
12e8de8b24
Update github.com/gorilla/websocket to v1.5.0.
2022-11-15 17:21:33 -07:00
luciole
3185487aea
update formatTraffic so that bandwidth unit is always KB
2022-11-10 15:12:46 +01:00
meskio
ac8562803a
Merge remote-tracking branch 'gitlab/mr/107'
2022-10-17 12:36:19 +02:00
David Fifield
39df9b36b5
Fix uTLS issue number in ChangeLog.
...
The right issue number is #40054 .
The #40095 it referred to was for load balancing on the broker.
2022-10-16 23:14:38 -06:00
KokaKiwi
21d7449851
proxy: Check ephemeral port range ordering at flag parsing
2022-10-14 21:40:07 +02:00
KokaKiwi
10c8173120
proxy: Fix ephemeral ports range CLI flag (again)
2022-10-12 19:48:24 +02:00
Cecylia Bocovich
8b1970a3ce
Update CI tests to include latest and min go versions
2022-10-12 11:30:47 -04:00
Cecylia Bocovich
31b958302e
Bump minimum go version to 1.15
2022-10-12 11:03:06 -04:00
KokaKiwi
986fc8269a
proxy: Correctly handle argument parsing error
2022-10-12 16:51:39 +02:00
KokaKiwi
c5b291b114
proxy: Fix build with golang 1.13
2022-10-12 16:33:09 +02:00
meskio
56063efbba
Merge remote-tracking branch 'gitlab/mr/102'
2022-10-11 18:47:47 +02:00
trinity-1686a
5ef5142bb0
format using go-1.19
2022-10-09 21:15:50 +02:00
KokaKiwi
068af08703
Change how ephemeral-ports-range CLI flag is handled
2022-09-30 17:55:10 +02:00
KokaKiwi
47f9392645
proxy: Add ICE ephemeral ports range setting CLI flag
2022-09-30 17:55:08 +02:00
KokaKiwi
5e564f36ff
proxy: Add a SnowflakeProxy.makeWebRTCAPI() method
2022-09-30 17:55:06 +02:00
Tommaso Gragnato
9ce1de4eee
Use Pion's Setting Engine to reduce Multicast DNS noise
...
https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/issues/40123
The purpose of the patch is to prevent Pion from opening the mDNS port,
thus preventing snowflake from directly leaking .local candidates.
What this doesn't prevent is the resolution of .local candidates
once they are passed on to the system DNS.
2022-09-26 08:52:23 -07:00
Daniel Golle
a8829d49b7
Fix proxy command line help output
2022-09-26 10:37:29 -04:00
Shelikhoo
36f03dfd44
Record proxy type for proxy relay stats
2022-09-23 13:08:13 +01:00
itchyonion
03b2b56f87
Fix broker race condition
2022-07-19 18:25:27 -07:00
Shelikhoo
c983c13a84
Updated ChangeLog for v2.3.0 release
2022-06-23 11:40:29 +01:00
Shelikhoo
35e9ab8c0b
Use truncated hash instead crc64 for counted hash
2022-06-16 15:00:12 +01:00
Shelikhoo
b18e6fcfe4
Add document for Distinct IP file
2022-06-16 15:00:12 +01:00
Shelikhoo
af1134362a
Update distinct counter interface
2022-06-16 15:00:12 +01:00
Shelikhoo
be40b623a4
Add go sum for hyperloglog
2022-06-16 15:00:12 +01:00
Shelikhoo
2541b13166
Add distinct IP counter to broker
2022-06-16 15:00:10 +01:00
Shelikhoo
fa7d1e2bb7
Add distinct IP counter to metrics
2022-06-16 14:58:12 +01:00
Shelikhoo
211254fa98
Add distinct IP counter
2022-06-16 14:58:12 +01:00
Shelikhoo
97dea533da
Update Relay Pattern format to include dollar sign
2022-06-16 14:06:58 +01:00
Shelikhoo
ddf72025d1
Restrict Allowed Relay to Tor Pool by default
2022-06-16 14:06:58 +01:00
Shelikhoo
e5b799d618
Update documents for broker messages
2022-06-16 14:06:58 +01:00
Shelikhoo
0ae4d821f0
Move ErrExtraInfo to ipc.go
2022-06-16 14:06:58 +01:00
Shelikhoo
a4bbb728e6
Fix not zero metrics for 1.3 values
2022-06-16 14:06:58 +01:00
Shelikhoo
8ba89179f1
Add document for LoadBridgeInfo input
2022-06-16 14:06:58 +01:00
Shelikhoo
8ab45651d0
Disallow unknown bridge list file field
2022-06-16 14:06:58 +01:00
Shelikhoo
c5e5b45b06
Update message protocol version to 1.3 for RelayURL
2022-06-16 14:06:58 +01:00
Shelikhoo
f789dce6d2
Represent Bridge Fingerprint As String
2022-06-16 14:06:58 +01:00
Shelikhoo
dd61e2be0f
Add Proxy Relay URL Metrics Collection
2022-06-16 14:06:57 +01:00
Shelikhoo
b78eb74e42
Add Proxy Relay URL Rejection Metrics
2022-06-16 14:06:57 +01:00
Shelikhoo
7caab01785
Fixed desynchronized comment and behavior for log interval
...
In 64ce7dff1b
, the log interval is modified while the comment is left unchanged.
2022-06-16 14:06:57 +01:00
Shelikhoo
b391d98679
Add Proxy Relay URL Support Counting Metrics Output
2022-06-16 14:06:57 +01:00