mirror of
				https://github.com/openobserve/goflow2.git
				synced 2025-11-03 21:43:13 +00:00 
			
		
		
		
	* Add BGP Next Hop field to flow message (#11) * Add BGP Communities and AS Path fields (#12) Co-authored-by: Simon Podlipsky <simon@podlipsky.net>
		
			
				
	
	
		
			130 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Protocol Buffer
		
	
	
	
	
	
			
		
		
	
	
			130 lines
		
	
	
		
			2.7 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;
 | 
						|
 | 
						|
  // BGP information
 | 
						|
  bytes BgpNextHop = 100;
 | 
						|
  repeated uint32 BgpCommunities = 101;
 | 
						|
  repeated uint32 AsPath = 102;
 | 
						|
 | 
						|
  // 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
 | 
						|
  bytes MPLSLabelIP = 65; // MPLS TOP Label IP 
 | 
						|
 | 
						|
  uint32 ObservationDomainID = 70;
 | 
						|
  uint32 ObservationPointID = 71;
 | 
						|
 | 
						|
  // 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;
 | 
						|
 | 
						|
}
 |