xref: /aosp_15_r20/external/googleapis/google/cloud/networkmanagement/v1beta1/trace.proto (revision d5c09012810ac0c9f33fe448fb6da8260d444cc9)
1// Copyright 2023 Google LLC
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15syntax = "proto3";
16
17package google.cloud.networkmanagement.v1beta1;
18
19import "google/api/field_behavior.proto";
20import "google/api/field_info.proto";
21
22option csharp_namespace = "Google.Cloud.NetworkManagement.V1Beta1";
23option go_package = "cloud.google.com/go/networkmanagement/apiv1beta1/networkmanagementpb;networkmanagementpb";
24option java_multiple_files = true;
25option java_outer_classname = "TraceProto";
26option java_package = "com.google.cloud.networkmanagement.v1beta1";
27option php_namespace = "Google\\Cloud\\NetworkManagement\\V1beta1";
28option ruby_package = "Google::Cloud::NetworkManagement::V1beta1";
29
30// Trace represents one simulated packet forwarding path.
31//
32//   * Each trace contains multiple ordered steps.
33//   * Each step is in a particular state with associated configuration.
34//   * State is categorized as final or non-final states.
35//   * Each final state has a reason associated.
36//   * Each trace must end with a final state (the last step).
37// ```
38//   |---------------------Trace----------------------|
39//   Step1(State) Step2(State) ---  StepN(State(final))
40// ```
41message Trace {
42  // Derived from the source and destination endpoints definition specified by
43  // user request, and validated by the data plane model.
44  // If there are multiple traces starting from different source locations, then
45  // the endpoint_info may be different between traces.
46  EndpointInfo endpoint_info = 1;
47
48  // A trace of a test contains multiple steps from the initial state to the
49  // final state (delivered, dropped, forwarded, or aborted).
50  //
51  // The steps are ordered by the processing sequence within the simulated
52  // network state machine. It is critical to preserve the order of the steps
53  // and avoid reordering or sorting them.
54  repeated Step steps = 2;
55
56  // ID of trace. For forward traces, this ID is unique for each trace. For
57  // return traces, it matches ID of associated forward trace. A single forward
58  // trace can be associated with none, one or more than one return trace.
59  int32 forward_trace_id = 4;
60}
61
62// A simulated forwarding path is composed of multiple steps.
63// Each step has a well-defined state and an associated configuration.
64message Step {
65  // Type of states that are defined in the network state machine.
66  // Each step in the packet trace is in a specific state.
67  enum State {
68    // Unspecified state.
69    STATE_UNSPECIFIED = 0;
70
71    // Initial state: packet originating from a Compute Engine instance.
72    // An InstanceInfo is populated with starting instance information.
73    START_FROM_INSTANCE = 1;
74
75    // Initial state: packet originating from the internet.
76    // The endpoint information is populated.
77    START_FROM_INTERNET = 2;
78
79    // Initial state: packet originating from a Google service.
80    // The google_service information is populated.
81    START_FROM_GOOGLE_SERVICE = 27;
82
83    // Initial state: packet originating from a VPC or on-premises network
84    // with internal source IP.
85    // If the source is a VPC network visible to the user, a NetworkInfo
86    // is populated with details of the network.
87    START_FROM_PRIVATE_NETWORK = 3;
88
89    // Initial state: packet originating from a Google Kubernetes Engine cluster
90    // master. A GKEMasterInfo is populated with starting instance information.
91    START_FROM_GKE_MASTER = 21;
92
93    // Initial state: packet originating from a Cloud SQL instance.
94    // A CloudSQLInstanceInfo is populated with starting instance information.
95    START_FROM_CLOUD_SQL_INSTANCE = 22;
96
97    // Initial state: packet originating from a Cloud Function.
98    // A CloudFunctionInfo is populated with starting function information.
99    START_FROM_CLOUD_FUNCTION = 23;
100
101    // Initial state: packet originating from an App Engine service version.
102    // An AppEngineVersionInfo is populated with starting version information.
103    START_FROM_APP_ENGINE_VERSION = 25;
104
105    // Initial state: packet originating from a Cloud Run revision.
106    // A CloudRunRevisionInfo is populated with starting revision information.
107    START_FROM_CLOUD_RUN_REVISION = 26;
108
109    // Initial state: packet originating from a Storage Bucket. Used only for
110    // return traces.
111    // The storage_bucket information is populated.
112    START_FROM_STORAGE_BUCKET = 29;
113
114    // Initial state: packet originating from a published service that uses
115    // Private Service Connect. Used only for return traces.
116    START_FROM_PSC_PUBLISHED_SERVICE = 30;
117
118    // Config checking state: verify ingress firewall rule.
119    APPLY_INGRESS_FIREWALL_RULE = 4;
120
121    // Config checking state: verify egress firewall rule.
122    APPLY_EGRESS_FIREWALL_RULE = 5;
123
124    // Config checking state: verify route.
125    APPLY_ROUTE = 6;
126
127    // Config checking state: match forwarding rule.
128    APPLY_FORWARDING_RULE = 7;
129
130    // Config checking state: verify load balancer backend configuration.
131    ANALYZE_LOAD_BALANCER_BACKEND = 28;
132
133    // Config checking state: packet sent or received under foreign IP
134    // address and allowed.
135    SPOOFING_APPROVED = 8;
136
137    // Forwarding state: arriving at a Compute Engine instance.
138    ARRIVE_AT_INSTANCE = 9;
139
140    // Forwarding state: arriving at a Compute Engine internal load balancer.
141    // Deprecated in favor of the `ANALYZE_LOAD_BALANCER_BACKEND` state, not
142    // used in new tests.
143    ARRIVE_AT_INTERNAL_LOAD_BALANCER = 10 [deprecated = true];
144
145    // Forwarding state: arriving at a Compute Engine external load balancer.
146    // Deprecated in favor of the `ANALYZE_LOAD_BALANCER_BACKEND` state, not
147    // used in new tests.
148    ARRIVE_AT_EXTERNAL_LOAD_BALANCER = 11 [deprecated = true];
149
150    // Forwarding state: arriving at a Cloud VPN gateway.
151    ARRIVE_AT_VPN_GATEWAY = 12;
152
153    // Forwarding state: arriving at a Cloud VPN tunnel.
154    ARRIVE_AT_VPN_TUNNEL = 13;
155
156    // Forwarding state: arriving at a VPC connector.
157    ARRIVE_AT_VPC_CONNECTOR = 24;
158
159    // Transition state: packet header translated.
160    NAT = 14;
161
162    // Transition state: original connection is terminated and a new proxied
163    // connection is initiated.
164    PROXY_CONNECTION = 15;
165
166    // Final state: packet could be delivered.
167    DELIVER = 16;
168
169    // Final state: packet could be dropped.
170    DROP = 17;
171
172    // Final state: packet could be forwarded to a network with an unknown
173    // configuration.
174    FORWARD = 18;
175
176    // Final state: analysis is aborted.
177    ABORT = 19;
178
179    // Special state: viewer of the test result does not have permission to
180    // see the configuration in this step.
181    VIEWER_PERMISSION_MISSING = 20;
182  }
183
184  // A description of the step. Usually this is a summary of the state.
185  string description = 1;
186
187  // Each step is in one of the pre-defined states.
188  State state = 2;
189
190  // This is a step that leads to the final state Drop.
191  bool causes_drop = 3;
192
193  // Project ID that contains the configuration this step is validating.
194  string project_id = 4;
195
196  // Configuration or metadata associated with each step.
197  // The configuration is filtered based on viewer's permission. If a viewer
198  // has no permission to view the configuration in this step, for non-final
199  // states a special state is populated (VIEWER_PERMISSION_MISSING), and for
200  // final state the configuration is cleared.
201  oneof step_info {
202    // Display information of a Compute Engine instance.
203    InstanceInfo instance = 5;
204
205    // Display information of a Compute Engine firewall rule.
206    FirewallInfo firewall = 6;
207
208    // Display information of a Compute Engine route.
209    RouteInfo route = 7;
210
211    // Display information of the source and destination under analysis.
212    // The endpoint information in an intermediate state may differ with the
213    // initial input, as it might be modified by state like NAT,
214    // or Connection Proxy.
215    EndpointInfo endpoint = 8;
216
217    // Display information of a Google service
218    GoogleServiceInfo google_service = 24;
219
220    // Display information of a Compute Engine forwarding rule.
221    ForwardingRuleInfo forwarding_rule = 9;
222
223    // Display information of a Compute Engine VPN gateway.
224    VpnGatewayInfo vpn_gateway = 10;
225
226    // Display information of a Compute Engine VPN tunnel.
227    VpnTunnelInfo vpn_tunnel = 11;
228
229    // Display information of a VPC connector.
230    VpcConnectorInfo vpc_connector = 21;
231
232    // Display information of the final state "deliver" and reason.
233    DeliverInfo deliver = 12;
234
235    // Display information of the final state "forward" and reason.
236    ForwardInfo forward = 13;
237
238    // Display information of the final state "abort" and reason.
239    AbortInfo abort = 14;
240
241    // Display information of the final state "drop" and reason.
242    DropInfo drop = 15;
243
244    // Display information of the load balancers. Deprecated in favor of the
245    // `load_balancer_backend_info` field, not used in new tests.
246    LoadBalancerInfo load_balancer = 16 [deprecated = true];
247
248    // Display information of a Google Cloud network.
249    NetworkInfo network = 17;
250
251    // Display information of a Google Kubernetes Engine cluster master.
252    GKEMasterInfo gke_master = 18;
253
254    // Display information of a Cloud SQL instance.
255    CloudSQLInstanceInfo cloud_sql_instance = 19;
256
257    // Display information of a Cloud Function.
258    CloudFunctionInfo cloud_function = 20;
259
260    // Display information of an App Engine service version.
261    AppEngineVersionInfo app_engine_version = 22;
262
263    // Display information of a Cloud Run revision.
264    CloudRunRevisionInfo cloud_run_revision = 23;
265
266    // Display information of a NAT.
267    NatInfo nat = 25;
268
269    // Display information of a ProxyConnection.
270    ProxyConnectionInfo proxy_connection = 26;
271
272    // Display information of a specific load balancer backend.
273    LoadBalancerBackendInfo load_balancer_backend_info = 27;
274
275    // Display information of a Storage Bucket. Used only for return traces.
276    StorageBucketInfo storage_bucket = 28;
277  }
278}
279
280// For display only. Metadata associated with a Compute Engine instance.
281message InstanceInfo {
282  // Name of a Compute Engine instance.
283  string display_name = 1;
284
285  // URI of a Compute Engine instance.
286  string uri = 2;
287
288  // Name of the network interface of a Compute Engine instance.
289  string interface = 3;
290
291  // URI of a Compute Engine network.
292  string network_uri = 4;
293
294  // Internal IP address of the network interface.
295  string internal_ip = 5;
296
297  // External IP address of the network interface.
298  string external_ip = 6;
299
300  // Network tags configured on the instance.
301  repeated string network_tags = 7;
302
303  // Service account authorized for the instance.
304  string service_account = 8 [deprecated = true];
305}
306
307// For display only. Metadata associated with a Compute Engine network.
308message NetworkInfo {
309  // Name of a Compute Engine network.
310  string display_name = 1;
311
312  // URI of a Compute Engine network.
313  string uri = 2;
314
315  // The IP range that matches the test.
316  string matched_ip_range = 4;
317}
318
319// For display only. Metadata associated with a VPC firewall rule, an implied
320// VPC firewall rule, or a hierarchical firewall policy rule.
321message FirewallInfo {
322  // The firewall rule's type.
323  enum FirewallRuleType {
324    // Unspecified type.
325    FIREWALL_RULE_TYPE_UNSPECIFIED = 0;
326
327    // Hierarchical firewall policy rule. For details, see
328    // [Hierarchical firewall policies
329    // overview](https://cloud.google.com/vpc/docs/firewall-policies).
330    HIERARCHICAL_FIREWALL_POLICY_RULE = 1;
331
332    // VPC firewall rule. For details, see
333    // [VPC firewall rules
334    // overview](https://cloud.google.com/vpc/docs/firewalls).
335    VPC_FIREWALL_RULE = 2;
336
337    // Implied VPC firewall rule. For details, see
338    // [Implied
339    // rules](https://cloud.google.com/vpc/docs/firewalls#default_firewall_rules).
340    IMPLIED_VPC_FIREWALL_RULE = 3;
341
342    // Implicit firewall rules that are managed by serverless VPC access to
343    // allow ingress access. They are not visible in the Google Cloud console.
344    // For details, see [VPC connector's implicit
345    // rules](https://cloud.google.com/functions/docs/networking/connecting-vpc#restrict-access).
346    SERVERLESS_VPC_ACCESS_MANAGED_FIREWALL_RULE = 4;
347
348    // Global network firewall policy rule.
349    // For details, see [Network firewall
350    // policies](https://cloud.google.com/vpc/docs/network-firewall-policies).
351    NETWORK_FIREWALL_POLICY_RULE = 5;
352
353    // Regional network firewall policy rule.
354    // For details, see [Regional network firewall
355    // policies](https://cloud.google.com/firewall/docs/regional-firewall-policies).
356    NETWORK_REGIONAL_FIREWALL_POLICY_RULE = 6;
357
358    // Firewall policy rule containing attributes not yet supported in
359    // Connectivity tests. Firewall analysis is skipped if such a rule can
360    // potentially be matched. Please see the [list of unsupported
361    // configurations](https://cloud.google.com/network-intelligence-center/docs/connectivity-tests/concepts/overview#unsupported-configs).
362    UNSUPPORTED_FIREWALL_POLICY_RULE = 100;
363
364    // Tracking state for response traffic created when request traffic goes
365    // through allow firewall rule.
366    // For details, see [firewall rules
367    // specifications](https://cloud.google.com/firewall/docs/firewalls#specifications)
368    TRACKING_STATE = 101;
369  }
370
371  // The display name of the VPC firewall rule. This field is not applicable
372  // to hierarchical firewall policy rules.
373  string display_name = 1;
374
375  // The URI of the VPC firewall rule. This field is not applicable to
376  // implied firewall rules or hierarchical firewall policy rules.
377  string uri = 2;
378
379  // Possible values: INGRESS, EGRESS
380  string direction = 3;
381
382  // Possible values: ALLOW, DENY, APPLY_SECURITY_PROFILE_GROUP
383  string action = 4;
384
385  // The priority of the firewall rule.
386  int32 priority = 5;
387
388  // The URI of the VPC network that the firewall rule is associated with.
389  // This field is not applicable to hierarchical firewall policy rules.
390  string network_uri = 6;
391
392  // The target tags defined by the VPC firewall rule. This field is not
393  // applicable to hierarchical firewall policy rules.
394  repeated string target_tags = 7;
395
396  // The target service accounts specified by the firewall rule.
397  repeated string target_service_accounts = 8;
398
399  // The hierarchical firewall policy that this rule is associated with.
400  // This field is not applicable to VPC firewall rules.
401  string policy = 9;
402
403  // The firewall rule's type.
404  FirewallRuleType firewall_rule_type = 10;
405}
406
407// For display only. Metadata associated with a Compute Engine route.
408message RouteInfo {
409  // Type of route:
410  enum RouteType {
411    // Unspecified type. Default value.
412    ROUTE_TYPE_UNSPECIFIED = 0;
413
414    // Route is a subnet route automatically created by the system.
415    SUBNET = 1;
416
417    // Static route created by the user, including the default route to the
418    // internet.
419    STATIC = 2;
420
421    // Dynamic route exchanged between BGP peers.
422    DYNAMIC = 3;
423
424    // A subnet route received from peering network.
425    PEERING_SUBNET = 4;
426
427    // A static route received from peering network.
428    PEERING_STATIC = 5;
429
430    // A dynamic route received from peering network.
431    PEERING_DYNAMIC = 6;
432
433    // Policy based route.
434    POLICY_BASED = 7;
435  }
436
437  // Type of next hop:
438  enum NextHopType {
439    // Unspecified type. Default value.
440    NEXT_HOP_TYPE_UNSPECIFIED = 0;
441
442    // Next hop is an IP address.
443    NEXT_HOP_IP = 1;
444
445    // Next hop is a Compute Engine instance.
446    NEXT_HOP_INSTANCE = 2;
447
448    // Next hop is a VPC network gateway.
449    NEXT_HOP_NETWORK = 3;
450
451    // Next hop is a peering VPC.
452    NEXT_HOP_PEERING = 4;
453
454    // Next hop is an interconnect.
455    NEXT_HOP_INTERCONNECT = 5;
456
457    // Next hop is a VPN tunnel.
458    NEXT_HOP_VPN_TUNNEL = 6;
459
460    // Next hop is a VPN gateway. This scenario only happens when tracing
461    // connectivity from an on-premises network to Google Cloud through a VPN.
462    // The analysis simulates a packet departing from the on-premises network
463    // through a VPN tunnel and arriving at a Cloud VPN gateway.
464    NEXT_HOP_VPN_GATEWAY = 7;
465
466    // Next hop is an internet gateway.
467    NEXT_HOP_INTERNET_GATEWAY = 8;
468
469    // Next hop is blackhole; that is, the next hop either does not exist or is
470    // not running.
471    NEXT_HOP_BLACKHOLE = 9;
472
473    // Next hop is the forwarding rule of an Internal Load Balancer.
474    NEXT_HOP_ILB = 10;
475
476    // Next hop is a
477    // [router appliance
478    // instance](https://cloud.google.com/network-connectivity/docs/network-connectivity-center/concepts/ra-overview).
479    NEXT_HOP_ROUTER_APPLIANCE = 11;
480
481    // Next hop is an NCC hub.
482    NEXT_HOP_NCC_HUB = 12;
483  }
484
485  // Indicates where routes are applicable.
486  enum RouteScope {
487    // Unspecified scope. Default value.
488    ROUTE_SCOPE_UNSPECIFIED = 0;
489
490    // Route is applicable to packets in Network.
491    NETWORK = 1;
492
493    // Route is applicable to packets using NCC Hub's routing table.
494    NCC_HUB = 2;
495  }
496
497  // Type of route.
498  RouteType route_type = 8;
499
500  // Type of next hop.
501  NextHopType next_hop_type = 9;
502
503  // Indicates where route is applicable.
504  RouteScope route_scope = 14;
505
506  // Name of a route.
507  string display_name = 1;
508
509  // URI of a route.
510  // Dynamic, peering static and peering dynamic routes do not have an URI.
511  // Advertised route from Google Cloud VPC to on-premises network also does
512  // not have an URI.
513  string uri = 2;
514
515  // Destination IP range of the route.
516  string dest_ip_range = 3;
517
518  // Next hop of the route.
519  string next_hop = 4;
520
521  // URI of a Compute Engine network. NETWORK routes only.
522  string network_uri = 5;
523
524  // Priority of the route.
525  int32 priority = 6;
526
527  // Instance tags of the route.
528  repeated string instance_tags = 7;
529
530  // Source IP address range of the route. Policy based routes only.
531  string src_ip_range = 10;
532
533  // Destination port ranges of the route. Policy based routes only.
534  repeated string dest_port_ranges = 11;
535
536  // Source port ranges of the route. Policy based routes only.
537  repeated string src_port_ranges = 12;
538
539  // Protocols of the route. Policy based routes only.
540  repeated string protocols = 13;
541
542  // URI of a NCC Hub. NCC_HUB routes only.
543  optional string ncc_hub_uri = 15;
544
545  // URI of a NCC Spoke. NCC_HUB routes only.
546  optional string ncc_spoke_uri = 16;
547}
548
549// For display only. Details of a Google Service sending packets to a
550// VPC network. Although the source IP might be a publicly routable address,
551// some Google Services use special routes within Google production
552// infrastructure to reach Compute Engine Instances.
553// https://cloud.google.com/vpc/docs/routes#special_return_paths
554message GoogleServiceInfo {
555  // Recognized type of a Google Service.
556  enum GoogleServiceType {
557    // Unspecified Google Service.
558    GOOGLE_SERVICE_TYPE_UNSPECIFIED = 0;
559
560    // Identity aware proxy.
561    // https://cloud.google.com/iap/docs/using-tcp-forwarding
562    IAP = 1;
563
564    // One of two services sharing IP ranges:
565    // * Load Balancer proxy
566    // * Centralized Health Check prober
567    // https://cloud.google.com/load-balancing/docs/firewall-rules
568    GFE_PROXY_OR_HEALTH_CHECK_PROBER = 2;
569
570    // Connectivity from Cloud DNS to forwarding targets or alternate name
571    // servers that use private routing.
572    // https://cloud.google.com/dns/docs/zones/forwarding-zones#firewall-rules
573    // https://cloud.google.com/dns/docs/policies#firewall-rules
574    CLOUD_DNS = 3;
575
576    // private.googleapis.com and restricted.googleapis.com
577    GOOGLE_API = 4;
578
579    // Google API via Private Service Connect.
580    // https://cloud.google.com/vpc/docs/configure-private-service-connect-apis
581    GOOGLE_API_PSC = 5;
582
583    // Google API via VPC Service Controls.
584    // https://cloud.google.com/vpc/docs/configure-private-service-connect-apis
585    GOOGLE_API_VPC_SC = 6;
586  }
587
588  // Source IP address.
589  string source_ip = 1;
590
591  // Recognized type of a Google Service.
592  GoogleServiceType google_service_type = 2;
593}
594
595// For display only. Metadata associated with a Compute Engine forwarding rule.
596message ForwardingRuleInfo {
597  // Name of a Compute Engine forwarding rule.
598  string display_name = 1;
599
600  // URI of a Compute Engine forwarding rule.
601  string uri = 2;
602
603  // Protocol defined in the forwarding rule that matches the test.
604  string matched_protocol = 3;
605
606  // Port range defined in the forwarding rule that matches the test.
607  string matched_port_range = 6;
608
609  // VIP of the forwarding rule.
610  string vip = 4;
611
612  // Target type of the forwarding rule.
613  string target = 5;
614
615  // Network URI. Only valid for Internal Load Balancer.
616  string network_uri = 7;
617}
618
619// For display only. Metadata associated with a load balancer.
620message LoadBalancerInfo {
621  // The type definition for a load balancer:
622  enum LoadBalancerType {
623    // Type is unspecified.
624    LOAD_BALANCER_TYPE_UNSPECIFIED = 0;
625
626    // Internal TCP/UDP load balancer.
627    INTERNAL_TCP_UDP = 1;
628
629    // Network TCP/UDP load balancer.
630    NETWORK_TCP_UDP = 2;
631
632    // HTTP(S) proxy load balancer.
633    HTTP_PROXY = 3;
634
635    // TCP proxy load balancer.
636    TCP_PROXY = 4;
637
638    // SSL proxy load balancer.
639    SSL_PROXY = 5;
640  }
641
642  // The type definition for a load balancer backend configuration:
643  enum BackendType {
644    // Type is unspecified.
645    BACKEND_TYPE_UNSPECIFIED = 0;
646
647    // Backend Service as the load balancer's backend.
648    BACKEND_SERVICE = 1;
649
650    // Target Pool as the load balancer's backend.
651    TARGET_POOL = 2;
652
653    // Target Instance as the load balancer's backend.
654    TARGET_INSTANCE = 3;
655  }
656
657  // Type of the load balancer.
658  LoadBalancerType load_balancer_type = 1;
659
660  // URI of the health check for the load balancer. Deprecated and no longer
661  // populated as different load balancer backends might have different health
662  // checks.
663  string health_check_uri = 2 [deprecated = true];
664
665  // Information for the loadbalancer backends.
666  repeated LoadBalancerBackend backends = 3;
667
668  // Type of load balancer's backend configuration.
669  BackendType backend_type = 4;
670
671  // Backend configuration URI.
672  string backend_uri = 5;
673}
674
675// For display only. Metadata associated with a specific load balancer backend.
676message LoadBalancerBackend {
677  // State of a health check firewall configuration:
678  enum HealthCheckFirewallState {
679    // State is unspecified. Default state if not populated.
680    HEALTH_CHECK_FIREWALL_STATE_UNSPECIFIED = 0;
681
682    // There are configured firewall rules to allow health check probes to the
683    // backend.
684    CONFIGURED = 1;
685
686    // There are firewall rules configured to allow partial health check ranges
687    // or block all health check ranges.
688    // If a health check probe is sent from denied IP ranges,
689    // the health check to the backend will fail. Then, the backend will be
690    // marked unhealthy and will not receive traffic sent to the load balancer.
691    MISCONFIGURED = 2;
692  }
693
694  // Name of a Compute Engine instance or network endpoint.
695  string display_name = 1;
696
697  // URI of a Compute Engine instance or network endpoint.
698  string uri = 2;
699
700  // State of the health check firewall configuration.
701  HealthCheckFirewallState health_check_firewall_state = 3;
702
703  // A list of firewall rule URIs allowing probes from health check IP ranges.
704  repeated string health_check_allowing_firewall_rules = 4;
705
706  // A list of firewall rule URIs blocking probes from health check IP ranges.
707  repeated string health_check_blocking_firewall_rules = 5;
708}
709
710// For display only. Metadata associated with a Compute Engine VPN gateway.
711message VpnGatewayInfo {
712  // Name of a VPN gateway.
713  string display_name = 1;
714
715  // URI of a VPN gateway.
716  string uri = 2;
717
718  // URI of a Compute Engine network where the VPN gateway is configured.
719  string network_uri = 3;
720
721  // IP address of the VPN gateway.
722  string ip_address = 4;
723
724  // A VPN tunnel that is associated with this VPN gateway.
725  // There may be multiple VPN tunnels configured on a VPN gateway, and only
726  // the one relevant to the test is displayed.
727  string vpn_tunnel_uri = 5;
728
729  // Name of a Google Cloud region where this VPN gateway is configured.
730  string region = 6;
731}
732
733// For display only. Metadata associated with a Compute Engine VPN tunnel.
734message VpnTunnelInfo {
735  // Types of VPN routing policy. For details, refer to [Networks and Tunnel
736  // routing](https://cloud.google.com/network-connectivity/docs/vpn/concepts/choosing-networks-routing/).
737  enum RoutingType {
738    // Unspecified type. Default value.
739    ROUTING_TYPE_UNSPECIFIED = 0;
740
741    // Route based VPN.
742    ROUTE_BASED = 1;
743
744    // Policy based routing.
745    POLICY_BASED = 2;
746
747    // Dynamic (BGP) routing.
748    DYNAMIC = 3;
749  }
750
751  // Name of a VPN tunnel.
752  string display_name = 1;
753
754  // URI of a VPN tunnel.
755  string uri = 2;
756
757  // URI of the VPN gateway at local end of the tunnel.
758  string source_gateway = 3;
759
760  // URI of a VPN gateway at remote end of the tunnel.
761  string remote_gateway = 4;
762
763  // Remote VPN gateway's IP address.
764  string remote_gateway_ip = 5;
765
766  // Local VPN gateway's IP address.
767  string source_gateway_ip = 6;
768
769  // URI of a Compute Engine network where the VPN tunnel is configured.
770  string network_uri = 7;
771
772  // Name of a Google Cloud region where this VPN tunnel is configured.
773  string region = 8;
774
775  // Type of the routing policy.
776  RoutingType routing_type = 9;
777}
778
779// For display only. The specification of the endpoints for the test.
780// EndpointInfo is derived from source and destination Endpoint and validated
781// by the backend data plane model.
782message EndpointInfo {
783  // Source IP address.
784  string source_ip = 1;
785
786  // Destination IP address.
787  string destination_ip = 2;
788
789  // IP protocol in string format, for example: "TCP", "UDP", "ICMP".
790  string protocol = 3;
791
792  // Source port. Only valid when protocol is TCP or UDP.
793  int32 source_port = 4;
794
795  // Destination port. Only valid when protocol is TCP or UDP.
796  int32 destination_port = 5;
797
798  // URI of the network where this packet originates from.
799  string source_network_uri = 6;
800
801  // URI of the network where this packet is sent to.
802  string destination_network_uri = 7;
803
804  // URI of the source telemetry agent this packet originates from.
805  string source_agent_uri = 8;
806}
807
808// Details of the final state "deliver" and associated resource.
809message DeliverInfo {
810  // Deliver target types:
811  enum Target {
812    // Target not specified.
813    TARGET_UNSPECIFIED = 0;
814
815    // Target is a Compute Engine instance.
816    INSTANCE = 1;
817
818    // Target is the internet.
819    INTERNET = 2;
820
821    // Target is a Google API.
822    GOOGLE_API = 3;
823
824    // Target is a Google Kubernetes Engine cluster master.
825    GKE_MASTER = 4;
826
827    // Target is a Cloud SQL instance.
828    CLOUD_SQL_INSTANCE = 5;
829
830    // Target is a published service that uses [Private Service
831    // Connect](https://cloud.google.com/vpc/docs/configure-private-service-connect-services).
832    PSC_PUBLISHED_SERVICE = 6;
833
834    // Target is all Google APIs that use [Private Service
835    // Connect](https://cloud.google.com/vpc/docs/configure-private-service-connect-apis).
836    PSC_GOOGLE_API = 7;
837
838    // Target is a VPC-SC that uses [Private Service
839    // Connect](https://cloud.google.com/vpc/docs/configure-private-service-connect-apis).
840    PSC_VPC_SC = 8;
841
842    // Target is a serverless network endpoint group.
843    SERVERLESS_NEG = 9;
844
845    // Target is a Cloud Storage bucket.
846    STORAGE_BUCKET = 10;
847
848    // Target is a private network. Used only for return traces.
849    PRIVATE_NETWORK = 11;
850
851    // Target is a Cloud Function. Used only for return traces.
852    CLOUD_FUNCTION = 12;
853
854    // Target is a App Engine service version. Used only for return traces.
855    APP_ENGINE_VERSION = 13;
856
857    // Target is a Cloud Run revision. Used only for return traces.
858    CLOUD_RUN_REVISION = 14;
859  }
860
861  // Target type where the packet is delivered to.
862  Target target = 1;
863
864  // URI of the resource that the packet is delivered to.
865  string resource_uri = 2;
866
867  // IP address of the target (if applicable).
868  string ip_address = 3 [(google.api.field_info).format = IPV4_OR_IPV6];
869}
870
871// Details of the final state "forward" and associated resource.
872message ForwardInfo {
873  // Forward target types.
874  enum Target {
875    // Target not specified.
876    TARGET_UNSPECIFIED = 0;
877
878    // Forwarded to a VPC peering network.
879    PEERING_VPC = 1;
880
881    // Forwarded to a Cloud VPN gateway.
882    VPN_GATEWAY = 2;
883
884    // Forwarded to a Cloud Interconnect connection.
885    INTERCONNECT = 3;
886
887    // Forwarded to a Google Kubernetes Engine Container cluster master.
888    GKE_MASTER = 4 [deprecated = true];
889
890    // Forwarded to the next hop of a custom route imported from a peering VPC.
891    IMPORTED_CUSTOM_ROUTE_NEXT_HOP = 5;
892
893    // Forwarded to a Cloud SQL instance.
894    CLOUD_SQL_INSTANCE = 6 [deprecated = true];
895
896    // Forwarded to a VPC network in another project.
897    ANOTHER_PROJECT = 7;
898
899    // Forwarded to an NCC Hub.
900    NCC_HUB = 8;
901
902    // Forwarded to a router appliance.
903    ROUTER_APPLIANCE = 9;
904  }
905
906  // Target type where this packet is forwarded to.
907  Target target = 1;
908
909  // URI of the resource that the packet is forwarded to.
910  string resource_uri = 2;
911
912  // IP address of the target (if applicable).
913  string ip_address = 3 [(google.api.field_info).format = IPV4_OR_IPV6];
914}
915
916// Details of the final state "abort" and associated resource.
917message AbortInfo {
918  // Abort cause types:
919  enum Cause {
920    // Cause is unspecified.
921    CAUSE_UNSPECIFIED = 0;
922
923    // Aborted due to unknown network. Deprecated, not used in the new tests.
924    UNKNOWN_NETWORK = 1 [deprecated = true];
925
926    // Aborted because no project information can be derived from the test
927    // input. Deprecated, not used in the new tests.
928    UNKNOWN_PROJECT = 3 [deprecated = true];
929
930    // Aborted because traffic is sent from a public IP to an instance without
931    // an external IP. Deprecated, not used in the new tests.
932    NO_EXTERNAL_IP = 7 [deprecated = true];
933
934    // Aborted because none of the traces matches destination information
935    // specified in the input test request. Deprecated, not used in the new
936    // tests.
937    UNINTENDED_DESTINATION = 8 [deprecated = true];
938
939    // Aborted because the source endpoint could not be found. Deprecated, not
940    // used in the new tests.
941    SOURCE_ENDPOINT_NOT_FOUND = 11 [deprecated = true];
942
943    // Aborted because the source network does not match the source endpoint.
944    // Deprecated, not used in the new tests.
945    MISMATCHED_SOURCE_NETWORK = 12 [deprecated = true];
946
947    // Aborted because the destination endpoint could not be found. Deprecated,
948    // not used in the new tests.
949    DESTINATION_ENDPOINT_NOT_FOUND = 13 [deprecated = true];
950
951    // Aborted because the destination network does not match the destination
952    // endpoint. Deprecated, not used in the new tests.
953    MISMATCHED_DESTINATION_NETWORK = 14 [deprecated = true];
954
955    // Aborted because no endpoint with the packet's destination IP address is
956    // found.
957    UNKNOWN_IP = 2;
958
959    // Aborted because the source IP address doesn't belong to any of the
960    // subnets of the source VPC network.
961    SOURCE_IP_ADDRESS_NOT_IN_SOURCE_NETWORK = 23;
962
963    // Aborted because user lacks permission to access all or part of the
964    // network configurations required to run the test.
965    PERMISSION_DENIED = 4;
966
967    // Aborted because user lacks permission to access Cloud NAT configs
968    // required to run the test.
969    PERMISSION_DENIED_NO_CLOUD_NAT_CONFIGS = 28;
970
971    // Aborted because user lacks permission to access Network endpoint group
972    // endpoint configs required to run the test.
973    PERMISSION_DENIED_NO_NEG_ENDPOINT_CONFIGS = 29;
974
975    // Aborted because no valid source or destination endpoint is derived from
976    // the input test request.
977    NO_SOURCE_LOCATION = 5;
978
979    // Aborted because the source or destination endpoint specified in
980    // the request is invalid. Some examples:
981    // - The request might contain malformed resource URI, project ID, or IP
982    // address.
983    // - The request might contain inconsistent information (for example, the
984    // request might include both the instance and the network, but the instance
985    // might not have a NIC in that network).
986    INVALID_ARGUMENT = 6;
987
988    // Aborted because the number of steps in the trace exceeds a certain
989    // limit. It might be caused by a routing loop.
990    TRACE_TOO_LONG = 9;
991
992    // Aborted due to internal server error.
993    INTERNAL_ERROR = 10;
994
995    // Aborted because the test scenario is not supported.
996    UNSUPPORTED = 15;
997
998    // Aborted because the source and destination resources have no common IP
999    // version.
1000    MISMATCHED_IP_VERSION = 16;
1001
1002    // Aborted because the connection between the control plane and the node of
1003    // the source cluster is initiated by the node and managed by the
1004    // Konnectivity proxy.
1005    GKE_KONNECTIVITY_PROXY_UNSUPPORTED = 17;
1006
1007    // Aborted because expected resource configuration was missing.
1008    RESOURCE_CONFIG_NOT_FOUND = 18;
1009
1010    // Aborted because expected VM instance configuration was missing.
1011    VM_INSTANCE_CONFIG_NOT_FOUND = 24;
1012
1013    // Aborted because expected network configuration was missing.
1014    NETWORK_CONFIG_NOT_FOUND = 25;
1015
1016    // Aborted because expected firewall configuration was missing.
1017    FIREWALL_CONFIG_NOT_FOUND = 26;
1018
1019    // Aborted because expected route configuration was missing.
1020    ROUTE_CONFIG_NOT_FOUND = 27;
1021
1022    // Aborted because a PSC endpoint selection for the Google-managed service
1023    // is ambiguous (several PSC endpoints satisfy test input).
1024    GOOGLE_MANAGED_SERVICE_AMBIGUOUS_PSC_ENDPOINT = 19;
1025
1026    // Aborted because tests with a PSC-based Cloud SQL instance as a source are
1027    // not supported.
1028    SOURCE_PSC_CLOUD_SQL_UNSUPPORTED = 20;
1029
1030    // Aborted because tests with a forwarding rule as a source are not
1031    // supported.
1032    SOURCE_FORWARDING_RULE_UNSUPPORTED = 21;
1033
1034    // Aborted because one of the endpoints is a non-routable IP address
1035    // (loopback, link-local, etc).
1036    NON_ROUTABLE_IP_ADDRESS = 22;
1037
1038    // Aborted due to an unknown issue in the Google-managed project.
1039    UNKNOWN_ISSUE_IN_GOOGLE_MANAGED_PROJECT = 30;
1040
1041    // Aborted due to an unsupported configuration of the Google-managed
1042    // project.
1043    UNSUPPORTED_GOOGLE_MANAGED_PROJECT_CONFIG = 31;
1044  }
1045
1046  // Causes that the analysis is aborted.
1047  Cause cause = 1;
1048
1049  // URI of the resource that caused the abort.
1050  string resource_uri = 2;
1051
1052  // IP address that caused the abort.
1053  string ip_address = 4 [(google.api.field_info).format = IPV4_OR_IPV6];
1054
1055  // List of project IDs the user specified in the request but lacks access to.
1056  // In this case, analysis is aborted with the PERMISSION_DENIED cause.
1057  repeated string projects_missing_permission = 3;
1058}
1059
1060// Details of the final state "drop" and associated resource.
1061message DropInfo {
1062  // Drop cause types:
1063  enum Cause {
1064    // Cause is unspecified.
1065    CAUSE_UNSPECIFIED = 0;
1066
1067    // Destination external address cannot be resolved to a known target. If
1068    // the address is used in a Google Cloud project, provide the project ID
1069    // as test input.
1070    UNKNOWN_EXTERNAL_ADDRESS = 1;
1071
1072    // A Compute Engine instance can only send or receive a packet with a
1073    // foreign IP address if ip_forward is enabled.
1074    FOREIGN_IP_DISALLOWED = 2;
1075
1076    // Dropped due to a firewall rule, unless allowed due to connection
1077    // tracking.
1078    FIREWALL_RULE = 3;
1079
1080    // Dropped due to no matching routes.
1081    NO_ROUTE = 4;
1082
1083    // Dropped due to invalid route. Route's next hop is a blackhole.
1084    ROUTE_BLACKHOLE = 5;
1085
1086    // Packet is sent to a wrong (unintended) network. Example: you trace a
1087    // packet from VM1:Network1 to VM2:Network2, however, the route configured
1088    // in Network1 sends the packet destined for VM2's IP address to Network3.
1089    ROUTE_WRONG_NETWORK = 6;
1090
1091    // Route's next hop IP address cannot be resolved to a GCP resource.
1092    ROUTE_NEXT_HOP_IP_ADDRESS_NOT_RESOLVED = 42;
1093
1094    // Route's next hop resource is not found.
1095    ROUTE_NEXT_HOP_RESOURCE_NOT_FOUND = 43;
1096
1097    // Route's next hop instance doesn't have a NIC in the route's network.
1098    ROUTE_NEXT_HOP_INSTANCE_WRONG_NETWORK = 49;
1099
1100    // Route's next hop IP address is not a primary IP address of the next hop
1101    // instance.
1102    ROUTE_NEXT_HOP_INSTANCE_NON_PRIMARY_IP = 50;
1103
1104    // Route's next hop forwarding rule doesn't match next hop IP address.
1105    ROUTE_NEXT_HOP_FORWARDING_RULE_IP_MISMATCH = 51;
1106
1107    // Route's next hop VPN tunnel is down (does not have valid IKE SAs).
1108    ROUTE_NEXT_HOP_VPN_TUNNEL_NOT_ESTABLISHED = 52;
1109
1110    // Route's next hop forwarding rule type is invalid (it's not a forwarding
1111    // rule of the internal passthrough load balancer).
1112    ROUTE_NEXT_HOP_FORWARDING_RULE_TYPE_INVALID = 53;
1113
1114    // Packet is sent from the Internet to the private IPv6 address.
1115    NO_ROUTE_FROM_INTERNET_TO_PRIVATE_IPV6_ADDRESS = 44;
1116
1117    // The packet does not match a policy-based VPN tunnel local selector.
1118    VPN_TUNNEL_LOCAL_SELECTOR_MISMATCH = 45;
1119
1120    // The packet does not match a policy-based VPN tunnel remote selector.
1121    VPN_TUNNEL_REMOTE_SELECTOR_MISMATCH = 46;
1122
1123    // Packet with internal destination address sent to the internet gateway.
1124    PRIVATE_TRAFFIC_TO_INTERNET = 7;
1125
1126    // Instance with only an internal IP address tries to access Google API and
1127    // services, but private Google access is not enabled in the subnet.
1128    PRIVATE_GOOGLE_ACCESS_DISALLOWED = 8;
1129
1130    // Source endpoint tries to access Google API and services through the VPN
1131    // tunnel to another network, but Private Google Access needs to be enabled
1132    // in the source endpoint network.
1133    PRIVATE_GOOGLE_ACCESS_VIA_VPN_TUNNEL_UNSUPPORTED = 47;
1134
1135    // Instance with only an internal IP address tries to access external hosts,
1136    // but Cloud NAT is not enabled in the subnet, unless special configurations
1137    // on a VM allow this connection.
1138    NO_EXTERNAL_ADDRESS = 9;
1139
1140    // Destination internal address cannot be resolved to a known target. If
1141    // this is a shared VPC scenario, verify if the service project ID is
1142    // provided as test input. Otherwise, verify if the IP address is being
1143    // used in the project.
1144    UNKNOWN_INTERNAL_ADDRESS = 10;
1145
1146    // Forwarding rule's protocol and ports do not match the packet header.
1147    FORWARDING_RULE_MISMATCH = 11;
1148
1149    // Forwarding rule does not have backends configured.
1150    FORWARDING_RULE_NO_INSTANCES = 12;
1151
1152    // Firewalls block the health check probes to the backends and cause
1153    // the backends to be unavailable for traffic from the load balancer.
1154    // For more details, see [Health check firewall
1155    // rules](https://cloud.google.com/load-balancing/docs/health-checks#firewall_rules).
1156    FIREWALL_BLOCKING_LOAD_BALANCER_BACKEND_HEALTH_CHECK = 13;
1157
1158    // Packet is sent from or to a Compute Engine instance that is not in a
1159    // running state.
1160    INSTANCE_NOT_RUNNING = 14;
1161
1162    // Packet sent from or to a GKE cluster that is not in running state.
1163    GKE_CLUSTER_NOT_RUNNING = 27;
1164
1165    // Packet sent from or to a Cloud SQL instance that is not in running state.
1166    CLOUD_SQL_INSTANCE_NOT_RUNNING = 28;
1167
1168    // The type of traffic is blocked and the user cannot configure a firewall
1169    // rule to enable it. See [Always blocked
1170    // traffic](https://cloud.google.com/vpc/docs/firewalls#blockedtraffic) for
1171    // more details.
1172    TRAFFIC_TYPE_BLOCKED = 15;
1173
1174    // Access to Google Kubernetes Engine cluster master's endpoint is not
1175    // authorized. See [Access to the cluster
1176    // endpoints](https://cloud.google.com/kubernetes-engine/docs/how-to/private-clusters#access_to_the_cluster_endpoints)
1177    // for more details.
1178    GKE_MASTER_UNAUTHORIZED_ACCESS = 16;
1179
1180    // Access to the Cloud SQL instance endpoint is not authorized.
1181    // See [Authorizing with authorized
1182    // networks](https://cloud.google.com/sql/docs/mysql/authorize-networks) for
1183    // more details.
1184    CLOUD_SQL_INSTANCE_UNAUTHORIZED_ACCESS = 17;
1185
1186    // Packet was dropped inside Google Kubernetes Engine Service.
1187    DROPPED_INSIDE_GKE_SERVICE = 18;
1188
1189    // Packet was dropped inside Cloud SQL Service.
1190    DROPPED_INSIDE_CLOUD_SQL_SERVICE = 19;
1191
1192    // Packet was dropped because there is no peering between the originating
1193    // network and the Google Managed Services Network.
1194    GOOGLE_MANAGED_SERVICE_NO_PEERING = 20;
1195
1196    // Packet was dropped because the Google-managed service uses Private
1197    // Service Connect (PSC), but the PSC endpoint is not found in the project.
1198    GOOGLE_MANAGED_SERVICE_NO_PSC_ENDPOINT = 38;
1199
1200    // Packet was dropped because the GKE cluster uses Private Service Connect
1201    // (PSC), but the PSC endpoint is not found in the project.
1202    GKE_PSC_ENDPOINT_MISSING = 36;
1203
1204    // Packet was dropped because the Cloud SQL instance has neither a private
1205    // nor a public IP address.
1206    CLOUD_SQL_INSTANCE_NO_IP_ADDRESS = 21;
1207
1208    // Packet was dropped because a GKE cluster private endpoint is
1209    // unreachable from a region different from the cluster's region.
1210    GKE_CONTROL_PLANE_REGION_MISMATCH = 30;
1211
1212    // Packet sent from a public GKE cluster control plane to a private
1213    // IP address.
1214    PUBLIC_GKE_CONTROL_PLANE_TO_PRIVATE_DESTINATION = 31;
1215
1216    // Packet was dropped because there is no route from a GKE cluster
1217    // control plane to a destination network.
1218    GKE_CONTROL_PLANE_NO_ROUTE = 32;
1219
1220    // Packet sent from a Cloud SQL instance to an external IP address is not
1221    // allowed. The Cloud SQL instance is not configured to send packets to
1222    // external IP addresses.
1223    CLOUD_SQL_INSTANCE_NOT_CONFIGURED_FOR_EXTERNAL_TRAFFIC = 33;
1224
1225    // Packet sent from a Cloud SQL instance with only a public IP address to a
1226    // private IP address.
1227    PUBLIC_CLOUD_SQL_INSTANCE_TO_PRIVATE_DESTINATION = 34;
1228
1229    // Packet was dropped because there is no route from a Cloud SQL
1230    // instance to a destination network.
1231    CLOUD_SQL_INSTANCE_NO_ROUTE = 35;
1232
1233    // Packet could be dropped because the Cloud Function is not in an active
1234    // status.
1235    CLOUD_FUNCTION_NOT_ACTIVE = 22;
1236
1237    // Packet could be dropped because no VPC connector is set.
1238    VPC_CONNECTOR_NOT_SET = 23;
1239
1240    // Packet could be dropped because the VPC connector is not in a running
1241    // state.
1242    VPC_CONNECTOR_NOT_RUNNING = 24;
1243
1244    // Packet could be dropped because it was sent from a different region
1245    // to a regional forwarding without global access.
1246    FORWARDING_RULE_REGION_MISMATCH = 25;
1247
1248    // The Private Service Connect endpoint is in a project that is not approved
1249    // to connect to the service.
1250    PSC_CONNECTION_NOT_ACCEPTED = 26;
1251
1252    // The packet is sent to the Private Service Connect endpoint over the
1253    // peering, but [it's not
1254    // supported](https://cloud.google.com/vpc/docs/configure-private-service-connect-services#on-premises).
1255    PSC_ENDPOINT_ACCESSED_FROM_PEERED_NETWORK = 41;
1256
1257    // The packet is sent to the Private Service Connect backend (network
1258    // endpoint group), but the producer PSC forwarding rule does not have
1259    // global access enabled.
1260    PSC_NEG_PRODUCER_ENDPOINT_NO_GLOBAL_ACCESS = 48;
1261
1262    // The packet is sent to the Private Service Connect backend (network
1263    // endpoint group), but the producer PSC forwarding rule has multiple ports
1264    // specified.
1265    PSC_NEG_PRODUCER_FORWARDING_RULE_MULTIPLE_PORTS = 54;
1266
1267    // The packet is sent to the Private Service Connect backend (network
1268    // endpoint group) targeting a Cloud SQL service attachment, but this
1269    // configuration is not supported.
1270    CLOUD_SQL_PSC_NEG_UNSUPPORTED = 58;
1271
1272    // No NAT subnets are defined for the PSC service attachment.
1273    NO_NAT_SUBNETS_FOR_PSC_SERVICE_ATTACHMENT = 57;
1274
1275    // The packet sent from the hybrid NEG proxy matches a non-dynamic route,
1276    // but such a configuration is not supported.
1277    HYBRID_NEG_NON_DYNAMIC_ROUTE_MATCHED = 55;
1278
1279    // The packet sent from the hybrid NEG proxy matches a dynamic route with a
1280    // next hop in a different region, but such a configuration is not
1281    // supported.
1282    HYBRID_NEG_NON_LOCAL_DYNAMIC_ROUTE_MATCHED = 56;
1283
1284    // Packet sent from a Cloud Run revision that is not ready.
1285    CLOUD_RUN_REVISION_NOT_READY = 29;
1286
1287    // Packet was dropped inside Private Service Connect service producer.
1288    DROPPED_INSIDE_PSC_SERVICE_PRODUCER = 37;
1289
1290    // Packet sent to a load balancer, which requires a proxy-only subnet and
1291    // the subnet is not found.
1292    LOAD_BALANCER_HAS_NO_PROXY_SUBNET = 39;
1293
1294    // Packet sent to Cloud Nat without active NAT IPs.
1295    CLOUD_NAT_NO_ADDRESSES = 40;
1296
1297    // Packet is stuck in a routing loop.
1298    ROUTING_LOOP = 59;
1299  }
1300
1301  // Cause that the packet is dropped.
1302  Cause cause = 1;
1303
1304  // URI of the resource that caused the drop.
1305  string resource_uri = 2;
1306
1307  // Source IP address of the dropped packet (if relevant).
1308  string source_ip = 3;
1309
1310  // Destination IP address of the dropped packet (if relevant).
1311  string destination_ip = 4;
1312
1313  // Region of the dropped packet (if relevant).
1314  string region = 5;
1315}
1316
1317// For display only. Metadata associated with a Google Kubernetes Engine (GKE)
1318// cluster master.
1319message GKEMasterInfo {
1320  // URI of a GKE cluster.
1321  string cluster_uri = 2;
1322
1323  // URI of a GKE cluster network.
1324  string cluster_network_uri = 4;
1325
1326  // Internal IP address of a GKE cluster master.
1327  string internal_ip = 5;
1328
1329  // External IP address of a GKE cluster master.
1330  string external_ip = 6;
1331}
1332
1333// For display only. Metadata associated with a Cloud SQL instance.
1334message CloudSQLInstanceInfo {
1335  // Name of a Cloud SQL instance.
1336  string display_name = 1;
1337
1338  // URI of a Cloud SQL instance.
1339  string uri = 2;
1340
1341  // URI of a Cloud SQL instance network or empty string if the instance does
1342  // not have one.
1343  string network_uri = 4;
1344
1345  // Internal IP address of a Cloud SQL instance.
1346  string internal_ip = 5;
1347
1348  // External IP address of a Cloud SQL instance.
1349  string external_ip = 6;
1350
1351  // Region in which the Cloud SQL instance is running.
1352  string region = 7;
1353}
1354
1355// For display only. Metadata associated with a Cloud Function.
1356message CloudFunctionInfo {
1357  // Name of a Cloud Function.
1358  string display_name = 1;
1359
1360  // URI of a Cloud Function.
1361  string uri = 2;
1362
1363  // Location in which the Cloud Function is deployed.
1364  string location = 3;
1365
1366  // Latest successfully deployed version id of the Cloud Function.
1367  int64 version_id = 4;
1368}
1369
1370// For display only. Metadata associated with a Cloud Run revision.
1371message CloudRunRevisionInfo {
1372  // Name of a Cloud Run revision.
1373  string display_name = 1;
1374
1375  // URI of a Cloud Run revision.
1376  string uri = 2;
1377
1378  // Location in which this revision is deployed.
1379  string location = 4;
1380
1381  // URI of Cloud Run service this revision belongs to.
1382  string service_uri = 5;
1383}
1384
1385// For display only. Metadata associated with an App Engine version.
1386message AppEngineVersionInfo {
1387  // Name of an App Engine version.
1388  string display_name = 1;
1389
1390  // URI of an App Engine version.
1391  string uri = 2;
1392
1393  // Runtime of the App Engine version.
1394  string runtime = 3;
1395
1396  // App Engine execution environment for a version.
1397  string environment = 4;
1398}
1399
1400// For display only. Metadata associated with a VPC connector.
1401message VpcConnectorInfo {
1402  // Name of a VPC connector.
1403  string display_name = 1;
1404
1405  // URI of a VPC connector.
1406  string uri = 2;
1407
1408  // Location in which the VPC connector is deployed.
1409  string location = 3;
1410}
1411
1412// For display only. Metadata associated with NAT.
1413message NatInfo {
1414  // Types of NAT.
1415  enum Type {
1416    // Type is unspecified.
1417    TYPE_UNSPECIFIED = 0;
1418
1419    // From Compute Engine instance's internal address to external address.
1420    INTERNAL_TO_EXTERNAL = 1;
1421
1422    // From Compute Engine instance's external address to internal address.
1423    EXTERNAL_TO_INTERNAL = 2;
1424
1425    // Cloud NAT Gateway.
1426    CLOUD_NAT = 3;
1427
1428    // Private service connect NAT.
1429    PRIVATE_SERVICE_CONNECT = 4;
1430  }
1431
1432  // Type of NAT.
1433  Type type = 1;
1434
1435  // IP protocol in string format, for example: "TCP", "UDP", "ICMP".
1436  string protocol = 2;
1437
1438  // URI of the network where NAT translation takes place.
1439  string network_uri = 3;
1440
1441  // Source IP address before NAT translation.
1442  string old_source_ip = 4;
1443
1444  // Source IP address after NAT translation.
1445  string new_source_ip = 5;
1446
1447  // Destination IP address before NAT translation.
1448  string old_destination_ip = 6;
1449
1450  // Destination IP address after NAT translation.
1451  string new_destination_ip = 7;
1452
1453  // Source port before NAT translation. Only valid when protocol is TCP or UDP.
1454  int32 old_source_port = 8;
1455
1456  // Source port after NAT translation. Only valid when protocol is TCP or UDP.
1457  int32 new_source_port = 9;
1458
1459  // Destination port before NAT translation. Only valid when protocol is TCP or
1460  // UDP.
1461  int32 old_destination_port = 10;
1462
1463  // Destination port after NAT translation. Only valid when protocol is TCP or
1464  // UDP.
1465  int32 new_destination_port = 11;
1466
1467  // Uri of the Cloud Router. Only valid when type is CLOUD_NAT.
1468  string router_uri = 12;
1469
1470  // The name of Cloud NAT Gateway. Only valid when type is CLOUD_NAT.
1471  string nat_gateway_name = 13;
1472}
1473
1474// For display only. Metadata associated with ProxyConnection.
1475message ProxyConnectionInfo {
1476  // IP protocol in string format, for example: "TCP", "UDP", "ICMP".
1477  string protocol = 1;
1478
1479  // Source IP address of an original connection.
1480  string old_source_ip = 2;
1481
1482  // Source IP address of a new connection.
1483  string new_source_ip = 3;
1484
1485  // Destination IP address of an original connection
1486  string old_destination_ip = 4;
1487
1488  // Destination IP address of a new connection.
1489  string new_destination_ip = 5;
1490
1491  // Source port of an original connection. Only valid when protocol is TCP or
1492  // UDP.
1493  int32 old_source_port = 6;
1494
1495  // Source port of a new connection. Only valid when protocol is TCP or UDP.
1496  int32 new_source_port = 7;
1497
1498  // Destination port of an original connection. Only valid when protocol is TCP
1499  // or UDP.
1500  int32 old_destination_port = 8;
1501
1502  // Destination port of a new connection. Only valid when protocol is TCP or
1503  // UDP.
1504  int32 new_destination_port = 9;
1505
1506  // Uri of proxy subnet.
1507  string subnet_uri = 10;
1508
1509  // URI of the network where connection is proxied.
1510  string network_uri = 11;
1511}
1512
1513// For display only. Metadata associated with the load balancer backend.
1514message LoadBalancerBackendInfo {
1515  // Health check firewalls configuration state enum.
1516  enum HealthCheckFirewallsConfigState {
1517    // Configuration state unspecified. It usually means that the backend has
1518    // no health check attached, or there was an unexpected configuration error
1519    // preventing Connectivity tests from verifying health check configuration.
1520    HEALTH_CHECK_FIREWALLS_CONFIG_STATE_UNSPECIFIED = 0;
1521
1522    // Firewall rules (policies) allowing health check traffic from all required
1523    // IP ranges to the backend are configured.
1524    FIREWALLS_CONFIGURED = 1;
1525
1526    // Firewall rules (policies) allow health check traffic only from a part of
1527    // required IP ranges.
1528    FIREWALLS_PARTIALLY_CONFIGURED = 2;
1529
1530    // Firewall rules (policies) deny health check traffic from all required
1531    // IP ranges to the backend.
1532    FIREWALLS_NOT_CONFIGURED = 3;
1533
1534    // The network contains firewall rules of unsupported types, so Connectivity
1535    // tests were not able to verify health check configuration status. Please
1536    // refer to the documentation for the list of unsupported configurations:
1537    // https://cloud.google.com/network-intelligence-center/docs/connectivity-tests/concepts/overview#unsupported-configs
1538    FIREWALLS_UNSUPPORTED = 4;
1539  }
1540
1541  // Display name of the backend. For example, it might be an instance name for
1542  // the instance group backends, or an IP address and port for zonal network
1543  // endpoint group backends.
1544  string name = 1;
1545
1546  // URI of the backend instance (if applicable). Populated for instance group
1547  // backends, and zonal NEG backends.
1548  string instance_uri = 2;
1549
1550  // URI of the backend service this backend belongs to (if applicable).
1551  string backend_service_uri = 3;
1552
1553  // URI of the instance group this backend belongs to (if applicable).
1554  string instance_group_uri = 4;
1555
1556  // URI of the network endpoint group this backend belongs to (if applicable).
1557  string network_endpoint_group_uri = 5;
1558
1559  // URI of the backend bucket this backend targets (if applicable).
1560  string backend_bucket_uri = 8;
1561
1562  // URI of the PSC service attachment this PSC NEG backend targets (if
1563  // applicable).
1564  string psc_service_attachment_uri = 9;
1565
1566  // PSC Google API target this PSC NEG backend targets (if applicable).
1567  string psc_google_api_target = 10;
1568
1569  // URI of the health check attached to this backend (if applicable).
1570  string health_check_uri = 6;
1571
1572  // Output only. Health check firewalls configuration state for the backend.
1573  // This is a result of the static firewall analysis (verifying that health
1574  // check traffic from required IP ranges to the backend is allowed or not).
1575  // The backend might still be unhealthy even if these firewalls are
1576  // configured. Please refer to the documentation for more information:
1577  // https://cloud.google.com/load-balancing/docs/firewall-rules
1578  HealthCheckFirewallsConfigState health_check_firewalls_config_state = 7
1579      [(google.api.field_behavior) = OUTPUT_ONLY];
1580}
1581
1582// Type of a load balancer. For more information, see [Summary of Google Cloud
1583// load
1584// balancers](https://cloud.google.com/load-balancing/docs/load-balancing-overview#summary-of-google-cloud-load-balancers).
1585enum LoadBalancerType {
1586  // Forwarding rule points to a different target than a load balancer or a
1587  // load balancer type is unknown.
1588  LOAD_BALANCER_TYPE_UNSPECIFIED = 0;
1589
1590  // Global external HTTP(S) load balancer.
1591  HTTPS_ADVANCED_LOAD_BALANCER = 1;
1592
1593  // Global external HTTP(S) load balancer (classic)
1594  HTTPS_LOAD_BALANCER = 2;
1595
1596  // Regional external HTTP(S) load balancer.
1597  REGIONAL_HTTPS_LOAD_BALANCER = 3;
1598
1599  // Internal HTTP(S) load balancer.
1600  INTERNAL_HTTPS_LOAD_BALANCER = 4;
1601
1602  // External SSL proxy load balancer.
1603  SSL_PROXY_LOAD_BALANCER = 5;
1604
1605  // External TCP proxy load balancer.
1606  TCP_PROXY_LOAD_BALANCER = 6;
1607
1608  // Internal regional TCP proxy load balancer.
1609  INTERNAL_TCP_PROXY_LOAD_BALANCER = 7;
1610
1611  // External TCP/UDP Network load balancer.
1612  NETWORK_LOAD_BALANCER = 8;
1613
1614  // Target-pool based external TCP/UDP Network load balancer.
1615  LEGACY_NETWORK_LOAD_BALANCER = 9;
1616
1617  // Internal TCP/UDP load balancer.
1618  TCP_UDP_INTERNAL_LOAD_BALANCER = 10;
1619}
1620
1621// For display only. Metadata associated with Storage Bucket.
1622message StorageBucketInfo {
1623  // Cloud Storage Bucket name.
1624  string bucket = 1;
1625}
1626