I am working on user level code which uses BPF filter.
Solution has two threads and BPF filter for incoming packets to raw socket dedicated to each thread.
Intent is to divide ingress traffic between two thread based on whether dest IP is even or odd.
BPF filters used are:
Even IP filter :-> tcpdump -i interface 'ether dst <dest mac> && ip[19] & 0x01 = 0'
Odd IP filter :-> tcpdump -i interface 'ether dst <dest mac> && ip[19] & 0x01 = 1'
There is a packet loss for odd IP thread even when CPU is available. Reason being packet drop due recv buffer full.
Same amount of traffic is well handled by even IP thread(user code being same in both), scaling CPU to full 100%.
In odd IP thread, If filter is changed to "tcpdump -i interface 'ether dst <dest mac> && ip proto 17' ", all goes fine.
Also CPU usage at kernel drops from 50% to 4 % for a particular amount of traffic. Would appreciate any I/ps for reducing load at kernel for packet filtering(Odd/Even IP distribution)
Cheers
Mukesh
Mukesh
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies