SourceWorkload InstanceSourceWorkload InstanceSourceEnvoy ProxySourceEnvoy ProxyDestinationEnvoy ProxyDestinationEnvoy ProxyIstio Policy(Mixer)Istio Policy(Mixer)Istio Telemetry(Mixer)Istio Telemetry(Mixer)DestinationWorkload InstanceDestinationWorkload Instanceconnect()connect()Proxy must confirm connection allowedCheck(CheckRequest)Attributes (values):connection.event ("open") connection.id connection.mtls context.protocol ("tcp") context.reporter.kind ("inbound") context.reporter.uid context.time source.ip source.principal destination.ipdestination.portdestination.principaldestination.uidCheckResponseconnect()accept()accept()accept()Initial Client-Side ReportReport(ReportRequest)Attributes (values): connection.event ("open") connection.duration connection.id connection.mtls connection.received.bytes connection.received.bytes_total connection.sent.bytes connection.sent.bytes_total context.protocol ("tcp") context.reporter.kind("outbound") context.reporter.uidcontext.time source.ip source.namespace source.uid source.principal destination.ip destination.port destination.uid destination.service.host destination.service.name destination.service.namespace destination.service.uid destination.principalReportResponseInitial Server-Side ReportReport(ReportRequest)Attributes (values): check.cache_hitconnection.event ("open") connection.duration connection.id connection.mtls connection.received.bytes connection.received.bytes_total connection.sent.bytes connection.sent.bytes_total context.protocol ("tcp") context.reporter.kind("inbound") context.reporter.uidcontext.time source.ip source.namespace source.uid source.principal destination.ip destination.namespace destination.port destination.uid destination.principal quota.cache_hitReportResponseWith connection established, start sending datasend()send()send()recv()recv()recv()...PeriodicClient-Side ReportsReport(ReportRequest)Attributes (values): connection.event ("continue") connection.duration connection.id connection.mtls connection.received.bytes connection.received.bytes_total connection.sent.bytes connection.sent.bytes_total context.protocol ("tcp") context.reporter.kind("outbound") context.reporter.uidcontext.time source.ip source.namespace source.uid source.principal destination.ip destination.port destination.uid destination.service.host destination.service.name destination.service.namespace destination.service.uid destination.principalReportResponsePeriodicServer-Side ReportsReport(ReportRequest)Attributes (values): check.cache_hitconnection.event ("continue") connection.duration connection.id connection.mtls connection.received.bytes connection.received.bytes_total connection.sent.bytes connection.sent.bytes_total context.protocol ("tcp") context.reporter.kind("inbound") context.reporter.uidcontext.time source.ip source.namespace source.uid source.principal destination.ip destination.namespace destination.port destination.uid destination.principal quota.cache_hitReportResponse...close()close()close()close()close()close()Report(ReportRequest)Attributes (values): connection.event ("close") connection.duration connection.id connection.mtls connection.received.bytes connection.received.bytes_total connection.sent.bytes connection.sent.bytes_total context.protocol ("tcp") context.reporter.kind("outbound") context.reporter.uidcontext.time source.ip source.namespace source.uid source.principal destination.ip destination.port destination.uid destination.service.host destination.service.name destination.service.namespace destination.service.uid destination.principalReportResponseReport(ReportRequest)Attributes (values): check.cache_hitconnection.event ("close") connection.duration connection.id connection.mtls connection.received.bytes connection.received.bytes_total connection.sent.bytes connection.sent.bytes_total context.protocol ("tcp") context.reporter.kind("inbound") context.reporter.uidcontext.time source.ip source.namespace source.uid source.principal destination.ip destination.namespace destination.port destination.uid destination.principal quota.cache_hitReportResponse