Flow telemetry trả lời câu hỏi "ai nói chuyện với ai, bao nhiêu" mà counter interface (SNMP, gNMI) không trả lời được. Có hai cách tiếp cận:
- NetFlow v9 / IPFIX: thiết bị gom packet thành flow trong cache (theo 5-tuple + interface...), hết timeout thì xuất record. Định dạng dựa trên template.
- sFlow: thiết bị không có flow cache, chỉ lấy mẫu 1/N packet, cắt phần header (thường 128 byte) gửi ngay, kèm counter sample định kỳ. Collector tự dựng flow.
Luồng dữ liệu
flowchart LR P[Packet trên interface] --> S["Sampler 1:N"] S --> C["Flow cache (NetFlow/IPFIX)"] C -->|"active/inactive timeout"| E[Exporter UDP] S -->|"sFlow: header mẫu gửi ngay"| E E --> K["Collector (Akvorado, nfacctd, goflow2)"] K --> D[(ClickHouse)]
So sánh
| Tiêu chí | NetFlow v9 | IPFIX | sFlow v5 |
|---|---|---|---|
| Chuẩn | Cisco, RFC 3954 (informational) | IETF, RFC 7011 | sflow.org, InMon |
| Port UDP thường dùng | 2055 (quy ước, tuỳ cấu hình) | 4739 (IANA) | 6343 (IANA) |
| Flow cache trên thiết bị | Có | Có | Không |
| Template | Có | Có, thêm field độ dài thay đổi và enterprise IE | Không, định dạng cố định |
| Dữ liệu L2 / header thô | Hạn chế | Có thể (tuỳ IE) | Có, header packet gốc |
| Counter interface | Không (cần SNMP) | Không (cần SNMP) | Có, counter sample |
| Độ trễ dữ liệu | Theo active timeout (10-60 s) | Theo active timeout | Gần như ngay lập tức |
| Phổ biến ở | Router Cisco | Router đa hãng, firewall | Switch DC, Arista, Juniper QFX/EX |
Template
NetFlow v9 và IPFIX gửi template (danh sách field + độ dài) rồi mới gửi data record tham chiếu template ID. Hệ quả:
- Collector khởi động lại hoặc mất gói template thì bỏ qua data cho tới lần gửi template kế tiếp. Đặt template timeout ngắn (vd 60 s).
- Template gắn với cặp (IP exporter, observation domain / source ID). Đổi IP nguồn export thì collector coi là exporter mới.
- Options template mang metadata như sampling rate, bảng interface. Collector cần nó để nhân ngược sampling.
Sampling
Với sampling 1:N, mỗi packet được lấy mẫu đại diện cho N packet. Collector nhân Bytes/Packets với N.
| Lưu ý | Chi tiết |
|---|---|
| Sai số | Top talkers lớn chính xác, flow nhỏ có thể không xuất hiện |
| Chọn N | Link 100G thường 1:1000 tới 1:10000; link nhỏ 1:100 tới 1:1000 |
| Sampling rate phải tới được collector | Qua options template (NetFlow/IPFIX) hoặc trong mỗi sample (sFlow) |
| Ingress hay egress | Chỉ bật ingress trên mọi interface để tránh đếm đôi |
Không đối chiếu được 1-1 tổng flow với counter interface. Sai lệch vài phần trăm là bình thường do sampling, timeout và traffic control-plane.
Khi nào dùng
| Nhu cầu | Chọn |
|---|---|
| Router biên Cisco/Juniper, phân tích peering, transit theo AS | NetFlow v9 hoặc IPFIX |
| Cần field tuỳ biến, đa hãng | IPFIX |
| Switch DC, cần thấy ngay khi có DDoS | sFlow |
| Chỉ cần băng thông interface | Không cần flow, dùng gNMI/SNMP (Telegraf gNMI) |
Collector gợi ý: Akvorado nhận cả ba, lưu vào ClickHouse, query mẫu xem ClickHouse top talkers.