Tôi đang sử dụng thư viện jnca để thu thập các bản ghi NetFlow được gửi bởi bộ định tuyến. Phiên bản của bản ghi NetFlow được gửi bởi bộ định tuyến là phiên bản 9.
Khi gói NetFlow được quan sát từ Wireshark, các bộ lưu lượng với id mẫu có chứa dữ liệu về các octet khởi tạo và các octet phản hồi có thể được sử dụng để xác định số byte được liên kết với một luồng.
Nhưng vấn đề là những giá trị này không thể có được bởi jcna. Nó luôn luôn hiển thị số không cho các octet.
currOffset = t.getTypeOffset(FieldDefinition.InBYTES_32);
currLen = t.getTypeLen(FieldDefinition.InBYTES_32);
if (currOffset >= 0 && currLen > 0) {
dOctets = Util.to_number(buf, off + currOffset, currLen) * t.getSamplingRate();
}
Đây là đoạn mã được sử dụng để lấy các dOctets. Điều này trả về 0 ngay cả đối với ID mẫu 263.
Nhưng khi được tính toán với mẫu id NetFlow, nó sẽ cung cấp dữ liệu chính xác. (cung cấp cho octet bộ khởi tạo và để có được bộ phản hồi octet 46 nên được thay thế bằng 50 vì độ dài của bản ghi cụ thể là 4 byte)
dOctets = Util.to_number(buf, off + 46, 4)
46 là nơi bản ghi Initiator Octets nằm trong gói NetFlow cụ thể đó (đã sử dụng bản ghi Wireshark.)
Nó có phải là một vấn đề với jnca? Hy vọng rằng, ai đó quen thuộc với jcna có thể giúp tôi một số điều này.
getTypeOffset
và getTypeLen
?
Template.getTypeOffset()
dường như có liên quan đến luồng. Điều này có làm việc với những gì bạn đang làm? (Bạn đã không hiển thị đủ mã để nói; đó là buf
gì?)
java.util.Properties
mã trong phân tích cú pháp định dạng cấp thấp? Nuke từ quỹ đạo. Có phải Java không có khái quát tại thời điểm thư viện này được viết không?