리눅스 라우터에서 pcap을 사용하여 IP 헤더와 패킷 길이를 얻는 C 프로그램을 작성했습니다. 그런 식으로 통계를 수집하고 IP를 기반으로 대역폭을 측정 할 수 있습니다. 꽤 깔끔한. :-)pcap (Linux) 대신에
이제 트래픽과 사용자 수가 증가하고 오래된 프로그램이 어려움을 겪습니다. 즉, 라우터는 엄청난 양의 패킷에 대처하기 위해 애 쓰고 있습니다. "주요한 시간"에 초당 50000 패킷 이상이 있습니다.
프로그램 자체가 매우 최적화되어 있습니다. 나는 과시하고 싶지 않지만 얻을 수있는만큼 좋은 것이라고 생각합니다. IP 헤더와 패킷 길이를 읽습니다. 그런 다음 IP를 색인으로 변환하고 (단순한 빼기) 패킷의 길이가 배열에 저장 (누적)됩니다. 매 순간마다 (실제로 SIGALRM) 배열을 MySQL 데이터베이스에 저장합니다.
내 질문은 : 비트 스트림을 pcap보다 "저렴하게"가져 오는 다른 방법이 있습니까?
물론 하나의 IP 통계 수집을 포함하도록 이더넷 드라이버를 수정할 수는 있지만 과장된 것 같습니다.
기본적으로 내 프로그램은 바쁜 eth0에서 'tcpdump'이며 결국 라우터를 죽일 것입니다.
포트 미러링과 같은 구성을하고 다른 컴퓨터에서 분석 할 수 있습니까? – cnicutar
[softflowd] (http://code.google.com/p/softflowd/)와 같은 다양한 netflow 도구를 살펴 보았습니까? 이것은 이것에 매우 가깝게 들린다. – andri
Andri : 불행히도 softflowd는 libpcap을 기반으로하므로별로 도움이되지 않습니다. –