My project involves a study on packet capturing and filtering mechanism and to improve the performance at kernel level. I would like to know ...

1. Is BPF a pseudo machine on linux? where can I find its src code on Red Hat 9.0 (kernel version 2.4.20-?
2. What is the differnce between the BPF and Linux Socket filter?
3. Which one of the above two filters is implemented at kernel level?
4. Can mmap() be used to map virtual address space to the DMAed zone? and when and where should this be implemented?
5. What is IOVEC?
6. Are there any page table creation at software level too or is it only a hardware implementation?
7. If so, is a device driver by default responsible for creating page tables?

Thanks in advance,