tech-net archive

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

Re: Mobile IPv6 patch for NetBSD-current (revised)



Hello David,

I'm a co-developper of the MIP6 stack with keiichi.
Let me talk from the view point of the MIP6 design.


On 2008/02/18, at 9:12, David Young wrote:

   sys/net/mipsock.c
    sys/net/mipsock.h

Why a socket here? Why not a character device (advantages: simplicity,
delegation w/ chmod/chown/chgrp)?  ioctls on the MIP pseudo-interface?

The function which uses the MIP pseudo interface is for mobile node only. Other functions such as home agent and correspondent node doesn't need touch the interface. As the design philosophy of the Mobile IPv6, I think the all MIP6 behavior should be done in the netinet6 as possible.

This is the analogy of router implementation that uses PF_ROUTE socket. With introducing the socket, routing protocol such as RIP or OSPF can be implemented on userland and actual packet forwarding is done in the kernel.

And as keiichi mentioned in his second mail, the MIP6 implementation needs both direction notification from kernel to userland and from userland to kernel. We thought the newly introduced socket would be best for the purpose. If the socket can't be applicable, the routing socket would be the alternative, however, using the routing socket might cause other side effects.


The general feeling I get by reading the patch is that it touches much
more code than is necessary or desirable.  I think that more of the
Mobile IPv6 functions can be put into the MIP pseudo-interface, with
the nice side-effect that you can probably use MIPv6 with the existing
fast-forwarding code, you can tap and filter MIPv6 packets before and
after encapsulation, and you keep clutter out of the IPv6 stack.

What should be done in the MIP6 are not only encapsulating/ decapsulating the packets. If MIP6 just only does capsulation, it could be done on the pseudo interface. but actually it requires packet modification such like inserting or extracting extension headers based on the MIP6 specific database, binding update list or binding cache. Therefore a lot of modification of the IPv6 stack are needed rather than putting it on the pseudo interface.

thanks,

--
Tsuyoshi MOMOSE




Home | Main Index | Thread Index | Old Index