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