Chắc hẳn trong đời làm hạ tầng, không ít lần bạn đau đầu với câu hỏi huyền thoại từ sếp hoặc khách hàng: "Mạng em ơi, sao hôm nay chậm thế?".
Lục tìm trên Wireshark thì quá ngộp, bật MRTG hay PRTG thông thường thì chỉ thấy bandwidth tăng vọt chứ không biết chính xác ai (IP nào) đang chiếm dụng, ứng dụng nào (Protocol nào) đang chạy ngầm, hay hệ thống có đang bị dính DDoS hay không.
Để giải quyết triệt để bài toán này một cách chuyên nghiệp, Flexible NetFlow (FNF) chính là trợ thủ đắc lực nhất được tích hợp sẵn trên các thiết bị Cisco.
1. Bản chất cốt lõi: 4 Thành phần tạo nên Flexible NetFlow
Khác với NetFlow truyền thống khá cứng nhắc, chữ "Flexible" (Linh hoạt) cho phép bạn tự định nghĩa mình muốn bắt những thông tin gì để tiết kiệm tài nguyên. Để vận hành hệ thống này bạn chỉ cần nhớ nằm lòng 4 thành phần (4 trụ cột) sau:
Trụ cột 1: Flow Record (Định nghĩa cấu trúc dữ liệu)
Hãy tưởng tượng Flow Record giống như việc bạn thiết kế các cột cho một bảng database. Bản ghi này sẽ chia làm hai nhóm thông tin:
Sau khi thiết bị thu thập dữ liệu vào bộ nhớ đệm (Cache), nó cần đẩy về một "bộ não trung tâm" để vẽ biểu đồ cho trực quan (gọi là NetFlow Collector như SolarWinds, PRTG, ManageEngine...). Flow Exporter chính là nơi bạn khai báo IP của Collector này, giao thức truyền tải (thường là UDP) và cổng dịch vụ (Port mặc định thường là 2055).
Trụ cột 3: Flow Monitor (Bộ não liên kết)
Thành phần này đóng vai trò là "chất keo" liên kết. Nó gọi tên bản ghi dữ liệu (Flow Record) kết hợp với nơi nhận dữ liệu (Flow Exporter) để tạo ra một thực thể lưu trữ Cache thực tế trên Router. Nếu không có Monitor, hai thành phần trên chỉ là các dòng cấu hình rời rạc, không tự chạy được.
Trụ cột 4: Flow Sampler (Bộ lấy mẫu giảm tải - Tùy chọn)
Nếu Router của bạn phải gánh lượng traffic khổng lồ (vài Gbps), việc bắt và phân tích từng gói tin một sẽ làm CPU/RAM của thiết bị "quá tải". Flow Sampler sinh ra để giải quyết việc này bằng cách lấy mẫu theo tỷ lệ. Nó có hai chế độ:
Để cấu hình Flexible NetFlow chạy mượt mà, bạn cần tuân theo trình tự chuẩn 4 bước dưới đây.
Lưu ý điều kiện tiên quyết: Tính năng CEF (Cisco Express Forwarding) bắt buộc phải được kích hoạt trước bằng lệnh ip cef và ipv6 cef, nếu không FNF sẽ không hoạt động.
Bước 1: Tạo Flow Exporter (Chỉ đường đến Collector)
Plaintext
Router(config)# flow exporter MY_EXPORTER
Router(config-flow-exporter)# destination 10.0.10.1
Router(config-flow-exporter)# transport udp 2055udp 2055udp 2055
Giải thích: Lệnh này báo cho Router biết: "Sau khi gom dữ liệu xong, hãy đóng gói thành các gói UDP port 2055 và bắn về máy chủ Collector có IP 10.0.10.1".
Bước 2: Tạo Flow Record (Thiết kế form thu thập)
Bạn có thể dùng các form mặc định sẵn của Cisco như netflow-original, hoặc tự tạo thủ công để tối ưu:
Plaintext
Router(config)# flow record MY_RECORD
Router(config-flow-record)# match ipv4 source-address Router(config-flow-record)# match ipv4 destination-address Router(config-flow-record)# match ipv4 protocol Router(config-flow-record)# collect counter packets longpackets long
Giải thích: Ở đây chúng ta gom nhóm traffic dựa trên IP nguồn, IP đích, Protocol và yêu cầu hệ thống đếm xem có bao nhiêu gói tin (packets long) đi qua luồng đó.
Bước 3: Tạo Flow Monitor (Kết nối Record và Exporter)
Plaintext
Router(config)# flow monitor MY_MONITOR
Router(config-flow-monitor)# record MY_RECORD
Router(config-flow-monitor)# exporter MY_EXPORTERMY_EXPORTER
Bước 4: Áp dụng trực tiếp vào Cổng Interface
Bạn có thể áp dụng theo hướng dòng tiền đi vào (input) hoặc đi ra (output) của cổng mạng. Nếu có sử dụng bộ lấy mẫu Sampler để tiết kiệm CPU, câu lệnh sẽ lồng cả tên Sampler vào:
Router(config)# interface GigabitEthernet0/0
Router(config-if)# ip flow monitor MY_MONITOR sampler MY_SAMPLER inputflow monitor MY_MONITOR sampler MY_SAMPLER input
Kết luận
Hy vọng bài chia sẻ chi tiết này sẽ giúp bạn tự tin làm chủ Flexible NetFlow, nhanh chóng "vạch mặt" được những nguồn lưu lượng bất thường làm chậm hệ thống. Anh em nào có Use Case nào hay về NetFlow hoặc gặp lỗi khi deploy, hãy thoải mái để lại bình luận bên dưới để cùng thảo luận nhé!

Lục tìm trên Wireshark thì quá ngộp, bật MRTG hay PRTG thông thường thì chỉ thấy bandwidth tăng vọt chứ không biết chính xác ai (IP nào) đang chiếm dụng, ứng dụng nào (Protocol nào) đang chạy ngầm, hay hệ thống có đang bị dính DDoS hay không.
Để giải quyết triệt để bài toán này một cách chuyên nghiệp, Flexible NetFlow (FNF) chính là trợ thủ đắc lực nhất được tích hợp sẵn trên các thiết bị Cisco.
1. Bản chất cốt lõi: 4 Thành phần tạo nên Flexible NetFlow
Khác với NetFlow truyền thống khá cứng nhắc, chữ "Flexible" (Linh hoạt) cho phép bạn tự định nghĩa mình muốn bắt những thông tin gì để tiết kiệm tài nguyên. Để vận hành hệ thống này bạn chỉ cần nhớ nằm lòng 4 thành phần (4 trụ cột) sau:
Trụ cột 1: Flow Record (Định nghĩa cấu trúc dữ liệu)
Hãy tưởng tượng Flow Record giống như việc bạn thiết kế các cột cho một bảng database. Bản ghi này sẽ chia làm hai nhóm thông tin:
- Key fields (Sử dụng lệnh match): Đây là các trường dùng để định danh một luồng traffic (giống như Primary Key). Nếu gói tin trùng toàn bộ các trường này, nó được tính vào cùng một luồng. Ví dụ: IP nguồn, IP đích, giao thức (TCP/UDP).
- Non-key fields (Sử dụng lệnh collect): Đây là các thông tin bổ sung mà bạn muốn thu thập để phân tích sâu hơn. Ví dụ: Đếm tổng số packet, tổng số byte đã truyền qua luồng đó, hoặc các thông tin về SNMP.
Sau khi thiết bị thu thập dữ liệu vào bộ nhớ đệm (Cache), nó cần đẩy về một "bộ não trung tâm" để vẽ biểu đồ cho trực quan (gọi là NetFlow Collector như SolarWinds, PRTG, ManageEngine...). Flow Exporter chính là nơi bạn khai báo IP của Collector này, giao thức truyền tải (thường là UDP) và cổng dịch vụ (Port mặc định thường là 2055).
Trụ cột 3: Flow Monitor (Bộ não liên kết)
Thành phần này đóng vai trò là "chất keo" liên kết. Nó gọi tên bản ghi dữ liệu (Flow Record) kết hợp với nơi nhận dữ liệu (Flow Exporter) để tạo ra một thực thể lưu trữ Cache thực tế trên Router. Nếu không có Monitor, hai thành phần trên chỉ là các dòng cấu hình rời rạc, không tự chạy được.
Trụ cột 4: Flow Sampler (Bộ lấy mẫu giảm tải - Tùy chọn)
Nếu Router của bạn phải gánh lượng traffic khổng lồ (vài Gbps), việc bắt và phân tích từng gói tin một sẽ làm CPU/RAM của thiết bị "quá tải". Flow Sampler sinh ra để giải quyết việc này bằng cách lấy mẫu theo tỷ lệ. Nó có hai chế độ:
- Deterministic (Định kỳ): Cứ cách đúng một khoảng cố định thì lấy 1 gói (Ví dụ: Cứ qua 2 gói thì lấy gói thứ 2).
- Random (Ngẫu nhiên): Lấy ngẫu nhiên theo tỷ lệ thiết lập để đảm bảo tính khách quan (Ví dụ: Ngẫu nhiên bốc 1 gói trong cụm 2 gói, tương đương lấy mẫu 50%).
Để cấu hình Flexible NetFlow chạy mượt mà, bạn cần tuân theo trình tự chuẩn 4 bước dưới đây.
Lưu ý điều kiện tiên quyết: Tính năng CEF (Cisco Express Forwarding) bắt buộc phải được kích hoạt trước bằng lệnh ip cef và ipv6 cef, nếu không FNF sẽ không hoạt động.
Bước 1: Tạo Flow Exporter (Chỉ đường đến Collector)
Plaintext
Router(config)# flow exporter MY_EXPORTER
Router(config-flow-exporter)# destination 10.0.10.1
Router(config-flow-exporter)# transport udp 2055udp 2055udp 2055
Giải thích: Lệnh này báo cho Router biết: "Sau khi gom dữ liệu xong, hãy đóng gói thành các gói UDP port 2055 và bắn về máy chủ Collector có IP 10.0.10.1".
Bước 2: Tạo Flow Record (Thiết kế form thu thập)
Bạn có thể dùng các form mặc định sẵn của Cisco như netflow-original, hoặc tự tạo thủ công để tối ưu:
Plaintext
Router(config)# flow record MY_RECORD
Router(config-flow-record)# match ipv4 source-address Router(config-flow-record)# match ipv4 destination-address Router(config-flow-record)# match ipv4 protocol Router(config-flow-record)# collect counter packets longpackets long
Giải thích: Ở đây chúng ta gom nhóm traffic dựa trên IP nguồn, IP đích, Protocol và yêu cầu hệ thống đếm xem có bao nhiêu gói tin (packets long) đi qua luồng đó.
Bước 3: Tạo Flow Monitor (Kết nối Record và Exporter)
Plaintext
Router(config)# flow monitor MY_MONITOR
Router(config-flow-monitor)# record MY_RECORD
Router(config-flow-monitor)# exporter MY_EXPORTERMY_EXPORTER
Bước 4: Áp dụng trực tiếp vào Cổng Interface
Bạn có thể áp dụng theo hướng dòng tiền đi vào (input) hoặc đi ra (output) của cổng mạng. Nếu có sử dụng bộ lấy mẫu Sampler để tiết kiệm CPU, câu lệnh sẽ lồng cả tên Sampler vào:
Router(config)# interface GigabitEthernet0/0
Router(config-if)# ip flow monitor MY_MONITOR sampler MY_SAMPLER inputflow monitor MY_MONITOR sampler MY_SAMPLER input
Kết luận
Hy vọng bài chia sẻ chi tiết này sẽ giúp bạn tự tin làm chủ Flexible NetFlow, nhanh chóng "vạch mặt" được những nguồn lưu lượng bất thường làm chậm hệ thống. Anh em nào có Use Case nào hay về NetFlow hoặc gặp lỗi khi deploy, hãy thoải mái để lại bình luận bên dưới để cùng thảo luận nhé!