라우터에서 보낸 NetFlow 레코드를 수집하기 위해 jnca 라이브러리를 사용 하고 있습니다. 라우터가 전송 한 NetFlow 레코드 버전은 버전 9입니다.
Netshark 패킷이 Wireshark에서 관찰되면 템플리트 ID가 263 인 플로우 세트에는 플로우와 연관된 바이트 수를 판별하는 데 사용할 수있는 초 기자 옥텟 및 응답자 옥텟에 대한 데이터가 포함됩니다.
그러나 문제는 jcna가 이러한 값을 얻을 수 없다는 것입니다. 옥텟의 경우 항상 0으로 표시됩니다.
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에서도 0을 반환합니다.
그러나 NetFlow 템플릿 ID 263과 관련하여 계산되면 올바른 데이터를 제공합니다. (이니시에이터 옥텟을 제공하고 응답자를 얻으려면 옥텟 46은 특정 레코드의 길이가 4 바이트이므로 50으로 대체되어야 함)
dOctets = Util.to_number(buf, off + 46, 4)
46은 Initiator Octets 레코드가 특정 NetFlow 패킷에있는 위치입니다 (Wireshark 레코드 사용).
jnca에 문제가 있습니까? jcna에 익숙한 누군가가 이것에 대해 도움을 줄 수 있기를 바랍니다.
getTypeOffset
와 getTypeLen
?
Template.getTypeOffset()
관련된 것으로 보입니다. 이것은 당신이하고있는 일과 함께 작동합니까? (당신은 말할 충분한 코드를 보여주지 않았다; 무엇 buf
인가?)
java.util.Properties
낮은 수준의 형식을 구문 분석하는 코드에서 문자열 형식입니까? 궤도에서 핵무기. 이 라이브러리를 작성할 당시 Java에 제네릭이 없었습니까?