Bir yönlendirici tarafından gönderilen NetFlow kayıtlarını toplamak için jnca kitaplığı kullanıyorum . Yönlendirici tarafından gönderilen NetFlow kaydının sürümü sürüm 9'dur.
NetFlow paketi Wireshark'tan gözlemlendiğinde, şablon kimliği 263 olan akış setleri, bir akışla ilişkili bayt sayısını belirlemek için kullanılabilen başlatıcı oktetleri ve cevap veren oktetleri ile ilgili verileri içerir.
Ancak sorun şu ki, bu değerler jcna tarafından elde edilemez. Oktetler için her zaman sıfır gösterir.
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();
}
Bu, dOctets'i almak için kullanılan kod segmentidir. Bu, şablon kimliği 263 için bile sıfır döndürür.
Ancak NetFlow şablon kimliği 263'e göre hesaplandığında doğru verileri verir. (başlatıcı sekizlileri verir ve yanıtlayıcı sekizlinin 46 alınması için, belirli kayıt uzunluğu 4 bayt olduğu için 50 ile değiştirilmelidir)
dOctets = Util.to_number(buf, off + 46, 4)
46, Başlatıcı Octets kaydının söz konusu NetFlow paketinde yattığı yerdir. (Wireshark kaydını kullanmıştır.)
Jnca ile ilgili bir sorun mu var? Umarım jcna'ya aşina olan biri bana bu konuda yardım edebilir.
getTypeOffset
ve getTypeLen
?
Template.getTypeOffset()
göreli görünmektedir. Bu yaptığınız şeyle çalışıyor mu? (Söylemek için yeterli kod göstermediniz; nedir buf
?)
java.util.Properties
düşük düzeyli bir format ayrıştırmada dize yazılır ? Yörüngeden Nuke. Bu kütüphane yazıldığı sırada Java'nın jenerik bilgisi yoktu mı?