mirror of
https://github.com/netsampler/goflow2.git
synced 2024-05-06 15:54:52 +00:00
121 lines
2.5 KiB
Protocol Buffer
121 lines
2.5 KiB
Protocol Buffer
syntax = "proto3";
|
|
package flowpb;
|
|
option go_package = "github.com/netsampler/goflow2/pb;flowpb";
|
|
|
|
message FlowMessage {
|
|
|
|
enum FlowType {
|
|
FLOWUNKNOWN = 0;
|
|
SFLOW_5 = 1;
|
|
NETFLOW_V5 = 2;
|
|
NETFLOW_V9 = 3;
|
|
IPFIX = 4;
|
|
}
|
|
FlowType Type = 1;
|
|
|
|
uint64 TimeReceived = 2;
|
|
uint32 SequenceNum = 4;
|
|
uint64 SamplingRate = 3;
|
|
|
|
uint32 FlowDirection = 42;
|
|
|
|
// Sampler information
|
|
bytes SamplerAddress = 11;
|
|
|
|
// Found inside packet
|
|
uint64 TimeFlowStart = 38;
|
|
uint64 TimeFlowEnd = 5;
|
|
uint64 TimeFlowStartMs = 63;
|
|
uint64 TimeFlowEndMs = 64;
|
|
|
|
// Size of the sampled packet
|
|
uint64 Bytes = 9;
|
|
uint64 Packets = 10;
|
|
|
|
// Source/destination addresses
|
|
bytes SrcAddr = 6;
|
|
bytes DstAddr = 7;
|
|
|
|
// Layer 3 protocol (IPv4/IPv6/ARP/MPLS...)
|
|
uint32 Etype = 30;
|
|
|
|
// Layer 4 protocol
|
|
uint32 Proto = 20;
|
|
|
|
// Ports for UDP and TCP
|
|
uint32 SrcPort = 21;
|
|
uint32 DstPort = 22;
|
|
|
|
// Interfaces
|
|
uint32 InIf = 18;
|
|
uint32 OutIf = 19;
|
|
|
|
// Ethernet information
|
|
uint64 SrcMac = 27;
|
|
uint64 DstMac = 28;
|
|
|
|
// Vlan
|
|
uint32 SrcVlan = 33;
|
|
uint32 DstVlan = 34;
|
|
// 802.1q VLAN in sampled packet
|
|
uint32 VlanId = 29;
|
|
|
|
// VRF
|
|
uint32 IngressVrfID = 39;
|
|
uint32 EgressVrfID = 40;
|
|
|
|
// IP and TCP special flags
|
|
uint32 IPTos = 23;
|
|
uint32 ForwardingStatus = 24;
|
|
uint32 IPTTL = 25;
|
|
uint32 TCPFlags = 26;
|
|
uint32 IcmpType = 31;
|
|
uint32 IcmpCode = 32;
|
|
uint32 IPv6FlowLabel = 37;
|
|
// Fragments (IPv4/IPv6)
|
|
uint32 FragmentId = 35;
|
|
uint32 FragmentOffset = 36;
|
|
uint32 BiFlowDirection = 41;
|
|
|
|
// Autonomous system information
|
|
uint32 SrcAS = 14;
|
|
uint32 DstAS = 15;
|
|
|
|
bytes NextHop = 12;
|
|
uint32 NextHopAS = 13;
|
|
|
|
// Prefix size
|
|
uint32 SrcNet = 16;
|
|
uint32 DstNet = 17;
|
|
|
|
// MPLS information
|
|
bool HasMPLS = 53;
|
|
uint32 MPLSCount = 54;
|
|
uint32 MPLS1TTL = 55; // First TTL
|
|
uint32 MPLS1Label = 56; // First Label
|
|
uint32 MPLS2TTL = 57; // Second TTL
|
|
uint32 MPLS2Label = 58; // Second Label
|
|
uint32 MPLS3TTL = 59; // Third TTL
|
|
uint32 MPLS3Label = 60; // Third Label
|
|
uint32 MPLSLastTTL = 61; // Last TTL
|
|
uint32 MPLSLastLabel = 62; // Last Label
|
|
|
|
// Custom fields: start after ID 1000:
|
|
// uint32 MyCustomField = 1000;
|
|
|
|
|
|
// Custom allocations
|
|
uint64 CustomInteger1 = 1001;
|
|
uint64 CustomInteger2 = 1002;
|
|
uint64 CustomInteger3 = 1003;
|
|
uint64 CustomInteger4 = 1004;
|
|
uint64 CustomInteger5 = 1005;
|
|
|
|
bytes CustomBytes1 = 1011;
|
|
bytes CustomBytes2 = 1012;
|
|
bytes CustomBytes3 = 1013;
|
|
bytes CustomBytes4 = 1014;
|
|
bytes CustomBytes5 = 1015;
|
|
|
|
}
|