2013-02-05 2 views
3

나는 사용자 공간으로 패킷을 복사하기위한 라이브러리로 libipq를 사용하는 Ubuntu 12.04에서 실행되는 패킷 필터링 프로그램을 만들고 있습니다. libipq의 논리는 나에게 잘 돌아 간다. 내 문제는 libipq를 사용하지 않으면 libipq를 사용하지 않아 상당한 성능 저하를 겪었다는 것이다. 프로그램에 추가 한 iptable 규칙을 제거하고 커널이 패킷을 처리하게하려면 속도는 50MB/s입니다. 그러나 libipq를 사용하고 iptables 규칙을 복원하면 속도는 1MB/s (운이 좋다면)까지 내려갑니다. 보통은 절반입니다.libipq 성능 문제

내 iptable 규칙에 문제가있을 수 있습니까? 규칙을 더 효율적으로 사용할 수 있을까요, 단순히 비효율적 인 libipq입니까 (아니면 그렇게하지 않아도 제 코드)? 여기에 내가 설정 내 먼저, iptable 규칙을 사용하는 스크립트입니다보다

#!/bin/sh 
modprobe iptable_filter 
modprobe ip_queue 
iptables -A FORWARD -p icmp -j QUEUE 
iptables -A FORWARD -p tcp -j QUEUE 
iptables -A FORWARD -p udp-j QUEUE 
iptables -A INPUT -p icmp -j QUEUE 
iptables -A INPUT -p tcp -j QUEUE 
iptables -A INPUT -p udp -j QUEUE 

기타, 내 먼저, iptable 규칙은 우분투와 함께 제공되는 기본 설정입니다.

참고 : 내 설정은 클라이언트와 서버 VM이 서로 다른 두 서브넷에 있으며 내 Ubuntu VM을 사용하여 NAT 및 IP 매스커레이딩을 사용하여 브리지합니다.

+0

을 위하여 사용이 중지되었습니다. libipq – Satish

+0

Libipq은 새로운 libnetfilter_queue – Satish

+0

을 사용하는 것이 더 이상 권장되지 않습니다. http://www.youtube.com/watch?v=rfV8AXc5-zw – Satish

답변

3

Libipq가 나는 속도 저하가 그 반대의 경우도 마찬가지 유저 영역으로하고 커널에서 사용자 공간 처리 및 배달 에 의해 발생 생각하는 새로운 libnetfilter_queue