-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi,

Here's the summary of the previous IRC meeting.

- ---

COMMUNITY MEETING

Place: #openvpn-devel on irc.freenode.net
List-Post: openvpn-devel@lists.sourceforge.net
Date: Thursday 23rd Oct 2014
Time: 18:00 UTC

Planned meeting topics for this meeting were on this page:

<https://community.openvpn.net/openvpn/wiki/Topics-2014-10-23>

Next meeting has not been scheduled but will be on the same weekday and
time. Your local meeting time is easy to check from services such as

<http://www.timeanddate.com/worldclock>

or with

$ date -u

SUMMARY

cron2, Hes, lev, jamesyonan and mattock participated in this meeting.

- --

Discussed the OpenVPN 2.3.5 release.

Cron2 will integrate the tap-windows6 fixes a.s.a.p. after which mattock
will make the release.

- --

Discussed the "session-id implementation" patch:

<http://thread.gmane.org/gmane.network.openvpn.devel/8403>

Agreed that session-id should be renamed peer-id. The patch got a
feature-ACK. Jamesyonan will give the patch a thorough code review (and
hopefully code-ACK it).

Decided to implement server-side floating in a separate patch if/when
it's required to keep things simple.

- --

Discussed the upcoming Munich hackthon:

<https://community.openvpn.net/openvpn/wiki/MunichHackathon2014>

There are several things that should be discussed, such as

- - OpenVPN 2.4
- - OpenVPN 3.x + CLA
- - Multithreading
- - AEAD

Full chatlog is attached.

- -- 
Samuli Seppänen
Community Manager
OpenVPN Technologies, Inc

irc freenode net: mattock

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iEYEARECAAYFAlRJWlgACgkQwp2X7RmNIqOopACgsr8UPqcfxhgcJimcGz6F4Pcz
nxQAoIy2BD45Iw13vr7ESrdhg4Foxv+5
=KKw8
-----END PGP SIGNATURE-----

(21.03.55) mattock: ready?
(21.04.02) lev__: yep
(21.04.10) mattock: who do we have here today?
(21.04.22) mattock: lev, cron2, me...
(21.04.32) mattock: syzzer won't be
(21.04.41) mattock: james should be here soon
(21.05.45) audience_x [~audien...@85-23-34-38.bb.dnainternet.fi] è entrato 
nella stanza.
(21.07.08) Hes: Boing, me.
(21.07.23) mattock: I'll remind James
(21.09.43) jamesyonan [~jamesy...@c-67-166-32-18.hsd1.co.comcast.net] è entrato 
nella stanza.
(21.09.43) modalità (+o jamesyonan) da ChanServ
(21.09.47) cron2: hi james
(21.09.56) jamesyonan: hi cron2
(21.10.06) mattock: session ID patch first?
(21.10.20) ***cron2 looks for the agenda
(21.10.35) mattock: https://community.openvpn.net/openvpn/wiki/Topics-2014-10-23
(21.10.37) cron2: found
(21.10.38) vpnHelper: Title: Topics-2014-10-23 – OpenVPN Community (at 
community.openvpn.net)
(21.13.29) cron2: I think we can handle 2.3.5 first, because that's quick and 
easy :-) - I'll integrate the windows tap fixes ASAP (planned to do yesterday, 
tax paperwork got in the way), then I'll tag and you release
(21.13.59) cron2: the new stuff in there is all minor, but useful, so no major 
test effort needed - quick smoketest before publishing the windows installers
(21.14.06) cron2: (and make sure you have the $PATH fix :) )
(21.14.25) mattock: sounds good
(21.14.32) mattock: the path fix is there
(21.14.39) mattock: in the fixed mingw packages that is
(21.14.41) mattock: sorry, nsis
(21.14.55) cron2: great :)
(21.15.11) mattock: next topic then :)
(21.15.35) cron2: --tls-version-max is out, as syzzer isn't here to argue the 
point
(21.15.52) cron2: leaves session id, I think - is plaisthos around?
(21.17.18) mattock: james: have you had a look at the session id patch?
(21.17.28) mattock: http://thread.gmane.org/gmane.network.openvpn.devel/8403
(21.17.32) vpnHelper: Title: Gmane Loom (at thread.gmane.org)
(21.17.39) cron2: mattock: is 8403 the one from today?
(21.17.47) lev__: has anyone tried it (besides me) ?
(21.18.01) cron2: lev__: this is why I was asking for plaisthos :)
(21.18.20) mattock: cron2: probably not
(21.18.44) cron2: lev__: but what we need is buy-in from James :-) - so maybe 
you could quickly explain what you did (which isn't exactly what we envisioned, 
but with reason) as James would have to add it to OpenVPN 3 clients for it to 
make sense
(21.19.24) lev__: sure
(21.19.47) lev__: so I added P_DATA_V2, with 1 byte opcode and 3 bytes for 
session_id
(21.20.29) lev__: server has int array[MAX_CLIENTS] of sessions
(21.21.12) cron2: it should be pointed out that this is "just a numeric ID" and 
not the TLS ID
(21.21.14) lev__: when client connects, server assigns next free session_id (0, 
1, 2.. max-clients-1) and sends it with push_reply
(21.22.12) jamesyonan: just so I understand this, the net cost of this approach 
is that we are adding 3 more bytes to every packet?
(21.23.04) cron2: my idea was to send the +3byte packet only every now and 
then, but the initial implementation does it for every packet, yes
(21.23.16) cron2: lev__: only for client->server packets, or *every* packet?
(21.23.33) jamesyonan: or are we only adding the 3 bytes to P_DATA packets?
(21.23.43) cron2: P_DATA -> P_DATA_V2
(21.24.22) jamesyonan: so then P_DATA_V2 packets are the only packets that have 
the extra 3 bytes?
(21.24.43) lev__: then client uses P_DATA_V2 for every data packet. When packet 
arrives to the server, it gets session by array lookup (instead of hash lookup) 
and checks if client ip/port changed. If yes, then server verifies hmac and, if 
success, updates client ip/port in internal structures
(21.25.06) lev__: p_data_v2 for client->server only
(21.25.27) lev__: I assume that server won't float :-/
(21.25.43) cron2: reasonable assumption :)
(21.25.46) jamesyonan: it's not unheard of :)
(21.26.18) Hes: Back. Silly LTE.
(21.26.22) audience_x ha abbandonato la stanza (quit: Remote host closed the 
connection).
(21.27.14) lev__: I have tested with mobile client and it switches seamlessly 
between wifi/3g, also UDP NAT timeout is not an issue anymore
(21.28.22) lev__: implementation is backward compatible with old (well, 
existing) clients/servers
(21.29.16) jamesyonan: originally I was thinking that it sort of sucks to have 
to be bloating the protocol with 3 more bytes for every data channel packet, 
but I do like the way that it solves alignment issue, and I'm also thinking 
that because of other unrelated changes (such as availability of AEAD ciphers) 
we might be able to make up the 3 bytes in other ways so we don't have a net 
increase
(21.30.51) Hes: With the mobile clients, and UDP/NAT, floating between networks 
is pretty common, sending the session ID very often (or always) makes for 
really smooth sessions.
(21.31.45) cron2: remind me again: what is an openvpn "ping" packet?  Is that 
data or control?
(21.32.02) cron2: (read: if there is no activity on the client side except 
--ping, will that work, or not)?
(21.32.17) Hes: I've been reviewing the patch, found the bytesex bug which 
would have broken it when talking between different endianness machines. But 
that's now fixed.
(21.32.49) jamesyonan: I'm actually leaning more towards the approach of, if we 
include the session ID, of always sending it rather than having the added 
complexity of an adaptive algorithm that decides whether or not to send it
(21.33.10) Hes: The "ping" packet is sent on the same ipaddr:port <> 
ipaddr:port tuple as data.
(21.33.22) cron2: Hes: yes, but is it a control packet or P_DATA?
(21.33.33) cron2: (inside OpenVPN)
(21.33.36) jamesyonan: ping packet is P_DATA
(21.33.55) Hes: In case of a quick NAT timeout, a quick ping timeout seems to 
help in keeping NAT sessions open. But that consumes battery.
(21.33.56) cron2: james: thanks.  So that would also nicely work out
(21.34.05) jamesyonan: it's a special sequence of magic numbers that can't be 
confused with an IP or eth packet
(21.34.57) Hes: With the session ID, and a "normal mobile device" use case, the 
ping timer can be increased. It'll still be needed to figure out things like a 
server restart or other need to switch to another server.
(21.34.57) cron2: Hes: understood.  Thing is that if the client isn't actually 
sending anything (so no "P_DATA_V2 with session ID") the pings would still have 
the desired effect, instead of getting lost due to other packet format -> 
non-issue
(21.35.09) cron2: as far as bytesex goes: this is *not* the right fix in the 
current patch:
(21.35.12) cron2: +         sess = htonl(((P_DATA_V2 << P_OPCODE_SHIFT) | 
ks->key_id) << 24 |
(21.35.16) cron2: +(multi->vpn_session_id & 0xFFFFFF));
(21.35.18) cron2: +         ASSERT (buf_write_prepend (buf, &sess, 4));
(21.35.47) cron2: or will it?
(21.35.54) cron2: rollback, ignore what I said
(21.36.34) cron2: it was too complicated for me, but indeed, doing the bit 
shifting inside and the htonl outside will ensure the opcode will always end on 
byte[0]
(21.36.43) cron2: sorry for the noise
(21.36.55) Hes: It is a bit hairy indeed. But it seems like it does the right 
thing.
(21.37.26) jamesyonan: I believe if you do an htonl on the leading 4 bytes of 
the raw ovpn packet, that the leading op byte will be the high part of the 
uint32 and the lower 24 bits will be the session id
(21.37.43) jamesyonan: so that works out
(21.37.44) lev__: jamesyonan: could you clarify "we should send session ID 
always"
(21.38.07) cron2: jamesyonan: ACK, this is what I believe now as well, spoke 
too fast
(21.38.28) jamesyonan: i.e. don't switch between P_DATA_V1 and V2 in the same 
session
(21.39.31) cron2: I was the one who had complicated switch back and forth 
plans, but the argument "less complexity" is convincing :)
(21.39.52) lev__: but this implementation is not supposed to switch
(21.40.16) Hes: + "immediate remedy when needed" instead of "try to recover a 
bit later with a retry"
(21.40.16) cron2: lev__: no, this was based on the concept model we discussed 
before you went coding
(21.40.22) lev__: ah ok
(21.40.38) mattock: will be away for 10-15 mins...
(21.40.50) cron2: your patch definitely looks like "if it switches, it will 
stay there", trading 3 bytes vs. algorithmic heuristics
(21.40.57) lev__: it is always good to start coding before familarizing with 
concept!
(21.41.00) jamesyonan: the problem is if you switch, you then have to deal with 
the alignment issue more adaptively because you don't know until you've read 
the packet whether it's V1 or V2
(21.41.04) L'account è stato disconnesso e non si è più in questa 
conversazione. Sarà possibile ritornare nella conversazione automaticamente 
quando l'account verrà riconnesso.
(21.53.38) L'argomento di #openvpn-devel è: OpenVPN developers channel | For 
configuration and user support, please go to #openvpn | See !git, !snapshots or 
!meetings for more info | cron2_> mmmh, this openvpn thingie is actually useful
(21.53.38) Argomento per #openvpn-devel impostato da 
krzee!~k@openvpn/community/support/krzee alle 02.10.21 il 01.10.2014
(21.53.38) ***: Buffer Playback...
(21.53.38) jamesyonan: so I would tend to lean against adaptive switching
(21.53.38) jamesyonan: so with typical usage of AES CBC mode with HMAC-SHA1 our 
overhead will be 4 (op + session ID) + 20 (HMAC) + 16 (IV) + 4 (packet ID) = 44 
bytes
(21.53.38) lev__: small correction - I said that server sends session ID with 
push_reply. Surely it is peer info.
(21.53.38) cron2: no, it's push reply
(21.53.38) lev__: hm
(21.53.38) cron2: peer info is client->server with "IV_PROTO=2"
(21.53.38) lev__: oh right, I was looking on client part 
(21.53.38) cron2: push.c, send_push_reply :-) "if peer_info contains IV_PROTO 
and proto >=2"
(21.53.38) jamesyonan: also, be careful about session ID and push, because 
there's already a session ID in OpenVPN that's used for a different purpose
(21.53.38) cron2: maybe rename it?  "client-id"?
(21.53.38) Hes: does it need some terminology / variable name adjustment then
(21.53.38) cron2: "instance-id"
(21.53.38) jamesyonan: how about peer_id
(21.53.38) Hes: +1 for peer_id
(21.53.38) jamesyonan: since it's being used in P_DATA_V2 which could 
conceivably be generated by either client or server
(21.53.38) jamesyonan: and there's no existing peer_id symbol in OpenVPN code 
right now
(21.53.38) cron2: we might end up supporting floating servers one day :)
(21.53.38) lev__: it is currently generated by server, meaning is position in 
sessions array
(21.53.38) cron2: peer_id is good for me
(21.53.38) Hes: Hm, if the server would be improved to float, I suppose an 
unmodified client might just support that with this code? :)
(21.53.38) Hes: right, client does not have the equivalent array
(21.53.38) cron2: Hes: no, as the "who does this packet belong to?" logic isn't 
called in client mode
(21.53.38) cron2: some extention might be needed ("P_DATA_V2, not who I 
expected to talk to? hash ok? update peer!")
(21.53.38) Hes: but, in the now-common world of dualhomed IPv4/IPv6 mobile 
devices, where IPv6 is a globally routable public IP address and IPv4 is NATed, 
floating between those might actually be cool later
(21.53.38) cron2: lev__: understood, thing is, there is TLS session ID, so 
"session id" will cause confusion eventually.  "instance-id" describes the 
current implementation, but "peer_id" is more neutral regarding "what is in 
there, what does it reflect"?
(21.53.38) Hes: in case one or the other has a hickup, would be nice to be able 
to switch, like SCTP
(21.53.38) cron2: Hes: ack.  Eventually :)
(21.53.38) Hes: Eventually.
(21.53.38) lev__: cron2: right, I should rename those in my wetware
(21.53.38) ***: Playback Complete.
(21.53.47) Sei ora conosciuto come mattock
(21.57.58) mattock:  have we reached some sort of conclusion?
(21.57.59) mattock: :P
(21.58.00) cron2: so, how do we proceed with this patch?  I think it warrants a 
re-spin renaming "session-id" to "peer-id" in push and C structs, and then 
"someone" needs to review...
(21.58.14) cron2: mattock: good timing.  Always the impatient one :)
(21.58.18) lev__: I can do the first part
(21.58.25) mattock: even more impatient than you?
(21.58.27) mattock: :)
(21.59.37) cron2: Jamesyonan: can you review the hash-relevant code path 
changes?  I'm fine with the push/option/peer_info stuff (skimmed through it, 
looked good, will do a more thorough review on the next round) but do not feel 
fully comfortable with the "inside workings" there
(21.59.41) Hes: I've reviewed, but it's a rather involved change set, needs a 
good set of reviews. And maybe some tests in a test suite.
(21.59.59) audience_x [~audien...@85-23-34-38.bb.dnainternet.fi] è entrato 
nella stanza.
(22.00.36) lev__: about server floating - should this be implemented to get 
ACK? or can it be done as a separate patch?
(22.00.36) cron2: Hes: the fun of it... "use --bind, change NAT rules while 
test is running"...  t_client.sh is not smart enough yet to do that :)
(22.00.57) jamesyonan: cron2: yes, I'm looking at the patch now
(22.01.15) jamesyonan: I think server floating should be a separate patch
(22.01.17) cron2: lev__: separate, not right now.  This one is a big step that 
solves an immediate need, we can do the next round when the use case exists
(22.03.00) audience_x ha abbandonato la stanza (quit: Remote host closed the 
connection).
(22.03.12) Hes: yeah, would be nice to get this forward without making it any 
bigger than it already is
(22.09.39) jamesyonan: I'm going to need more time to review, but I assume 
we'll be seeing another iteration shortly with the session_id -> peer_id 
change...
(22.11.02) cron2: lev__: you turn :)
(22.11.05) cron2: your
(22.11.45) lev__: sure, I can do it tomorrow
(22.12.02) lev__: (getting too dark today)
(22.12.26) mattock: ok
(22.12.30) mattock: munich next?
(22.12.53) cron2: yeah, this is cool, progress :-)
(22.12.56) cron2: Munich next
(22.13.05) cron2: http://community.openvpn.net/openvpn/wiki/MunichHackathon2014
(22.13.07) vpnHelper: Title: MunichHackathon2014 – OpenVPN Community (at 
community.openvpn.net)
(22.13.13) mattock: cron2: the stage is yours
(22.13.33) cron2: did I put it onto the agenda?
(22.13.36) cron2: anyway.
(22.13.53) mattock: so basically goals and plans is what I wrote there
(22.14.05) mattock: what's the goal besides meeting and having useful 
discussions?
(22.14.09) cron2: munich coming up soon, room is booked, wife knows what is 
coming up :-)
(22.14.35) cron2: I really want to get the windows interactive service done, 
but d12fk has not formally confirmed that he'll come
(22.14.59) cron2: and besides that - meet, have useful discussions, hack on the 
code, enjoy food & drinks :)
(22.15.02) mattock: yep, the interactive service thing is quite a bit overdue
(22.15.20) mattock: suppose that d12fk won't be there, and interactive service 
won't be there
(22.15.32) mattock: shall we go and release 2.4 without it?
(22.16.05) lev__: any sessi(grrr.. peer) ID related things planned for Munich? 
It is mentioned on a trac page
(22.16.20) cron2: I assume he'll be there or we'll at least get his code (and 
if I have to haunt him personally, it's just a 3-hour drive)
(22.16.36) mattock: stalking is one option, yes
(22.16.37) mattock: :P
(22.16.49) cron2: lev__: nah, *that* goes in "as soon as reviewed!" now, as we 
seem to be all in agreement that the approach is fine
(22.17.11) cron2: lev__: so I think you have your feature-ACK (after renaming) 
just need the code-ACK as well :-)
(22.17.21) ***lev__ dances
(22.17.33) mattock: nice!
(22.17.52) cron2: mattock: there will be work to do, things to clarify (like, 
the CLA), ideas to bounce around (like, multithreading :) or AEAD)
(22.18.11) cron2: and if we run out of things to do, I'll just distribute trac 
tickets
(22.18.15) mattock: yeah, world won't be ready by then
(22.18.31) mattock: actually trac tickets alone would be enough to keep 
everyone occupied
(22.18.40) mattock: so no worries about having to just eat and drink
(22.18.42) mattock: :)
(22.18.54) cron2: yeah, but face-to-face time is too valuable to start with trac
(22.19.07) mattock: yep, it's a bit boring
(22.19.17) mattock: and does not make best use of face-to-face communications
(22.20.15) lev__: is that event still limited to "active developers that are 
also regularily contributing"
(22.21.37) cron2: well, it's not a user meeting :-) - this was the intention of 
the quoted statement
(22.22.32) cron2: but "regularily" is a very vague term (*look at d12fk*) :-) - 
so if you feel like coming, you're welcome
(22.22.55) lev__: thanks, let's see if I could make it
(22.24.57) cron2: the meeting room can comfortably take about 7-8 people "with 
gear", but Sat/Sun we have the whole office area for us, so we'd form smaller 
sub-groups or such to focus
(22.28.19) cron2: that's from me for munich - anyone else?
(22.29.56) jamesyonan: I think I'll be able to make it
(22.30.03) cron2: cool :)
(22.31.31) lev__: maybe while people are here, I can ask - what about using 
inotify to get result of auth-user-pass-verify (and client-connect) instead of 
checking acf files on incoming request / timeout
(22.31.50) mattock: lev: it would great if you could make it!
(22.31.55) mattock: the more the merrier
(22.33.12) cron2: lev__: spontaneously I'd say "portability" given that not all 
supported OSes have this and/or it needs extra libraries.  But I'm too tired 
today to really think through it and understand the picture (sorry)
(22.33.48) lev__: http://sourceforge.net/p/openvpn/mailman/message/32906587/
(22.33.49) vpnHelper: Title: OpenVPN / Mailing Lists (at sourceforge.net)
(22.34.15) mattock: that said, most of the guys are here on a daily basis
(22.34.55) mattock: so this is not like the last chance to get an answer :)
(22.35.12) cron2: lev__: yeah that thread is still sitting in my mailbox :-) - 
dazo is the one to think about the async plugin stuff, and I'm the one to worry 
about portability and adding #ifdefs and the implication of that for testing
(22.35.44) lev__: yep I understand. I have sent this patch some time ago, would 
be nice if someone could take a look
(22.36.45) ***cron2 calls it a day and gives up - sorry, it was a really tough 
day, falling asleep.  But this was a good meeting.
(22.37.13) mattock: lev: you probably have to push a bit
(22.37.38) mattock: when we don't immediately find time to review patches they 
often are forgotten about by mistake
(22.37.49) mattock: so sending a friendly reminder usually helps

Attachment: openvpn_irc_meeting_chatlog_2014-10-23.txt.sig
Description: PGP signature

Reply via email to