pcap 라이브러리를 이용한 데이터 캡쳐시 loss 발생?

winicon의 이미지

안녕하세요.

pcap 라이브러리를 이용해서 윈도우에서 어떤 프로그램으로

데이터가 들어오는 패킷을 모든 잡을려고 하는데요.

data traffic은 그렇게 많지는 않습니다.

옵션을 "tcp port 1234" 이렇게 주고 promiscuous mode로는 안하고 돌렸는데요.
실제 프로그램에서는 10개 데이터가 왔는데, 캡쳐하는 프로그램에서는 대략 10개중 3개 데이터는 안 잡히네요.

코드에 대한 적용한 pcap함수는 아래와 같습니다.

#define PCAP_TIMEOUT = 1000
#define FILTER_RULE = "tcp port 1234"
.
pcap_open_live(pDev->name, 1024 * 300, 0, PCAP_TIMEOUT, ebuf);
pcap_compile(fp, &fcode, FILTER_RULE, 0, netmask);
pcap_setfilter(fp, &fcode);
.
pcap_loop(pObject->fp, -1, dispatcher_handler, (PUCHAR)pParam);
익명 사용자의 이미지

* 일단 packet을 100% capture하는 것은 불가능합니다.
당연하게도, 100% 근처에 가도록 노력하는것이 필요합니다.
여러 방법론 및 연구가 있는데, 현재 제가 아는 바로는...
1) 네트워크 디바이스 드라이버를 폴링으로 구현
2) pcap의 dual buffer를 좀.. 큰 버퍼(circula queue알고리즘)로 구현
- 아~ 짜기 귀차니즘이니, PF_RING패치를 주워다가 패치를 검토
3) 모든 부분에서 CPU 부하를 줄이는 프로그램으로 작성
-CPU 사용이 대략 40~60을 넘지 않도록 한다.
4) pcap외 Netfilter framework를 사용하는 방법
5) 운영체제별 차이
- BSD, Windows, Linux등
6) 고성능 하드웨어를 사용하여 처리
-NPU 도입 검토
-시스템버스의 밴드위쓰검토 PCI-X, Infiniband, RDMA, Myrinet등
7) 패킷로드밸런싱, 워크스테이션 클러스터링을 사용
8) 병렬 프로그래밍 검토
- SMP
- multi-threaded programming
9) 메모리...
- 다다익선

* 일단 2번을 시도해보시는게 좋아 보입니다.
* 그외 분석등을 동시에 한다면, capture 프로세스와 analysis프로세스를 나누어 구현

* 좋은 프로그램 만드세요.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.