1 |
Hi all, |
2 |
|
3 |
I'm the one that had asked WilliamH about splitting out OldNet from |
4 |
OpenRC, so I figured rather than respond to every single part of this |
5 |
thread, I wanted to give a general response. |
6 |
|
7 |
Misc preamble: |
8 |
-------------- |
9 |
If you're a student considering GSoC, reading this email, and this |
10 |
interests you, please submit a proposal for the future portions! |
11 |
|
12 |
Introduction: |
13 |
------------- |
14 |
This is NOT intended to take oldnet away from OpenRC systems at all, but |
15 |
rather to encourage growth of both parts independently. |
16 |
|
17 |
Historically, baselayout-1 had a very tight integration between oldnet and the |
18 |
rc handling, because net* was a special case for dependency handling. |
19 |
|
20 |
However, since baselayout-2, this was no longer the case. OpenRC doesn't |
21 |
actually depend on oldnet in any way. Oldnet however does depend on the rc |
22 |
script handling of OpenRC. |
23 |
|
24 |
Naming & options: |
25 |
----------------- |
26 |
I'm not entirely set on the oldnet name, but nothing that WilliamH and I |
27 |
could come up seemed entirely right. Oldnet is certainly NOT the only |
28 |
option for networking in Gentoo. You've also got newnet, netctl, |
29 |
network-manager, wicd, and more that I'm probably forgetting. |
30 |
|
31 |
Complexity: |
32 |
----------- |
33 |
As a part of OpenRC, oldnet is roughly ~6200 lines of code, and ~1700 |
34 |
lines of documentation. OpenRC as whole has ~28000 lines of code. |
35 |
So about 20-25% of the codebase, and most of the documentation ;-). |
36 |
|
37 |
Of presently open OpenRC bugs, >30% are presently oldnet. |
38 |
|
39 |
Oldnet supports both really easy simple configurations, as well as many |
40 |
very complicated setups. |
41 |
|
42 |
I have some examples in my homedir: |
43 |
http://dev.gentoo.org/~robbat2/conf.d-net/ |
44 |
- Multi-homing, dual Internet connection, home setup |
45 |
- Multi-homing, enterprise setup |
46 |
- Snippet: HE.net (Hurriance Electric) IPv6 tunnel |
47 |
(this gives you drop-in TunnelBroker connectivity) |
48 |
|
49 |
Other than the above, how much of the OpenRC codebase uses or even |
50 |
references oldnet? |
51 |
|
52 |
Here's a near complete list: |
53 |
init.d/devd.in: before net.lo0 |
54 |
init.d/hostid.in: before devd net |
55 |
init.d/ipfw.in: before net |
56 |
init.d/nscd.in: use net dns ldap ypbind |
57 |
init.d/rarpd.in: need net |
58 |
init.d/rc-enabled.in: need localmount net |
59 |
init.d/rpcbind.in: use net logger dns |
60 |
init.d/staticroute.in: provide net |
61 |
init.d/syslogd.in: use net newsyslog |
62 |
conf.d/netmount:# example, do not set rc_need to something like "net.eth0 dhcpcd". |
63 |
conf.d/netmount:# If you are using oldnet, you must list the specific net.* services you |
64 |
conf.d/netmount:#rc_need="net.eth0" |
65 |
conf.d/netmount:#rc_need="net.eth1 net.eth2" |
66 |
conf.d/netmount:rc_need="net" |
67 |
(plus other examples). |
68 |
|
69 |
And all of these simply deal with the 'net' virtual service, lots of them are |
70 |
*BSD only too. |
71 |
|
72 |
So what of this complexity? We've already had two occurrences where there was a |
73 |
bug in oldnet, but we couldn't release a new stable OpenRC version easily, |
74 |
because we'd started the tree on an update for other major changes in OpenRC. |
75 |
It would have been extremely useful to release a stable oldnet minor version |
76 |
bump with the fix, but it wasn't possible. |
77 |
|
78 |
Testing |
79 |
------- |
80 |
Testing oldnet extensively is very challenging due to the complexity. |
81 |
|
82 |
It's impossible for a single person to have a test environment for ALL |
83 |
of the variants of networking - some of the modules also have a number |
84 |
of variations in usage. So what I'd like to do, is establish that ALL of |
85 |
the modules still work completely, and who to contact for testing of |
86 |
each portion, AND/OR a known test configuration. |
87 |
|
88 |
On a regular basis, I dogfood: |
89 |
- bonding (ifenslave/sysfs) |
90 |
- bridging (brctl) |
91 |
- vlan |
92 |
- PPPoE |
93 |
- IPv6 |
94 |
- APIPA |
95 |
- dhcpcd |
96 |
- ethtool |
97 |
- ifconfig |
98 |
- iproute2 (esp RPDB) |
99 |
- macchanger |
100 |
|
101 |
Other parts I can't/don't test: |
102 |
- adsl |
103 |
- autoipd |
104 |
- br2684 |
105 |
- ccwgroup |
106 |
- clip |
107 |
- dhclient |
108 |
- ifplugd |
109 |
- netplugd |
110 |
- ip6rd |
111 |
- ip6to4 |
112 |
- ipppd |
113 |
- iwconfig |
114 |
- macnet |
115 |
- macvlan |
116 |
- pump |
117 |
- ssidnet |
118 |
- tuntap |
119 |
- udhcpc |
120 |
- wpa_supplicant |
121 |
(i probably forgot some) |
122 |
|
123 |
More stuff pending to be added: |
124 |
(most of which have bugs, some of them I just have direct email |
125 |
submissions) |
126 |
- plip |
127 |
- l2tp |
128 |
- iw |
129 |
- xfsm/ipsec |
130 |
- iproute2-bridge |
131 |
- teaming |
132 |
- vlan gvrp/mvrp |
133 |
- vrrp, bgpd, ospf (run screaming for the hills) |
134 |
|
135 |
systemd & the future: |
136 |
--------------------- |
137 |
<warn> |
138 |
Before you read this section, I suggest you don a flameproof suit, |
139 |
extinguish all potential sources of ignition, and don't take it too |
140 |
hard. |
141 |
</warn> |
142 |
|
143 |
I'm not sure about the future of the core of OpenRC: |
144 |
Upstart & systemd have some clear architectural benefits, despite their |
145 |
implementation shortcomings (either upstream or per-distro). |
146 |
The /usr merge is inevitable, as is the integration of other components |
147 |
into the init system (udev, dbus, ...). What has become dis-integrated instead |
148 |
is the configuration: lots of hardware ships specific udev rules with few |
149 |
problems. |
150 |
|
151 |
netctl showed that systemd control of single interfaces AND/OR default |
152 |
single-interfaces is feasible. However the netctl development has never |
153 |
had the flexibility of oldnet. |
154 |
|
155 |
I would like the flexibility of oldnet to continue to exist, regardless |
156 |
of whichever init system we end up on. I think the best future for that |
157 |
is making oldnet independent of openrc. |
158 |
|
159 |
I look forward to a future where I can fire up my laptop, using systemd, having |
160 |
network-manager on wifi, and connect my ethernet jack into a vlan-tagged port, |
161 |
and connect to a little Gentoo virtual machine in the cloud that booted up with |
162 |
OpenRC and a tiny udhcpc configuration. |
163 |
|
164 |
Thank you for your time. |
165 |
|
166 |
-- |
167 |
Robin Hugh Johnson |
168 |
Gentoo Linux: Developer, Trustee & Infrastructure Lead |
169 |
E-Mail : robbat2@g.o |
170 |
GnuPG FP : 11ACBA4F 4778E3F6 E4EDF38E B27B944E 34884E85 |