<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" 
  "/usr/share/sgml/docbook/xml-dtd-4.1.2/docbookx.dtd">
<article lang="en">
  <articleinfo>
    <title>An interview with Hideaki Yoshifuji</title>
    <date>March 2nd 2003</date>
    <author>
      <firstname>Mauro</firstname>
      <surname>Tortonesi</surname>
      <affiliation>
        <orgname>Deep Space 6</orgname>
        <address><email>mauro@deepspace6.net</email></address>
      </affiliation>
    </author>
    <author>
      <firstname>Peter</firstname>
      <surname>Bieringer</surname>
      <affiliation>
        <orgname>Deep Space 6</orgname>
        <address><email>peter@deepspace6.net</email></address>
      </affiliation>
    </author>
    <abstract>
      <para>
        <ulink url="mailto:yoshfuji_at_linux-ipv6.org">Hideaki Yoshifuji</ulink>
        is the most active developer working in the 
        <ulink url="http://www.linux-ipv6.org">USAGI project</ulink>,
        an important development initiative aimed at improving the IPv6 
        support of Linux, both in the kernel and in userspace.
      </para>
      <para>
        He is a student pursuing his Ph.D in Information Science and Technology 
        from the
        <ulink url="http://www.hongo.wide.ad.jp">University of Tokyo</ulink>. 
        His major research interests are IPv6, network management, security, 
        CDN, and operation systems.
      </para>
      <para>
        In this very interesting interview, Hideaki discusses with us the
        significant goals already achieved by the USAGI project, the latest
        improvements they've made to enhance the IPv6 support of both the Linux
        kernel and userspace apps, and presents an ambitious future development
        roadmap.
      </para>
    </abstract>
  </articleinfo>

  <para>
    <emphasis role="bold">
      Hi, Hideaki. First of all, thank you very much for having granted us 
      this interview.
    </emphasis>
  </para>
  <para>
    You're welcome. It's also my pleasure to have this interview.
  </para>
  
  <para>
    <emphasis role="bold">
      As everyone of our readers know, the USAGI project is a japanese
      initiative for improving the IPv6 support of Linux (including the
      kernel, the glibc libraries and the userspace applications).
      The USAGI project is sponsored by several japanese corporations
      (among which there are even big names like Hitachi and Toshiba)
      and research institutes like the University of Tokyo - for which
      you work. How did you get involved in this project?
    </emphasis>
  </para>
  <para>      
    I am one of the members who established our project. (NOTE: Hideaki is
    also a core member of the USAGI project).
  </para>

  <para>
    <emphasis role="bold">
      In the last two years, the USAGI project has produced a lot of valuable
      improvements to the Linux kernel. You have added many features (like
      <ulink url="http://www.ietf.org/rfc/rfc3484.txt">
        source and destination address selection</ulink>, 
      <ulink url="http://www.ietf.org/rfc/rfc3041.txt">
        privacy extensions</ulink>, 
      <ulink url="http://www.ietf.org/internet-drafts/draft-ietf-ngtrans-isatap-12.txt">
        ISATAP</ulink> support, 
      <ulink url="http://www.ietf.org/internet-drafts/draft-ietf-ipngwg-ipv6-anycast-analysis-01.txt">
        anycast</ulink> support, 
      <ulink url="http://www.ietf.org/internet-drafts/draft-ietf-ipngwg-icmp-name-lookups-09.txt">
        Node Information Queries</ulink>, 
      <ulink url="http://www.ietf.org/internet-drafts/draft-ietf-ipngwg-rfc2553bis-10.txt">
        double binding</ulink>, 
      <ulink url="ftp://ftp.itojun.org/pub/paper/draft-itojun-v6ops-v4mapped-harmful-01.txt">
        dropping of fake ipv4-mapped addresses</ulink>, 
      etc...) and enhanced or debugged existing ones (like
      <ulink url="http://www.ietf.org/rfc/rfc2641.txt">
        neighbour discovery</ulink>, 
      <ulink url="http://netfilter.samba.org">
        v6 netfilter</ulink>, 
      <ulink url="http://www.ietf.org/rfc/rfc2893.txt">
        tunnels</ulink>, etc...). 
      You have also integrated in your kernel external code to provide 
      <ulink url="http://www.ietf.org/rfc/rfc2401.txt">
        IPSEC</ulink> and 
      <ulink url="http://www.ietf.org/internet-drafts/draft-ietf-mobileip-ipv6-21.txt">
        Mobile IPv6</ulink> support.
      It is a pretty impressive work. What other features are you planning
      to implement? Should the users expect to see major improvements in
      USAGI's code along 2003? 
    </emphasis>
  </para>
  <para>      
    We are planning to complete our implementation of the IPsec and Mobile IP 
    protocols, and merge it into the mainline kernel.
  </para>
  
  <para>
    <emphasis role="bold">
      When is the next stable release scheduled for?
    </emphasis>
  </para>
  <para>      
    The next stable release, USAGI STABLE 4.1, is scheduled on the 
    St. Valentine's day :-) (NOTE: this part of the interview was made 
    before Feb 14th 2003) Then, we'll make a new stable release in summer.
  </para>

  <para>
    <emphasis role="bold">
      The USAGI project developers have also spent a lot of effort to port
      the main Linux userspace networking utilities to IPv6 or to enhance
      their IPv6 support. What is the future USAGI development roadmap in
      the userspace applications' field?
    </emphasis>
  </para>
  <para>      
    Streaming applications including VoIP.
  </para>

  <para>
    <emphasis role="bold">
      Recently, you have written two new userspace applications: ninfod and
      ziconfig. Can you briefly explain us what these applications are about?
    </emphasis>
  </para>
  <para>      
    <emphasis>ninfod</emphasis> is the Node Information Daemon, which 
    implements a responder for Node Information Protocol queries. The Node 
    Information Protocol is described in 
    <ulink url="http://www.ietf.org/internet-drafts/draft-ietf-ipngwg-icmp-name-lookups-09.txt">draft-ietf-ipngwg-icmp-name-lookups-09.txt</ulink>.
    We had first implemented that function in kernel space, but we decided to 
    re-implement it in userspace for the following reasons:
    <itemizedlist>
      <listitem>
        <para>
          we needed a more flexible configuration mechanism, including ACLs
          (but this is not implemented, yet)
        </para>
      </listitem>
      <listitem>
        <para>
          kernel implementation was really too big.
        </para>
      </listitem>
    </itemizedlist>
  </para>
  <para>      
    <emphasis>ziconfig</emphasis> instead is a trivial configuration tool for 
    scoped routing support. (But we don't have zone-id in sin6_scope_id in 
    sockaddr_in6 support, yet.)
  </para>

  <para>
    <emphasis role="bold">
      What part of the code that USAGI has produced are you particulary
      satisfied with? Is there something that in your opinion still needs to
      be worked on (apart from MIPv6 and IPSEC)?
    </emphasis>
  </para>
  <para>      
    I'm happy with IPsec and Node Information Queries. We still need to work 
    on Multicast routing / 
    <ulink url="http://www.ietf.org/rfc/rfc2710.txt">MLDv2</ulink>.
  </para>

  <para>
    <emphasis role="bold">
      Have you ever worked on a *BSD kernel? Do you think that the IPv6
      support of FreeBSD, NetBSD and OpenBSD (which is developed by the 
      <ulink url="http://www.kame.net">KAME project</ulink>) is overall 
      better than the Linux one?
    </emphasis>
  </para>
  <para>      
    Before we started, there were many bugs and missing features in the
    Linux IPv6 support and, therefore, *BSD*s' IPv6 support was much better 
    than Linux's one.
    Well, now severe bugs have been fixed, and missing features such
    as IPsec and/or Mobile IP (this is 
    <ulink url="http://www.mipl.mediapoli.com/">HUT</ulink>'s work) have been 
    implemented. So, it probably depends on your taste.
  </para>

  <para>
    <emphasis role="bold">
      *BSD have rather full KAME-IPv6 included in mainstream in contrast
      to Linux, where the most important enhancements are only available 
      via USAGI's kernel patch.
      What's your opinion whether this delays full IPv6 usage with Linux?
    </emphasis>
  </para>
  <para>
    Since we contributed critical fixes for normal IPv6 usage with Linux,
    we believe that people can use IPv6 with Linux as BSD-people do.
  </para>
  
  <para>      
    <emphasis role="bold">
      As the most representative USAGI developer, you have also worked with
      the Linux kernel networking-stack development team. You have submitted
      several patches to fix many broken behaviours of the vanilla kernel
      (e.g. double binding), but these patches have been accepted only for the
      2.5 development series (where they have already been merged). Why
      haven't these patches been merged in the stable 2.4 series?
    </emphasis>
  </para>
  <para>      
    It seems that some of them will appear in 2.4.21. (We can see them in 
    2.4.21preX patches.)
  </para>

  <para>
    <emphasis role="bold">
      During the last months, many Linux users expected to see a major merge
      of the USAGI code in the kernel mainstream, but this has not happened.
      What's the reason, in your opinion?
    </emphasis>
  </para>
  <para>      
    We have finished working on most of the major features/improvements, 
    though IPsec, source address selection, and privacy extensions support
    are still pending.
    The reason why other small fixes were not going to mainstream kernel 
    is because we focus on making new IPsec implementation for linux-2.5.
    Another reason is I was busy...
  </para>

  <para>
    <emphasis role="bold">
      What is the status of IPv6 support in the Linux 2.5 kernel series?
      The feature freeze for Linux 2.6 has been already reached, but it
      seems that there hasn't been the significant improvement of the IPv6
      stack that was scheduled.
    </emphasis>
  </para>
  <para>      
    Our goal of Linux 2.6 kernel series is supporting IPv6 IPsec.
    In the future releases later than 2.6 series, we'd like to support
    multicast routing, mobile IP and netfiltering.
  </para>
  <para>      
    We'll continue working making small patches for mainstream kernel in
    February. I suppose 2.5 (or 2.6) will be as almost the same quality 
    as ours (except for IPsec and/or Mobile IP - this is HUT's work 
    though).
  </para>

  <para>
    <emphasis role="bold">
      Have you talked with the other kernel developers about this? Is there
      a credible development roadmap for IPv6 support in Linux 2.6/2.7?
      Perhaps a plan for the merge of USAGI code?
    </emphasis>
  </para>
  <para>      
    Yes, we attended to <ulink url="http://www.linuxsymposium.org/2002/">Ottawa 
      Linux Symposium 2002</ulink> and received many helpful comments. (NOTE:
    Hideaki is scheduled to talk at the next 
    <ulink url="http://www.linuxsymposium.org/2003/view_abstract.php?talk=62">Ottawa Linux Symposium 2003</ulink>).
    
  </para>

  <para>
    <emphasis role="bold">
      Do you know any Linux distributor which plan to integrate USAGI
      patches in their patched kernels some day? Or will they wait until
      vanilla kernel contains USAGI extensions?
    </emphasis>
  </para>
  <para>
    There're several distributors which have already shipped with USAGI.
    For example:
    <itemizedlist>
      <listitem>
        <para>
          <ulink url="http://www.momonga-linux.org">Momonga GNU/Linux</ulink> 
          (a.k.a. Kondara GNU/Linux)
        </para>
      </listitem>
      <listitem>
        <para>
          <ulink url="http://openlab.plathome.co.jp/linux/ssdlinux.html">
            SSD/Linux
          </ulink>
        </para>
      </listitem>
      <listitem>
        <para>
          <ulink url="http://www.debian.org">Debian GNU/Linux</ulink>
          (patch package is available)
        </para>
      </listitem>
      <listitem>
        <para>
          <ulink url="http://www.omoikane.co.jp">Omoikane GNU/Linux</ulink>
        </para>
      </listitem>
      <listitem>
        <para>
          <ulink url="http://www.miraclelinux.com">Miracle Linux</ulink>.
        </para>
      </listitem>
    </itemizedlist>
    Our efforts are being used more widely as our extensions are being 
    integrated to mainline kernel, you know.
  </para>

  <para>
    <emphasis role="bold">
      Have you followed the development of glibc? Will there be an improvement
      of IPv6 support for RPC and the Extended BSD Socket API in the next
      releases?
    </emphasis>
  </para>
  <para>      
    Not so much because of lack of human resource. It is one of our TODOs.
  </para>

  <para>
    <emphasis role="bold">
      What is the internal organization of the USAGI development team?
      Is there a Linus-like benevolent dictator in the team who takes the
      final decisions or do you work by consensus?
    </emphasis>
  </para>
  <para>      
    By consensus. We hold face-to-face meeting once a week.
  </para>

  <para>
    <emphasis role="bold">
      You are surely the most active of the USAGI project's core developer.
      Frankly speaking, it is from Alan Cox's glorious days (when the
      whole World believed that there were at least three developers
      behind that name) that i haven't seen a developer working so hard
      on the Linux kernel ;-) What is the secret behind such an impressive
      productivity?
    </emphasis>
  </para>
  <para>      
    I am not a person, but a team like Alexey :-) (NOTE: Hideaki here is 
    talking about Alexey Kuznetsov, who is the author of 
    <emphasis>iproute2</emphasis> and surely one of the best developers of 
    the Linux networking stack.)
  </para>

  <para>
    <emphasis role="bold">
      What suggestions can you give to a newbie developer who wants to begin
      working on the Linux networking stack? Where should he start from?
    </emphasis>
  </para>
  <para>      
    Hackers never sleep :-) Actually, read codes, put 
    <emphasis>printk</emphasis>'s everywhere.
  </para>

  <para>
    <emphasis role="bold">
      Some Unix server programs still lacks of full or stable IPv6
      support, e.g. <ulink url="http://httpd.apache.org/">Apache2</ulink> or 
      <ulink url="http://www.squid-cache.org/">Squid</ulink>. What are the 
      reasons, in your opinion? Are there too few IPv6 developers and testers 
      available to help the projects?
    </emphasis>
  </para>
  <para>
    As far as I know, Apache 2 works well. I don't know about status of IPv6 
    support in squid because I haven't use squid for a long time.
    This would be a problem; there're few IPv6 developers / testers
    available to help them.
  </para>
  
</article>
<!--
vim: et ts=2 sw=2
-->


