syntax = "proto3"; package flowpb; option go_package = "github.com/netsampler/goflow2/cmd/enricher/pb;flowpb"; message FlowMessageExt { enum FlowType { FLOWUNKNOWN = 0; SFLOW_5 = 1; NETFLOW_V5 = 2; NETFLOW_V9 = 3; IPFIX = 4; } FlowType type = 1; uint64 time_received = 2; uint32 sequence_num = 4; uint64 sampling_rate = 3; uint32 flow_direction = 42; // Sampler information bytes sampler_address = 11; // Found inside packet uint64 time_flow_start = 38; uint64 time_flow_end = 5; uint64 time_flow_start_ms = 63; uint64 time_flow_end_ms = 64; // Size of the sampled packet uint64 bytes = 9; uint64 packets = 10; // Source/destination addresses bytes src_addr = 6; bytes dst_addr = 7; // Layer 3 protocol (IPv4/IPv6/ARP/MPLS...) uint32 etype = 30; // Layer 4 protocol uint32 proto = 20; // Ports for UDP and TCP uint32 src_port = 21; uint32 dst_port = 22; // Interfaces uint32 in_if = 18; uint32 out_if = 19; // Ethernet information uint64 src_mac = 27; uint64 dst_mac = 28; // Vlan uint32 src_vlan = 33; uint32 dst_vlan = 34; // 802.1q VLAN in sampled packet uint32 vlan_id = 29; // VRF uint32 ingress_vrf_id = 39; uint32 egress_vrf_id = 40; // IP and TCP special flags uint32 ip_tos = 23; uint32 forwarding_status = 24; uint32 ip_ttl = 25; uint32 tcp_flags = 26; uint32 icmp_type = 31; uint32 icmp_code = 32; uint32 ipv6_flow_label = 37; // Fragments (IPv4/IPv6) uint32 fragment_id = 35; uint32 fragment_offset = 36; uint32 bi_flow_direction = 41; // Autonomous system information uint32 src_as = 14; uint32 dst_as = 15; bytes next_hop = 12; uint32 next_hop_as = 13; // Prefix size uint32 src_net = 16; uint32 dst_net = 17; // BGP information bytes bgp_next_hop = 100; repeated uint32 bgp_communities = 101; repeated uint32 as_path = 102; // MPLS information bool has_mpls = 53; uint32 mpls_count = 54; uint32 mpls_1_ttl = 55; // First TTL uint32 mpls_1_label = 56; // First Label uint32 mpls_2_ttl = 57; // Second TTL uint32 mpls_2_label = 58; // Second Label uint32 mpls_3_ttl = 59; // Third TTL uint32 mpls_3_label = 60; // Third Label uint32 mpls_last_ttl = 61; // Last TTL uint32 mpls_last_label = 62; // Last Label bytes mpls_label_ip = 65; // MPLS TOP Label IP uint32 observation_domain_id = 70; uint32 observation_point_id = 71; string src_country = 1000; string dst_country = 1001; }