IP over ieee1394 under Linux (>=2.4)

Author: Guido Fiala gfiala (at) s (dot) netic (dot) de

last modified: 26.August 2002


starting from the drivers ether_1394_0.1.4 from Frank Bonin, Emanuel Pirker and Andreas E. Bombe
http://www.chez.com/kayle/IEEE_1394/ether_1394.tgz
and ip1394 from WooJung Choi (based on above) ip1394.tgz
i ported both drivers to the Linux-2.4 network interface (softnet) according to the softnet-howto.

You can download the still experimental drivers (it might do anything to your system) at ip1394_softnet0.1.tgz
and ether_1394_0.2.2.tgz (elder versions: ether_1394_0.2.1.tgzether_1394_0.2.tgz)

Both drivers work to some extend, where eth1394 is much more stable than ip1394, which tends to hang the ohci1394 with large blocks.
(help appriciated)

Personally i use it with nfs-v3, XFree, ftp, http, ssh, nmap, ttcp, netpipe without problems so far, but the programs "bing -S 49000" (network benchmark) and "xawtv -r" (remote viewing of bttv-video) is not stable (but it might be a problem of these programmes as well)

I did some benchmarks using netpipe with the following hardware:

  • 2 ohci cards
  • a Pentium 120MHz at one side and a Pentium2 450MHz at the other side
  • 4.5 meter cable
    (other parameters see diagrams)

     

    The throughput vs. packet size shows up as:

     

    The network signature graph looks like:

     

    Conclusions:

  • The maximum throughput is only 58Mbps, because the sysload at the P120 reaches 100% (system) at this level (the P450 is then at <30%)
  • The slower machine set's the limit on throughput in both directions.
  • Setting BOTTOM_HALVES=0 in ohci1394.h (in kernel tree; rebuild modules) is highly recommended
  • Setting the MTU to maximum (2030) in eth1394.c gives best performance

     

    ToDo, suggestions,...

  • profile the driver (if someone can point me to a working kernel-profiling patch for 2.4)
  • check if the strange pooling/queueing in eth1394.c does what it should
  • check if skb-pooling increases performance
  • check if other improvements in the ieee1394 subsystem could help
  • standard compliance and code-cleanup
  • finally: get it in the kernel-tree ;-)

     

    On me: No i'am not a kernel-hacker, just wanted to use my hardware, don't expect that i really know what i did ;-).
    At the moment i have little time to improve the driver, but if someone likes to continue the work...

    As recent subsystems seem to make trouble i include the linux1394-cvs-snapshot (8.6.2001) of the ieee1394-subsystem i use, it's copied from a 2.4.0-kernel, you might simply extract it into your kernel-tree and it should work. If not, maybe just the .c and .h files ? Don't know...

    ieee1394.tgz


    Back to home