xref: /aosp_15_r20/external/grpc-grpc-java/xds/third_party/xds/src/main/proto/xds/service/orca/v3/orca.proto (revision e07d83d3ffcef9ecfc9f7f475418ec639ff0e5fe)
1syntax = "proto3";
2
3package xds.service.orca.v3;
4
5option java_outer_classname = "OrcaProto";
6option java_multiple_files = true;
7option java_package = "com.github.xds.service.orca.v3";
8option go_package = "github.com/cncf/xds/go/xds/service/orca/v3";
9
10import "xds/data/orca/v3/orca_load_report.proto";
11
12import "google/protobuf/duration.proto";
13
14// See section `Out-of-band (OOB) reporting` of the design document in
15// :ref:`https://github.com/envoyproxy/envoy/issues/6614`.
16
17// Out-of-band (OOB) load reporting service for the additional load reporting
18// agent that does not sit in the request path. Reports are periodically sampled
19// with sufficient frequency to provide temporal association with requests.
20// OOB reporting compensates the limitation of in-band reporting in revealing
21// costs for backends that do not provide a steady stream of telemetry such as
22// long running stream operations and zero QPS services. This is a server
23// streaming service, client needs to terminate current RPC and initiate
24// a new call to change backend reporting frequency.
25service OpenRcaService {
26  rpc StreamCoreMetrics(OrcaLoadReportRequest) returns (stream xds.data.orca.v3.OrcaLoadReport);
27}
28
29message OrcaLoadReportRequest {
30  // Interval for generating Open RCA core metric responses.
31  google.protobuf.Duration report_interval = 1;
32  // Request costs to collect. If this is empty, all known requests costs tracked by
33  // the load reporting agent will be returned. This provides an opportunity for
34  // the client to selectively obtain a subset of tracked costs.
35  repeated string request_cost_names = 2;
36}
37