Comments

(newest first)

  • Abdul Hakeem | Sat, 31 May 2014 18:05:05 UTC

    Hello,
    Any advice on how to build a USB driver with Netmap ?
    We have 2 boards connected to each other talking directly to an application.
    Regards,
    Abdul Hakeem
  • Rajiv | Fri, 14 Feb 2014 01:20:56 UTC

    Have some higher level networking stacks been built on top of netmap? Like UDP? Sounds interesting. It sounds a lot like the Van Jacobson net channels that was supposed to go into Linux but never did.
  • Nulik | Sun, 25 Aug 2013 13:53:26 UTC

    3 hours ago I didn't know about netmap, but now I have a working example of receiving a packet. Doing this took me about 1 week with DPDK, because it has lots of documentation and it is difficult to understand. Both DPDK and PF_RING have lots of unneeded stuff in the APIs. Netmap is the cleanest, and genious solution. With netmap I can link my app statically and get rid of annoying GLIBC, with DPDK I can't do that.Great piece of code, keep up the good work! 
  • Michael | Tue, 07 May 2013 19:47:44 UTC

    Seems to be a great piece of software. Is there any known patch to fasten up ip routing using it?
    
    Regards
    Michael
  • Dongil Park | Tue, 07 May 2013 01:41:23 UTC

    I could not get the raw packet.
    
    i compiled netmap code and load netmap_lin.ko and ixgbe.ko.
    OS: centos 
    Kernel version: 2.6.38
    the example pkt-gen is working, i think... but there is no packet information.
    
    receive_packets [710] cur  54
    receive_packets [713] limit  1
     FFFFFF83  24  00  00  00  00  01  00 
    receive_packets [723] slot  0x7f437cc041e0
    receive_packets [724] slot->len  0
    receive_packets [725] slot->buf_idx  9347
    receive_packets [726] ring.buf_ofs  6635520
    receive_packets [727] ring.num_slots  512
    receive_packets [728] ring.avail  1
    receive_packets [729] ring.cur  54
    receive_packets [730] ring.nr_buf_size  2048
    receive_packets [731] ring.flags  0
    receive_packets [735] len 0
    main [1265] 0 pps
    receive_packets [710] cur  55
    receive_packets [713] limit  1
     FFFFFF84  24  00  00  00  00  01  00 
    receive_packets [723] slot  0x7f437cc041e8
    receive_packets [724] slot->len  0
    receive_packets [725] slot->buf_idx  9348
    receive_packets [726] ring.buf_ofs  6635520
    receive_packets [727] ring.num_slots  512
    receive_packets [728] ring.avail  1
    receive_packets [729] ring.cur  55
    receive_packets [730] ring.nr_buf_size  2048
    receive_packets [731] ring.flags  0
    receive_packets [735] len 0
    
    this is the log.  packet length is 0... ?? 
    
    is there any solution?
  • Alan Mimms | Thu, 04 Apr 2013 00:01:45 UTC

    Tahir,
    
    I found that I had to do "ifconfig ethN up" before running pkt-gen. Would that fix your problem?
  • Tahir | Thu, 14 Feb 2013 16:54:18 UTC

    Dear Luigi,
    
    I compiled the netmap code on my UBUNTU machine (kernel version 3.2.0-32.51). After installation, I loaded "netmap_lin" and "ixgeb" kernel modules. 
    However, the pkt-gen example is not working and giving me the error
    "Unable to get ifinfo for eth1".
    My Ethernet interface is Intel 82598EB 10G. Any clue that why the example is not working?
    
    Regards
  • osopolis | Mon, 23 Apr 2012 10:36:55 UTC

    Hi.
    
    Any timeline when netmap will be included into the kernel forwarding engine?
    I´d love to test it out :-)
  • Luigi Rizzo | Tue, 17 Apr 2012 23:15:58 UTC

    James: netmap is mostly useful (and usable) for applications requiring raw packet I/O, such as software routers/switches, firewalls, traffic monitors, and to some degrees virtualization systems. I have some work in progress for changes of the (in-kernel) host stack to make direct use of netmap, but the gains will be more limited (for TCP because it uses large frames, for UDP because the socket API is limited to one frame per system call).
    
    Stephane: the issue is that network devices cannot control incoming traffic, so they must be prepared to handle even min-sized frames (64 bytes + 160 bits of framing, total 672 bits).
  • stéphane | Fri, 13 Apr 2012 12:54:04 UTC

    Hi Luigi,
    I thought maximum throughput on a NIC was reached with jumbo frame (9000B payload) or at least standard frame (1500B payload).
    That's why I'm surprise by the 14.88Mpps. I computed 138.6kpps or 823.5kpps.
    Do you have any resource giving hardware specifications ?
    Regards
  • James | Thu, 29 Mar 2012 12:31:21 UTC

    This amounts to a second network stack in the kernel that sits upon the device, independent from the usual tcp/ip stack that we all use today. This is similar to what some operating systems do for Infiniband and RDMA. The question that's relevant for most of us is how do we take advantage of netmap and/or high speed networking hardware using the APIs that we have today (such as BSD sockets), so that we don't have to rewrite every networking application?
  • Luigi Rizzo | Tue, 28 Feb 2012 15:19:07 UTC

    Gabor, i just tried PACKET_TX_RING and reached 1.85 Mpps at full cpu speed (2.93GHz).
    On the same hw, Netmap reaches the same performance at just 150MHz. The comparison used same conditions (same hardware, 10 Gbit interface, ~1000 packets per system call, packet buffers set in advance).
    This is no surprise, because PACKET_TX_RING still uses skbufs in the device driver, and this is a major source of overhead, as explained in the article and in more details on the netmap page. Memory mapping is just one of the many concepts that netmap uses to get performance.
  • Gabor Gombas | Mon, 27 Feb 2012 22:48:58 UTC

    I'd be very interested how netmap compares to PACKET_TX_RING/PACKET_RX_RING as supported by Linux. The basic concept of using ring buffers shared between the kernel and user space seems to be the same, so it would be interesting to know how the performance of netmap compares to the existing solution.
  • Kristofer Spinka | Tue, 21 Feb 2012 21:14:59 UTC

    It would be very interesting to know how this compares to the work done by the big name 10GbE NIC vendors: Myricom, SolarFlare, Mellanox, et. al.
    
    Not only in terms of raw performance/latency/cpu-offload, but also in terms of programming model.  It seems a natural step to create a pre-load library to provide BSD socket API abstraction as the aforementioned vendors have.
  • Luigi Rizzo | Fri, 17 Feb 2012 16:49:08 UTC

    A first version of the Linux netmap code is available at
    http://info.iet.unipi.it/~luigi/netmap/
  • Luigi Rizzo | Tue, 14 Feb 2012 22:57:19 UTC

    We completed the linux version yesterday, it should be released before the end of the month after some code cleanup. Performance is comparable to that on FreeBSD.
  • Martin Sustrik | Tue, 14 Feb 2012 05:34:30 UTC

    Sounds cool! Any chance to have a look at linux kernel implementation of netmap?
Leave this field empty

Post a Comment:

(Required)
(Required)
(Required - 4,000 character limit - HTML syntax is not allowed and will be removed)