- flow 모니터링
네트워크 엔지니어라면 언제나 관심을 가지게 되는게 기본적으로 트래픽(bps,pps)체크이지만 이건 누구나 하는 것이고
추가 적으로 실제로 오고 가는 패킷의 헤더내용에 관심을 가지게 된다.
모든 패킷을 덤프해서 정보를 보는것도 방법이기는 하나 10G이상의 트래픽을 다 모니터링 하려면 서버로 하는 것은 사실상
불가능 하다. 이를 위해서 네트워크장비에서 패킷의 헤더 정보만 서버로 보내주고 이를 분석하는 것이 대안이 될 수 있다.
- flow란.
원래 flow란게 기본적으로 5 tuple (protocol, src/dst ip src/dst port)정보를 flow란 개념으로 사용했었다. 다시 말해서 네트워크 장비로 유입되는 헤더에서 ip 와 protocol헤더를 보고 해당 정보를 가져 오게 되는 것이다. 이 정보만 서버에 보내주면 분석이 가능 한데 다시 말하면 이 정보도 대단한 양이 된다. 모든 패킷에 대해서 이 정보를 보내주게 된다면 그 또한 서버도 버티기 힘든 분량이라 이 정보를 압축 해서 보내게 된다.
- netflow
시스코에서 사용하는 netflow는 flow정보를 특정 시간(최소 1분)동안 장비에서 keeping하고 있다가 동일 flow는 counter를 증가시켜서 일종의 압축 방식으로 보내주게 된다. 이 정보가 일반 내부 트래픽 이라면 이 압축 정보가 효과가 있을 수 있으나 인터넷 트래픽이라면 5tuple을 1분동안 저장 하더라도 많은 메모리가 필요하게 되며 일반적인 네트워크 장비에서 소화 불가능한 수치가 된다. 그래서 여기에 sampling rate을 두고 몇 개당 한개씩 골라서 이 정보를 장비에서 가지고 있다가 서버에 보내주는 방식이다. 기본 개념은 좋은데 sampling rate이 높으면 기하 급수적으로 정확도가 떨어지고 sampling rate 낮으면 정보를 가지고 있는 시간동안 memory overflow가 생겨서 실제 서버로 보내주는 데이터는 sampling rate이 높을 때 보다 정확도가 더 떨어지는 기괴한 현상이 생긴다. 그래서 개인적으로 netflow는 인터넷 트래픽이 아닌 내부 데이터 연동용 장비에서만 가능 하다는 생각이다.
그런데 오랜만에 시스코에서 이쁜짓을 했는데 그것이 flexible netflow다 5 tuple을 다 가지고 있는게 아니라 특정 요소만 찍어서 보내는 방식이다. 다시 말하면 5tuple을 다 사용한다면 1분동안 keeping 해야 되는 데이터가 1백만 이라고 하면 src ip , src port 이렇게 한정짓는 다면 1십만 정도의 flow가 생겨서 장비에서 감당 가능 한 정보가 된다. 물로 linerate로 100% 이걸 처리 해줄 하드웨어도 필요하다.. 이게 시스코에서 간만에 만든 쓸만한 장비 nexus에서는 가능하다.
실제로 필자가 운영하는 장비에서는 모든 outbound트래픽의 src ip, src port를 다 이렇게 해서 모니터링해서 서비스 별로 실제 인터넷 트래픽 사용량을 계산하고 있다.
- sflow
Sflow는 netflow란 약간은 개념은 틀리다. sflow는 기본적으로 l2정보 (mac, interface, vlan)정보까지 다 가능 한게 원래 태생이다. 물론 시스코도 이런 정보는 최근에 가능하다. 그리고 sflow는 netflow처럼 데이터를 keeping하고 있는 것이 아니라 바로바로 서버에 flow정보를 보내주는 방식이다. 물로 sflow도 record단위로 그룹핑 해서 정보를 보내준다. 그러나 이 것의 약점이라면 역시나 정보가 너무 많다는 것이다. 5tuple뿐만 아니라 l2정보까지 다 보내는 방식이니 대단한 장비가 아닌 이상 1:1 (line-rate) sampling 정보를 받는 것은 불가능 하다.
- cflow, jflow
주니퍼에서 쓰는게 jflow이는 원래 cflow란 걸 조금 고친것으로 기본적으로 netflow와 비슷하다고 보면 된다.
- 어느것을 사용할 것인가...
오차 범위가 심하더라도 대략적인 trends만 필요하다면 어느것을 써도 무방하다. 비슷한 오차범위를 가지지만 그래도 일반 적인 경우라면 sflow가 더 효율적일 수 있다.
단 필자 처럼 line-rate 1:1 정보를 보고 정확한 트래픽 패턴과 공격시에 대한 정확한 분석이 필요하다면 현재로써는 flexible netflow가 완승이다. 물로 jflow나 sflow에서도 flexible 하게 정보의 필터링을 하고 조금더 새로운 하드웨어가 나오겠지만 그 전까지는 그리고 현존하는 장비에서는 cisco nexus의 flexible netflow를 사용하기를 바란다.
Netflow supported by Cisco, Juniper, Alcatel Lucent, Huawei, Enterasys, Nortel, VMWare
sFlow supported by Alaxala, Alcatel Lucent, Allied Telesis, Arista Networks, Brocade, Cisco, Dell, D-Link, Enterasys, Extreme, Fortinet, Hewlett-Packard, Hitachi, Huawei, IBM, Juniper, LG-Ericsson, Mellanox, MRV, NEC, Netgear, Proxim Wireless, Quanta Computer, Vyatta, ZTE and ZyXEL (see sFlow link)
'Network' 카테고리의 다른 글
Scapy 에서 텍스트형태의 HEX 패킷 데이터 쉽게 가져다 쓰기 (0) | 2017.01.08 |
---|---|
Tcpdump 의 출력내용을 내가 원하는 형태로 바꾸어 보자. (0) | 2017.01.08 |
PCAP 파일에서 UNIX 도구를 이용한 IP 주소 요약 (0) | 2017.01.08 |
라우터 - Spanning Tree, Trunk Port (0) | 2017.01.08 |
라우터 설정 (0) | 2017.01.08 |