Hi,
Here's the summary of the IRC meeting.
---
COMMUNITY MEETING
Place: #openvpn-meeting on irc.freenode.net
Date: Wed 25th November 2020
Time: 11:30 CET (10:30 UTC)
Planned meeting topics for this meeting were here:
<https://community.openvpn.net/openvpn/wiki/Topics-2020-11-25>
Your local meeting time is easy to check from services such as
<http://www.timeanddate.com/worldclock>
SUMMARY
cron2, mattock, ordex and plaisthos participated in this meeting.
---
Talked about the 80 character limit in the OpenVPN codebase and agreed
to set the soft limit to 80 chars and the hard limit to 120 characters.
This was because sometimes trying to stay below 80 characters for the
sake of it makes the code uglier, not prettier. For example, when you
have to use temporary variables with short names just to accomplish it.
Plus on modern terminals 80 characters is quite little.
---
Talked about the data channel offload (DCO) kernel module work in
OpenVPN 2 by plaisthos and ordex. The current code/status is hacky and
works with only one peer and renogotiation does not work yet. A cleaner
integration is probably coming when ovpn-dco gets p2mp support: this
avoids having to refactor twice.
Lev is checking if DCO could be reasonably be done within the
tap-windows6 driver as well. There is also the possibility that Linux
version of OpenVPN 2 + DCO could be used as-is on WSL2 (Windows
Subsystem for Linux) which basically runs a Linux kernel on top of Hyper-V.
The DCO changes will require us to improve our automated testing to
ensure things do not break too badly.
--
Noted that OpenVPN 2.4.10 release is on schedule. That is, it will be
released "next week".
--
Noted that mattock is now able to resume the Buildmaster upgrade work.
This will require upgrading all buildslaves to Python 3, including our
zombie from the dinosaur age, OpenSolaris. Our codebase still supports
that platform so we should not stop testing it, either.
---
Full chatlog attached
(12:29:45) cron2: meeting calling...
(12:30:44) mattock: hello
(12:31:18) cron2: hi!
(12:32:58) mattock: anyone else?
(12:33:10) cron2: so, while we wait for dazo, plaisthos, ordex to find their
way... any news on IPv6?
(12:34:08) ordex: here here
(12:34:26) ordex: dazo most likely won't join
(12:34:34) ordex: he's out at least until the end of the month I believe
(12:34:45) cron2: :(
(12:35:29) mattock: nothing on ipv6, it all depends on the migration to
openvpn.com domain which I can keep asking about (no meeting this week though,
Thanksgiving and all)
(12:35:54) cron2: yeah... *sigh*
(12:37:38) mattock: such an empty topic list:
https://community.openvpn.net/openvpn/wiki/Topics-2020-11-25
(12:37:42) cron2: so, where is plaisthos hiding :-)
(12:38:02) mattock: ordex?
(12:38:59) ordex: I don't really have much on my side
(12:39:00) plaisthos: since even Linux kernel allows now 100 chars wide code,
can we also allow a bit longer lines? *makes dog's eyes*
(12:39:07) ***ordex agrees
(12:40:27) cron2: I think a general 80 character "soft limit" is still
reasonable, with flexibility if the alternatives are just plain ugly... so 100
or 120 "flex margin" would work for me
(12:41:02) cron2: I am tempted often enough to just make something 83
characters, because wrapping looks more ugly...
(12:41:36) ordex: yeah
(12:41:39) ordex: that makes sense
(12:43:30) cron2: since you two are the ones who wrote most of the code in the
last years, I think we can just decide this here and now...
(12:43:44) cron2: (and not wait for dazo or syzzer or james to show up and
agree :-) )
(12:45:05) Pippin_ [Pippin_@gateway/vpn/protonvpn/pippin/x-75792076] è entrato
nella stanza.
(12:45:23) plaisthos: a lot of times I am wrapping functiosn to two lines
instead of one because of the 80 char limit or introduce temporary variables to
shorten the names
(12:45:29) plaisthos: I would like to reduce that
(12:45:41) plaisthos: because I don't think that improves overall readability
(12:45:45) mattock: I'll add this decision to the meeting summary and anyone
who wants to complain can complain :)
(12:45:51) cron2: understood. Would you be fine with a "general 80 character
limit, as a goal, with flexibility to go to 100/120"?
(12:46:01) cron2: (the last sentence was intended for plaisthos)
(12:46:24) plaisthos: unless you are really on a machine or terminal that
cannot be made 100 or 120
(12:46:54) plaisthos: lets keep a 120 hard limit
(12:47:10) cron2: I personally find code that has "all very long lines" (or
extremely deeply nested) harder to read, that's why "soft/hard"
(12:47:17) plaisthos: yeah
(12:47:19) cron2: okay, so "soft 80, hard 120"? Everyone ok with that?
(12:47:24) plaisthos: okay
(12:47:52) cron2: ordex went for lunch, it seems :)
(12:47:55) ordex: nono
(12:47:58) ordex: still thinking :D
(12:48:08) ordex: soft 80, hard 120 sounds good though
(12:48:27) ordex: I was just thinking that also moving the soft to 80 would be
ok imho. 80 is just very very short on nowadays terminals
(12:48:29) plaisthos: for the DCO integration in OpenVPN 2
(12:48:41) ordex: but I am fine either way as long as we can get up to 100/120
when needed
(12:48:54) cron2: let's try this, and see where it leads us :-)
(12:49:02) cron2: plaisthos: all ears!
(12:49:02) plaisthos: current code/status is hacky but works with only one peer
(12:49:09) ordex: cool
(12:49:14) cron2: *like*
(12:49:18) plaisthos: and renogotiation does not work yet
(12:49:44) plaisthos: a cleaner integration is probably coming when ovpn-dco
gets p2mp support since I would like to avoid refactoring twice
(12:49:47) ***cron2 sees a bunch of patches related in some way to
renegotiation... I need to busy myself with these reviews
(12:49:56) plaisthos: nah
(12:50:24) plaisthos: it is more that after giving the socket to the kernel I
don't receive the control channel messages anymore :D
(12:50:29) cron2: I just took it as a reminder "there is more that doesn't
work, but patches are out"
(12:50:45) cron2: oh, interesting. Is that a kernel omission or "just not
programmed properly yet"?
(12:51:00) plaisthos: not programmed at all yet
(12:51:29) cron2: still very nice :)
(12:52:06) cron2: the "pass socket to kernel" stuff is going to be interesting
for p2mp, with "one UDP socket" and "tons of TCP sockets"
(12:52:24) cron2: ("one ore more UDP sockets", eventually :) )
(12:53:54) plaisthos: probably for tcp server mode we probably will keep the
listener socket in userspace
(12:58:04) ordex: yap
(12:58:06) ordex: that's expected
(12:58:22) ordex: the server socket stays in userspace and upon creating a new
peer in kernel space the new client socket is passed along
(12:58:27) cron2: easy 1:1 correlation of sockets to clients
(12:58:28) cron2: yeah
(12:58:31) ordex: right
(12:58:37) cron2: but UDP is more interesting
(12:58:47) ordex: in udp mode the socket is passed upon session creation
(12:58:55) ordex: thn new peers are created without a socket
(12:59:15) ordex: we could potentially support udp and tcp peers at the same
time :D
(12:59:18) ***ordex hides
(12:59:31) plaisthos: you could also just pass socket for udp peers
(12:59:32) ordex: but this is what we want in any case with the multi-listen
thing that is still WIP
(12:59:34) cron2: I know that someone who has been working on this... now is
the time :-)
(12:59:35) plaisthos: and then refcount it :)
(12:59:54) ordex: plaisthos: yeah, that too...will see what's
easier/cleaner/simpler
(13:00:04) ordex: right one we have one handler per socket
(13:00:12) ordex: cron2: :p
(13:04:03) cron2: sooo... that's the exciting 2.6 news :-)
(13:04:17) ordex: sounds like it's gonna be BIG !
(13:04:20) ordex: hehe
(13:04:30) cron2: 2.4.10 is slowly progressing - I've merged the IV_CIPHER
patches yesterday, and want to do a respin of the line number bugfix (as
suggested)
(13:04:42) mattock: perhaps after 2.6 we should bump version number to 4?
(13:04:44) cron2: so "2.4.10 release next week" is in the time plan
(13:04:55) mattock: cron2: roger that
(13:05:01) cron2: mattock: I thought we go for 2.10 eventually, just to confuse
your build scripts
(13:05:13) mattock: oh that would be nice
(13:05:21) mattock: everyone loves fixing broken build scripts
(13:05:27) mattock: :D
(13:05:38) cron2: 2.5 has been extremely quiet so far
(13:05:50) cron2: one man page install fix, one travis build fix
(13:06:03) cron2: waiting for the man page patch for "we removed
$ifconfig_broadcast" :-)
(13:06:38) cron2: SRV v9 has been ACKed and is on my "review, test, merge"
agenda
(13:06:50) plaisthos: cron2: btw. for that cipher normalise
(13:07:01) plaisthos: if bF-cBc works or not, depends on your OpenSSL version
(13:07:33) cron2: ah, so you order the cipher from openssl, and then you ask it
"how is this cipher called"?
(13:07:58) cron2: I stopped reading after finding the translate functions +
tables :-)
(13:08:14) plaisthos: yeah
(13:09:11) cron2: this explains my confusion :-) - thanks
(13:10:09) plaisthos: but even without that case insenstive there are things
like BLOWFISH-CBC that works in mbed but needs to be translated to BF-CBC to
have the normalised name
(13:10:17) ordex: oh we need to fix the doc about the broadcast not existing
anymore in the env
(13:10:31) cron2: plaisthos: this one I actually tested (after finding the
table) and I can confirm "it works" :-)
(13:10:34) cron2: ordex: yes
(13:14:34) plaisthos: lev__ is also looking if DCO can be done inside the
wintap driver
(13:15:41) cron2: yeah, I like that
(13:15:48) ordex: yeah, that'd be another interesting feature for 2.6 if it
comes together
(13:15:56) ordex: will build on the same work that plaisthos is doing now
(13:16:51) cron2: I'm a bit scared of the review / test platform work that will
surface eventually from this...
(13:17:46) cron2: like, "run an openvpn *server* with TCP and UDP on a windows
box, with n>1 test clients concurrently"
(13:18:19) mattock: yes, this will be a good reason to extend testing even more
(13:18:24) cron2: oh wait. This is windows, so mattock's testing department :-)
(13:18:25) ***cron2 runs
(13:18:25) mattock: =ots of work
(13:18:27) mattock: lots
(13:18:43) mattock: OpenVPN server on Windows... people _do_ do that
(13:18:45) plaisthos: the windows stuff might be client only
(13:18:49) mattock: there's even a howto for it
(13:18:59) ordex: :D
(13:19:58) plaisthos: A friend showed me a mail of someone running hmailserver
with 4000 accounts and asking for help since it runs out of memory since there
is only a 32 bit version available
(13:20:02) plaisthos: people do strange stuff
(13:20:06) cron2: plaisthos: should be good enough...
(13:20:26) plaisthos: yeah
(13:20:50) plaisthos: you might be able to run openvpn2+dco on wsl2
(13:20:56) plaisthos: or on a VM
(13:21:27) ordex: we can also tackle this step by step ...
(13:21:38) ordex: and windows-client only with dco sounds more than enough as
first step :D
(13:22:08) cron2: plaisthos: I once tried to install a winsock driver on OS/2,
"because it is compatible, no?". Got a spectacular crash.
(13:22:39) cron2: so not sure if kernel-level stuff on wsl2 is going to work
well... but we'll see
(13:22:48) ordex: what is wsl2 ?
(13:23:05) plaisthos: minimal linux kernel running on hyper-v
(13:23:23) plaisthos: and providing a lean linux environment for windows
(13:23:39) plaisthos: in contrast to wsl1, which implements the linux syscalls
in the windows kernel
(13:24:14) cron2: in that case it might actually work nicely... and be faster
than "on the windows side" :-)
(13:25:54) cron2: anything else? mattock will want to go to lunch in 5 minuts
(13:27:01) mattock: I already had lunch
(13:27:08) mattock: I don't have anything
(13:27:54) mattock: it looks like I could continue the buildmaster upgrade work
soon, just wrapped up some major infrastructure tasks
(13:28:21) cron2: oh, indeed, that project. I'm ready to rebuild everything on
my side with python3...
(13:29:29) cron2: OpenSolaris scares me a bit, but the rest should be fairly
easy
(13:29:46) mattock: will opensolaris ever die?
(13:30:07) cron2: no, it's like AIX. A zombie from the dinosaur age...
(13:30:09) plaisthos: it is already dead iirc
(13:30:26) mattock: cron2: but you _do_ want to keep doing test builds on it?
(13:30:36) mattock: do _you_ use that zombie from the dinosaur age? :D
(13:30:41) cron2: it's an officially supported OpenVPN plattform
(13:30:52) cron2: so either we rip out all #ifdef TARGET_SOLARIS, or we keep
testing it
(13:31:25) cron2: I very much dislike projects that have a README that said
"oh, yeah, someone managed to make this work on <platform>, 5 years ago, but we
do not know whether it works or not"
(13:31:35) plaisthos: Oracle pretty much cancelled Solaris OSS
(13:31:47) cron2: yeah, official oracle upstream is dead
(13:32:02) cron2: but other folks have picked up the open source bits and built
stuff like OpenIllumos, OpenIndiana, ...
(13:32:04) plaisthos: not sure if the commercial Solaris is very alive
(13:32:15) cron2: there is a life ecosystem, though I do not understand it (at
all)
(13:33:33) plaisthos: is Sparc still alive?
(13:33:44) cron2: maybe
(13:34:07) cron2: Oracle/Sun sparc is dead, but Fujitsu is still building SPARC
servers, and allegedly even building on new CPU generations
(13:40:29) plaisthos: I got lost in wikipedia processors and ended up with a
russian Transmeta like processor the Elberos 2000
(13:40:38) plaisthos: I think I should get back to work
(13:40:44) cron2: haha :-)
(13:41:05) cron2: yeah, meeting has silently concluded anyway, I think. Next
on the agenda is "patch review", which I intend to do now-ish
(13:45:24) mattock: summary done
(13:45:26) mattock: meeting over
(13:45:27) mattock: :D
_______________________________________________
Openvpn-devel mailing list
Openvpn-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openvpn-devel