forked from netsampler/goflow2
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathflow.proto
118 lines (93 loc) · 2.4 KB
/
flow.proto
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
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;
// 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;
}