Blame

9ea8ff Samuli Seppänen 2025-01-29 07:28:13 1
# OpenVPN Hackathon 2014
2
3
## who
4
5
This is organized by Gert Döring (cron2) and sponsored by Spacenet AG ([http://www.space.net/](http://www.space.net/)).
6
7
We have space for about 10 people in the conference room I have booked so far, so I'd limit this to "active developers that are also regularly contributing to #openvpn-devel or the mailing list". If there is overwhelming interest, I can get a larger room, but then the address listed below would change (still in Munich, but not as centrally located).
8
9
## who is coming?
10
11
| Name | Topics | Arrival | Departure |
12
|-----------------|---------------------------------|-------------------------|--------------------|
13
| Gert Döring | no particular topics | Fri morning-ish | Sun, late night |
14
| David Sommerseth| auth/kerberos, plug-ins | Fri 14-ish (SK4759) | Sun, afternoon (LH2456) |
15
| Samuli Seppänen | openvpn 2.4/3.x, community site | Thu, morning (BT221) | Sun, afternoon (BT224) |
16
| Steffan Karger | AES-GCM, Windows service review?| Fri, around noon | Sun, afternoon |
17
| Adriaan de Jong | tbd | Fri, around noon | Sun, afternoon |
18
| Arne Schwabe | timeouts in OpenVPN | Fri, train, 11:30 | Monday, morning, train|
19
| Jan Just Keijser| Win7+ integration, performance | Sat morning | Sun, afternoon |
20
| Heiko Hund | interactive service, NTLM patches, GOST | Fri. morning | Sun. evening |
21
| Lev Stipakov | peer-id patch, tbd | Thu. evening | Sun. evening |
22
| James Yonan | OpenVPN protocol changes | Thu. morning | - |
23
24
## where?
25
26
We'll meet in one of the office locations of Spacenet. The address is:
27
28
```
29
SpaceNet AG
30
Landsberger Strasse 155
31
80687 München (Munich)
32
Germany
33
```
34
35
See [Google Maps](https://maps.google.de/maps?q=Landsberger+Stra%C3%9Fe+155,+M%C3%BCnchen&hl=de&ie=UTF8&ll=48.139892,11.526031&spn=0.002957,0.003358&sll=48.917413,11.407993&sspn=4.216739,6.877441&oq=landsb&hnear=Landsberger+Stra%C3%9Fe+155,+Laim+80687+M%C3%BCnchen&t=h&z=18). The entrance is in the upper left corner on the inside of the "#" formed building.
36
37
Inside the "#", there are 4 entries in each of the corners, marked as "Haus 1" to "Haus 4". Take the entry "Haus 4". There is a reception for Cable&Wireless and SpaceNet there. Tell the security guy that you want to visit SpaceNet, and he'll call me or one of my colleagues and we'll pick you up (SpaceNet is on the 1st floor of Haus 4). The guard will require some sort of deposit - ID card, driver license, etc - to ensure people properly check out at leaving.
38
39
This location is easy to reach by car or by public transport (Tram from central station).
40
41
Specifically:
42
* if you arrive by plane, take S-Bahn S1 or S8 (it's a circle, S1 goes left, S8 goes right) and exit after about 45 minutes at "Hirschgarten" or "Donnersbergerbrücke". About 10 minutes walk from there, or take the Tram 18/19 for the remainder.
43
* if you end up near the central station (either arriving by train, or with the S-Bahn), exit the central station on the south side, take Tram 18 or 19 towards Willibaldplatz / Gondrellplatz (westwards), and exit at "Lokschuppen". Landsberger Strasse is the street the Tram travels, 155 is across the street next to the "Bauhaus" market
44
* if you come by car, parking in the vicinity is a bit problematic. You can park in the "Bauhaus" garage but that's "for their customers only", so you'd need to relocate to the SpaceNet parking garage when the SpaceNet crew has left (no guest parking there, unfortunately). We'll find something.
45
46
If you get lost, call me: +49 177 2160221
47
48
## when?
49
50
The hackathon will take place from Nov 14 (Friday), 2014 to Nov 16 (Sunday). The room is ours for the full 3 days, and I (cron2) will be there at Friday 09:30-ish. I have no confirmed arrival dates from anyone else yet...
51
52
## food
53
54
I'll sponsor soft drinks, snacks and the conference room, and I'll sponsor a "Weisswurstfrühstück" for Saturday (see [Weisswurst](https://en.wikipedia.org/wiki/Weisswurst)).
55
56
Friday evening, we meet at [Cafe Westend](http://www.cafe-westend.com/) (19:00 local time, table reserved for "Döring"), sponsored by OpenVPN Tech. Good TexMex and local food.
57
58
Saturday, it's [Wirtshaus am Bavariapark](http://wirtshaus-am-bavariapark.com/) (19:00 local time, table reserved for "Karger", I assume), sponsored by FoxIT. Bavarian food, beer :-)
59
60
## what?
61
62
So what is the goal of the Hackathon?
63
64
* meet in person, talk about things
65
* contributors agreement (CLA) for OpenVPN 3
66
* future development of 2.x and 3.x
67
* GPL violation on multiple apps on the play store
68
* hack on the 2.4 codebase - there's a number of "large" things we could try to tackle
69
* peer-id patch set (full support in 2.4, client-side support in 2.3)
70
* new data packet format proposed for AEAD and "null-compression"
71
* fix compilation of "master" on windows
72
* openvpn interactive service - get code in git tree
73
* async plugin patch, inotify async auth patch (Lev)
74
* IPv6 gateway detection?
75
* work on open trac issues
76
* lots of things to review and bugs to fix
77
78
I'm all open for additions here - I think the meetings in Brussels and Munich 2013 have shown that "just being able to sit together and hack" is a useful exercise.
79
80
## Internet
81
82
Of course, there will be free WiFi available, and for bandwidth junkies, wired Internet as well :-) - Spacenet is an Internet service provider, and that's one of their core locations, connected with multiple 10Gbit links to the world...
83
84
## accommodation
85
86
* "Motel One Munich City West" has been recommended as "being close, reasonably priced, and generally OK"
87
88
## results
89
90
This is just a sort of unordered list of things we agree on, to avoid thoughts getting lost
91
92
* drop Windows XP support in OpenVPN 2.4
93
* this also affects Windows Server 2003 (extended support) and Windows XP Embedded
94
* specifically: XP will not get "interactive service" support, because the APIs used for IPv6 routing are not available on XP
95
* 2.3.x will continue to be supported
96
* 2.4.x might drop XP support if supporting it gets too hard, like "keep all the netsh calls in there" - it will be announced in the 2.4.0 release notes "use on your own risk, but not officially supported anymore"
97
* functionality that will fail on XP and older will be wrapped in an #ifdef
98
99
* strip out the PRNG support from OpenVPN, as both SSL libraries have good PRNG inside, and at least PolarSSL's is faster (syzzer)
100
101
* about removing snappy support - we keep it for the time being (#ifdef), because OpenVPN 3 and OpenVPN AS support and use it. Since compression can be negotiated, we can just leave it off for platforms where it is complicated to build (like Windows due to the libstdc++.dll being so big)
102
103
* coding style in OpenVPN source - see [Bikeshed](http://blue.bikeshed.org/) and [Indent style](http://en.wikipedia.org/wiki/Indent_style) - candidates: Allman, GNU, K&R (higher git impact when changing over due to the opening bracket moving), and then tabs/no-tabs.
104
* everybody is "okayish" with changing, as long as it is done consistently, everywhere
105
* slightly stronger feeling for Allman style - **Allman style** it is
106
* syzzer volunteers to make the non-consistent files consistent
107
* "the big whitespace change" for existing code happens at 2.4-RC, and then we will no longer do "patches to master and 2.3" (which would have different indentation) but to "master and 2.4" (same style), except for critical issues, which usually are small and manageable
108
* line length?
109
* "stick to what we have for now", do not reformat arbitrarily
110
* breaking a line in the middle: align to opening (round) brackets in line above
111
* tabs vs. spaces: "not mixed"
112
* majority for "only spaces, no tabs"
113
* this is what we change to: all spaces
114
115
* new packet format? (Mail from James, Message-ID: <54648EAC.70204@openvpn.net>)
116
* AEAD: 12-byte nonce is needed - use session ID plus HMAC random for that? James and Syzzer agree on that.
117
* compression V2 format - yes, go for it
118
* to support COMPRESS_V2 the server needs to actually send the peer-id packet format as well (right now only the client sends peer-id packets)
119
* discussion:
120
* James: let's actually negotiate COMPRESS_V2 so we do not couple peer-id and compression which is actually independent parts/layers of the code
121
* Arne: this could be "PACKET_FORMAT_3" (peer-id+compress-v2)
122
* James: lean to "negotiate compression and packet format independently, as they are different layers"
123
* Jan Just: nice thing about scalar packet format is that you **know** which features have to be in there - but "don't do too many of these versions"
124
* discussion ended up with crypto negotiations, but I think we'll just see a patch from James with "whatever will be the outcome" for COMPRESS_V2
125
126
* regarding --enable-ssl/disable-ssl - decided to a) ask the openvpn-users whether there is anyone using OpenVPN without SSL, and if not, remove the option (so --enable-crypto would bring SSL, --disable-crypto would take away SSL and all crypto) - one different #ifdef variant less
127
128
* timeouts on client connect (Arne)
129
* we have various timeouts in the client - socket timeout, proxy connect timeout, tls handshake timeout
130
* master timeout - if connect does not succeed in that time, go to next <remote>
131
* goal: only have "master timeout", get rid of individual timeout bits
132
* "server poll timeout" -> must receive at least "some answer" in (short) time, to decide whether server is alive at all. Total handshake needs to be much longer (slow CPUs, etc.) --> short timeout to skip over dead servers / dead networks, longer "master timeout" to handle whole setup
133
* James: please keep server poll timeout, and keep that short (4s-ish) - the rest could be integrated unless there is a reason to keep them separate
134
* feature-ACK: remove all the individual timeouts and replace by "server poll timeout" that is "up to the first packet coming back from the server". If nothing is configured, current default is "0" = "no server poll timeout" - new default: 60 seconds to mimic existing TCP connect timeouts, plus log notice ("if we have multiple remotes and no server-poll-timeout, user experience might be better setting this to a lower value, like 5s").
135
136
* inotify patch from Lev (on list) - feature discussion
137
* this is about async authentication plugin (deferred authentication)
138
* "response from plugin" is delivered by the creation of a file
139
* currently, we stat() in regular intervals -> replace by inotify so system load is lower
140
* it's done via a single file descriptor that is added to the master poll() in the event loop which will tell you about an arbitrary number of files that are watched
141
* portability?
142
* feature-ACK so far ("generally OK"), patch needs review
143
144
* async-plugin patch
145
* used in production at Lev's servers since some months and Fabian Knittel's server
146
* enables async handling of client-connect script and plugin
147
* -> openvpn is not stuck while client-connect script does "slow things" (like, radius start records taking 300ms)
148
* impairs performance on busy servers
149
* David looking into patch, on the mailing list - whitespace changes, not easy to read
150
* "someone needs to talk to Fabian to rebase to master"
151
* there is general interest in the feature, but we need to find time!
152
153
* performance (general performance, and Windows in particular)
154
* throughput is worse than "Cisco Connect" client (2-3x - David can reproduce it at will to server side)
155
* might be related to socket buffers - please test setting to 256k or more
156
* jjk: throughput is not crypto-bound, is "networking" (latency/buffers?) - can be reproduced with "cipher none"
157
* windows performance is way lower even (factor 5!)
158
* jjk: we need to measure this in a more controlled experiment ("I am a physicist" - cron2 agrees)
159
* to sum up: jjk "has the equipment" (will run baseline on Linux)
160
* log file seems to suggest packets receiving out of order --> **check that**
161
* experiment with socket buffer options
162
* James will check with Thomas Divine whether he has an idea on Windows performance
163
* upload speeds via VPN to David's servers in RedHat VPN seem to be limited by RedHat internal lines...
164
165
* future plans? mid term, long term?
166
* 2.4 (mid-term goals for 2.x)
167
* interactive service! MUST HAVE
168
* timeout stuff fixes (Arne)
169
* peer-id MUST HAVE
170
* inotify "good chance", async plugin "depends on time"
171
* IPv6 gateway handling - really should go in, but cron2 has no time :( - depends on how the remaining schedule surrounding 2.4 goes
172
* AEAD/GCM - code is there, not performing nicely yet - MUST HAVE
173
* EC with external keys is not working yet - "nice to have", nobody working on it, not actually hard, just "many small pieces to touch"
174
* new data packet format (COMPRESS_V2)
175
* NTLMv2 proxy fixes (in 2.4.0 and 2.3.x, please - bugfix!)
176
* new windows installer for gui and everything (mattock), fixes lots of bugs, should be in 2.4.0 - MUST HAVE
177
* rough timeline: march 2015 for 2.4.0-RC?
178
* coding style change right before 2.4.0-RC
179
* improve systemd support (patches on the list)
180
* --enable/disable-ssl -> remove #ifdefs
181
* get rid of "useless #define" - find your pet peeve, ask on the list, send patch if feature-ACK
182
* look at trac
183
* auth-user-pass inline (patch from pekster?) - status? followup on it?
184
* GOST (nice to have, but no pressing need now - Heiko to rebase to master, overlap with AEAD for "newer openssl APIs"? - look at it)
185
* 2.5 (long term goal for 2.x)
186
* multiple server sockets (TCP+UDP)
187
* multiple threads ("however it might look like in the end"), depending on the performance bottlenecks discovered
188
* improved testing framework (andj) - MUST HAVE, some stuff might go to 2.4
189
* isolate functionality better (no central context everywhere, gets into the way of testing) (syzzer)
190
* better document internal API and wire protocol - go for a (personal) RFC? (syzzer/james)
191
* cipher negotiation
192
* 3.0 (mid term and long term)?
193
* today: solid client (iOS, Android)
194
* work being done on adding server functionality
195
* James feels more comfortable about "putting it out to the public" when it has (basic) server functionality
196
* CLA issues still open - current state: discussed inside OpenVPN Tech, "nearly done"; similar to Google CLA for Android
197
* 3 being used as a testbed for new ideas
198
* James: "I've watched python 2 to 3 disaster, learned from it" - on the wire protocol will be 100% compatible, most client config stuff is compatible
199
* Andj: splitting community resources is tricky, James agrees
200
* Heiko: it would be nice to have a "cli wrapper" that presents the same cli + mgmt interface to "GUI users" (like Tunnelblick, etc.)
201
* James: agree, mgmt interface would be good
202
* Arne: I can push an Android version with my gui, if James is comfortable with it - James: "when I'm comfortable with the code, still very much refactoring going on, so wait for the server functionality to be done"
203
* Andj: multithreading? James: it's sort of thread-agnostic, but there is no active multithreading functionality yet
204
* multi-socket server is actually very easy, as you just create a few ASIO socket objects and listen to them (and it's **fast** too!)
205
206
* weekly community meetings: **new time** Monday, 20:00-22:00 European local time, make it more frequently again - first meeting: Monday 21st