Get desktop application:
View/edit binary Protocol Buffers messages
FlowCollector provides APIs capable of receiving streams of Flow data from cluster nodes.
Connect receives a connection that may stream one or more FlowUpdates. A FlowReceipt is returned to the client by the server after each FlowUpdate. Following a connection or reconnection to the server, clients should duplicates of previously transmitted FlowsUpdates in order to allow the server to rebuild its cache, as well as any new FlowUpdates that have not previously been transmitted. The server is responsible for deduplicating where needed.
FlowUpdate wraps a Flow with additional metadata.
Flow contains the actual flow being sent.
FlowReceipt is a response from the server to a client after publishing a Flow.
(message has no fields)
Flows provides APIs for querying aggregated Flow data. The returned Flows will be aggregated across cluster nodes, as well as the specified aggregation time interval.
List is an API call to query for one or more Flows.
FlowListRequest defines a message to request a particular selection of aggregated Flow objects.
StartTimeGt specifies the beginning of a time window with which to filter Flows. Flows will be returned only if their start time is greater than or equal to the given value. - A value of zero indicates the oldest start time available by the server. - A value greater than zero indicates an absolute time in seconds since the Unix epoch. - A value less than zero indicates a relative number of seconds from "now", as determined by the server.
StartTimeLt specifies the end of a time window with which to filter flows. Flows will be returned only if their start time occurs before the requested time. - A value of zero means "now", as determined by the server at the time of request. - A value greater than zero indicates an absolute time in seconds since the Unix epoch. - A value less than zero indicates a relative number of seconds from "now", as determined by the server.
Page specifies the page to return. It requires that PageSize is also specified in order to determine page boundaries. Note that pages may change over time as new flow data is collected or expired. Querying the same page at different points in time may return different results.
PageSize configures the maximum number of results to return as part of this query.
SortBy configures how to sort the results of this query. By default flows are sorted by start time. The returned list is sorted by each sort option, in order, using the next sort option in the list as a tie-breaker. Note: At the moment, only a single sort option is supported.
Filter allows specification of one or more criteria on which to filter the returned Flows.
AggregationInterval is the width of the time window in seconds across which to aggregate when generating Flows to return. This must be a multiple of 15.
FlowListResult is a message containing a list of FlowResults and ListMetadata.
Meta specifies metadata about the returned flows.
Flows is a list of FlowResult objects.
Stream is an API call to return a long running stream of new Flows as they are generated.
FlowStreamRequest defines a message to request a stream of aggregated Flows.
StartTimeGt specifies the beginning of a time window from which to stream Flows. Flows will be streamed only if their start time is greater than or equal to the given value. - A value of zero means "now", as determined by the server at the time of request. - A value greater than zero indicates an absolute time in seconds since the Unix epoch. - A value less than zero indicates a relative number of seconds from "now", as determined by the server.
Filter allows specification of one or more criteria on which to filter the returned Flows.
AggregationInterval defines both the frequency of streamed updates for each Flow, and the amount of time that FlowResult covers. It must always be 15s. Every AggregationInterval the server must send a FlowResult containing the aggregated data for that Flow from a time interval of width AggregationInterval. For a Flow that has continuous traffic, the server should send updates covering the range [now-2*AggregationInterval, now-AggregationInterval] so that the data is reasonably likely to be complete.
FilterHints can be used to discover available filter criteria, such as Namespaces and source / destination names. It allows progressive filtering of criteria based on other filters. i.e., return the flow destinations given a source namespace. Note that this API provides hints to the UI based on past flows and other values may be valid.
Type is type of Filter to query.
Filter is a set of filter criteria used to narrow down returned results.
StartTimeGt specifies the beginning of a time window with which to filter (inclusive). - A value of zero indicates the oldest start time available by the server. - A value greater than zero indicates an absolute time in seconds since the Unix epoch. - A value less than zero indicates a relative number of seconds from "now", as determined by the server.
StartTimeLt specifies the end of a time window with which to filter. - A value of zero means "now", as determined by the server at the time of request. - A value greater than zero indicates an absolute time in seconds since the Unix epoch. - A value less than zero indicates a relative number of seconds from "now", as determined by the server.
Page specifies the page number to return. It requires that PageSize is also specified in order to determine page boundaries. Note that pages may change over time as new flow data is collected or expired. Querying the same page at different points in time may return different results.
PageSize configures the maximum number of results to return as part of this query.
ListMetadata specifies list information about the flows returned.
FilterHint contains the values that flows can be filtered on.
Statistics provides APIs for retrieving Flow statistics.
List returns statistics data for the given request. One StatisticsResult will be returned for each matching PolicyHit and direction over the timeframe, containing time-series data covering the provided time range.
The start time from which to collect statistics (inclusive). - A value of zero indicates the oldest start time available by the server. - A value greater than zero indicates an absolute time in seconds since the Unix epoch. - A value less than zero indicates a relative number of seconds from "now", as determined by the server.
The end time indicates the end of the windows from which to collect statistics. - A value of zero means "now", as determined by the server at the time of request. - A value greater than zero indicates an absolute time in seconds since the Unix epoch. - A value less than zero indicates a relative number of seconds from "now", as determined by the server.
Type is the type of statistic to return. e.g., packets, bytes, etc.
Configure statistics aggregation. - Policy: each StatisticsResult will contain statistics for a particular policy. - PolicyRule: each StatisticsResult will contain statistics for a particular policy rule. - Any: return both per-Policy and per-PolicyRule results.
Optionally configure fields to filter results. If provided, any policies not matching the PolicyMatch will be omitted from the results.
TimeSeries configures whether or not to return time-series data in the response. If true, the response will include multiple datapoints over the given time window. If false, data across the time window will be aggregated into a single data point.
Policy identifies the policy / rule for which this data applies. Its meaning is contextualized by the GroupBy field. - StatisticsGroupBy_Policy: this field represents the specific Policy, and statistics are aggregated across all rules within that policy. Rule identifiers (Action, RuleID) will be omitted. - StatisticsGroupBy_PolicyRule: this field identifies a specific rule within a Policy, and statistics are scoped to that particular rule.
For statistics results targeting a specific policy rule, the direction contextualizes the rule ID as either an ingress or egress rule. For statistics results grouped by policy, both ingress and egress statistics will be included.
GroupBy indicates whether the statistics in this result are aggregated for a policy, or for a specific rule within that policy.
Type indicates the type of data carried in this result. e.g., PacketCount vs ByteCount.
AllowedIn contains the count of the requested statistic that was allowed for ingress flows. The semantic meaning (e.g., packets vs bytes) is indicated by the Type field.
X is the x axis of the data for time-series data. i.e., the timestamp. For non-timeseries data, this will be nil.
Used in:
, , ,Used in:
For queries, unspecified means "do not filter on this field".
WorkloadEndpoint represents an application endpoint with its own network identity. For example, a Kubernetes Pod.
HostEndpoint represents a host machine.
NetworkSet represents an address from within a configured projectcalico.org/v3 NetworkSet or GlobalNetworkSet.
Network represents an endpoint on a public or private network not known by Calico. For example, traffic from the public internet or private LAN not covered by a NetworkSet.
Filter defines criteria for selecting a set of Flows based on their parameters.
Used in:
, ,SourceNames allows filtering on the source name field. Combined using logical OR.
SourceNamespaces filters on the source namespace field. Combined using logical OR.
DestNames filters on the destination name field. Combined using logical OR.
DestNamespaces filters on the destination namespace field. Combined using logical OR.
Protocols filters on the protocol field. Combined using logical OR.
DestPorts filters on the port field. Combined using logical OR.
Actions filters on the action field. Combined using logical OR.
Policies matches on policy fields. Combined using logical OR.
Used in:
FilterType specifies which fields on the underlying Flow data to collect.
Used in:
Flow is a message representing statistics gathered about connections that share common fields, aggregated across either time, nodes, or both.
Used in:
,Key includes the identifying fields for this flow.
StartTime is the start time for this flow. It is represented as the number of seconds since the UNIX epoch.
EndTime is the end time for this flow. It is always at least one aggregation interval after the start time.
SourceLabels contains the intersection of labels that appear on all source pods that contributed to this flow.
SourceLabels contains the intersection of labels that appear on all destination pods that contributed to this flow.
Statistics.
NumConnectionsStarted tracks the total number of new connections recorded for this Flow. It counts each connection attempt that matches the FlowKey that was made between this Flow's StartTime and EndTime.
NumConnectionsCompleted tracks the total number of completed TCP connections recorded for this Flow. It counts each connection that matches the FlowKey that was completed between this Flow's StartTime and EndTime.
NumConnectionsLive tracks the total number of still active connections recorded for this Flow. It counts each connection that matches the FlowKey that was active at this Flow's EndTime.
FlowKey includes the identifying fields for a Flow. - Source: Name, namespace, type, and labels. - Destination: Name, namespace, type, labels and port - Action taken on the connection. - Reporter (i.e., measured at source or destination). - Protocol of the connection (TCP, UDP, etc.).
Used in:
SourceName is the name of the source for this Flow. The value is contextualized by the source_type field: - For WorkloadEndpoint, this represents a set of pods that share a GenerateName. - For HostEndpoint, this is the host endpoint name. - For NetworkSet, it is the name of the network set. - For Network, this is either "pub" for a public network, or "pvt" for a private network.
SourceNamespace is the namespace of the source pods for this flow.
SourceType is the type of the source, used to contextualize the source name and namespace fields.
DestName is the name of the destination for this Flow. The value is contextualized by the source_type field: - For WorkloadEndpoint, this represents a set of pods that share a GenerateName. - For HostEndpoint, this is the host endpoint name. - For NetworkSet, it is the name of the network set. - For Network, this is either "pub" for a public network, or "pvt" for a private network.
DestNamespace is the namespace of the destination pods for this flow.
DestType is the type of the destination, used to contextualize the dest name and namespace fields.
DestPort is the destination port on the specified protocol accessed by this flow.
DestServiceName is the name of the destination service, if any.
DestServiceNamespace is the namespace of the destination service, if any.
DestServicePortName is the name of the port on the destination service, if any.
DestServicePort is the port number on the destination service.
Proto is the L4 protocol for this flow. For example, TCP, UDP, SCTP, ICMP.
Reporter is either "src" or "dst", depending on whether this flow was generated at the initiating or terminating end of the connection attempt.
Action is the ultimate action taken on the flow.
Policies includes an entry for each policy rule that took an action on the connections aggregated into this flow.
FlowResult wraps a Flow object with additional metadata.
Used as response type in: Flows.Stream
Used as field type in:
ID is an opaque integer value ID that can be used to identify a Flow, and is 1:1 with the FlowKey. Note that this ID is not valid across server restarts. Its primary use-case is for correlating FlowResult updates from a Stream request.
The Flow object itself.
ListMetadata contains information about a returned list of items, such as pagination information (total number of pages and total number of results).
Used in:
,totalPages is the total number of pages that exist given that a pageSize was specified.
TotalResults are the total number of results that would have been returned if no pagination was specified.
Used in:
Match the value exactly.
Use fuzzy matching on the value.
PolicyHit represents a policy rule that was traversed by this flow. It can be either an enforced policy hit from the dataplane, or a staged policy hit that is not yet active.
Used in:
,Kind corresponds to the resource Kind for the policy.
Namespace is the Kubernetes namespace of the Policy, if namespaced. It is empty for global / cluster-scoped policy kinds.
Name is the Name of the policy object.
Tier is the Tier of the policy object.
Action is the action taken by this policy rule.
PolicyIndex is the order of the Policy among all policies traversed.
RuleIndex is the order of the Rule within the Policy rules.
Trigger indicates the first policy that selected this Flow and thus triggered the tier's end-of-tier action. This is only valid for kind=EndOfTier, and is nil otherwise.
Used in:
,Unspecified
Calico policy types.
Native Kubernetes types.
Calico Profiles.
PolicyMatch defines criteria for matching one or more policy rules within a Flow's policy trace.
Used in:
,Used in:
EnforcedPolicies shows the active dataplane policy rules traversed by this Flow.
PendingPolicies shows the expected policy rules traversed by this Flow when including staged policies.
Used in:
Used in:
For queries, unspecified means "do not filter on this field".
Used in:
Used in:
Used in:
SortBy declares the field by which to sort.
StatisticType represents the types of data available over the Statistics API endpoint.
Used in:
,Used in:
,Policy configures statistics groupings on a per-policy basis.
PolicyRule configures statistics groupings on a per-policy-rule basis.
Used in: