SLICECAP: PCAP 파일의 분할 병렬 처리

패킷 분석 중입니까?


네트워크 트래픽을 분석한 사람은 libpcap 라이브러리를 사용했거나 직접 사용하지 않았더라도libpcap 등 포획된 PCAP 형식의 파일을 처리했을 수 있다.
많은 업무 분석 도구가 PCAP 형식을 지원하기 때문에 이런 형태로 데이터를 저장하면 앞으로 다양한 도구를 사용할 수 있어 안심이 된다.일반적인 분석이라면 기존의 도구만으로도 충분하다.
하지만 고도로 분석하려면 PCAP 데이터와 여기에 포함된 그룹의 내부 구조 등을 들여다보고 싶어진다.PCAP 형식의 데이터는 패킷에 나열된 바이너리 데이터와 기본적으로 같기 때문에 반드시 예처리 프로그램을 사용하여 필요한 부분을 추출하여 가공해야 한다.
최근 인터넷도 고속화되어 몇 분의 포획에도 수십 GB의 데이터가 될 때가 있다.분석 내용에 따라 이미 확립된 수법이 아니라면 여러 방면에서 데이터를 반복적으로 분석해야 한다.작은 데이터는 문제없지만 데이터의 양이 증가함에 따라 예처리에 걸리는 시간도 소홀히 할 수 없다.
본고는 대형 PCAP 포맷 파일을 신속하게 처리하는 데 사용되는 소프트웨어'tcpdump를 소개한다.

분할 처리


빅데이터를 처리할 때의 일반적인 수단은 병행 처리이다.우선, 원시 데이터를 작은 데이터로 나누고, 각 작은 데이터를 여러 라인이나 프로세스로 나누며, 때로는 여러 서버에 분산되어 병행 처리된다.
PCAP 형식의 파일도 똑같이 처리하려고 했는데 여기에 문제가 생겼다.
PCAP 형식의 데이터는 그룹 흐름을 기록하는 데 사용되기 때문에 그룹 단위의 인덱스 정보는 존재하지 않습니다.어떤 PCAP 파일에 몇 개의 가방이 포함되는지, 처음부터 1000개의 가방이 파일에서 몇 바이트부터 시작되는지 등 정보는 처음부터 차례대로 PCAP 파일을 조사해야 한다.기록이 많은 패키지의 PCAP 파일을 분할할 때 이 처리는 매우 큰 부담을 줄 수 있다.
다음은 PCAP 형식에 대해 간략하게 설명합니다.빨간 머리는 전역 헤더로 불리며 PCAP 데이터의 모든 정보를 담고 있다.조별 머리로 불리는 파란색 머리와 그 뒤의 흰색 블록은 한 조를 대표하며, 조별 머리에 각 조별 특유의 정보를 수록했다.
SLICECAP

마치 목적을 생각하고 있는 것 같다


그러면 PCAP 형식의 파일을 작은 크기로 분할하는 것이 목적입니다.여러 개의 데이터로 분할하여 병행 처리할 수 있기 때문에 분할된 데이터에 포함된 패키지의 수량이 일치할 필요가 없다.SLICECAP는 분할된 데이터의 크기를 사용자가 지정한 분할 수와 PCAP 파일의 전체 크기에 따라 계산하고 "좋게 느껴지는"그룹 구분자를 찾아 분할합니다.
그룹 경계를 발견하는 데 사용되는 것은 각 그룹 헤더에 기록된 시간 스탬프 정보입니다.패키지는 연속적으로 기록되기 때문에 모든 패키지의 시간 스탬프 값도 비슷한 값이라고 가정할 수 있다.먼저 파일 포인터를 분할할 적절한 위치로 이동한 다음 포인터를 하나씩 앞으로 이동한 다음 비슷한 값이 기록된 타임 스탬프의 위치로 포인터를 이동합니다.그리고 데이터 헤더의 다른 필드에 이상 값이 있는지 확인하고'조금 그렇다'고 판단하면 분할을 확정한다.
분할된 데이터는 추가 전역 헤더를 PCAP 형식으로 재구성하여 과정 간 통신의 메커니즘을 통해 하위 프로세스에 전달한다.분할된 PCAP 데이터는 여러 프로세스에서 처리되기 때문에 코어 수에 따라 처리 성능이 향상됩니다.

한번 써보세요.


예를 들어, PCAP 파일을 10개의 작은 PCAP 파일로 분할하는 예가 나와 있습니다.
slicecap -r source.pcap -n 10 -- "cat - > dest-{SLICE_ID}.pcap"
실제 분석에서는 cat보다 더 유용한 필터 프로그램을 지정합니다.
아래 그림은 병렬 처리수를 늘리면서 명령을 사용하여 헤더 정보를 CSV로 변환할 때의 처리 시간입니다.
p2c
측정용 PC에는 Intel Xeon E2697 v3 2개(14개 core)와 256GB의 메모리가 탑재됐다.58GB의 PCAP 파일을 분석하고 IP/TCP/UDP 헤더를 추출하여 CSV 형식으로 출력합니다.병렬 프로세스 수가 증가함에 따라 처리 시간도 단축되었다.간단한 정수 연산만으로 끝나서 그런지 슈퍼 연격의 효과를 보지 못했다.처리 내용에 따라 조금 더 높아질 수 있다.

손에 넣은 곳


SLICECAP는 PyPi 창고에 등록되어 있습니다.pip 명령을 사용하여 설치하십시오.소스 코드는 에 공개됩니다.바굴리 보고를 환영합니다.

좋은 웹페이지 즐겨찾기