cardigliano at ntop
Oct 16, 2011, 1:27 AM
Post #2 of 2
On Oct 16, 2011, at 5:26 AM, Nulik Nol wrote:
> I am developing an application (a distributed cache server) that will
> be using UDP protocol to send/receive many small packets at high rate
> and I am looking for a zero copy networking solution.
> First I evaluated the PACKET_MMAP . It is a small patch to kernel
> code, uses no system calls to receive packets and can send multiple
> packets with one system call. However it is NOT a true zero copy,
> since it does a copy inside the kernel, line 762 of af_packet.c:
> skb_copy_bits(skb, 0, h.raw + macoff, snaplen);
> Then I checked PF_RING kernel module. It has much more features than
> just send/receive packets, has much larger development community, and
> it supports true zero copy with DNA aware NICs. I have checked the
> source for pf_ring module and it is big, many lines of code should be
> executed at runtime. Also it needs 1 syscall for every send/receive.
> Correct me if i am wrong please.
> What would you recommend me to use for my application in order to
> achieve fast networking? If I use PACKET_MMAP I will not get a true
> zero copy but I will be avoiding issuing too much syscalls and saving
> on code size, thus gaining a little bit of speed.
> If I use PF_RING I will have a true zero copy but more instructions
> will be executed and more syscalls issued, so maybe there would be no
> big difference in speed?
if you are talking about PF_RING DNA, it does *not* use any syscall (unless you are doing rx and there are no packets to read: in this case poll() is used in non-active mode). Furthermore, very few instructions are executed (don't be fooled, the kernel module is completely bypassed) both for rx and tx.
> Will appreciate any comment.
> Ntop-misc mailing list
> Ntop-misc [at] listgateway
Ntop-misc mailing list
Ntop-misc [at] listgateway