forked from zihuaye/3xsd
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathchangelog.txt
132 lines (106 loc) · 5.25 KB
/
changelog.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
v0.0.26 2016.10.29
added:
3nsd GeoIP based name resolving(src ip based geo resolving)
3wdd scripts define on tunnel up/down/route-change to execute
optimized:
3wdd encryption logic: CFB/OFB/CTR padding is not required
3wdd encrypt codes, now with a Blowfish-ctr method, tunnel data transfer performance
is closed to raw non-encrypt tunnel. I believe that with a intel AES-NI supported CPU
(like XEON E3-1240/1270), AES-128-CTR can also do it
fixed:
3wdd In check_3wd() var: _fixed_metric bug fix
v0.0.25 2016.07.12
added:
3wdd blowfish-cbc/cfb/ctr encrypt method(it felt that's faster than aes-cbc/cfb/ecb?)
fixed:
3wdd bugs in route metric function: _route not in route_metric_fixed[], no key value error
v0.0.24 2016.06.12
added:
3wdd tunnel data relay option, see .conf, for systems not supporting tun interface creating
3wdd route metric, routing data through different path, depending on tunnel rtt(choose the best one)
3nsd global DNS Left-Right Range Resolve(LRRR), see white paper and .conf(experimental)
v0.0.23 2016.04.02
added:
3wdd config item 'io_mode' : block, default(block), non_block
block mode use 2 threads per tunnel with blocking io, bi-direction forwarding packages
non_block mode use 1 thread for tunnels per process with non-blocking io, epoll to handle udt&tun events
non_block mode take higher cpu consumtion than block mode, but will performance better in multi-tunnels env
on the other hand, block mode runs better in single-tunnel env
3zsd resolve dns ip of request hostname, then direct to it(transparent feature), through a special
config line: * = 100,0.0.0.0:0
fixed:
3wdd in wdd_idle_worker(), exclude worker_id==0 situation(master process should not recieve udt connection)
3wdd udt tunnel using epoll extremely slow issue, see https://github.com/zihuaye/3xsd/issues/2 for detail
optimized:
3wdd & 3zsd - using deque instead of list in zidles and udt_send_buf
3wsd _xHandler.send_out_all_headers() logical optimize
v0.0.22 2016.03.21
added:
3wdd tunnel on-the-fly compress function.
zlib & lzo support, lzo faster and lower CPU consumption, zlib get higher compress rate
should not use at already compressed data transfering
3wdd server side tunnel route support.
fixed:
3wdd struct.pack/unpack() byte order may be unmatched under different cpu arch issue, all set to "network"(big-endian).
v0.0.21 2016.03.13
optimized:
3wdd UDT & TUN handling loop major rewrite, cpu consumption rate decrease 0.6%.
Now UDT tunnel(no encrypt) performing 50%-60% speed of direct TCP connection with ZetaTCP,
and package lost rate remaining below 0.6%, while direct connection has 1.4%-3%.
However, UDT tunnel beats normal TCP connection without ZetaTCP, with 30%-50% outperforming.(v)
(Test CN-US WAN link with 150ms-280ms latency, through the always-jammed CUCN submarine cable)
And an encrypted UDT tunnel will has 50% performance decrease.
v0.0.20 2016.03.11
fixed:
3wdd udt tunnel extremly slow issue - update the pyudt-epoll-branch-memleak-ccc-fix.patch file.
Optimized codes coming at v0.0.21
v0.0.20 2016.03.07
fixed:
3wdd memory leak issue under centos6.x/python 2.6/2.7
to fix this issue, use the pyudt-epoll-branch-memleak-ccc-fix.patch file with pyudt epoll-fixes branch
and:
cd PyUDT-epoll-fixes/
patch -p0 < pyudt-epoll-branch-memleak-ccc-fix.patch
python ./setup.py build
python ./setup.py install
optimized:
3wdd tun & udt socket use the same epoll, and the same handling thread
v0.0.19 2016.02.10
unfixed:
3wdd memory leak issue under centos6.x/python 2.6/2.7, centos7.x/python 2.7 works fine, seems no solution
added:
3wdd AES-128-ECB/CBC/CFB encrypt method
3wdd session based encrypt configuration
optimized:
3wdd multi threads(max to 2*cores) to handle multi sessions/tunnels,
take advantage of multi-cores, but the GIL..
implemented but hard code the thread_limit to 1
3wdd multi processes mode when more than 1 worker, avoild GIL issue and take full power of multi-cores
corresponding to worker_id, port number varied from 9000 to 9001, 9002...
load-balance amount 9000-900x with period-least-connections policy.
v0.0.18 2016.02.01
fixed:
_Z_EpollServer send_buf_size miss configed issue
optimized:
'kill -HUP <master_pid>' to reload config and child processes
3wsd config item 'expire_types' to control generating 'Cache-Control' and 'Expires' headers for certain mime types
3zsd '*' wildcast hostname to pass to default backends
added:
3wdd - a 'warp drive' server, serve UDT tunneling
v0.0.17 2015.12.05
fixed:
gevent time.sleep() not implement in lower version(<1.0)
http/1.0 client chunked gzip transfer problem by disable it
http status line problem with caching it
http pipelining problem
v0.0.16 2015.11.21
added:
3wsd/3fsd PUT/DELETE method
3zsd xcache persistent storage(shelve)
3wsd on-the-fly gzip cache(shelve)
Independent thread to maintain mem cache, shelf, connections, ...
3zsd ip_hash & url_hash options to choose backend server, re-locating when backend failure
optimized:
Large file/request transfer
3zsd connect backend error/failure handling
Shelve lock to be save with multiple reader/writer