From 4a182aa9c26e6e53ef4dfd6af455fc13ba512a44 Mon Sep 17 00:00:00 2001 From: "Mohamed S. Mahmoud" <mmahmoud@redhat.com> Date: Mon, 17 Jul 2023 07:33:12 -0400 Subject: [PATCH] NETOBSERV-1190: update dns tracker to provide DNS latency instead of query/rsp TS (#149) Signed-off-by: msherif1234 <mmahmoud@redhat.com> --- bpf/dns_tracker.h | 42 ++++++++-- bpf/maps_definition.h | 8 ++ bpf/types.h | 14 +++- .../server/flowlogs-dump-collector.go | 10 +-- pkg/ebpf/bpf_bpfeb.go | 21 ++++- pkg/ebpf/bpf_bpfeb.o | Bin 73328 -> 78360 bytes pkg/ebpf/bpf_bpfel.go | 21 ++++- pkg/ebpf/bpf_bpfel.o | Bin 74408 -> 79464 bytes pkg/exporter/proto.go | 26 +----- pkg/flow/account_test.go | 72 ++-------------- pkg/flow/record.go | 21 ++--- pkg/flow/record_test.go | 10 +-- pkg/grpc/grpc_test.go | 4 - pkg/pbflow/flow.pb.go | 79 ++++++++---------- proto/flow.proto | 5 +- 15 files changed, 150 insertions(+), 183 deletions(-) diff --git a/bpf/dns_tracker.h b/bpf/dns_tracker.h index f3aa795f..f7918ea1 100644 --- a/bpf/dns_tracker.h +++ b/bpf/dns_tracker.h @@ -19,13 +19,13 @@ struct dns_header { u16 arcount; }; -static inline void find_or_create_dns_flow(flow_id *id, struct dns_header *dns, int len, int dir, u16 flags) { +static inline void find_or_create_dns_flow(flow_id *id, struct dns_header *dns, int len, u16 flags, u64 latency) { flow_metrics *aggregate_flow = bpf_map_lookup_elem(&aggregated_flows, id); u64 current_time = bpf_ktime_get_ns(); // net_dev_queue trace point hook will run before TC hooks, so the flow shouldn't exists, if it does // that indicates we have a stale DNS query/response or in the middle of TCP flow so we will do nothing if (aggregate_flow == NULL) { - // there is no matching flows so lets create new one and add the drops + // there is no matching flows so lets create new one and dns info flow_metrics new_flow; __builtin_memset(&new_flow, 0, sizeof(new_flow)); new_flow.start_mono_time_ts = current_time; @@ -35,15 +35,28 @@ static inline void find_or_create_dns_flow(flow_id *id, struct dns_header *dns, new_flow.flags = flags; new_flow.dns_record.id = bpf_ntohs(dns->id); new_flow.dns_record.flags = bpf_ntohs(dns->flags); - if (dir == EGRESS) { - new_flow.dns_record.req_mono_time_ts = current_time; - } else { - new_flow.dns_record.rsp_mono_time_ts = current_time; - } + new_flow.dns_record.latency = latency; bpf_map_update_elem(&aggregated_flows, id, &new_flow, BPF_ANY); } } +static inline void fill_dns_id (flow_id *id, dns_flow_id *dns_flow, u16 dns_id, bool reverse) { + dns_flow->id = dns_id; + dns_flow->if_index = id->if_index; + dns_flow->protocol = id->transport_protocol; + if (reverse) { + __builtin_memcpy(dns_flow->src_ip, id->dst_ip, IP_MAX_LEN); + __builtin_memcpy(dns_flow->dst_ip, id->src_ip, IP_MAX_LEN); + dns_flow->src_port = id->dst_port; + dns_flow->dst_port = id->src_port; + } else { + __builtin_memcpy(dns_flow->src_ip, id->src_ip, IP_MAX_LEN); + __builtin_memcpy(dns_flow->dst_ip, id->dst_ip, IP_MAX_LEN); + dns_flow->src_port = id->src_port; + dns_flow->dst_port = id->dst_port; + } +} + static inline int trace_dns(struct sk_buff *skb) { flow_id id; u8 protocol = 0; @@ -79,13 +92,26 @@ static inline int trace_dns(struct sk_buff *skb) { // check for DNS packets if (id.dst_port == DNS_PORT || id.src_port == DNS_PORT) { struct dns_header dns; + dns_flow_id dns_req; + u64 latency = 0; bpf_probe_read(&dns, sizeof(dns), (struct dns_header *)(skb->head + skb->transport_header + len)); if ((bpf_ntohs(dns.flags) & DNS_QR_FLAG) == 0) { /* dns query */ + fill_dns_id(&id, &dns_req, bpf_ntohs(dns.id), false); + if (bpf_map_lookup_elem(&dns_flows, &dns_req) == NULL) { + u64 ts = bpf_ktime_get_ns(); + bpf_map_update_elem(&dns_flows, &dns_req, &ts, BPF_ANY); + } id.direction = EGRESS; } else { /* dns response */ id.direction = INGRESS; + fill_dns_id(&id, &dns_req, bpf_ntohs(dns.id), true); + u64 *value = bpf_map_lookup_elem(&dns_flows, &dns_req); + if (value != NULL) { + latency = bpf_ktime_get_ns() - *value; + bpf_map_delete_elem(&dns_flows, &dns_req); + find_or_create_dns_flow(&id, &dns, skb->len, flags, latency); + } } // end of dns response - find_or_create_dns_flow(&id, &dns, skb->len, id.direction, flags); } // end of dns port check return 0; diff --git a/bpf/maps_definition.h b/bpf/maps_definition.h index 4c5bf86e..a7dca2a3 100644 --- a/bpf/maps_definition.h +++ b/bpf/maps_definition.h @@ -31,4 +31,12 @@ struct { __type(value, u64); } flow_sequences SEC(".maps"); +// DNS tracking flow based hashmap used to correlate query and responses +// to allow calculating latency in ebpf agent directly +struct { + __uint(type, BPF_MAP_TYPE_LRU_HASH); + __uint(max_entries, 1 << 20); // Will take around 64MB of space. + __type(key, dns_flow_id); + __type(value, u64); +} dns_flows SEC(".maps"); #endif //__MAPS_DEFINITION_H__ diff --git a/bpf/types.h b/bpf/types.h index 0ce90375..be511ce9 100644 --- a/bpf/types.h +++ b/bpf/types.h @@ -87,8 +87,7 @@ typedef struct flow_metrics_t { struct dns_record_t { u16 id; u16 flags; - u64 req_mono_time_ts; - u64 rsp_mono_time_ts; + u64 latency; } __attribute__((packed)) dns_record; u64 flow_rtt; } __attribute__((packed)) flow_metrics; @@ -158,5 +157,16 @@ typedef struct pkt_info_t { u64 rtt; // rtt calculated from the flow if possible. else zero } pkt_info; +// DNS Flow record used as key to correlate DNS query and response +typedef struct dns_flow_id_t { + u16 src_port; + u16 dst_port; + u8 src_ip[IP_MAX_LEN]; + u8 dst_ip[IP_MAX_LEN]; + u16 id; + u32 if_index; + u8 protocol; +} __attribute__((packed)) dns_flow_id; + #endif /* __TYPES_H__ */ diff --git a/examples/flowlogs-dump/server/flowlogs-dump-collector.go b/examples/flowlogs-dump/server/flowlogs-dump-collector.go index b083a96e..c8c6f2f6 100644 --- a/examples/flowlogs-dump/server/flowlogs-dump-collector.go +++ b/examples/flowlogs-dump/server/flowlogs-dump-collector.go @@ -72,7 +72,7 @@ func main() { for records := range receivedRecords { for _, record := range records.Entries { if record.EthProtocol == ipv6 { - log.Printf("%s: %v %s IP %s:%d > %s:%d: protocol:%s type: %d code: %d dir:%d bytes:%d packets:%d flags:%d ends: %v dnsId: %d dnsFlags: 0x%04x dnsReq: %v dnsRsp: %v rtt %v\n", + log.Printf("%s: %v %s IP %s:%d > %s:%d: protocol:%s type: %d code: %d dir:%d bytes:%d packets:%d flags:%d ends: %v dnsId: %d dnsFlags: 0x%04x dnsLatency(ms): %v rtt %v\n", ipProto[record.EthProtocol], record.TimeFlowStart.AsTime().Local().Format("15:04:05.000000"), record.Interface, @@ -90,12 +90,11 @@ func main() { record.TimeFlowEnd.AsTime().Local().Format("15:04:05.000000"), record.GetDnsId(), record.GetDnsFlags(), - record.GetTimeDnsReq(), - record.GetTimeDnsRsp(), + record.DnsLatency.AsDuration().Milliseconds(), record.TimeFlowRtt.AsDuration().Microseconds(), ) } else { - log.Printf("%s: %v %s IP %s:%d > %s:%d: protocol:%s type: %d code: %d dir:%d bytes:%d packets:%d flags:%d ends: %v dnsId: %d dnsFlags: 0x%04x dnsReq: %v dnsRsp: %v rtt %v\n", + log.Printf("%s: %v %s IP %s:%d > %s:%d: protocol:%s type: %d code: %d dir:%d bytes:%d packets:%d flags:%d ends: %v dnsId: %d dnsFlags: 0x%04x dnsLatency(ms): %v rtt %v\n", ipProto[record.EthProtocol], record.TimeFlowStart.AsTime().Local().Format("15:04:05.000000"), record.Interface, @@ -113,8 +112,7 @@ func main() { record.TimeFlowEnd.AsTime().Local().Format("15:04:05.000000"), record.GetDnsId(), record.GetDnsFlags(), - record.GetTimeDnsReq(), - record.GetTimeDnsRsp(), + record.DnsLatency.AsDuration().Milliseconds(), record.TimeFlowRtt.AsDuration().Microseconds(), ) } diff --git a/pkg/ebpf/bpf_bpfeb.go b/pkg/ebpf/bpf_bpfeb.go index 3171606c..146c17c8 100644 --- a/pkg/ebpf/bpf_bpfeb.go +++ b/pkg/ebpf/bpf_bpfeb.go @@ -13,11 +13,20 @@ import ( "github.com/cilium/ebpf" ) +type BpfDnsFlowId struct { + SrcPort uint16 + DstPort uint16 + SrcIp [16]uint8 + DstIp [16]uint8 + Id uint16 + IfIndex uint32 + Protocol uint8 +} + type BpfDnsRecordT struct { - Id uint16 - Flags uint16 - ReqMonoTimeTs uint64 - RspMonoTimeTs uint64 + Id uint16 + Flags uint16 + Latency uint64 } type BpfFlowId BpfFlowIdT @@ -125,6 +134,7 @@ type BpfProgramSpecs struct { type BpfMapSpecs struct { AggregatedFlows *ebpf.MapSpec `ebpf:"aggregated_flows"` DirectFlows *ebpf.MapSpec `ebpf:"direct_flows"` + DnsFlows *ebpf.MapSpec `ebpf:"dns_flows"` FlowSequences *ebpf.MapSpec `ebpf:"flow_sequences"` } @@ -149,6 +159,7 @@ func (o *BpfObjects) Close() error { type BpfMaps struct { AggregatedFlows *ebpf.Map `ebpf:"aggregated_flows"` DirectFlows *ebpf.Map `ebpf:"direct_flows"` + DnsFlows *ebpf.Map `ebpf:"dns_flows"` FlowSequences *ebpf.Map `ebpf:"flow_sequences"` } @@ -156,6 +167,7 @@ func (m *BpfMaps) Close() error { return _BpfClose( m.AggregatedFlows, m.DirectFlows, + m.DnsFlows, m.FlowSequences, ) } @@ -189,5 +201,6 @@ func _BpfClose(closers ...io.Closer) error { } // Do not access this directly. +// //go:embed bpf_bpfeb.o var _BpfBytes []byte diff --git a/pkg/ebpf/bpf_bpfeb.o b/pkg/ebpf/bpf_bpfeb.o index b606e40943a81445fb93153d1c64678ddf091639..f80979eef561c5afee76e004150cdf56aa4f4db6 100644 GIT binary patch literal 78360 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 OAfrKg?4U9*`y~K-uB3|q delta 31108 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�CZie$W6ehz)WOD84~#u!ErakA;DOA5_$Wd<XI^ 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 diff --git a/pkg/ebpf/bpf_bpfel.go b/pkg/ebpf/bpf_bpfel.go index 32e900b5..82a8755b 100644 --- a/pkg/ebpf/bpf_bpfel.go +++ b/pkg/ebpf/bpf_bpfel.go @@ -13,11 +13,20 @@ import ( "github.com/cilium/ebpf" ) +type BpfDnsFlowId struct { + SrcPort uint16 + DstPort uint16 + SrcIp [16]uint8 + DstIp [16]uint8 + Id uint16 + IfIndex uint32 + Protocol uint8 +} + type BpfDnsRecordT struct { - Id uint16 - Flags uint16 - ReqMonoTimeTs uint64 - RspMonoTimeTs uint64 + Id uint16 + Flags uint16 + Latency uint64 } type BpfFlowId BpfFlowIdT @@ -125,6 +134,7 @@ type BpfProgramSpecs struct { type BpfMapSpecs struct { AggregatedFlows *ebpf.MapSpec `ebpf:"aggregated_flows"` DirectFlows *ebpf.MapSpec `ebpf:"direct_flows"` + DnsFlows *ebpf.MapSpec `ebpf:"dns_flows"` FlowSequences *ebpf.MapSpec `ebpf:"flow_sequences"` } @@ -149,6 +159,7 @@ func (o *BpfObjects) Close() error { type BpfMaps struct { AggregatedFlows *ebpf.Map `ebpf:"aggregated_flows"` DirectFlows *ebpf.Map `ebpf:"direct_flows"` + DnsFlows *ebpf.Map `ebpf:"dns_flows"` FlowSequences *ebpf.Map `ebpf:"flow_sequences"` } @@ -156,6 +167,7 @@ func (m *BpfMaps) Close() error { return _BpfClose( m.AggregatedFlows, m.DirectFlows, + m.DnsFlows, m.FlowSequences, ) } @@ -189,5 +201,6 @@ func _BpfClose(closers ...io.Closer) error { } // Do not access this directly. +// //go:embed bpf_bpfel.o var _BpfBytes []byte diff --git a/pkg/ebpf/bpf_bpfel.o b/pkg/ebpf/bpf_bpfel.o index 3e563be5bf9bf32c326400fadfa82b30382904ef..5db3687c2899c17c044af1dc776c3652c2b4000c 100644 GIT binary patch literal 79464 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 Xw3!@aD0Cet$Tgs?=P>)B(;o}~Y2-y) delta 30658 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�}osW*r5yz450nD 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 I?NbKP0Go>93;+NC diff --git a/pkg/exporter/proto.go b/pkg/exporter/proto.go index 1fa61db0..2a574adb 100644 --- a/pkg/exporter/proto.go +++ b/pkg/exporter/proto.go @@ -80,17 +80,8 @@ func v4FlowToPB(fr *flow.Record) *pbflow.Record { DnsFlags: uint32(fr.Metrics.DnsRecord.Flags), TimeFlowRtt: durationpb.New(fr.TimeFlowRtt), } - if fr.Metrics.DnsRecord.ReqMonoTimeTs != 0 { - pbflowRecord.TimeDnsReq = ×tamppb.Timestamp{ - Seconds: fr.TimeDNSRequest.Unix(), - Nanos: int32(fr.TimeDNSRequest.Nanosecond()), - } - } - if fr.Metrics.DnsRecord.RspMonoTimeTs != 0 { - pbflowRecord.TimeDnsRsp = ×tamppb.Timestamp{ - Seconds: fr.TimeDNSResponse.Unix(), - Nanos: int32(fr.TimeDNSResponse.Nanosecond()), - } + if fr.Metrics.DnsRecord.Latency != 0 { + pbflowRecord.DnsLatency = durationpb.New(fr.DNSLatency) } return &pbflowRecord } @@ -137,17 +128,8 @@ func v6FlowToPB(fr *flow.Record) *pbflow.Record { DnsFlags: uint32(fr.Metrics.DnsRecord.Flags), TimeFlowRtt: durationpb.New(fr.TimeFlowRtt), } - if fr.Metrics.DnsRecord.ReqMonoTimeTs != 0 { - pbflowRecord.TimeDnsReq = ×tamppb.Timestamp{ - Seconds: fr.TimeDNSRequest.Unix(), - Nanos: int32(fr.TimeDNSRequest.Nanosecond()), - } - } - if fr.Metrics.DnsRecord.RspMonoTimeTs != 0 { - pbflowRecord.TimeDnsRsp = ×tamppb.Timestamp{ - Seconds: fr.TimeDNSResponse.Unix(), - Nanos: int32(fr.TimeDNSResponse.Nanosecond()), - } + if fr.Metrics.DnsRecord.Latency != 0 { + pbflowRecord.DnsLatency = durationpb.New(fr.DNSLatency) } return &pbflowRecord } diff --git a/pkg/flow/account_test.go b/pkg/flow/account_test.go index 211348fa..c53df299 100644 --- a/pkg/flow/account_test.go +++ b/pkg/flow/account_test.go @@ -64,30 +64,18 @@ func TestEvict_MaxEntries(t *testing.T) { Id: k1, Metrics: ebpf.BpfFlowMetrics{ Bytes: 123, Packets: 1, StartMonoTimeTs: 123, EndMonoTimeTs: 123, Flags: 1, - DnsRecord: ebpf.BpfDnsRecordT{ - ReqMonoTimeTs: 123, - RspMonoTimeTs: 0, - }, }, } inputs <- &RawRecord{ Id: k2, Metrics: ebpf.BpfFlowMetrics{ Bytes: 456, Packets: 1, StartMonoTimeTs: 456, EndMonoTimeTs: 456, Flags: 1, - DnsRecord: ebpf.BpfDnsRecordT{ - ReqMonoTimeTs: 456, - RspMonoTimeTs: 0, - }, }, } inputs <- &RawRecord{ Id: k1, Metrics: ebpf.BpfFlowMetrics{ Bytes: 321, Packets: 1, StartMonoTimeTs: 789, EndMonoTimeTs: 789, Flags: 1, - DnsRecord: ebpf.BpfDnsRecordT{ - ReqMonoTimeTs: 789, - RspMonoTimeTs: 789, - }, }, } requireNoEviction(t, evictor) @@ -97,10 +85,6 @@ func TestEvict_MaxEntries(t *testing.T) { Id: k3, Metrics: ebpf.BpfFlowMetrics{ Bytes: 111, Packets: 1, StartMonoTimeTs: 888, EndMonoTimeTs: 888, Flags: 1, - DnsRecord: ebpf.BpfDnsRecordT{ - ReqMonoTimeTs: 888, - RspMonoTimeTs: 888, - }, }, } @@ -121,30 +105,20 @@ func TestEvict_MaxEntries(t *testing.T) { Id: k1, Metrics: ebpf.BpfFlowMetrics{ Bytes: 123, Packets: 1, StartMonoTimeTs: 123, EndMonoTimeTs: 123, Flags: 1, - DnsRecord: ebpf.BpfDnsRecordT{ - ReqMonoTimeTs: 123, - RspMonoTimeTs: 0, - }, }, }, - TimeFlowStart: now.Add(-(1000 - 123) * time.Nanosecond), - TimeFlowEnd: now.Add(-(1000 - 123) * time.Nanosecond), - TimeDNSRequest: now.Add(-(1000 - 123) * time.Nanosecond), + TimeFlowStart: now.Add(-(1000 - 123) * time.Nanosecond), + TimeFlowEnd: now.Add(-(1000 - 123) * time.Nanosecond), }, k2: { RawRecord: RawRecord{ Id: k2, Metrics: ebpf.BpfFlowMetrics{ Bytes: 456, Packets: 1, StartMonoTimeTs: 456, EndMonoTimeTs: 456, Flags: 1, - DnsRecord: ebpf.BpfDnsRecordT{ - ReqMonoTimeTs: 456, - RspMonoTimeTs: 0, - }, }, }, - TimeFlowStart: now.Add(-(1000 - 456) * time.Nanosecond), - TimeFlowEnd: now.Add(-(1000 - 456) * time.Nanosecond), - TimeDNSRequest: now.Add(-(1000 - 456) * time.Nanosecond), + TimeFlowStart: now.Add(-(1000 - 456) * time.Nanosecond), + TimeFlowEnd: now.Add(-(1000 - 456) * time.Nanosecond), }, }, received) } @@ -167,30 +141,18 @@ func TestEvict_Period(t *testing.T) { Id: k1, Metrics: ebpf.BpfFlowMetrics{ Bytes: 10, Packets: 1, StartMonoTimeTs: 123, EndMonoTimeTs: 123, Flags: 1, - DnsRecord: ebpf.BpfDnsRecordT{ - ReqMonoTimeTs: 123, - RspMonoTimeTs: 0, - }, }, } inputs <- &RawRecord{ Id: k1, Metrics: ebpf.BpfFlowMetrics{ Bytes: 10, Packets: 1, StartMonoTimeTs: 456, EndMonoTimeTs: 456, Flags: 1, - DnsRecord: ebpf.BpfDnsRecordT{ - ReqMonoTimeTs: 456, - RspMonoTimeTs: 0, - }, }, } inputs <- &RawRecord{ Id: k1, Metrics: ebpf.BpfFlowMetrics{ Bytes: 10, Packets: 1, StartMonoTimeTs: 789, EndMonoTimeTs: 789, Flags: 1, - DnsRecord: ebpf.BpfDnsRecordT{ - ReqMonoTimeTs: 789, - RspMonoTimeTs: 0, - }, }, } // Forcing at least one eviction here @@ -199,20 +161,12 @@ func TestEvict_Period(t *testing.T) { Id: k1, Metrics: ebpf.BpfFlowMetrics{ Bytes: 10, Packets: 1, StartMonoTimeTs: 1123, EndMonoTimeTs: 1123, Flags: 1, - DnsRecord: ebpf.BpfDnsRecordT{ - ReqMonoTimeTs: 1123, - RspMonoTimeTs: 0, - }, }, } inputs <- &RawRecord{ Id: k1, Metrics: ebpf.BpfFlowMetrics{ Bytes: 10, Packets: 1, StartMonoTimeTs: 1456, EndMonoTimeTs: 1456, Flags: 1, - DnsRecord: ebpf.BpfDnsRecordT{ - ReqMonoTimeTs: 1456, - RspMonoTimeTs: 0, - }, }, } @@ -229,15 +183,10 @@ func TestEvict_Period(t *testing.T) { StartMonoTimeTs: 123, EndMonoTimeTs: 123, Flags: 1, - DnsRecord: ebpf.BpfDnsRecordT{ - ReqMonoTimeTs: 123, - RspMonoTimeTs: 0, - }, }, }, - TimeFlowStart: now.Add(-1000 + 123), - TimeFlowEnd: now.Add(-1000 + 123), - TimeDNSRequest: now.Add(-1000 + 123), + TimeFlowStart: now.Add(-1000 + 123), + TimeFlowEnd: now.Add(-1000 + 123), }, *records[0]) records = receiveTimeout(t, evictor) require.Len(t, records, 1) @@ -250,15 +199,10 @@ func TestEvict_Period(t *testing.T) { StartMonoTimeTs: 1123, EndMonoTimeTs: 1123, Flags: 1, - DnsRecord: ebpf.BpfDnsRecordT{ - ReqMonoTimeTs: 1123, - RspMonoTimeTs: 0, - }, }, }, - TimeFlowStart: now.Add(-1000 + 1123), - TimeFlowEnd: now.Add(-1000 + 1123), - TimeDNSRequest: now.Add(-1000 + 1123), + TimeFlowStart: now.Add(-1000 + 1123), + TimeFlowEnd: now.Add(-1000 + 1123), }, *records[0]) // no more flows are evicted diff --git a/pkg/flow/record.go b/pkg/flow/record.go index ef9ea23f..f3e173da 100644 --- a/pkg/flow/record.go +++ b/pkg/flow/record.go @@ -37,11 +37,10 @@ type RawRecord ebpf.BpfFlowRecordT type Record struct { RawRecord // TODO: redundant field from RecordMetrics. Reorganize structs - TimeFlowStart time.Time - TimeFlowEnd time.Time - TimeDNSRequest time.Time - TimeDNSResponse time.Time - Interface string + TimeFlowStart time.Time + TimeFlowEnd time.Time + DNSLatency time.Duration + Interface string // Duplicate tells whether this flow has another duplicate so it has to be excluded from // any metrics' aggregation (e.g. bytes/second rates between two pods). // The reason for this field is that the same flow can be observed from multiple interfaces, @@ -74,16 +73,10 @@ func NewRecord( TimeFlowEnd: currentTime.Add(-endDelta), } if metrics.FlowRtt != 0 { - rttDelta := time.Duration(metrics.FlowRtt) - record.TimeFlowRtt = rttDelta + record.TimeFlowRtt = time.Duration(metrics.FlowRtt) } - if metrics.DnsRecord.ReqMonoTimeTs != 0 { - reqDNS := time.Duration(monotonicCurrentTime - metrics.DnsRecord.ReqMonoTimeTs) - record.TimeDNSRequest = currentTime.Add(-reqDNS) - } - if metrics.DnsRecord.RspMonoTimeTs != 0 { - rspDNS := time.Duration(monotonicCurrentTime - metrics.DnsRecord.RspMonoTimeTs) - record.TimeDNSResponse = currentTime.Add(-rspDNS) + if metrics.DnsRecord.Latency != 0 { + record.DNSLatency = time.Duration(metrics.DnsRecord.Latency) } return &record } diff --git a/pkg/flow/record_test.go b/pkg/flow/record_test.go index 772f4c71..9af0a722 100644 --- a/pkg/flow/record_test.go +++ b/pkg/flow/record_test.go @@ -41,8 +41,7 @@ func TestRecordBinaryEncoding(t *testing.T) { // dns_record structure 01, 00, // id 0x80, 00, // flags - 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, // req ts - 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, // rsp ts + 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, // latency // u64 flow_rtt 0xad, 0xde, 0xef, 0xbe, 0xef, 0xbe, 0xad, 0xde, })) @@ -78,10 +77,9 @@ func TestRecordBinaryEncoding(t *testing.T) { LatestDropCause: 0x11, }, DnsRecord: ebpf.BpfDnsRecordT{ - Id: 0x0001, - Flags: 0x0080, - ReqMonoTimeTs: 0x1817161514131211, - RspMonoTimeTs: 0x2827262524232221, + Id: 0x0001, + Flags: 0x0080, + Latency: 0x1817161514131211, }, FlowRtt: 0xdeadbeefbeefdead, }, diff --git a/pkg/grpc/grpc_test.go b/pkg/grpc/grpc_test.go index 4328dc17..b2560457 100644 --- a/pkg/grpc/grpc_test.go +++ b/pkg/grpc/grpc_test.go @@ -170,8 +170,6 @@ func BenchmarkIPv4GRPCCommunication(b *testing.B) { TcpDropLatestFlags: 1, TcpDropLatestState: 2, TcpDropLatestDropCause: 3, - TimeDnsReq: timestamppb.Now(), - TimeDnsRsp: timestamppb.Now(), } records := &pbflow.Records{} for i := 0; i < 100; i++ { @@ -230,8 +228,6 @@ func BenchmarkIPv6GRPCCommunication(b *testing.B) { TcpDropLatestDropCause: 3, DnsId: 1, DnsFlags: 100, - TimeDnsReq: timestamppb.Now(), - TimeDnsRsp: timestamppb.Now(), } records := &pbflow.Records{} for i := 0; i < 100; i++ { diff --git a/pkg/pbflow/flow.pb.go b/pkg/pbflow/flow.pb.go index 846d7467..10288e9e 100644 --- a/pkg/pbflow/flow.pb.go +++ b/pkg/pbflow/flow.pb.go @@ -178,20 +178,19 @@ type Record struct { // From all the duplicate flows, one will set this value to false and the rest will be true. Duplicate bool `protobuf:"varint,11,opt,name=duplicate,proto3" json:"duplicate,omitempty"` // Agent IP address to help identifying the source of the flow - AgentIp *IP `protobuf:"bytes,12,opt,name=agent_ip,json=agentIp,proto3" json:"agent_ip,omitempty"` - Flags uint32 `protobuf:"varint,13,opt,name=flags,proto3" json:"flags,omitempty"` - IcmpType uint32 `protobuf:"varint,14,opt,name=icmp_type,json=icmpType,proto3" json:"icmp_type,omitempty"` - IcmpCode uint32 `protobuf:"varint,15,opt,name=icmp_code,json=icmpCode,proto3" json:"icmp_code,omitempty"` - TcpDropBytes uint64 `protobuf:"varint,16,opt,name=tcp_drop_bytes,json=tcpDropBytes,proto3" json:"tcp_drop_bytes,omitempty"` - TcpDropPackets uint64 `protobuf:"varint,17,opt,name=tcp_drop_packets,json=tcpDropPackets,proto3" json:"tcp_drop_packets,omitempty"` - TcpDropLatestFlags uint32 `protobuf:"varint,18,opt,name=tcp_drop_latest_flags,json=tcpDropLatestFlags,proto3" json:"tcp_drop_latest_flags,omitempty"` - TcpDropLatestState uint32 `protobuf:"varint,19,opt,name=tcp_drop_latest_state,json=tcpDropLatestState,proto3" json:"tcp_drop_latest_state,omitempty"` - TcpDropLatestDropCause uint32 `protobuf:"varint,20,opt,name=tcp_drop_latest_drop_cause,json=tcpDropLatestDropCause,proto3" json:"tcp_drop_latest_drop_cause,omitempty"` - DnsId uint32 `protobuf:"varint,21,opt,name=dns_id,json=dnsId,proto3" json:"dns_id,omitempty"` - DnsFlags uint32 `protobuf:"varint,22,opt,name=dns_flags,json=dnsFlags,proto3" json:"dns_flags,omitempty"` - TimeDnsReq *timestamppb.Timestamp `protobuf:"bytes,23,opt,name=time_dns_req,json=timeDnsReq,proto3" json:"time_dns_req,omitempty"` - TimeDnsRsp *timestamppb.Timestamp `protobuf:"bytes,24,opt,name=time_dns_rsp,json=timeDnsRsp,proto3" json:"time_dns_rsp,omitempty"` - TimeFlowRtt *durationpb.Duration `protobuf:"bytes,25,opt,name=time_flow_rtt,json=timeFlowRtt,proto3" json:"time_flow_rtt,omitempty"` + AgentIp *IP `protobuf:"bytes,12,opt,name=agent_ip,json=agentIp,proto3" json:"agent_ip,omitempty"` + Flags uint32 `protobuf:"varint,13,opt,name=flags,proto3" json:"flags,omitempty"` + IcmpType uint32 `protobuf:"varint,14,opt,name=icmp_type,json=icmpType,proto3" json:"icmp_type,omitempty"` + IcmpCode uint32 `protobuf:"varint,15,opt,name=icmp_code,json=icmpCode,proto3" json:"icmp_code,omitempty"` + TcpDropBytes uint64 `protobuf:"varint,16,opt,name=tcp_drop_bytes,json=tcpDropBytes,proto3" json:"tcp_drop_bytes,omitempty"` + TcpDropPackets uint64 `protobuf:"varint,17,opt,name=tcp_drop_packets,json=tcpDropPackets,proto3" json:"tcp_drop_packets,omitempty"` + TcpDropLatestFlags uint32 `protobuf:"varint,18,opt,name=tcp_drop_latest_flags,json=tcpDropLatestFlags,proto3" json:"tcp_drop_latest_flags,omitempty"` + TcpDropLatestState uint32 `protobuf:"varint,19,opt,name=tcp_drop_latest_state,json=tcpDropLatestState,proto3" json:"tcp_drop_latest_state,omitempty"` + TcpDropLatestDropCause uint32 `protobuf:"varint,20,opt,name=tcp_drop_latest_drop_cause,json=tcpDropLatestDropCause,proto3" json:"tcp_drop_latest_drop_cause,omitempty"` + DnsId uint32 `protobuf:"varint,21,opt,name=dns_id,json=dnsId,proto3" json:"dns_id,omitempty"` + DnsFlags uint32 `protobuf:"varint,22,opt,name=dns_flags,json=dnsFlags,proto3" json:"dns_flags,omitempty"` + DnsLatency *durationpb.Duration `protobuf:"bytes,23,opt,name=dns_latency,json=dnsLatency,proto3" json:"dns_latency,omitempty"` + TimeFlowRtt *durationpb.Duration `protobuf:"bytes,24,opt,name=time_flow_rtt,json=timeFlowRtt,proto3" json:"time_flow_rtt,omitempty"` } func (x *Record) Reset() { @@ -380,16 +379,9 @@ func (x *Record) GetDnsFlags() uint32 { return 0 } -func (x *Record) GetTimeDnsReq() *timestamppb.Timestamp { +func (x *Record) GetDnsLatency() *durationpb.Duration { if x != nil { - return x.TimeDnsReq - } - return nil -} - -func (x *Record) GetTimeDnsRsp() *timestamppb.Timestamp { - if x != nil { - return x.TimeDnsRsp + return x.DnsLatency } return nil } @@ -669,7 +661,7 @@ var file_proto_flow_proto_rawDesc = []byte{ 0x07, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x28, 0x0a, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x62, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, - 0x65, 0x73, 0x22, 0xaf, 0x08, 0x0a, 0x06, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x21, 0x0a, + 0x65, 0x73, 0x22, 0xef, 0x07, 0x0a, 0x06, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x74, 0x68, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x65, 0x74, 0x68, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x2f, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, @@ -724,16 +716,12 @@ var file_proto_flow_proto_rawDesc = []byte{ 0x43, 0x61, 0x75, 0x73, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x64, 0x6e, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x64, 0x6e, 0x73, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x6e, 0x73, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x08, 0x64, 0x6e, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x3c, 0x0a, 0x0c, 0x74, 0x69, 0x6d, - 0x65, 0x5f, 0x64, 0x6e, 0x73, 0x5f, 0x72, 0x65, 0x71, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x74, 0x69, 0x6d, - 0x65, 0x44, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x12, 0x3c, 0x0a, 0x0c, 0x74, 0x69, 0x6d, 0x65, 0x5f, - 0x64, 0x6e, 0x73, 0x5f, 0x72, 0x73, 0x70, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x44, - 0x6e, 0x73, 0x52, 0x73, 0x70, 0x12, 0x3d, 0x0a, 0x0d, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x66, 0x6c, - 0x6f, 0x77, 0x5f, 0x72, 0x74, 0x74, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, + 0x08, 0x64, 0x6e, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x3a, 0x0a, 0x0b, 0x64, 0x6e, 0x73, + 0x5f, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x64, 0x6e, 0x73, 0x4c, 0x61, + 0x74, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x3d, 0x0a, 0x0d, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x66, 0x6c, + 0x6f, 0x77, 0x5f, 0x72, 0x74, 0x74, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x74, 0x69, 0x6d, 0x65, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x74, 0x74, 0x22, 0x3c, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x6e, 0x6b, @@ -801,18 +789,17 @@ var file_proto_flow_proto_depIdxs = []int32{ 5, // 5: pbflow.Record.network:type_name -> pbflow.Network 7, // 6: pbflow.Record.transport:type_name -> pbflow.Transport 6, // 7: pbflow.Record.agent_ip:type_name -> pbflow.IP - 8, // 8: pbflow.Record.time_dns_req:type_name -> google.protobuf.Timestamp - 8, // 9: pbflow.Record.time_dns_rsp:type_name -> google.protobuf.Timestamp - 9, // 10: pbflow.Record.time_flow_rtt:type_name -> google.protobuf.Duration - 6, // 11: pbflow.Network.src_addr:type_name -> pbflow.IP - 6, // 12: pbflow.Network.dst_addr:type_name -> pbflow.IP - 2, // 13: pbflow.Collector.Send:input_type -> pbflow.Records - 1, // 14: pbflow.Collector.Send:output_type -> pbflow.CollectorReply - 14, // [14:15] is the sub-list for method output_type - 13, // [13:14] is the sub-list for method input_type - 13, // [13:13] is the sub-list for extension type_name - 13, // [13:13] is the sub-list for extension extendee - 0, // [0:13] is the sub-list for field type_name + 9, // 8: pbflow.Record.dns_latency:type_name -> google.protobuf.Duration + 9, // 9: pbflow.Record.time_flow_rtt:type_name -> google.protobuf.Duration + 6, // 10: pbflow.Network.src_addr:type_name -> pbflow.IP + 6, // 11: pbflow.Network.dst_addr:type_name -> pbflow.IP + 2, // 12: pbflow.Collector.Send:input_type -> pbflow.Records + 1, // 13: pbflow.Collector.Send:output_type -> pbflow.CollectorReply + 13, // [13:14] is the sub-list for method output_type + 12, // [12:13] is the sub-list for method input_type + 12, // [12:12] is the sub-list for extension type_name + 12, // [12:12] is the sub-list for extension extendee + 0, // [0:12] is the sub-list for field type_name } func init() { file_proto_flow_proto_init() } diff --git a/proto/flow.proto b/proto/flow.proto index 1b15f0f6..18775e23 100644 --- a/proto/flow.proto +++ b/proto/flow.proto @@ -51,9 +51,8 @@ message Record { uint32 tcp_drop_latest_drop_cause = 20; uint32 dns_id = 21; uint32 dns_flags = 22; - google.protobuf.Timestamp time_dns_req = 23; - google.protobuf.Timestamp time_dns_rsp = 24; - google.protobuf.Duration time_flow_rtt = 25; + google.protobuf.Duration dns_latency = 23; + google.protobuf.Duration time_flow_rtt = 24; } message DataLink { -- GitLab