IDS와 패킷 로스 학술

예전에 어리버리 뭔 소리인지 모르던 시절을 생각하면서 정리합니다.

패킷 로스(Packet Loss)는 말 그대로 패킷이 손실되는 것을 뜻합니다. UDP로 네트워크 프로그래밍 해보면 패킷이 막 사라지죠. 그게 패킷 손실입니다. 그럼 왜 패킷이 손실되느냐? 전송 도중에 물리적으로 신호가 손상되면서 체크섬이 안 맞아서 버려지는 것도 물론 있겠지만, 가장 큰 이유는 네트워크 부하 때문일 겁니다.

네트워크 인터페이스 카드(이하 NIC)는 OSI에서 데이터링크(MAC)와 물리(PHY) 계층에 해당되는 일을 합니다. 윈도우 커널에서는 이 부분을 NDIS 드라이버 계층이 처리합니다. NDIS 미니포트 드라이버는 NIC 하드웨어 레지스터를 프로그램하고, 인터럽트를 받아서 DMA 전송을 한 다음, 수신한 패킷을 윗쪽 계층의 NDIS 프로토콜 드라이버로 올려보내고, 프로토콜 드라이버는 말 그대로 TCP/IP 프로토콜 수준의 처리를 하고, TDI 클라이언트에게 올려보내고 결국 응용 프로그램까지 도달합니다.

NIC는 보통 링 버퍼를 사용합니다. 드라이버는 NIC 레지스터에 링 버퍼의 어디부터 어디까지 읽겠다/쓰겠다고 프로그램하고 DMA 전송을 하죠. NIC는 드라이버가 버퍼 소유권을 잡고 있는 동안 건드리지 않습니다. 그런데 드라이버나 그 상위의 응용 프로그램이 느려터져서 패킷을 빨리 빨아올리지 않으면, NIC는 계속 들어오는 패킷을 보관할 방법이 없습니다. 그럼 어떻게 되느냐? 그대로 버려지는거죠. 이게 패킷 손실입니다. NIC 레지스터에 패킷 손실량이 기록되므로 이 값을 읽으면 패킷 손실량을 알 수 있습니다.

IDS에서 왜 패킷 로스가 문제가 될까요. 보통 IDS는 네트워크에 TAP을 붙이거나 스위치에서 포트 미러링을 하는 방법으로 트래픽을 복제해서 IDS 시스템으로 보냅니다. 그런데 IDS가 들어오는 트래픽을 감당하지 못하고 패킷 로스를 내는 순간부터 제대로 침입 탐지를 못하게 됩니다. 중간에 끊어져버리니까요.

IPS는 어떨까요. 어차피 IPS는 인라인으로 설치되니까 중간에서 패킷 로스를 내더라도 TCP가 재전송을 보장하니까 다시 보내줄 겁니다. 이 경우에는 패킷 로스가 약간 나더라도 별로 문제가 안 되겠죠. 물론 패킷 로스 비율이 높으면 IPS가 네트워크 병목이 되는 셈이니 역시 문제가 되겠죠.

트랙백

이 글과 관련된 글 쓰기 (트랙백 보내기)
TrackbackURL : http://xeraph.com/tb/4752935 [도움말]

덧글

  • ZIZI 2008/11/27 11:13 # 답글

    IDS/IPS는 설치하는 방법이 둘 다 똑같어..inline이든 mirroring 이든 양쪽 다 적용이 가능.
    패킷 로스나는 것은 일반적으로 방식의 문제이기 보다는 device 문제가 많더라구.
    그래서 10G 이상급에서는 NIC 좋은거 사용하기 위해 별도 제품을 장착하는 경우도 있구..
  • xeraph 2008/11/27 11:31 #

    그렇군요 ㅎㅎ 감사합니다~
댓글 입력 영역