Netfilter의 훅을 사용하여 호스트의 모든 수신 및 송신 패킷을 검사하는 Linux 커널 모듈을 구현했습니다. 이 모듈을 사용하면 해당 호스트에서 실행중인 특정 응용 프로그램의 흐름을 모니터링 할 수 있습니다. 즉, src/dst 포트/IP를 알면 해당 패킷을 수신/전송할 때 필터링 (분류) 할 수 있습니다.리눅스에서 응답과 appliction의 요청이 온라인으로 일치 함 커널
내가 수행하고자하는 작업은 들어오는 응용 프로그램의 요청에 해당하는 보내는 응답을 런타임에 일치시키는 것입니다. 각 요청/응답은 src/dst IP 및 고유 ID로 식별됩니다.
순진 구현은 흐르는 :
- 스토어 나가는 각 응답의 경우 목록의 각 들어오는 요청 (배열/연결리스트 등)
- : 스루
- 검색 일치하는 요청을 찾기위한 목록. 요청이 발견되면 목록에서 제거하십시오.
- X 초보다 오래된 요청을 제거하려면 요청 목록을 정기적으로 정리하십시오.
문제는 모든 응답이 순진 알고리즘은 일치를 식별하기 위해 요청 목록을 통해 선형 검색을 필요로한다는 것이다. 이것은 높은 비용으로 비싸다.
복잡성을 줄일 수있는 알고리즘을 제안 해 주시겠습니까? 성능을 유지하기 위해 정밀도를 희생 (일부 일치하지 않음)해도 좋습니다.
감사합니다.
(id, arc, dst) Btrie가 키로해야합니다. – 599644