[prev in list] [next in list] [prev in thread] [next in thread] 

List:       gentoo-dev
Subject:    [gentoo-dev] OldNet out of OpenRC: as the requester
From:       "Robin H. Johnson" <robbat2 () gentoo ! org>
Date:       2013-04-25 23:49:35
Message-ID: 20130425234935.GO16232 () orbis-terrarum ! net
[Download RAW message or body]


Hi all,

I'm the one that had asked WilliamH about splitting out OldNet from
OpenRC, so I figured rather than respond to every single part of this
thread, I wanted to give a general response.

Misc preamble:
--------------
If you're a student considering GSoC, reading this email, and this
interests you, please submit a proposal for the future portions!

Introduction:
-------------
This is NOT intended to take oldnet away from OpenRC systems at all, but
rather to encourage growth of both parts independently. 

Historically, baselayout-1 had a very tight integration between oldnet and the
rc handling, because net* was a special case for dependency handling.

However, since baselayout-2, this was no longer the case. OpenRC doesn't
actually depend on oldnet in any way. Oldnet however does depend on the rc
script handling of OpenRC.

Naming & options:
-----------------
I'm not entirely set on the oldnet name, but nothing that WilliamH and I
could come up seemed entirely right. Oldnet is certainly NOT the only
option for networking in Gentoo. You've also got newnet, netctl,
network-manager, wicd, and more that I'm probably forgetting.

Complexity:
-----------
As a part of OpenRC, oldnet is roughly ~6200 lines of code, and ~1700
lines of documentation. OpenRC as whole has ~28000 lines of code.
So about 20-25% of the codebase, and most of the documentation ;-).

Of presently open OpenRC bugs, >30% are presently oldnet.

Oldnet supports both really easy simple configurations, as well as many
very complicated setups.

I have some examples in my homedir:
http://dev.gentoo.org/~robbat2/conf.d-net/
- Multi-homing, dual Internet connection, home setup
- Multi-homing, enterprise setup
- Snippet: HE.net (Hurriance Electric) IPv6 tunnel
  (this gives you drop-in TunnelBroker connectivity)

Other than the above, how much of the OpenRC codebase uses or even
references oldnet?

Here's a near complete list:
init.d/devd.in:	before net.lo0
init.d/hostid.in:	before devd net
init.d/ipfw.in:	before net
init.d/nscd.in:	use net dns ldap ypbind
init.d/rarpd.in:	need net
init.d/rc-enabled.in:	need localmount net
init.d/rpcbind.in:	use net logger dns
init.d/staticroute.in:	provide net
init.d/syslogd.in:	use net newsyslog
conf.d/netmount:# example, do not set rc_need to something like "net.eth0 dhcpcd".
conf.d/netmount:# If you are using oldnet, you must list the specific net.* services you
conf.d/netmount:#rc_need="net.eth0"
conf.d/netmount:#rc_need="net.eth1 net.eth2"
conf.d/netmount:rc_need="net"
(plus other examples).

And all of these simply deal with the 'net' virtual service, lots of them are
*BSD only too.

So what of this complexity? We've already had two occurrences where there was a
bug in oldnet, but we couldn't release a new stable OpenRC version easily,
because we'd started the tree on an update for other major changes in OpenRC.
It would have been extremely useful to release a stable oldnet minor version
bump with the fix, but it wasn't possible.

Testing
-------
Testing oldnet extensively is very challenging due to the complexity.

It's impossible for a single person to have a test environment for ALL
of the variants of networking - some of the modules also have a number
of variations in usage. So what I'd like to do, is establish that ALL of
the modules still work completely, and who to contact for testing of
each portion, AND/OR a known test configuration.

On a regular basis, I dogfood:
- bonding (ifenslave/sysfs)
- bridging (brctl)
- vlan
- PPPoE
- IPv6
- APIPA
- dhcpcd
- ethtool
- ifconfig
- iproute2 (esp RPDB)
- macchanger

Other parts I can't/don't test:
- adsl
- autoipd
- br2684
- ccwgroup
- clip
- dhclient
- ifplugd
- netplugd
- ip6rd
- ip6to4
- ipppd
- iwconfig
- macnet
- macvlan
- pump
- ssidnet
- tuntap
- udhcpc
- wpa_supplicant
(i probably forgot some)

More stuff pending to be added:
(most of which have bugs, some of them I just have direct email
submissions)
- plip
- l2tp
- iw
- xfsm/ipsec
- iproute2-bridge
- teaming
- vlan gvrp/mvrp
- vrrp, bgpd, ospf (run screaming for the hills)

systemd & the future:
---------------------
<warn>
Before you read this section, I suggest you don a flameproof suit,
extinguish all potential sources of ignition, and don't take it too
hard.
</warn>

I'm not sure about the future of the core of OpenRC:
Upstart & systemd have some clear architectural benefits, despite their
implementation shortcomings (either upstream or per-distro).
The /usr merge is inevitable, as is the integration of other components
into the init system (udev, dbus, ...). What has become dis-integrated instead
is the configuration: lots of hardware ships specific udev rules with few
problems.

netctl showed that systemd control of single interfaces AND/OR default
single-interfaces is feasible. However the netctl development has never
had the flexibility of oldnet.

I would like the flexibility of oldnet to continue to exist, regardless
of whichever init system we end up on. I think the best future for that
is making oldnet independent of openrc.

I look forward to a future where I can fire up my laptop, using systemd, having
network-manager on wifi, and connect my ethernet jack into a vlan-tagged port,
and connect to a little Gentoo virtual machine in the cloud that booted up with
OpenRC and a tiny udhcpc configuration.

Thank you for your time.

-- 
Robin Hugh Johnson
Gentoo Linux: Developer, Trustee & Infrastructure Lead
E-Mail     : robbat2@gentoo.org
GnuPG FP   : 11ACBA4F 4778E3F6 E4EDF38E B27B944E 34884E85

["signature.asc" (application/pgp-signature)]

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic