Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 27 Nov 2001 10:57:08 +0530
From:      "Rajesh P Jain" <rpjain_1977@eudoramail.com>
To:        freebsd-hackers@freebsd.org
Subject:   Re: BPF - Packet Reception
Message-ID:  <IPLFIDGACCCFCAAA@shared1-mail.whowhere.com>

next in thread | raw e-mail | index | archive | help
    Thanks for all the replies. 

    In linux, the packet reception can be done efficiently through the usage of ethernet sockets.

     In FreeBSD, one of the option is by using the BPF. But, as already commented, BPF is not a high performance device.

     So, Can anyone give an alternative way in FreeBSD (other than modifying the driver code), so that high packet-rate reception can be done by without dropping any of the packets ?

Thanks in advance
Raj  

--

On Mon, 26 Nov 2001 17:05:33   Robert Watson wrote:
>
>On Mon, 26 Nov 2001, Rajesh P Jain wrote:
>
>>          We are trying to use BPF (Packet Filter) pseduo device to send
>> and receive the packets. 
>>         Even if there is a slight delay (Some processing has to be done
>> on the read packet) between the issuing of 'read' call, so many packets
>> are getting dropped. 
>>     Is there a way to attach a callback function to the opened device,
>> so that on a packet arrival, this function is being called. 
>>      We polling the device is always risky thing as we may loose some
>> packet. 
>>       Any help on this would be very much appreciated.  Thanks and
>> regards, -Raj
>
>There are a number of things that can be done to improve BPF's behavior
>under high volume, including setting a larger in-kernel buffer for BPF
>(using BIOCSBLEN), as well as implementing the equivilent of interupt
>coallescing when delivering packets to userland, through the use of a
>timeout (BIOCSRTIMEOUT, BIOCIMMEDIATE), which can increase throughput.
>While BPF is not able to handle extremely high packet rates, due to it
>performing memory copies and simple virtual machine execution, I've quite
>successfully used it to do userland packet forwarding (read, process,
>send) in the 100mbps range on moderately equipped machines.  Depending on
>the nature of the packets you're capturing, optimizing your BPF code, or
>feeding it code that matches more specifically, can also impact
>performance.
>
>The performance of BPF is often directly associated with the amount of
>userland context switching going on: for example, running my BPF-based
>packet forwarding program at the same time as tcpdump would easily halve
>the throughput by making the number of context switches proportional to
>the number of packets delivered.  A single process performing BPF
>operations will perform *much* better on an unloaded machine. 
>
>Robert N M Watson             FreeBSD Core Team, TrustedBSD Project
>robert@fledge.watson.org      NAI Labs, Safeport Network Services
>
>
>
>


Join 18 million Eudora users by signing up for a free Eudora Web-Mail account at http://www.eudoramail.com

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?IPLFIDGACCCFCAAA>