ฉันใช้ไลบรารีjncaเพื่อรวบรวมบันทึก NetFlow ที่ส่งโดยเราเตอร์ เวอร์ชันของเร็กคอร์ด NetFlow ที่ส่งโดยเราเตอร์คือเวอร์ชัน 9
เมื่อตรวจสอบแพ็คเก็ต NetFlow จาก Wireshark ชุดโฟลว์ที่มีเทมเพลต id 263 มีข้อมูลเกี่ยวกับ octator ตัวเริ่มต้นและตัวตอบกลับ octets ซึ่งสามารถใช้เพื่อกำหนดจำนวนไบต์ที่สัมพันธ์กับ flow
แต่ปัญหาคือค่าเหล่านี้ไม่สามารถรับได้โดย jcna มันแสดงให้เห็นเสมอศูนย์สำหรับ octets
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();
}
นี่คือส่วนรหัสที่ใช้ในการรับ dOctets สิ่งนี้จะคืนค่าศูนย์แม้กระทั่งสำหรับแม่แบบ ID 263
แต่เมื่อคำนวณด้วยเทมเพลต NetFlow id 263 จะให้ข้อมูลที่ถูกต้อง (ให้อ็อกเท็ตผู้เริ่มต้นและรับการตอบกลับออคเต็ต 46 ควรแทนที่ด้วย 50 เนื่องจากความยาวของเรคคอร์ดเฉพาะคือ 4 ไบต์)
dOctets = Util.to_number(buf, off + 46, 4)
46 เป็นที่ซึ่งระเบียน Initiator Octets อยู่ในแพ็คเก็ต NetFlow นั้น (ได้ใช้ Wireshark record)
เป็นปัญหากับ jnca หรือไม่? หวังว่าคนที่คุ้นเคยกับ jcna จะช่วยฉันได้บ้าง
getTypeOffset
และgetTypeLen
?
Template.getTypeOffset()
มีความสัมพันธ์กับชุดข้อมูล สิ่งนี้ใช้ได้กับสิ่งที่คุณกำลังทำอยู่หรือไม่? (คุณไม่ได้แสดงรหัสเพียงพอที่จะบอกคือbuf
อะไร?)
java.util.Properties
ในการแยกวิเคราะห์รหัสในรูปแบบระดับต่ำ? นุกจากวงโคจร Java ไม่ได้มีชื่อสามัญในเวลาที่ห้องสมุดนี้ถูกเขียน?