Re: IPSec in 2.5 Kernel?

Sandy Harris <[email protected]> Wed, 19 Mar 2003 16:36:47 -0800
Newsgroups gmane.network.freeswan.devel
Message-ID <[email protected]>
Paul Wouters wrote:

 > On Tue, 18 Mar 2003, John S. Denker wrote:
 >
 >>What would it take to get state-of-the-art IPsec into
 >>the mainline kernel development process?
 >
 > The only viable way I see, with the current positions of Gilmore,
 > Torvalds, Miller and Daniel,

Are you certain what the _current_ positons are in all cases, or
making assumptions? I know the history and see the problem, but
policies can change to take account of developments, and arguably
it may be time for some of that here.

Summary of the positions as I understand them:

The position of the FreeS/WAN project, set by management but
supported for obvious reasons by the whole team past and present,
has always been that it is critically important that FreeS/WAN be
protected from any interference by the US gov't. Development and
distribution must take place outside the US, with no patches from
US citizens and residents, so that it is utterly clear They cannot
block the work or distribution.

On the other hand, the position of key kernel developers has
always been that they could not accept anything into the main
kernel tree that they weren't allowed to change.

There are good reasons for both positions, but their combined
effect is problematic. The fault isn't with either group here,
but with the US gov't policies on crypto. This has kept IPsec
out of the standard kernel far too long.

There are also assorted problems with KLIPS as it stands, so
we've had much discussion of KLIPS-2 or KLIPS-ng design, and
there have some oddities like Gerhard's group wrting a lot of
their own code to integrate with the v6 stack.

Presumably the new kernel code is cleaner than current KLIPS.

As I see it, the FreeS/WAN project should now drop all effort
toward KLIPS-ng and instead aim at

	supporting Pluto over the mainline kernel IPsec in 2.6
	getting the good ideas of KLIPS or KLIPS-ng into that
	 mainline kernel code	

We probably also need to prepare an extra-solid fallback position,
a final release for 2.2 and 2.4 kernels that is entirely outside
US gov't control, so that if they decide to do something nasty
users can just revert there.

I believe the mainline stuff supports some undesirable "features"
such as single DES encryption. That's OK, as long as Pluto won't
negotiate them. By making Pluto available, we may keep users away
from other daemons that will.

I realise that what I'm suggesting represents a policy change for
FreeS/WAN and is not a decision to be taken lightly. I'm not
making the suggestion lightly; I think it is our best route to
getting IPsec, and in particular Opportunistic Eencryption, widely
deployed.

 > is to ensure that kernel level ipsec talks to both
 > KAME/Racoon and FreeS/WAN userland.

That's likely not enough.

Opportunistic Encryption has the potential to get large portions
of the net encrypted by default. It may be the only realistic way
to do that, and this has been a project goal all along.

OE can also make large VPNs much easier to manage. The number of
DNS entries you need to manage grows linearly as you add systems,
where the number of tunnel descriptions for a VPN can grow
quadratically.

These are extremely worthy goals, and they require some kernel
support.

Also, the desire to avoid Stoopid Rooting Tricks(TM) and make
IPsec play nicely with routing protocols, with DHCP address
assigment, with devices that go up and down, ... imposes
additional requirements on the kernel stuff; see Denker's paper
for details.
http://www.monmouth.com/~jsd/vpn/ipsec+routing/mast.htm

It is not enough to make Pluto run over 2.5 kernel IPsec.
The objective should be really good IPsec for the 2.6
kernel.

The FreeS/WAN team and various associates -- Denker, Steffen and
Trojanowski leap to mind, but there are others -- have done a lot
of design work on these problems. It should be applied to 2.6.