Re: IPv6 support



On Thu, 2008-03-13 at 23:49 +0100, Benoit Boissinot wrote:
> I'd like to know what work is needed to get some IPv6 support in
> NetworkManager.
> 
> My ISP has IPv6 support, it works like this:
> IP address configuration and routing is automatic (done via router
> advertisement)

Right; you'll get the kernel-assigned LL address, and I believe a
hashed-MAC IPv6 address based on the IPv6 routing prefix that the router
advertises.  The kernel won't assign the routable IPv6 address until NM
has assigned the LL IPv6 address manually (which NM does).

> DNS is announced via ND-RDNSS, support is in the kernel since 2.6.24,
> but you need a userspace daemon to make it useful (ND options are
> transmitted via netlink)
> There is userspace daemon available at http://rdnssd.linkfanel.net/
> but I think it is simple enough (especially if the netlink part is
> pushed to libnl) to re-implement it in nm (nm already listens to netlink
> and already manages the merging of resolv.conf).

Yeah, the code seems simple enough, we should target adding this
functionality to NetworkManager without an external dependency.  IPv6
should be a pretty core piece functionality.

> If I get some directions, I'd like to work on that part. I don't really
> know what is missing in the core to handle it (ipv6 support in dbus
> api ?), but if I write the libnl part, it seems quite simple (you just
> need to add some dns in resolv.conf).

I've namespaced all the property names and such for IPv4 so that we can
add the required bits for IPv6.  At a minimum, we need an ip6 setting
(see NetworkManagerConfigurationSpecification [1] at live.gnome.org for
the ipv4 one).  So we'll need to come up with a list of things people
want to configure with IPv6 on their boxes:

David, what sort of stuff would people want to override?  I assume we
should allow people to override the router (ignoring the advertisement),
DNS servers (ignoring the RDNSS stuff), and add additional manual IPv6
addresses?

Next, internally in NM, we'll need an IP6Config structure that contains
all the information from the ip6 setting object described above, and
holds other stuff that might be necessary to apply to the system when
the device is activated (static IPv6 routes, MTU, etc).  Once that's
done, we'll need to start setting the IPv6 config bits into the device
activation process, which shouldn't be too hard.

One interesting question: if you have both IPv6 and IPv4 DHCP config for
a specific connection/device, what happens if IPv4 DHCP fails, but the
IPv6 config is fine?  Should the activation fail?  Or should it succeed?
Something think about, but we can handle that when we get there.

There's a few more bits, but this is a start and it should be pretty
easy to start spec-ing out the setting bits, and adding the generic
structures into the NM code.

> If it is a success, another project I'd like to see/work on in nm is
> automatic 6to4 configuration, you just check the ipv6 box, and if you
> have an ipv4 public address it just works :)
> Long term goal would probably be:
> - 6to4 for public ipv4 addresses
> - teredo for people behind NAT
> - optionally connection via a tunnel broker (and connection over dns for
>   people who don't want to pay in a hostspot ? ;)
> I think OSX and Vista are already implementing this (I've heard it from
> a mac user)

That would be quite interesting, and pretty cool.

Thanks!
Dan

[1] http://live.gnome.org/NetworkManagerConfigurationSpecification




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