2022년 10월 9일 일요일

트래픽 상태 축약

대부분의 트래픽은 클라이언트와 서버 사이에서 발생한다. 이때 출발지와 목적지 포트는 IP에 대한 정보가 없는 상태에서 출발지와 목적지 간의 관계를 알려주는 핵심 정보. 


문제는 확인해야할 상태가 만 개를 넘어감(..) 이때 case 문을 활용, 1024 이상의 범위에서 랜덤하게 발생하는 클라이언트 포트를 축약하면 상태 개수를 줄일 수 있다. 당연히 만 개 보다 63개의 상태 파악이 더 빠름.

select case 
when tcp_sport >= 1024
then 'gte1024'
else tcp_sport
       end as sport, case 
      when tcp_dport >= 1024
      then 'gte1024'
      else tcp_dport
     end as dport, count(*)
from tcphdr
group by sport, dport
order by sport, count(*) desc

tcp와 udp 포트 정보를 취합하고 싶으면 union all.

select case 
when sport >= 1024
then 'gte1024'
else sport
       end as srcport, case 
when dport >= 1024
then 'gte1024'
else dport
       end as dstport, count(*)
from (
select tcp_sport as sport, tcp_dport as dport
from tcphdr
union all
select udp_sport as sport, udp_dport as dport
from udphdr
) a
group by srcport, dstport
order by srcport, count(*) desc

관련 글

댓글 없음:

댓글 쓰기

크리에이티브 커먼즈 라이선스