[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: State of play with Shim6 documents



 

> -----Original Message-----
> From: Erik Nordmark [mailto:erik.nordmark@sun.com] 
> Sent: Tuesday, March 13, 2007 2:21 PM
> To: Henderson, Thomas R
> Cc: Geoff Huston; shim6-wg; kurtis@kurtis.pp.se
> Subject: Re: State of play with Shim6 documents
> 
> Henderson, Thomas R wrote:
> 
> > For the data plane, I understand your point that it may be 
> moot if the
> > control plane were to be supported without modifications, 
> if the data
> > plane could not be.  However, I was thinking that judicious 
> use of Linux
> > netfilter could be used to insert the data plane shim.  In 
> particular,
> > the IP6 local in and local out hooks seem well positioned 
> in the stack
> > to support a shim6 shimming module.
> 
> If you do that, then you could use the same hook for all the shim6 
> messages, right?
> 
> > My basic concern is that it would be nice to support shim6 without
> > patching the Linux kernel, for deployment/experimental 
> purposes.  It may
> > be possible to make this work as defined now without a 
> patched kernel.
> > I think it may require some more complicated matching rules 
> to divert
> > shim6 control packets to user space while diverting shim6 
> data packets
> > to a deshimming module, and making sure there is some way 
> to inject the
> > control plane packets from user space.  I suspect it will 
> be harder to
> > do the way it is defined, including for non-Linux systems, 
> but perhaps
> > not impossible.
> 
> There is a single bit in the shim6 header which says whether it is a 
> payload message or something else. So it shouldn't be hard to have 
> different rules.
> 
> > Since I understand the motivation you have here, I think it would be
> > best to avoid speculating and experiment with the above to 
> see if it can
> > work.  I'll try to get some results in the next week or two 
> and report
> > back.
> 

Erik,
It looks like we are able to achieve our objective of developing an
experimental shim6 implementation in Linux, with a user-space control
plane and kernel-based shimming, without patching the Linux kernel:
- shim6 control messages can be written out from user-space over IPv6
raw sockets
- shim6 control messages can be filtered and written to user-space
through a combination of ip6tables and libnetfilter_queue; the filtering
granularity can look at the shim6 P-bit
- shim6 data plane (the per-packet shim header) can be inserted and
removed via an ip6tables mangle rule (directed to a loadable kernel
module and controlled via netfilter)
- nf_conntrack can be used for connection tracking (to invoke the shim
after a certain number of packets)

The above pertains to Linux only; I haven't considered solutions for
other platforms.  Of course, on most platforms one can route all packets
through userspace where they can be filtered/touched, but there is a
performance hit when doing that.  But I don't think that having shim6 on
two protocol numbers will help that issue much anyway.

In conclusion, I don't think that it will make that big a difference
after all whether there are one or two protocol numbers, so it seems
like the firewall considerations lean towards keeping things the way
they are now.

-Tom