protobuf: update all generated code to google.golang.org/protobuf (#3932)

diff --git a/balancer/grpclb/grpc_lb_v1/load_balancer.pb.go b/balancer/grpclb/grpc_lb_v1/load_balancer.pb.go
index 7381dfc..4725858 100644
--- a/balancer/grpclb/grpc_lb_v1/load_balancer.pb.go
+++ b/balancer/grpclb/grpc_lb_v1/load_balancer.pb.go
@@ -1,78 +1,94 @@
+// Copyright 2015 The gRPC Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// This file defines the GRPCLB LoadBalancing protocol.
+//
+// The canonical version of this proto can be found at
+// https://github.com/grpc/grpc-proto/blob/master/grpc/lb/v1/load_balancer.proto
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.25.0
+// 	protoc        v3.3.0
 // source: grpc/lb/v1/load_balancer.proto
 
 package grpc_lb_v1
 
 import (
-	fmt "fmt"
 	proto "github.com/golang/protobuf/proto"
 	duration "github.com/golang/protobuf/ptypes/duration"
 	timestamp "github.com/golang/protobuf/ptypes/timestamp"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
 )
 
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
 
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+// This is a compile-time assertion that a sufficiently up-to-date version
+// of the legacy proto package is being used.
+const _ = proto.ProtoPackageIsVersion4
 
 type LoadBalanceRequest struct {
-	// Types that are valid to be assigned to LoadBalanceRequestType:
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// Types that are assignable to LoadBalanceRequestType:
 	//	*LoadBalanceRequest_InitialRequest
 	//	*LoadBalanceRequest_ClientStats
 	LoadBalanceRequestType isLoadBalanceRequest_LoadBalanceRequestType `protobuf_oneof:"load_balance_request_type"`
-	XXX_NoUnkeyedLiteral   struct{}                                    `json:"-"`
-	XXX_unrecognized       []byte                                      `json:"-"`
-	XXX_sizecache          int32                                       `json:"-"`
 }
 
-func (m *LoadBalanceRequest) Reset()         { *m = LoadBalanceRequest{} }
-func (m *LoadBalanceRequest) String() string { return proto.CompactTextString(m) }
-func (*LoadBalanceRequest) ProtoMessage()    {}
+func (x *LoadBalanceRequest) Reset() {
+	*x = LoadBalanceRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_lb_v1_load_balancer_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *LoadBalanceRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*LoadBalanceRequest) ProtoMessage() {}
+
+func (x *LoadBalanceRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_lb_v1_load_balancer_proto_msgTypes[0]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use LoadBalanceRequest.ProtoReflect.Descriptor instead.
 func (*LoadBalanceRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7cd3f6d792743fdf, []int{0}
+	return file_grpc_lb_v1_load_balancer_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *LoadBalanceRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_LoadBalanceRequest.Unmarshal(m, b)
-}
-func (m *LoadBalanceRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_LoadBalanceRequest.Marshal(b, m, deterministic)
-}
-func (m *LoadBalanceRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_LoadBalanceRequest.Merge(m, src)
-}
-func (m *LoadBalanceRequest) XXX_Size() int {
-	return xxx_messageInfo_LoadBalanceRequest.Size(m)
-}
-func (m *LoadBalanceRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_LoadBalanceRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_LoadBalanceRequest proto.InternalMessageInfo
-
-type isLoadBalanceRequest_LoadBalanceRequestType interface {
-	isLoadBalanceRequest_LoadBalanceRequestType()
-}
-
-type LoadBalanceRequest_InitialRequest struct {
-	InitialRequest *InitialLoadBalanceRequest `protobuf:"bytes,1,opt,name=initial_request,json=initialRequest,proto3,oneof"`
-}
-
-type LoadBalanceRequest_ClientStats struct {
-	ClientStats *ClientStats `protobuf:"bytes,2,opt,name=client_stats,json=clientStats,proto3,oneof"`
-}
-
-func (*LoadBalanceRequest_InitialRequest) isLoadBalanceRequest_LoadBalanceRequestType() {}
-
-func (*LoadBalanceRequest_ClientStats) isLoadBalanceRequest_LoadBalanceRequestType() {}
-
 func (m *LoadBalanceRequest) GetLoadBalanceRequestType() isLoadBalanceRequest_LoadBalanceRequestType {
 	if m != nil {
 		return m.LoadBalanceRequestType
@@ -80,117 +96,144 @@
 	return nil
 }
 
-func (m *LoadBalanceRequest) GetInitialRequest() *InitialLoadBalanceRequest {
-	if x, ok := m.GetLoadBalanceRequestType().(*LoadBalanceRequest_InitialRequest); ok {
+func (x *LoadBalanceRequest) GetInitialRequest() *InitialLoadBalanceRequest {
+	if x, ok := x.GetLoadBalanceRequestType().(*LoadBalanceRequest_InitialRequest); ok {
 		return x.InitialRequest
 	}
 	return nil
 }
 
-func (m *LoadBalanceRequest) GetClientStats() *ClientStats {
-	if x, ok := m.GetLoadBalanceRequestType().(*LoadBalanceRequest_ClientStats); ok {
+func (x *LoadBalanceRequest) GetClientStats() *ClientStats {
+	if x, ok := x.GetLoadBalanceRequestType().(*LoadBalanceRequest_ClientStats); ok {
 		return x.ClientStats
 	}
 	return nil
 }
 
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*LoadBalanceRequest) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*LoadBalanceRequest_InitialRequest)(nil),
-		(*LoadBalanceRequest_ClientStats)(nil),
-	}
+type isLoadBalanceRequest_LoadBalanceRequestType interface {
+	isLoadBalanceRequest_LoadBalanceRequestType()
 }
 
+type LoadBalanceRequest_InitialRequest struct {
+	// This message should be sent on the first request to the load balancer.
+	InitialRequest *InitialLoadBalanceRequest `protobuf:"bytes,1,opt,name=initial_request,json=initialRequest,proto3,oneof"`
+}
+
+type LoadBalanceRequest_ClientStats struct {
+	// The client stats should be periodically reported to the load balancer
+	// based on the duration defined in the InitialLoadBalanceResponse.
+	ClientStats *ClientStats `protobuf:"bytes,2,opt,name=client_stats,json=clientStats,proto3,oneof"`
+}
+
+func (*LoadBalanceRequest_InitialRequest) isLoadBalanceRequest_LoadBalanceRequestType() {}
+
+func (*LoadBalanceRequest_ClientStats) isLoadBalanceRequest_LoadBalanceRequestType() {}
+
 type InitialLoadBalanceRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The name of the load balanced service (e.g., service.googleapis.com). Its
 	// length should be less than 256 bytes.
 	// The name might include a port number. How to handle the port number is up
 	// to the balancer.
-	Name                 string   `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
 }
 
-func (m *InitialLoadBalanceRequest) Reset()         { *m = InitialLoadBalanceRequest{} }
-func (m *InitialLoadBalanceRequest) String() string { return proto.CompactTextString(m) }
-func (*InitialLoadBalanceRequest) ProtoMessage()    {}
+func (x *InitialLoadBalanceRequest) Reset() {
+	*x = InitialLoadBalanceRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_lb_v1_load_balancer_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *InitialLoadBalanceRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*InitialLoadBalanceRequest) ProtoMessage() {}
+
+func (x *InitialLoadBalanceRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_lb_v1_load_balancer_proto_msgTypes[1]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use InitialLoadBalanceRequest.ProtoReflect.Descriptor instead.
 func (*InitialLoadBalanceRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7cd3f6d792743fdf, []int{1}
+	return file_grpc_lb_v1_load_balancer_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *InitialLoadBalanceRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_InitialLoadBalanceRequest.Unmarshal(m, b)
-}
-func (m *InitialLoadBalanceRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_InitialLoadBalanceRequest.Marshal(b, m, deterministic)
-}
-func (m *InitialLoadBalanceRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_InitialLoadBalanceRequest.Merge(m, src)
-}
-func (m *InitialLoadBalanceRequest) XXX_Size() int {
-	return xxx_messageInfo_InitialLoadBalanceRequest.Size(m)
-}
-func (m *InitialLoadBalanceRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_InitialLoadBalanceRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_InitialLoadBalanceRequest proto.InternalMessageInfo
-
-func (m *InitialLoadBalanceRequest) GetName() string {
-	if m != nil {
-		return m.Name
+func (x *InitialLoadBalanceRequest) GetName() string {
+	if x != nil {
+		return x.Name
 	}
 	return ""
 }
 
 // Contains the number of calls finished for a particular load balance token.
 type ClientStatsPerToken struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// See Server.load_balance_token.
 	LoadBalanceToken string `protobuf:"bytes,1,opt,name=load_balance_token,json=loadBalanceToken,proto3" json:"load_balance_token,omitempty"`
 	// The total number of RPCs that finished associated with the token.
-	NumCalls             int64    `protobuf:"varint,2,opt,name=num_calls,json=numCalls,proto3" json:"num_calls,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	NumCalls int64 `protobuf:"varint,2,opt,name=num_calls,json=numCalls,proto3" json:"num_calls,omitempty"`
 }
 
-func (m *ClientStatsPerToken) Reset()         { *m = ClientStatsPerToken{} }
-func (m *ClientStatsPerToken) String() string { return proto.CompactTextString(m) }
-func (*ClientStatsPerToken) ProtoMessage()    {}
+func (x *ClientStatsPerToken) Reset() {
+	*x = ClientStatsPerToken{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_lb_v1_load_balancer_proto_msgTypes[2]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ClientStatsPerToken) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ClientStatsPerToken) ProtoMessage() {}
+
+func (x *ClientStatsPerToken) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_lb_v1_load_balancer_proto_msgTypes[2]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ClientStatsPerToken.ProtoReflect.Descriptor instead.
 func (*ClientStatsPerToken) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7cd3f6d792743fdf, []int{2}
+	return file_grpc_lb_v1_load_balancer_proto_rawDescGZIP(), []int{2}
 }
 
-func (m *ClientStatsPerToken) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ClientStatsPerToken.Unmarshal(m, b)
-}
-func (m *ClientStatsPerToken) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ClientStatsPerToken.Marshal(b, m, deterministic)
-}
-func (m *ClientStatsPerToken) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ClientStatsPerToken.Merge(m, src)
-}
-func (m *ClientStatsPerToken) XXX_Size() int {
-	return xxx_messageInfo_ClientStatsPerToken.Size(m)
-}
-func (m *ClientStatsPerToken) XXX_DiscardUnknown() {
-	xxx_messageInfo_ClientStatsPerToken.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ClientStatsPerToken proto.InternalMessageInfo
-
-func (m *ClientStatsPerToken) GetLoadBalanceToken() string {
-	if m != nil {
-		return m.LoadBalanceToken
+func (x *ClientStatsPerToken) GetLoadBalanceToken() string {
+	if x != nil {
+		return x.LoadBalanceToken
 	}
 	return ""
 }
 
-func (m *ClientStatsPerToken) GetNumCalls() int64 {
-	if m != nil {
-		return m.NumCalls
+func (x *ClientStatsPerToken) GetNumCalls() int64 {
+	if x != nil {
+		return x.NumCalls
 	}
 	return 0
 }
@@ -198,6 +241,10 @@
 // Contains client level statistics that are useful to load balancing. Each
 // count except the timestamp should be reset to zero after reporting the stats.
 type ClientStats struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The timestamp of generating the report.
 	Timestamp *timestamp.Timestamp `protobuf:"bytes,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
 	// The total number of RPCs that started.
@@ -211,127 +258,172 @@
 	NumCallsFinishedKnownReceived int64 `protobuf:"varint,7,opt,name=num_calls_finished_known_received,json=numCallsFinishedKnownReceived,proto3" json:"num_calls_finished_known_received,omitempty"`
 	// The list of dropped calls.
 	CallsFinishedWithDrop []*ClientStatsPerToken `protobuf:"bytes,8,rep,name=calls_finished_with_drop,json=callsFinishedWithDrop,proto3" json:"calls_finished_with_drop,omitempty"`
-	XXX_NoUnkeyedLiteral  struct{}               `json:"-"`
-	XXX_unrecognized      []byte                 `json:"-"`
-	XXX_sizecache         int32                  `json:"-"`
 }
 
-func (m *ClientStats) Reset()         { *m = ClientStats{} }
-func (m *ClientStats) String() string { return proto.CompactTextString(m) }
-func (*ClientStats) ProtoMessage()    {}
+func (x *ClientStats) Reset() {
+	*x = ClientStats{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_lb_v1_load_balancer_proto_msgTypes[3]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ClientStats) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ClientStats) ProtoMessage() {}
+
+func (x *ClientStats) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_lb_v1_load_balancer_proto_msgTypes[3]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ClientStats.ProtoReflect.Descriptor instead.
 func (*ClientStats) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7cd3f6d792743fdf, []int{3}
+	return file_grpc_lb_v1_load_balancer_proto_rawDescGZIP(), []int{3}
 }
 
-func (m *ClientStats) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ClientStats.Unmarshal(m, b)
-}
-func (m *ClientStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ClientStats.Marshal(b, m, deterministic)
-}
-func (m *ClientStats) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ClientStats.Merge(m, src)
-}
-func (m *ClientStats) XXX_Size() int {
-	return xxx_messageInfo_ClientStats.Size(m)
-}
-func (m *ClientStats) XXX_DiscardUnknown() {
-	xxx_messageInfo_ClientStats.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ClientStats proto.InternalMessageInfo
-
-func (m *ClientStats) GetTimestamp() *timestamp.Timestamp {
-	if m != nil {
-		return m.Timestamp
+func (x *ClientStats) GetTimestamp() *timestamp.Timestamp {
+	if x != nil {
+		return x.Timestamp
 	}
 	return nil
 }
 
-func (m *ClientStats) GetNumCallsStarted() int64 {
-	if m != nil {
-		return m.NumCallsStarted
+func (x *ClientStats) GetNumCallsStarted() int64 {
+	if x != nil {
+		return x.NumCallsStarted
 	}
 	return 0
 }
 
-func (m *ClientStats) GetNumCallsFinished() int64 {
-	if m != nil {
-		return m.NumCallsFinished
+func (x *ClientStats) GetNumCallsFinished() int64 {
+	if x != nil {
+		return x.NumCallsFinished
 	}
 	return 0
 }
 
-func (m *ClientStats) GetNumCallsFinishedWithClientFailedToSend() int64 {
-	if m != nil {
-		return m.NumCallsFinishedWithClientFailedToSend
+func (x *ClientStats) GetNumCallsFinishedWithClientFailedToSend() int64 {
+	if x != nil {
+		return x.NumCallsFinishedWithClientFailedToSend
 	}
 	return 0
 }
 
-func (m *ClientStats) GetNumCallsFinishedKnownReceived() int64 {
-	if m != nil {
-		return m.NumCallsFinishedKnownReceived
+func (x *ClientStats) GetNumCallsFinishedKnownReceived() int64 {
+	if x != nil {
+		return x.NumCallsFinishedKnownReceived
 	}
 	return 0
 }
 
-func (m *ClientStats) GetCallsFinishedWithDrop() []*ClientStatsPerToken {
-	if m != nil {
-		return m.CallsFinishedWithDrop
+func (x *ClientStats) GetCallsFinishedWithDrop() []*ClientStatsPerToken {
+	if x != nil {
+		return x.CallsFinishedWithDrop
 	}
 	return nil
 }
 
 type LoadBalanceResponse struct {
-	// Types that are valid to be assigned to LoadBalanceResponseType:
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// Types that are assignable to LoadBalanceResponseType:
 	//	*LoadBalanceResponse_InitialResponse
 	//	*LoadBalanceResponse_ServerList
 	//	*LoadBalanceResponse_FallbackResponse
 	LoadBalanceResponseType isLoadBalanceResponse_LoadBalanceResponseType `protobuf_oneof:"load_balance_response_type"`
-	XXX_NoUnkeyedLiteral    struct{}                                      `json:"-"`
-	XXX_unrecognized        []byte                                        `json:"-"`
-	XXX_sizecache           int32                                         `json:"-"`
 }
 
-func (m *LoadBalanceResponse) Reset()         { *m = LoadBalanceResponse{} }
-func (m *LoadBalanceResponse) String() string { return proto.CompactTextString(m) }
-func (*LoadBalanceResponse) ProtoMessage()    {}
+func (x *LoadBalanceResponse) Reset() {
+	*x = LoadBalanceResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_lb_v1_load_balancer_proto_msgTypes[4]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *LoadBalanceResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*LoadBalanceResponse) ProtoMessage() {}
+
+func (x *LoadBalanceResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_lb_v1_load_balancer_proto_msgTypes[4]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use LoadBalanceResponse.ProtoReflect.Descriptor instead.
 func (*LoadBalanceResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7cd3f6d792743fdf, []int{4}
+	return file_grpc_lb_v1_load_balancer_proto_rawDescGZIP(), []int{4}
 }
 
-func (m *LoadBalanceResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_LoadBalanceResponse.Unmarshal(m, b)
-}
-func (m *LoadBalanceResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_LoadBalanceResponse.Marshal(b, m, deterministic)
-}
-func (m *LoadBalanceResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_LoadBalanceResponse.Merge(m, src)
-}
-func (m *LoadBalanceResponse) XXX_Size() int {
-	return xxx_messageInfo_LoadBalanceResponse.Size(m)
-}
-func (m *LoadBalanceResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_LoadBalanceResponse.DiscardUnknown(m)
+func (m *LoadBalanceResponse) GetLoadBalanceResponseType() isLoadBalanceResponse_LoadBalanceResponseType {
+	if m != nil {
+		return m.LoadBalanceResponseType
+	}
+	return nil
 }
 
-var xxx_messageInfo_LoadBalanceResponse proto.InternalMessageInfo
+func (x *LoadBalanceResponse) GetInitialResponse() *InitialLoadBalanceResponse {
+	if x, ok := x.GetLoadBalanceResponseType().(*LoadBalanceResponse_InitialResponse); ok {
+		return x.InitialResponse
+	}
+	return nil
+}
+
+func (x *LoadBalanceResponse) GetServerList() *ServerList {
+	if x, ok := x.GetLoadBalanceResponseType().(*LoadBalanceResponse_ServerList); ok {
+		return x.ServerList
+	}
+	return nil
+}
+
+func (x *LoadBalanceResponse) GetFallbackResponse() *FallbackResponse {
+	if x, ok := x.GetLoadBalanceResponseType().(*LoadBalanceResponse_FallbackResponse); ok {
+		return x.FallbackResponse
+	}
+	return nil
+}
 
 type isLoadBalanceResponse_LoadBalanceResponseType interface {
 	isLoadBalanceResponse_LoadBalanceResponseType()
 }
 
 type LoadBalanceResponse_InitialResponse struct {
+	// This message should be sent on the first response to the client.
 	InitialResponse *InitialLoadBalanceResponse `protobuf:"bytes,1,opt,name=initial_response,json=initialResponse,proto3,oneof"`
 }
 
 type LoadBalanceResponse_ServerList struct {
+	// Contains the list of servers selected by the load balancer. The client
+	// should send requests to these servers in the specified order.
 	ServerList *ServerList `protobuf:"bytes,2,opt,name=server_list,json=serverList,proto3,oneof"`
 }
 
 type LoadBalanceResponse_FallbackResponse struct {
+	// If this field is set, then the client should eagerly enter fallback
+	// mode (even if there are existing, healthy connections to backends).
 	FallbackResponse *FallbackResponse `protobuf:"bytes,3,opt,name=fallback_response,json=fallbackResponse,proto3,oneof"`
 }
 
@@ -341,155 +433,141 @@
 
 func (*LoadBalanceResponse_FallbackResponse) isLoadBalanceResponse_LoadBalanceResponseType() {}
 
-func (m *LoadBalanceResponse) GetLoadBalanceResponseType() isLoadBalanceResponse_LoadBalanceResponseType {
-	if m != nil {
-		return m.LoadBalanceResponseType
-	}
-	return nil
-}
-
-func (m *LoadBalanceResponse) GetInitialResponse() *InitialLoadBalanceResponse {
-	if x, ok := m.GetLoadBalanceResponseType().(*LoadBalanceResponse_InitialResponse); ok {
-		return x.InitialResponse
-	}
-	return nil
-}
-
-func (m *LoadBalanceResponse) GetServerList() *ServerList {
-	if x, ok := m.GetLoadBalanceResponseType().(*LoadBalanceResponse_ServerList); ok {
-		return x.ServerList
-	}
-	return nil
-}
-
-func (m *LoadBalanceResponse) GetFallbackResponse() *FallbackResponse {
-	if x, ok := m.GetLoadBalanceResponseType().(*LoadBalanceResponse_FallbackResponse); ok {
-		return x.FallbackResponse
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*LoadBalanceResponse) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*LoadBalanceResponse_InitialResponse)(nil),
-		(*LoadBalanceResponse_ServerList)(nil),
-		(*LoadBalanceResponse_FallbackResponse)(nil),
-	}
-}
-
 type FallbackResponse struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 }
 
-func (m *FallbackResponse) Reset()         { *m = FallbackResponse{} }
-func (m *FallbackResponse) String() string { return proto.CompactTextString(m) }
-func (*FallbackResponse) ProtoMessage()    {}
+func (x *FallbackResponse) Reset() {
+	*x = FallbackResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_lb_v1_load_balancer_proto_msgTypes[5]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *FallbackResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*FallbackResponse) ProtoMessage() {}
+
+func (x *FallbackResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_lb_v1_load_balancer_proto_msgTypes[5]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use FallbackResponse.ProtoReflect.Descriptor instead.
 func (*FallbackResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7cd3f6d792743fdf, []int{5}
+	return file_grpc_lb_v1_load_balancer_proto_rawDescGZIP(), []int{5}
 }
 
-func (m *FallbackResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FallbackResponse.Unmarshal(m, b)
-}
-func (m *FallbackResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FallbackResponse.Marshal(b, m, deterministic)
-}
-func (m *FallbackResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FallbackResponse.Merge(m, src)
-}
-func (m *FallbackResponse) XXX_Size() int {
-	return xxx_messageInfo_FallbackResponse.Size(m)
-}
-func (m *FallbackResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_FallbackResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_FallbackResponse proto.InternalMessageInfo
-
 type InitialLoadBalanceResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// This interval defines how often the client should send the client stats
 	// to the load balancer. Stats should only be reported when the duration is
 	// positive.
 	ClientStatsReportInterval *duration.Duration `protobuf:"bytes,2,opt,name=client_stats_report_interval,json=clientStatsReportInterval,proto3" json:"client_stats_report_interval,omitempty"`
-	XXX_NoUnkeyedLiteral      struct{}           `json:"-"`
-	XXX_unrecognized          []byte             `json:"-"`
-	XXX_sizecache             int32              `json:"-"`
 }
 
-func (m *InitialLoadBalanceResponse) Reset()         { *m = InitialLoadBalanceResponse{} }
-func (m *InitialLoadBalanceResponse) String() string { return proto.CompactTextString(m) }
-func (*InitialLoadBalanceResponse) ProtoMessage()    {}
+func (x *InitialLoadBalanceResponse) Reset() {
+	*x = InitialLoadBalanceResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_lb_v1_load_balancer_proto_msgTypes[6]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *InitialLoadBalanceResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*InitialLoadBalanceResponse) ProtoMessage() {}
+
+func (x *InitialLoadBalanceResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_lb_v1_load_balancer_proto_msgTypes[6]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use InitialLoadBalanceResponse.ProtoReflect.Descriptor instead.
 func (*InitialLoadBalanceResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7cd3f6d792743fdf, []int{6}
+	return file_grpc_lb_v1_load_balancer_proto_rawDescGZIP(), []int{6}
 }
 
-func (m *InitialLoadBalanceResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_InitialLoadBalanceResponse.Unmarshal(m, b)
-}
-func (m *InitialLoadBalanceResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_InitialLoadBalanceResponse.Marshal(b, m, deterministic)
-}
-func (m *InitialLoadBalanceResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_InitialLoadBalanceResponse.Merge(m, src)
-}
-func (m *InitialLoadBalanceResponse) XXX_Size() int {
-	return xxx_messageInfo_InitialLoadBalanceResponse.Size(m)
-}
-func (m *InitialLoadBalanceResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_InitialLoadBalanceResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_InitialLoadBalanceResponse proto.InternalMessageInfo
-
-func (m *InitialLoadBalanceResponse) GetClientStatsReportInterval() *duration.Duration {
-	if m != nil {
-		return m.ClientStatsReportInterval
+func (x *InitialLoadBalanceResponse) GetClientStatsReportInterval() *duration.Duration {
+	if x != nil {
+		return x.ClientStatsReportInterval
 	}
 	return nil
 }
 
 type ServerList struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Contains a list of servers selected by the load balancer. The list will
 	// be updated when server resolutions change or as needed to balance load
 	// across more servers. The client should consume the server list in order
 	// unless instructed otherwise via the client_config.
-	Servers              []*Server `protobuf:"bytes,1,rep,name=servers,proto3" json:"servers,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}  `json:"-"`
-	XXX_unrecognized     []byte    `json:"-"`
-	XXX_sizecache        int32     `json:"-"`
+	Servers []*Server `protobuf:"bytes,1,rep,name=servers,proto3" json:"servers,omitempty"`
 }
 
-func (m *ServerList) Reset()         { *m = ServerList{} }
-func (m *ServerList) String() string { return proto.CompactTextString(m) }
-func (*ServerList) ProtoMessage()    {}
+func (x *ServerList) Reset() {
+	*x = ServerList{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_lb_v1_load_balancer_proto_msgTypes[7]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ServerList) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ServerList) ProtoMessage() {}
+
+func (x *ServerList) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_lb_v1_load_balancer_proto_msgTypes[7]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ServerList.ProtoReflect.Descriptor instead.
 func (*ServerList) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7cd3f6d792743fdf, []int{7}
+	return file_grpc_lb_v1_load_balancer_proto_rawDescGZIP(), []int{7}
 }
 
-func (m *ServerList) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ServerList.Unmarshal(m, b)
-}
-func (m *ServerList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ServerList.Marshal(b, m, deterministic)
-}
-func (m *ServerList) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ServerList.Merge(m, src)
-}
-func (m *ServerList) XXX_Size() int {
-	return xxx_messageInfo_ServerList.Size(m)
-}
-func (m *ServerList) XXX_DiscardUnknown() {
-	xxx_messageInfo_ServerList.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ServerList proto.InternalMessageInfo
-
-func (m *ServerList) GetServers() []*Server {
-	if m != nil {
-		return m.Servers
+func (x *ServerList) GetServers() []*Server {
+	if x != nil {
+		return x.Servers
 	}
 	return nil
 }
@@ -497,6 +575,10 @@
 // Contains server information. When the drop field is not true, use the other
 // fields.
 type Server struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// A resolved address for the server, serialized in network-byte-order. It may
 	// either be an IPv4 or IPv6 address.
 	IpAddress []byte `protobuf:"bytes,1,opt,name=ip_address,json=ipAddress,proto3" json:"ip_address,omitempty"`
@@ -513,128 +595,366 @@
 	// Indicates whether this particular request should be dropped by the client.
 	// If the request is dropped, there will be a corresponding entry in
 	// ClientStats.calls_finished_with_drop.
-	Drop                 bool     `protobuf:"varint,4,opt,name=drop,proto3" json:"drop,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Drop bool `protobuf:"varint,4,opt,name=drop,proto3" json:"drop,omitempty"`
 }
 
-func (m *Server) Reset()         { *m = Server{} }
-func (m *Server) String() string { return proto.CompactTextString(m) }
-func (*Server) ProtoMessage()    {}
+func (x *Server) Reset() {
+	*x = Server{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_lb_v1_load_balancer_proto_msgTypes[8]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Server) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Server) ProtoMessage() {}
+
+func (x *Server) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_lb_v1_load_balancer_proto_msgTypes[8]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Server.ProtoReflect.Descriptor instead.
 func (*Server) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7cd3f6d792743fdf, []int{8}
+	return file_grpc_lb_v1_load_balancer_proto_rawDescGZIP(), []int{8}
 }
 
-func (m *Server) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Server.Unmarshal(m, b)
-}
-func (m *Server) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Server.Marshal(b, m, deterministic)
-}
-func (m *Server) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Server.Merge(m, src)
-}
-func (m *Server) XXX_Size() int {
-	return xxx_messageInfo_Server.Size(m)
-}
-func (m *Server) XXX_DiscardUnknown() {
-	xxx_messageInfo_Server.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Server proto.InternalMessageInfo
-
-func (m *Server) GetIpAddress() []byte {
-	if m != nil {
-		return m.IpAddress
+func (x *Server) GetIpAddress() []byte {
+	if x != nil {
+		return x.IpAddress
 	}
 	return nil
 }
 
-func (m *Server) GetPort() int32 {
-	if m != nil {
-		return m.Port
+func (x *Server) GetPort() int32 {
+	if x != nil {
+		return x.Port
 	}
 	return 0
 }
 
-func (m *Server) GetLoadBalanceToken() string {
-	if m != nil {
-		return m.LoadBalanceToken
+func (x *Server) GetLoadBalanceToken() string {
+	if x != nil {
+		return x.LoadBalanceToken
 	}
 	return ""
 }
 
-func (m *Server) GetDrop() bool {
-	if m != nil {
-		return m.Drop
+func (x *Server) GetDrop() bool {
+	if x != nil {
+		return x.Drop
 	}
 	return false
 }
 
-func init() {
-	proto.RegisterType((*LoadBalanceRequest)(nil), "grpc.lb.v1.LoadBalanceRequest")
-	proto.RegisterType((*InitialLoadBalanceRequest)(nil), "grpc.lb.v1.InitialLoadBalanceRequest")
-	proto.RegisterType((*ClientStatsPerToken)(nil), "grpc.lb.v1.ClientStatsPerToken")
-	proto.RegisterType((*ClientStats)(nil), "grpc.lb.v1.ClientStats")
-	proto.RegisterType((*LoadBalanceResponse)(nil), "grpc.lb.v1.LoadBalanceResponse")
-	proto.RegisterType((*FallbackResponse)(nil), "grpc.lb.v1.FallbackResponse")
-	proto.RegisterType((*InitialLoadBalanceResponse)(nil), "grpc.lb.v1.InitialLoadBalanceResponse")
-	proto.RegisterType((*ServerList)(nil), "grpc.lb.v1.ServerList")
-	proto.RegisterType((*Server)(nil), "grpc.lb.v1.Server")
+var File_grpc_lb_v1_load_balancer_proto protoreflect.FileDescriptor
+
+var file_grpc_lb_v1_load_balancer_proto_rawDesc = []byte{
+	0x0a, 0x1e, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x6c, 0x62, 0x2f, 0x76, 0x31, 0x2f, 0x6c, 0x6f, 0x61,
+	0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x12, 0x0a, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x62, 0x2e, 0x76, 0x31, 0x1a, 0x1e, 0x67, 0x6f,
+	0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75,
+	0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f,
+	0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69,
+	0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc1, 0x01,
+	0x0a, 0x12, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71,
+	0x75, 0x65, 0x73, 0x74, 0x12, 0x50, 0x0a, 0x0f, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f,
+	0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e,
+	0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x69,
+	0x61, 0x6c, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71,
+	0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x52,
+	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74,
+	0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67,
+	0x72, 0x70, 0x63, 0x2e, 0x6c, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74,
+	0x53, 0x74, 0x61, 0x74, 0x73, 0x48, 0x00, 0x52, 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53,
+	0x74, 0x61, 0x74, 0x73, 0x42, 0x1b, 0x0a, 0x19, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x61, 0x6c,
+	0x61, 0x6e, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x79, 0x70,
+	0x65, 0x22, 0x2f, 0x0a, 0x19, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x4c, 0x6f, 0x61, 0x64,
+	0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12,
+	0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61,
+	0x6d, 0x65, 0x22, 0x60, 0x0a, 0x13, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74,
+	0x73, 0x50, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x2c, 0x0a, 0x12, 0x6c, 0x6f, 0x61,
+	0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e,
+	0x63, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x75, 0x6d, 0x5f, 0x63,
+	0x61, 0x6c, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6e, 0x75, 0x6d, 0x43,
+	0x61, 0x6c, 0x6c, 0x73, 0x22, 0xb0, 0x03, 0x0a, 0x0b, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53,
+	0x74, 0x61, 0x74, 0x73, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
+	0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
+	0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x2a,
+	0x0a, 0x11, 0x6e, 0x75, 0x6d, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x72,
+	0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x6e, 0x75, 0x6d, 0x43, 0x61,
+	0x6c, 0x6c, 0x73, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x12, 0x2c, 0x0a, 0x12, 0x6e, 0x75,
+	0x6d, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x5f, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64,
+	0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x6e, 0x75, 0x6d, 0x43, 0x61, 0x6c, 0x6c, 0x73,
+	0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x12, 0x5d, 0x0a, 0x2d, 0x6e, 0x75, 0x6d, 0x5f,
+	0x63, 0x61, 0x6c, 0x6c, 0x73, 0x5f, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x77,
+	0x69, 0x74, 0x68, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65,
+	0x64, 0x5f, 0x74, 0x6f, 0x5f, 0x73, 0x65, 0x6e, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52,
+	0x26, 0x6e, 0x75, 0x6d, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65,
+	0x64, 0x57, 0x69, 0x74, 0x68, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x65,
+	0x64, 0x54, 0x6f, 0x53, 0x65, 0x6e, 0x64, 0x12, 0x48, 0x0a, 0x21, 0x6e, 0x75, 0x6d, 0x5f, 0x63,
+	0x61, 0x6c, 0x6c, 0x73, 0x5f, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x6b, 0x6e,
+	0x6f, 0x77, 0x6e, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01,
+	0x28, 0x03, 0x52, 0x1d, 0x6e, 0x75, 0x6d, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x46, 0x69, 0x6e, 0x69,
+	0x73, 0x68, 0x65, 0x64, 0x4b, 0x6e, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65,
+	0x64, 0x12, 0x58, 0x0a, 0x18, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x5f, 0x66, 0x69, 0x6e, 0x69, 0x73,
+	0x68, 0x65, 0x64, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x18, 0x08, 0x20,
+	0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x62, 0x2e, 0x76, 0x31,
+	0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x50, 0x65, 0x72, 0x54,
+	0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x15, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x46, 0x69, 0x6e, 0x69, 0x73,
+	0x68, 0x65, 0x64, 0x57, 0x69, 0x74, 0x68, 0x44, 0x72, 0x6f, 0x70, 0x4a, 0x04, 0x08, 0x04, 0x10,
+	0x05, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x22, 0x90, 0x02, 0x0a, 0x13, 0x4c, 0x6f, 0x61, 0x64,
+	0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+	0x53, 0x0a, 0x10, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f,
+	0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x72, 0x70, 0x63,
+	0x2e, 0x6c, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x4c, 0x6f,
+	0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+	0x65, 0x48, 0x00, 0x52, 0x0f, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70,
+	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x6c,
+	0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x72, 0x70, 0x63,
+	0x2e, 0x6c, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4c, 0x69, 0x73,
+	0x74, 0x48, 0x00, 0x52, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12,
+	0x4b, 0x0a, 0x11, 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x72, 0x65, 0x73, 0x70,
+	0x6f, 0x6e, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70,
+	0x63, 0x2e, 0x6c, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b,
+	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x10, 0x66, 0x61, 0x6c, 0x6c,
+	0x62, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x1c, 0x0a, 0x1a,
+	0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x73,
+	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x12, 0x0a, 0x10, 0x46, 0x61,
+	0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x7e,
+	0x0a, 0x1a, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c,
+	0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x1c,
+	0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x72, 0x65, 0x70,
+	0x6f, 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x19, 0x63,
+	0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74,
+	0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x22, 0x40,
+	0x0a, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x07,
+	0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e,
+	0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65,
+	0x72, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04,
+	0x22, 0x83, 0x01, 0x0a, 0x06, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x69,
+	0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52,
+	0x09, 0x69, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f,
+	0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x2c,
+	0x0a, 0x12, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x74,
+	0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6c, 0x6f, 0x61, 0x64,
+	0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x12, 0x0a, 0x04,
+	0x64, 0x72, 0x6f, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x64, 0x72, 0x6f, 0x70,
+	0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x32, 0x62, 0x0a, 0x0c, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61,
+	0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x12, 0x52, 0x0a, 0x0b, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63,
+	0x65, 0x4c, 0x6f, 0x61, 0x64, 0x12, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x62, 0x2e,
+	0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65,
+	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x62, 0x2e,
+	0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65,
+	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, 0x01, 0x42, 0x57, 0x0a, 0x0d, 0x69, 0x6f,
+	0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x62, 0x2e, 0x76, 0x31, 0x42, 0x11, 0x4c, 0x6f, 0x61,
+	0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01,
+	0x5a, 0x31, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e,
+	0x6f, 0x72, 0x67, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65,
+	0x72, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x6c, 0x62, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x6c, 0x62,
+	0x5f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
-func init() { proto.RegisterFile("grpc/lb/v1/load_balancer.proto", fileDescriptor_7cd3f6d792743fdf) }
+var (
+	file_grpc_lb_v1_load_balancer_proto_rawDescOnce sync.Once
+	file_grpc_lb_v1_load_balancer_proto_rawDescData = file_grpc_lb_v1_load_balancer_proto_rawDesc
+)
 
-var fileDescriptor_7cd3f6d792743fdf = []byte{
-	// 769 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x55, 0xdd, 0x6e, 0xdb, 0x36,
-	0x14, 0x8e, 0x62, 0x25, 0x75, 0x8e, 0xb3, 0x45, 0x61, 0xb1, 0xcd, 0x71, 0xd3, 0x24, 0x13, 0xb0,
-	0x22, 0x18, 0x3a, 0x79, 0xc9, 0x6e, 0x36, 0x60, 0x17, 0x9b, 0x5b, 0x04, 0x69, 0xda, 0x8b, 0x80,
-	0x0e, 0xd0, 0xa1, 0xc0, 0xc0, 0x51, 0x12, 0xed, 0x10, 0xa1, 0x49, 0x8d, 0xa2, 0x5d, 0xec, 0x66,
-	0x37, 0x7b, 0x81, 0x3d, 0xca, 0x5e, 0x61, 0x6f, 0x36, 0x88, 0xa4, 0x2c, 0xd5, 0xae, 0xb1, 0x2b,
-	0x91, 0xe7, 0x7c, 0xfc, 0xce, 0xff, 0x11, 0x9c, 0x4c, 0x75, 0x91, 0x0d, 0x45, 0x3a, 0x5c, 0x5c,
-	0x0c, 0x85, 0xa2, 0x39, 0x49, 0xa9, 0xa0, 0x32, 0x63, 0x3a, 0x29, 0xb4, 0x32, 0x0a, 0x41, 0xa5,
-	0x4f, 0x44, 0x9a, 0x2c, 0x2e, 0x06, 0x27, 0x53, 0xa5, 0xa6, 0x82, 0x0d, 0xad, 0x26, 0x9d, 0x4f,
-	0x86, 0xf9, 0x5c, 0x53, 0xc3, 0x95, 0x74, 0xd8, 0xc1, 0xe9, 0xaa, 0xde, 0xf0, 0x19, 0x2b, 0x0d,
-	0x9d, 0x15, 0x0e, 0x10, 0xff, 0x1b, 0x00, 0x7a, 0xa3, 0x68, 0x3e, 0x72, 0x36, 0x30, 0xfb, 0x7d,
-	0xce, 0x4a, 0x83, 0x6e, 0xe1, 0x80, 0x4b, 0x6e, 0x38, 0x15, 0x44, 0x3b, 0x51, 0x3f, 0x38, 0x0b,
-	0xce, 0x7b, 0x97, 0x5f, 0x25, 0x8d, 0xf5, 0xe4, 0x95, 0x83, 0xac, 0xbf, 0xbf, 0xde, 0xc2, 0x9f,
-	0xfa, 0xf7, 0x35, 0xe3, 0x8f, 0xb0, 0x9f, 0x09, 0xce, 0xa4, 0x21, 0xa5, 0xa1, 0xa6, 0xec, 0x6f,
-	0x5b, 0xba, 0x2f, 0xda, 0x74, 0x2f, 0xac, 0x7e, 0x5c, 0xa9, 0xaf, 0xb7, 0x70, 0x2f, 0x6b, 0xae,
-	0xa3, 0x27, 0x70, 0xd4, 0x4e, 0x45, 0xed, 0x14, 0x31, 0x7f, 0x14, 0x2c, 0x1e, 0xc2, 0xd1, 0x46,
-	0x4f, 0x10, 0x82, 0x50, 0xd2, 0x19, 0xb3, 0xee, 0xef, 0x61, 0x7b, 0x8e, 0x7f, 0x83, 0xc7, 0x2d,
-	0x5b, 0xb7, 0x4c, 0xdf, 0xa9, 0x07, 0x26, 0xd1, 0x73, 0x40, 0x1f, 0x18, 0x31, 0x95, 0xd4, 0x3f,
-	0x8c, 0x44, 0x43, 0xed, 0xd0, 0x4f, 0x60, 0x4f, 0xce, 0x67, 0x24, 0xa3, 0x42, 0xb8, 0x68, 0x3a,
-	0xb8, 0x2b, 0xe7, 0xb3, 0x17, 0xd5, 0x3d, 0xfe, 0xa7, 0x03, 0xbd, 0x96, 0x09, 0xf4, 0x3d, 0xec,
-	0x2d, 0x33, 0xef, 0x33, 0x39, 0x48, 0x5c, 0x6d, 0x92, 0xba, 0x36, 0xc9, 0x5d, 0x8d, 0xc0, 0x0d,
-	0x18, 0x7d, 0x0d, 0x87, 0x4b, 0x33, 0x55, 0xea, 0xb4, 0x61, 0xb9, 0x37, 0x77, 0x50, 0x9b, 0x1b,
-	0x3b, 0x71, 0x15, 0x40, 0x83, 0x9d, 0x70, 0xc9, 0xcb, 0x7b, 0x96, 0xf7, 0x3b, 0x16, 0x1c, 0xd5,
-	0xe0, 0x2b, 0x2f, 0x47, 0xbf, 0xc2, 0x37, 0xeb, 0x68, 0xf2, 0x9e, 0x9b, 0x7b, 0xe2, 0x2b, 0x35,
-	0xa1, 0x5c, 0xb0, 0x9c, 0x18, 0x45, 0x4a, 0x26, 0xf3, 0xfe, 0xae, 0x25, 0x7a, 0xb6, 0x4a, 0xf4,
-	0x96, 0x9b, 0x7b, 0x17, 0xeb, 0x95, 0xc5, 0xdf, 0xa9, 0x31, 0x93, 0x39, 0xba, 0x86, 0x2f, 0x3f,
-	0x42, 0xff, 0x20, 0xd5, 0x7b, 0x49, 0x34, 0xcb, 0x18, 0x5f, 0xb0, 0xbc, 0xff, 0xc8, 0x52, 0x3e,
-	0x5d, 0xa5, 0x7c, 0x5d, 0xa1, 0xb0, 0x07, 0xa1, 0x5f, 0xa0, 0xff, 0x31, 0x27, 0x73, 0xad, 0x8a,
-	0x7e, 0xf7, 0xac, 0x73, 0xde, 0xbb, 0x3c, 0xdd, 0xd0, 0x46, 0x75, 0x69, 0xf1, 0x67, 0xd9, 0xaa,
-	0xc7, 0x2f, 0xb5, 0x2a, 0x6e, 0xc2, 0x6e, 0x18, 0xed, 0xdc, 0x84, 0xdd, 0x9d, 0x68, 0x37, 0xfe,
-	0x7b, 0x1b, 0x1e, 0x7f, 0xd0, 0x3f, 0x65, 0xa1, 0x64, 0xc9, 0xd0, 0x18, 0xa2, 0x66, 0x14, 0x9c,
-	0xcc, 0x57, 0xf0, 0xd9, 0xff, 0xcd, 0x82, 0x43, 0x5f, 0x6f, 0xe1, 0x83, 0xe5, 0x30, 0x78, 0xd2,
-	0x1f, 0xa0, 0x57, 0x32, 0xbd, 0x60, 0x9a, 0x08, 0x5e, 0x1a, 0x3f, 0x0c, 0x9f, 0xb7, 0xf9, 0xc6,
-	0x56, 0xfd, 0x86, 0xdb, 0x61, 0x82, 0x72, 0x79, 0x43, 0xaf, 0xe1, 0x70, 0x42, 0x85, 0x48, 0x69,
-	0xf6, 0xd0, 0x38, 0xd4, 0xb1, 0x04, 0xc7, 0x6d, 0x82, 0x2b, 0x0f, 0x6a, 0xb9, 0x11, 0x4d, 0x56,
-	0x64, 0xa3, 0x63, 0x18, 0xac, 0xcc, 0x95, 0x53, 0xb8, 0xc1, 0x42, 0x10, 0xad, 0xb2, 0xc4, 0x7f,
-	0xc2, 0x60, 0x73, 0xa8, 0xe8, 0x1d, 0x1c, 0xb7, 0xa7, 0x9c, 0x68, 0x56, 0x28, 0x6d, 0x08, 0x97,
-	0x86, 0xe9, 0x05, 0x15, 0x3e, 0xd0, 0xa3, 0xb5, 0xd6, 0x7f, 0xe9, 0xd7, 0x16, 0x3e, 0x6a, 0x4d,
-	0x3d, 0xb6, 0x8f, 0x5f, 0xf9, 0xb7, 0x37, 0x61, 0x37, 0x88, 0xb6, 0xe3, 0x9f, 0x00, 0x9a, 0xd4,
-	0xa0, 0xe7, 0xf0, 0xc8, 0xa5, 0xa6, 0xec, 0x07, 0xb6, 0x13, 0xd0, 0x7a, 0x0e, 0x71, 0x0d, 0xb9,
-	0x09, 0xbb, 0x9d, 0x28, 0x8c, 0xff, 0x0a, 0x60, 0xd7, 0x69, 0xd0, 0x53, 0x00, 0x5e, 0x10, 0x9a,
-	0xe7, 0x9a, 0x95, 0xa5, 0xad, 0xea, 0x3e, 0xde, 0xe3, 0xc5, 0xcf, 0x4e, 0x50, 0xed, 0x8e, 0xca,
-	0x03, 0xeb, 0xf5, 0x0e, 0xb6, 0xe7, 0x0d, 0x4b, 0xa2, 0xb3, 0x61, 0x49, 0x20, 0x08, 0x6d, 0x9b,
-	0x86, 0x67, 0xc1, 0x79, 0x17, 0xdb, 0xb3, 0x6b, 0xb7, 0xcb, 0x14, 0xf6, 0x5b, 0x09, 0xd4, 0x08,
-	0x43, 0xcf, 0x9f, 0x2b, 0x31, 0x3a, 0x69, 0xc7, 0xb1, 0xbe, 0xd6, 0x06, 0xa7, 0x1b, 0xf5, 0xae,
-	0x12, 0xe7, 0xc1, 0xb7, 0xc1, 0xe8, 0x2d, 0x7c, 0xc2, 0x55, 0x0b, 0x38, 0x3a, 0x6c, 0x9b, 0xbc,
-	0xad, 0x92, 0x7f, 0x1b, 0xbc, 0xbb, 0xf0, 0xc5, 0x98, 0x2a, 0x41, 0xe5, 0x34, 0x51, 0x7a, 0x3a,
-	0xb4, 0x7f, 0xa0, 0xfa, 0xb7, 0x63, 0x6f, 0x22, 0xb5, 0x1f, 0x22, 0x52, 0xb2, 0xb8, 0x48, 0x77,
-	0x6d, 0xe1, 0xbe, 0xfb, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x3f, 0x47, 0x55, 0xac, 0xab, 0x06, 0x00,
-	0x00,
+func file_grpc_lb_v1_load_balancer_proto_rawDescGZIP() []byte {
+	file_grpc_lb_v1_load_balancer_proto_rawDescOnce.Do(func() {
+		file_grpc_lb_v1_load_balancer_proto_rawDescData = protoimpl.X.CompressGZIP(file_grpc_lb_v1_load_balancer_proto_rawDescData)
+	})
+	return file_grpc_lb_v1_load_balancer_proto_rawDescData
+}
+
+var file_grpc_lb_v1_load_balancer_proto_msgTypes = make([]protoimpl.MessageInfo, 9)
+var file_grpc_lb_v1_load_balancer_proto_goTypes = []interface{}{
+	(*LoadBalanceRequest)(nil),         // 0: grpc.lb.v1.LoadBalanceRequest
+	(*InitialLoadBalanceRequest)(nil),  // 1: grpc.lb.v1.InitialLoadBalanceRequest
+	(*ClientStatsPerToken)(nil),        // 2: grpc.lb.v1.ClientStatsPerToken
+	(*ClientStats)(nil),                // 3: grpc.lb.v1.ClientStats
+	(*LoadBalanceResponse)(nil),        // 4: grpc.lb.v1.LoadBalanceResponse
+	(*FallbackResponse)(nil),           // 5: grpc.lb.v1.FallbackResponse
+	(*InitialLoadBalanceResponse)(nil), // 6: grpc.lb.v1.InitialLoadBalanceResponse
+	(*ServerList)(nil),                 // 7: grpc.lb.v1.ServerList
+	(*Server)(nil),                     // 8: grpc.lb.v1.Server
+	(*timestamp.Timestamp)(nil),        // 9: google.protobuf.Timestamp
+	(*duration.Duration)(nil),          // 10: google.protobuf.Duration
+}
+var file_grpc_lb_v1_load_balancer_proto_depIdxs = []int32{
+	1,  // 0: grpc.lb.v1.LoadBalanceRequest.initial_request:type_name -> grpc.lb.v1.InitialLoadBalanceRequest
+	3,  // 1: grpc.lb.v1.LoadBalanceRequest.client_stats:type_name -> grpc.lb.v1.ClientStats
+	9,  // 2: grpc.lb.v1.ClientStats.timestamp:type_name -> google.protobuf.Timestamp
+	2,  // 3: grpc.lb.v1.ClientStats.calls_finished_with_drop:type_name -> grpc.lb.v1.ClientStatsPerToken
+	6,  // 4: grpc.lb.v1.LoadBalanceResponse.initial_response:type_name -> grpc.lb.v1.InitialLoadBalanceResponse
+	7,  // 5: grpc.lb.v1.LoadBalanceResponse.server_list:type_name -> grpc.lb.v1.ServerList
+	5,  // 6: grpc.lb.v1.LoadBalanceResponse.fallback_response:type_name -> grpc.lb.v1.FallbackResponse
+	10, // 7: grpc.lb.v1.InitialLoadBalanceResponse.client_stats_report_interval:type_name -> google.protobuf.Duration
+	8,  // 8: grpc.lb.v1.ServerList.servers:type_name -> grpc.lb.v1.Server
+	0,  // 9: grpc.lb.v1.LoadBalancer.BalanceLoad:input_type -> grpc.lb.v1.LoadBalanceRequest
+	4,  // 10: grpc.lb.v1.LoadBalancer.BalanceLoad:output_type -> grpc.lb.v1.LoadBalanceResponse
+	10, // [10:11] is the sub-list for method output_type
+	9,  // [9:10] is the sub-list for method input_type
+	9,  // [9:9] is the sub-list for extension type_name
+	9,  // [9:9] is the sub-list for extension extendee
+	0,  // [0:9] is the sub-list for field type_name
+}
+
+func init() { file_grpc_lb_v1_load_balancer_proto_init() }
+func file_grpc_lb_v1_load_balancer_proto_init() {
+	if File_grpc_lb_v1_load_balancer_proto != nil {
+		return
+	}
+	if !protoimpl.UnsafeEnabled {
+		file_grpc_lb_v1_load_balancer_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*LoadBalanceRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_lb_v1_load_balancer_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*InitialLoadBalanceRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_lb_v1_load_balancer_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ClientStatsPerToken); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_lb_v1_load_balancer_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ClientStats); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_lb_v1_load_balancer_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*LoadBalanceResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_lb_v1_load_balancer_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*FallbackResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_lb_v1_load_balancer_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*InitialLoadBalanceResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_lb_v1_load_balancer_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ServerList); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_lb_v1_load_balancer_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Server); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	file_grpc_lb_v1_load_balancer_proto_msgTypes[0].OneofWrappers = []interface{}{
+		(*LoadBalanceRequest_InitialRequest)(nil),
+		(*LoadBalanceRequest_ClientStats)(nil),
+	}
+	file_grpc_lb_v1_load_balancer_proto_msgTypes[4].OneofWrappers = []interface{}{
+		(*LoadBalanceResponse_InitialResponse)(nil),
+		(*LoadBalanceResponse_ServerList)(nil),
+		(*LoadBalanceResponse_FallbackResponse)(nil),
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_grpc_lb_v1_load_balancer_proto_rawDesc,
+			NumEnums:      0,
+			NumMessages:   9,
+			NumExtensions: 0,
+			NumServices:   1,
+		},
+		GoTypes:           file_grpc_lb_v1_load_balancer_proto_goTypes,
+		DependencyIndexes: file_grpc_lb_v1_load_balancer_proto_depIdxs,
+		MessageInfos:      file_grpc_lb_v1_load_balancer_proto_msgTypes,
+	}.Build()
+	File_grpc_lb_v1_load_balancer_proto = out.File
+	file_grpc_lb_v1_load_balancer_proto_rawDesc = nil
+	file_grpc_lb_v1_load_balancer_proto_goTypes = nil
+	file_grpc_lb_v1_load_balancer_proto_depIdxs = nil
 }
diff --git a/balancer/rls/internal/proto/grpc_lookup_v1/rls.pb.go b/balancer/rls/internal/proto/grpc_lookup_v1/rls.pb.go
index 7ec1427..aad29f1 100644
--- a/balancer/rls/internal/proto/grpc_lookup_v1/rls.pb.go
+++ b/balancer/rls/internal/proto/grpc_lookup_v1/rls.pb.go
@@ -1,26 +1,49 @@
+// Copyright 2020 The gRPC Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.25.0
+// 	protoc        v3.3.0
 // source: grpc/lookup/v1/rls.proto
 
 package grpc_lookup_v1
 
 import (
-	fmt "fmt"
 	proto "github.com/golang/protobuf/proto"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
 )
 
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
 
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+// This is a compile-time assertion that a sufficiently up-to-date version
+// of the legacy proto package is being used.
+const _ = proto.ProtoPackageIsVersion4
 
 type RouteLookupRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Full host name of the target server, e.g. firestore.googleapis.com.
 	// Only set for gRPC requests; HTTP requests must use key_map explicitly.
 	Server string `protobuf:"bytes,1,opt,name=server,proto3" json:"server,omitempty"`
@@ -31,66 +54,74 @@
 	// would like from RLS to allow it to find the regional server, e.g. "grpc".
 	TargetType string `protobuf:"bytes,3,opt,name=target_type,json=targetType,proto3" json:"target_type,omitempty"`
 	// Map of key values extracted via key builders for the gRPC or HTTP request.
-	KeyMap               map[string]string `protobuf:"bytes,4,rep,name=key_map,json=keyMap,proto3" json:"key_map,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
+	KeyMap map[string]string `protobuf:"bytes,4,rep,name=key_map,json=keyMap,proto3" json:"key_map,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
 }
 
-func (m *RouteLookupRequest) Reset()         { *m = RouteLookupRequest{} }
-func (m *RouteLookupRequest) String() string { return proto.CompactTextString(m) }
-func (*RouteLookupRequest) ProtoMessage()    {}
+func (x *RouteLookupRequest) Reset() {
+	*x = RouteLookupRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_lookup_v1_rls_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *RouteLookupRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RouteLookupRequest) ProtoMessage() {}
+
+func (x *RouteLookupRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_lookup_v1_rls_proto_msgTypes[0]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use RouteLookupRequest.ProtoReflect.Descriptor instead.
 func (*RouteLookupRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_3bab962d3362f3ca, []int{0}
+	return file_grpc_lookup_v1_rls_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *RouteLookupRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_RouteLookupRequest.Unmarshal(m, b)
-}
-func (m *RouteLookupRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_RouteLookupRequest.Marshal(b, m, deterministic)
-}
-func (m *RouteLookupRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_RouteLookupRequest.Merge(m, src)
-}
-func (m *RouteLookupRequest) XXX_Size() int {
-	return xxx_messageInfo_RouteLookupRequest.Size(m)
-}
-func (m *RouteLookupRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_RouteLookupRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_RouteLookupRequest proto.InternalMessageInfo
-
-func (m *RouteLookupRequest) GetServer() string {
-	if m != nil {
-		return m.Server
+func (x *RouteLookupRequest) GetServer() string {
+	if x != nil {
+		return x.Server
 	}
 	return ""
 }
 
-func (m *RouteLookupRequest) GetPath() string {
-	if m != nil {
-		return m.Path
+func (x *RouteLookupRequest) GetPath() string {
+	if x != nil {
+		return x.Path
 	}
 	return ""
 }
 
-func (m *RouteLookupRequest) GetTargetType() string {
-	if m != nil {
-		return m.TargetType
+func (x *RouteLookupRequest) GetTargetType() string {
+	if x != nil {
+		return x.TargetType
 	}
 	return ""
 }
 
-func (m *RouteLookupRequest) GetKeyMap() map[string]string {
-	if m != nil {
-		return m.KeyMap
+func (x *RouteLookupRequest) GetKeyMap() map[string]string {
+	if x != nil {
+		return x.KeyMap
 	}
 	return nil
 }
 
 type RouteLookupResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Prioritized list (best one first) of addressable entities to use
 	// for routing, using syntax requested by the request target_type.
 	// The targets will be tried in order until a healthy one is found.
@@ -98,81 +129,172 @@
 	// Optional header value to pass along to AFE in the X-Google-RLS-Data header.
 	// Cached with "target" and sent with all requests that match the request key.
 	// Allows the RLS to pass its work product to the eventual target.
-	HeaderData           string   `protobuf:"bytes,2,opt,name=header_data,json=headerData,proto3" json:"header_data,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	HeaderData string `protobuf:"bytes,2,opt,name=header_data,json=headerData,proto3" json:"header_data,omitempty"`
 }
 
-func (m *RouteLookupResponse) Reset()         { *m = RouteLookupResponse{} }
-func (m *RouteLookupResponse) String() string { return proto.CompactTextString(m) }
-func (*RouteLookupResponse) ProtoMessage()    {}
+func (x *RouteLookupResponse) Reset() {
+	*x = RouteLookupResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_lookup_v1_rls_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *RouteLookupResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RouteLookupResponse) ProtoMessage() {}
+
+func (x *RouteLookupResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_lookup_v1_rls_proto_msgTypes[1]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use RouteLookupResponse.ProtoReflect.Descriptor instead.
 func (*RouteLookupResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_3bab962d3362f3ca, []int{1}
+	return file_grpc_lookup_v1_rls_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *RouteLookupResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_RouteLookupResponse.Unmarshal(m, b)
-}
-func (m *RouteLookupResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_RouteLookupResponse.Marshal(b, m, deterministic)
-}
-func (m *RouteLookupResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_RouteLookupResponse.Merge(m, src)
-}
-func (m *RouteLookupResponse) XXX_Size() int {
-	return xxx_messageInfo_RouteLookupResponse.Size(m)
-}
-func (m *RouteLookupResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_RouteLookupResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_RouteLookupResponse proto.InternalMessageInfo
-
-func (m *RouteLookupResponse) GetTargets() []string {
-	if m != nil {
-		return m.Targets
+func (x *RouteLookupResponse) GetTargets() []string {
+	if x != nil {
+		return x.Targets
 	}
 	return nil
 }
 
-func (m *RouteLookupResponse) GetHeaderData() string {
-	if m != nil {
-		return m.HeaderData
+func (x *RouteLookupResponse) GetHeaderData() string {
+	if x != nil {
+		return x.HeaderData
 	}
 	return ""
 }
 
-func init() {
-	proto.RegisterType((*RouteLookupRequest)(nil), "grpc.lookup.v1.RouteLookupRequest")
-	proto.RegisterMapType((map[string]string)(nil), "grpc.lookup.v1.RouteLookupRequest.KeyMapEntry")
-	proto.RegisterType((*RouteLookupResponse)(nil), "grpc.lookup.v1.RouteLookupResponse")
+var File_grpc_lookup_v1_rls_proto protoreflect.FileDescriptor
+
+var file_grpc_lookup_v1_rls_proto_rawDesc = []byte{
+	0x0a, 0x18, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2f, 0x76, 0x31,
+	0x2f, 0x72, 0x6c, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x67, 0x72, 0x70, 0x63,
+	0x2e, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x22, 0xe5, 0x01, 0x0a, 0x12, 0x52,
+	0x6f, 0x75, 0x74, 0x65, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+	0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74,
+	0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x1f, 0x0a,
+	0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x47,
+	0x0a, 0x07, 0x6b, 0x65, 0x79, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32,
+	0x2e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31,
+	0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75,
+	0x65, 0x73, 0x74, 0x2e, 0x4b, 0x65, 0x79, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
+	0x06, 0x6b, 0x65, 0x79, 0x4d, 0x61, 0x70, 0x1a, 0x39, 0x0a, 0x0b, 0x4b, 0x65, 0x79, 0x4d, 0x61,
+	0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
+	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
+	0x38, 0x01, 0x22, 0x5e, 0x0a, 0x13, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4c, 0x6f, 0x6f, 0x6b, 0x75,
+	0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x61, 0x72,
+	0x67, 0x65, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x74, 0x61, 0x72, 0x67,
+	0x65, 0x74, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x64, 0x61,
+	0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72,
+	0x44, 0x61, 0x74, 0x61, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67,
+	0x65, 0x74, 0x32, 0x6e, 0x0a, 0x12, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4c, 0x6f, 0x6f, 0x6b, 0x75,
+	0x70, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x58, 0x0a, 0x0b, 0x52, 0x6f, 0x75, 0x74,
+	0x65, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x12, 0x22, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c,
+	0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4c, 0x6f,
+	0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x67, 0x72,
+	0x70, 0x63, 0x2e, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x75,
+	0x74, 0x65, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+	0x22, 0x00, 0x42, 0x4d, 0x0a, 0x11, 0x69, 0x6f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x6f,
+	0x6f, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x42, 0x08, 0x52, 0x6c, 0x73, 0x50, 0x72, 0x6f, 0x74,
+	0x6f, 0x50, 0x01, 0x5a, 0x2c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61,
+	0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x6c, 0x6f, 0x6f, 0x6b,
+	0x75, 0x70, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x76,
+	0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
-func init() { proto.RegisterFile("grpc/lookup/v1/rls.proto", fileDescriptor_3bab962d3362f3ca) }
+var (
+	file_grpc_lookup_v1_rls_proto_rawDescOnce sync.Once
+	file_grpc_lookup_v1_rls_proto_rawDescData = file_grpc_lookup_v1_rls_proto_rawDesc
+)
 
-var fileDescriptor_3bab962d3362f3ca = []byte{
-	// 341 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x92, 0xd1, 0x4b, 0xeb, 0x30,
-	0x14, 0xc6, 0x6f, 0xd7, 0xdd, 0x6e, 0x3b, 0x85, 0xcb, 0x6e, 0xee, 0x45, 0xca, 0x5e, 0x1c, 0xf5,
-	0x65, 0x0f, 0x92, 0xb2, 0xf9, 0xa2, 0x3e, 0x0e, 0x45, 0x50, 0x07, 0xa3, 0xfa, 0x20, 0x3e, 0x58,
-	0xe2, 0x76, 0xc8, 0x46, 0x6b, 0x13, 0x93, 0xb4, 0xd0, 0x3f, 0xd8, 0xff, 0x43, 0xda, 0x54, 0xd8,
-	0x14, 0xf4, 0xed, 0xfb, 0xbe, 0x73, 0x48, 0x7e, 0x27, 0x39, 0x10, 0x70, 0x25, 0x57, 0x51, 0x26,
-	0x44, 0x5a, 0xc8, 0xa8, 0x9c, 0x46, 0x2a, 0xd3, 0x54, 0x2a, 0x61, 0x04, 0xf9, 0x53, 0x57, 0xa8,
-	0xad, 0xd0, 0x72, 0x1a, 0xbe, 0x39, 0x40, 0x62, 0x51, 0x18, 0xbc, 0x6d, 0xa2, 0x18, 0x5f, 0x0b,
-	0xd4, 0x86, 0x1c, 0x80, 0xa7, 0x51, 0x95, 0xa8, 0x02, 0x67, 0xec, 0x4c, 0x06, 0x71, 0xeb, 0x08,
-	0x81, 0xae, 0x64, 0x66, 0x13, 0x74, 0x9a, 0xb4, 0xd1, 0xe4, 0x10, 0x7c, 0xc3, 0x14, 0x47, 0x93,
-	0x98, 0x4a, 0x62, 0xe0, 0x36, 0x25, 0xb0, 0xd1, 0x7d, 0x25, 0x91, 0x5c, 0x41, 0x2f, 0xc5, 0x2a,
-	0x79, 0x61, 0x32, 0xe8, 0x8e, 0xdd, 0x89, 0x3f, 0xa3, 0x74, 0x9f, 0x82, 0x7e, 0x25, 0xa0, 0x37,
-	0x58, 0x2d, 0x98, 0xbc, 0xcc, 0x8d, 0xaa, 0x62, 0x2f, 0x6d, 0xcc, 0xe8, 0x0c, 0xfc, 0x9d, 0x98,
-	0x0c, 0xc1, 0x4d, 0xb1, 0x6a, 0x09, 0x6b, 0x49, 0xfe, 0xc3, 0xef, 0x92, 0x65, 0x05, 0xb6, 0x7c,
-	0xd6, 0x9c, 0x77, 0x4e, 0x9d, 0xf0, 0x09, 0xfe, 0xed, 0x5d, 0xa2, 0xa5, 0xc8, 0x35, 0x92, 0x00,
-	0x7a, 0x16, 0x54, 0x07, 0xee, 0xd8, 0x9d, 0x0c, 0xe2, 0x0f, 0x5b, 0x4f, 0xb5, 0x41, 0xb6, 0x46,
-	0x95, 0xac, 0x99, 0x61, 0xed, 0x81, 0x60, 0xa3, 0x0b, 0x66, 0xd8, 0x75, 0xb7, 0xef, 0x0c, 0x3b,
-	0xb1, 0x67, 0xfb, 0x67, 0xf9, 0xde, 0x33, 0xde, 0xa1, 0x2a, 0xb7, 0x2b, 0x24, 0x0f, 0xe0, 0xef,
-	0xa4, 0x24, 0xfc, 0x79, 0xee, 0xd1, 0xd1, 0xb7, 0x3d, 0x16, 0x3b, 0xfc, 0x35, 0x5f, 0xc0, 0xdf,
-	0xad, 0xf8, 0xd4, 0x3a, 0xef, 0xc7, 0x99, 0x5e, 0xd6, 0xdf, 0xbc, 0x74, 0x1e, 0x8f, 0xb9, 0x10,
-	0x3c, 0x43, 0xca, 0x45, 0xc6, 0x72, 0x4e, 0x85, 0xe2, 0xd1, 0xee, 0x52, 0xd4, 0x3a, 0xb1, 0x3a,
-	0x29, 0xa7, 0xcf, 0x5e, 0xb3, 0x1d, 0x27, 0xef, 0x01, 0x00, 0x00, 0xff, 0xff, 0xca, 0x8d, 0x5c,
-	0xc7, 0x39, 0x02, 0x00, 0x00,
+func file_grpc_lookup_v1_rls_proto_rawDescGZIP() []byte {
+	file_grpc_lookup_v1_rls_proto_rawDescOnce.Do(func() {
+		file_grpc_lookup_v1_rls_proto_rawDescData = protoimpl.X.CompressGZIP(file_grpc_lookup_v1_rls_proto_rawDescData)
+	})
+	return file_grpc_lookup_v1_rls_proto_rawDescData
+}
+
+var file_grpc_lookup_v1_rls_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
+var file_grpc_lookup_v1_rls_proto_goTypes = []interface{}{
+	(*RouteLookupRequest)(nil),  // 0: grpc.lookup.v1.RouteLookupRequest
+	(*RouteLookupResponse)(nil), // 1: grpc.lookup.v1.RouteLookupResponse
+	nil,                         // 2: grpc.lookup.v1.RouteLookupRequest.KeyMapEntry
+}
+var file_grpc_lookup_v1_rls_proto_depIdxs = []int32{
+	2, // 0: grpc.lookup.v1.RouteLookupRequest.key_map:type_name -> grpc.lookup.v1.RouteLookupRequest.KeyMapEntry
+	0, // 1: grpc.lookup.v1.RouteLookupService.RouteLookup:input_type -> grpc.lookup.v1.RouteLookupRequest
+	1, // 2: grpc.lookup.v1.RouteLookupService.RouteLookup:output_type -> grpc.lookup.v1.RouteLookupResponse
+	2, // [2:3] is the sub-list for method output_type
+	1, // [1:2] is the sub-list for method input_type
+	1, // [1:1] is the sub-list for extension type_name
+	1, // [1:1] is the sub-list for extension extendee
+	0, // [0:1] is the sub-list for field type_name
+}
+
+func init() { file_grpc_lookup_v1_rls_proto_init() }
+func file_grpc_lookup_v1_rls_proto_init() {
+	if File_grpc_lookup_v1_rls_proto != nil {
+		return
+	}
+	if !protoimpl.UnsafeEnabled {
+		file_grpc_lookup_v1_rls_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*RouteLookupRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_lookup_v1_rls_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*RouteLookupResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_grpc_lookup_v1_rls_proto_rawDesc,
+			NumEnums:      0,
+			NumMessages:   3,
+			NumExtensions: 0,
+			NumServices:   1,
+		},
+		GoTypes:           file_grpc_lookup_v1_rls_proto_goTypes,
+		DependencyIndexes: file_grpc_lookup_v1_rls_proto_depIdxs,
+		MessageInfos:      file_grpc_lookup_v1_rls_proto_msgTypes,
+	}.Build()
+	File_grpc_lookup_v1_rls_proto = out.File
+	file_grpc_lookup_v1_rls_proto_rawDesc = nil
+	file_grpc_lookup_v1_rls_proto_goTypes = nil
+	file_grpc_lookup_v1_rls_proto_depIdxs = nil
 }
diff --git a/balancer/rls/internal/proto/grpc_lookup_v1/rls_config.pb.go b/balancer/rls/internal/proto/grpc_lookup_v1/rls_config.pb.go
index 01d5b65..e8a7a6d 100644
--- a/balancer/rls/internal/proto/grpc_lookup_v1/rls_config.pb.go
+++ b/balancer/rls/internal/proto/grpc_lookup_v1/rls_config.pb.go
@@ -1,31 +1,54 @@
+// Copyright 2020 The gRPC Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.25.0
+// 	protoc        v3.3.0
 // source: grpc/lookup/v1/rls_config.proto
 
 package grpc_lookup_v1
 
 import (
-	fmt "fmt"
 	proto "github.com/golang/protobuf/proto"
 	duration "github.com/golang/protobuf/ptypes/duration"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
 )
 
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
 
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+// This is a compile-time assertion that a sufficiently up-to-date version
+// of the legacy proto package is being used.
+const _ = proto.ProtoPackageIsVersion4
 
 // Extract a key based on a given name (e.g. header name or query parameter
 // name).  The name must match one of the names listed in the "name" field.  If
 // the "required_match" field is true, one of the specified names must be
 // present for the keybuilder to match.
 type NameMatcher struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The name that will be used in the RLS key_map to refer to this value.
 	Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
 	// Ordered list of names (headers or query parameter names) that can supply
@@ -33,160 +56,121 @@
 	Names []string `protobuf:"bytes,2,rep,name=names,proto3" json:"names,omitempty"`
 	// If true, make this extraction required; the key builder will not match
 	// if no value is found.
-	RequiredMatch        bool     `protobuf:"varint,3,opt,name=required_match,json=requiredMatch,proto3" json:"required_match,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	RequiredMatch bool `protobuf:"varint,3,opt,name=required_match,json=requiredMatch,proto3" json:"required_match,omitempty"`
 }
 
-func (m *NameMatcher) Reset()         { *m = NameMatcher{} }
-func (m *NameMatcher) String() string { return proto.CompactTextString(m) }
-func (*NameMatcher) ProtoMessage()    {}
+func (x *NameMatcher) Reset() {
+	*x = NameMatcher{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_lookup_v1_rls_config_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *NameMatcher) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*NameMatcher) ProtoMessage() {}
+
+func (x *NameMatcher) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_lookup_v1_rls_config_proto_msgTypes[0]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use NameMatcher.ProtoReflect.Descriptor instead.
 func (*NameMatcher) Descriptor() ([]byte, []int) {
-	return fileDescriptor_5fe74d4f6e8f01c1, []int{0}
+	return file_grpc_lookup_v1_rls_config_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *NameMatcher) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_NameMatcher.Unmarshal(m, b)
-}
-func (m *NameMatcher) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_NameMatcher.Marshal(b, m, deterministic)
-}
-func (m *NameMatcher) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_NameMatcher.Merge(m, src)
-}
-func (m *NameMatcher) XXX_Size() int {
-	return xxx_messageInfo_NameMatcher.Size(m)
-}
-func (m *NameMatcher) XXX_DiscardUnknown() {
-	xxx_messageInfo_NameMatcher.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_NameMatcher proto.InternalMessageInfo
-
-func (m *NameMatcher) GetKey() string {
-	if m != nil {
-		return m.Key
+func (x *NameMatcher) GetKey() string {
+	if x != nil {
+		return x.Key
 	}
 	return ""
 }
 
-func (m *NameMatcher) GetNames() []string {
-	if m != nil {
-		return m.Names
+func (x *NameMatcher) GetNames() []string {
+	if x != nil {
+		return x.Names
 	}
 	return nil
 }
 
-func (m *NameMatcher) GetRequiredMatch() bool {
-	if m != nil {
-		return m.RequiredMatch
+func (x *NameMatcher) GetRequiredMatch() bool {
+	if x != nil {
+		return x.RequiredMatch
 	}
 	return false
 }
 
 // A GrpcKeyBuilder applies to a given gRPC service, name, and headers.
 type GrpcKeyBuilder struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	Names []*GrpcKeyBuilder_Name `protobuf:"bytes,1,rep,name=names,proto3" json:"names,omitempty"`
 	// Extract keys from all listed headers.
 	// For gRPC, it is an error to specify "required_match" on the NameMatcher
 	// protos.
-	Headers              []*NameMatcher `protobuf:"bytes,2,rep,name=headers,proto3" json:"headers,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
-	XXX_unrecognized     []byte         `json:"-"`
-	XXX_sizecache        int32          `json:"-"`
+	Headers []*NameMatcher `protobuf:"bytes,2,rep,name=headers,proto3" json:"headers,omitempty"`
 }
 
-func (m *GrpcKeyBuilder) Reset()         { *m = GrpcKeyBuilder{} }
-func (m *GrpcKeyBuilder) String() string { return proto.CompactTextString(m) }
-func (*GrpcKeyBuilder) ProtoMessage()    {}
+func (x *GrpcKeyBuilder) Reset() {
+	*x = GrpcKeyBuilder{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_lookup_v1_rls_config_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GrpcKeyBuilder) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GrpcKeyBuilder) ProtoMessage() {}
+
+func (x *GrpcKeyBuilder) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_lookup_v1_rls_config_proto_msgTypes[1]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GrpcKeyBuilder.ProtoReflect.Descriptor instead.
 func (*GrpcKeyBuilder) Descriptor() ([]byte, []int) {
-	return fileDescriptor_5fe74d4f6e8f01c1, []int{1}
+	return file_grpc_lookup_v1_rls_config_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *GrpcKeyBuilder) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GrpcKeyBuilder.Unmarshal(m, b)
-}
-func (m *GrpcKeyBuilder) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GrpcKeyBuilder.Marshal(b, m, deterministic)
-}
-func (m *GrpcKeyBuilder) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GrpcKeyBuilder.Merge(m, src)
-}
-func (m *GrpcKeyBuilder) XXX_Size() int {
-	return xxx_messageInfo_GrpcKeyBuilder.Size(m)
-}
-func (m *GrpcKeyBuilder) XXX_DiscardUnknown() {
-	xxx_messageInfo_GrpcKeyBuilder.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GrpcKeyBuilder proto.InternalMessageInfo
-
-func (m *GrpcKeyBuilder) GetNames() []*GrpcKeyBuilder_Name {
-	if m != nil {
-		return m.Names
+func (x *GrpcKeyBuilder) GetNames() []*GrpcKeyBuilder_Name {
+	if x != nil {
+		return x.Names
 	}
 	return nil
 }
 
-func (m *GrpcKeyBuilder) GetHeaders() []*NameMatcher {
-	if m != nil {
-		return m.Headers
+func (x *GrpcKeyBuilder) GetHeaders() []*NameMatcher {
+	if x != nil {
+		return x.Headers
 	}
 	return nil
 }
 
-// To match, one of the given Name fields must match; the service and method
-// fields are specified as fixed strings.  The service name is required and
-// includes the proto package name.  The method name may be omitted, in
-// which case any method on the given service is matched.
-type GrpcKeyBuilder_Name struct {
-	Service              string   `protobuf:"bytes,1,opt,name=service,proto3" json:"service,omitempty"`
-	Method               string   `protobuf:"bytes,2,opt,name=method,proto3" json:"method,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *GrpcKeyBuilder_Name) Reset()         { *m = GrpcKeyBuilder_Name{} }
-func (m *GrpcKeyBuilder_Name) String() string { return proto.CompactTextString(m) }
-func (*GrpcKeyBuilder_Name) ProtoMessage()    {}
-func (*GrpcKeyBuilder_Name) Descriptor() ([]byte, []int) {
-	return fileDescriptor_5fe74d4f6e8f01c1, []int{1, 0}
-}
-
-func (m *GrpcKeyBuilder_Name) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GrpcKeyBuilder_Name.Unmarshal(m, b)
-}
-func (m *GrpcKeyBuilder_Name) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GrpcKeyBuilder_Name.Marshal(b, m, deterministic)
-}
-func (m *GrpcKeyBuilder_Name) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GrpcKeyBuilder_Name.Merge(m, src)
-}
-func (m *GrpcKeyBuilder_Name) XXX_Size() int {
-	return xxx_messageInfo_GrpcKeyBuilder_Name.Size(m)
-}
-func (m *GrpcKeyBuilder_Name) XXX_DiscardUnknown() {
-	xxx_messageInfo_GrpcKeyBuilder_Name.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GrpcKeyBuilder_Name proto.InternalMessageInfo
-
-func (m *GrpcKeyBuilder_Name) GetService() string {
-	if m != nil {
-		return m.Service
-	}
-	return ""
-}
-
-func (m *GrpcKeyBuilder_Name) GetMethod() string {
-	if m != nil {
-		return m.Method
-	}
-	return ""
-}
-
 // An HttpKeyBuilder applies to a given HTTP URL and headers.
 //
 // Path and host patterns use the matching syntax from gRPC transcoding to
@@ -204,6 +188,10 @@
 // subdomain will be used as the id and the first segment as the object. If
 // neither pattern matches, no keys will be extracted.
 type HttpKeyBuilder struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// host_pattern is an ordered list of host template patterns for the desired
 	// value.  If any host_pattern values are specified, then at least one must
 	// match, and the last one wins and sets any specified variables.  A host
@@ -256,66 +244,74 @@
 	// are marked as "required_match" and are not present, this keybuilder fails
 	// to match.  If a given header appears multiple times in the request we will
 	// report it as a comma-separated string, in standard HTTP fashion.
-	Headers              []*NameMatcher `protobuf:"bytes,4,rep,name=headers,proto3" json:"headers,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
-	XXX_unrecognized     []byte         `json:"-"`
-	XXX_sizecache        int32          `json:"-"`
+	Headers []*NameMatcher `protobuf:"bytes,4,rep,name=headers,proto3" json:"headers,omitempty"`
 }
 
-func (m *HttpKeyBuilder) Reset()         { *m = HttpKeyBuilder{} }
-func (m *HttpKeyBuilder) String() string { return proto.CompactTextString(m) }
-func (*HttpKeyBuilder) ProtoMessage()    {}
+func (x *HttpKeyBuilder) Reset() {
+	*x = HttpKeyBuilder{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_lookup_v1_rls_config_proto_msgTypes[2]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *HttpKeyBuilder) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*HttpKeyBuilder) ProtoMessage() {}
+
+func (x *HttpKeyBuilder) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_lookup_v1_rls_config_proto_msgTypes[2]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use HttpKeyBuilder.ProtoReflect.Descriptor instead.
 func (*HttpKeyBuilder) Descriptor() ([]byte, []int) {
-	return fileDescriptor_5fe74d4f6e8f01c1, []int{2}
+	return file_grpc_lookup_v1_rls_config_proto_rawDescGZIP(), []int{2}
 }
 
-func (m *HttpKeyBuilder) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_HttpKeyBuilder.Unmarshal(m, b)
-}
-func (m *HttpKeyBuilder) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_HttpKeyBuilder.Marshal(b, m, deterministic)
-}
-func (m *HttpKeyBuilder) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_HttpKeyBuilder.Merge(m, src)
-}
-func (m *HttpKeyBuilder) XXX_Size() int {
-	return xxx_messageInfo_HttpKeyBuilder.Size(m)
-}
-func (m *HttpKeyBuilder) XXX_DiscardUnknown() {
-	xxx_messageInfo_HttpKeyBuilder.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_HttpKeyBuilder proto.InternalMessageInfo
-
-func (m *HttpKeyBuilder) GetHostPatterns() []string {
-	if m != nil {
-		return m.HostPatterns
+func (x *HttpKeyBuilder) GetHostPatterns() []string {
+	if x != nil {
+		return x.HostPatterns
 	}
 	return nil
 }
 
-func (m *HttpKeyBuilder) GetPathPatterns() []string {
-	if m != nil {
-		return m.PathPatterns
+func (x *HttpKeyBuilder) GetPathPatterns() []string {
+	if x != nil {
+		return x.PathPatterns
 	}
 	return nil
 }
 
-func (m *HttpKeyBuilder) GetQueryParameters() []*NameMatcher {
-	if m != nil {
-		return m.QueryParameters
+func (x *HttpKeyBuilder) GetQueryParameters() []*NameMatcher {
+	if x != nil {
+		return x.QueryParameters
 	}
 	return nil
 }
 
-func (m *HttpKeyBuilder) GetHeaders() []*NameMatcher {
-	if m != nil {
-		return m.Headers
+func (x *HttpKeyBuilder) GetHeaders() []*NameMatcher {
+	if x != nil {
+		return x.Headers
 	}
 	return nil
 }
 
 type RouteLookupConfig struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Ordered specifications for constructing keys for HTTP requests.  Last
 	// match wins.  If no HttpKeyBuilder matches, an empty key_map will be sent to
 	// the lookup service; it should likely reply with a global default route
@@ -357,149 +353,366 @@
 	// used if RLS returns an error, times out, or returns an invalid response.
 	// Note that requests can be routed only to a subdomain of the original
 	// target, e.g. "us_east_1.cloudbigtable.googleapis.com".
-	DefaultTarget        string   `protobuf:"bytes,9,opt,name=default_target,json=defaultTarget,proto3" json:"default_target,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	DefaultTarget string `protobuf:"bytes,9,opt,name=default_target,json=defaultTarget,proto3" json:"default_target,omitempty"`
 }
 
-func (m *RouteLookupConfig) Reset()         { *m = RouteLookupConfig{} }
-func (m *RouteLookupConfig) String() string { return proto.CompactTextString(m) }
-func (*RouteLookupConfig) ProtoMessage()    {}
+func (x *RouteLookupConfig) Reset() {
+	*x = RouteLookupConfig{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_lookup_v1_rls_config_proto_msgTypes[3]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *RouteLookupConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RouteLookupConfig) ProtoMessage() {}
+
+func (x *RouteLookupConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_lookup_v1_rls_config_proto_msgTypes[3]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use RouteLookupConfig.ProtoReflect.Descriptor instead.
 func (*RouteLookupConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_5fe74d4f6e8f01c1, []int{3}
+	return file_grpc_lookup_v1_rls_config_proto_rawDescGZIP(), []int{3}
 }
 
-func (m *RouteLookupConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_RouteLookupConfig.Unmarshal(m, b)
-}
-func (m *RouteLookupConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_RouteLookupConfig.Marshal(b, m, deterministic)
-}
-func (m *RouteLookupConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_RouteLookupConfig.Merge(m, src)
-}
-func (m *RouteLookupConfig) XXX_Size() int {
-	return xxx_messageInfo_RouteLookupConfig.Size(m)
-}
-func (m *RouteLookupConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_RouteLookupConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_RouteLookupConfig proto.InternalMessageInfo
-
-func (m *RouteLookupConfig) GetHttpKeybuilders() []*HttpKeyBuilder {
-	if m != nil {
-		return m.HttpKeybuilders
+func (x *RouteLookupConfig) GetHttpKeybuilders() []*HttpKeyBuilder {
+	if x != nil {
+		return x.HttpKeybuilders
 	}
 	return nil
 }
 
-func (m *RouteLookupConfig) GetGrpcKeybuilders() []*GrpcKeyBuilder {
-	if m != nil {
-		return m.GrpcKeybuilders
+func (x *RouteLookupConfig) GetGrpcKeybuilders() []*GrpcKeyBuilder {
+	if x != nil {
+		return x.GrpcKeybuilders
 	}
 	return nil
 }
 
-func (m *RouteLookupConfig) GetLookupService() string {
-	if m != nil {
-		return m.LookupService
+func (x *RouteLookupConfig) GetLookupService() string {
+	if x != nil {
+		return x.LookupService
 	}
 	return ""
 }
 
-func (m *RouteLookupConfig) GetLookupServiceTimeout() *duration.Duration {
-	if m != nil {
-		return m.LookupServiceTimeout
+func (x *RouteLookupConfig) GetLookupServiceTimeout() *duration.Duration {
+	if x != nil {
+		return x.LookupServiceTimeout
 	}
 	return nil
 }
 
-func (m *RouteLookupConfig) GetMaxAge() *duration.Duration {
-	if m != nil {
-		return m.MaxAge
+func (x *RouteLookupConfig) GetMaxAge() *duration.Duration {
+	if x != nil {
+		return x.MaxAge
 	}
 	return nil
 }
 
-func (m *RouteLookupConfig) GetStaleAge() *duration.Duration {
-	if m != nil {
-		return m.StaleAge
+func (x *RouteLookupConfig) GetStaleAge() *duration.Duration {
+	if x != nil {
+		return x.StaleAge
 	}
 	return nil
 }
 
-func (m *RouteLookupConfig) GetCacheSizeBytes() int64 {
-	if m != nil {
-		return m.CacheSizeBytes
+func (x *RouteLookupConfig) GetCacheSizeBytes() int64 {
+	if x != nil {
+		return x.CacheSizeBytes
 	}
 	return 0
 }
 
-func (m *RouteLookupConfig) GetValidTargets() []string {
-	if m != nil {
-		return m.ValidTargets
+func (x *RouteLookupConfig) GetValidTargets() []string {
+	if x != nil {
+		return x.ValidTargets
 	}
 	return nil
 }
 
-func (m *RouteLookupConfig) GetDefaultTarget() string {
-	if m != nil {
-		return m.DefaultTarget
+func (x *RouteLookupConfig) GetDefaultTarget() string {
+	if x != nil {
+		return x.DefaultTarget
 	}
 	return ""
 }
 
-func init() {
-	proto.RegisterType((*NameMatcher)(nil), "grpc.lookup.v1.NameMatcher")
-	proto.RegisterType((*GrpcKeyBuilder)(nil), "grpc.lookup.v1.GrpcKeyBuilder")
-	proto.RegisterType((*GrpcKeyBuilder_Name)(nil), "grpc.lookup.v1.GrpcKeyBuilder.Name")
-	proto.RegisterType((*HttpKeyBuilder)(nil), "grpc.lookup.v1.HttpKeyBuilder")
-	proto.RegisterType((*RouteLookupConfig)(nil), "grpc.lookup.v1.RouteLookupConfig")
+// To match, one of the given Name fields must match; the service and method
+// fields are specified as fixed strings.  The service name is required and
+// includes the proto package name.  The method name may be omitted, in
+// which case any method on the given service is matched.
+type GrpcKeyBuilder_Name struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Service string `protobuf:"bytes,1,opt,name=service,proto3" json:"service,omitempty"`
+	Method  string `protobuf:"bytes,2,opt,name=method,proto3" json:"method,omitempty"`
 }
 
-func init() { proto.RegisterFile("grpc/lookup/v1/rls_config.proto", fileDescriptor_5fe74d4f6e8f01c1) }
+func (x *GrpcKeyBuilder_Name) Reset() {
+	*x = GrpcKeyBuilder_Name{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_lookup_v1_rls_config_proto_msgTypes[4]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
 
-var fileDescriptor_5fe74d4f6e8f01c1 = []byte{
-	// 615 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x54, 0xed, 0x6a, 0xdb, 0x30,
-	0x14, 0xc5, 0x75, 0x9a, 0x0f, 0xa5, 0x75, 0x53, 0x53, 0x8a, 0xd7, 0x42, 0x17, 0x52, 0x0a, 0xfe,
-	0x31, 0x1c, 0x9a, 0xb1, 0xb1, 0xfd, 0x5c, 0x36, 0xf6, 0xfd, 0x11, 0xdc, 0xfe, 0x1a, 0x03, 0xa1,
-	0xd8, 0xb7, 0xb2, 0xa9, 0x1d, 0xb9, 0x92, 0x1c, 0x9a, 0x3e, 0xd0, 0x9e, 0x62, 0x2f, 0xb2, 0xb7,
-	0x19, 0x92, 0xec, 0x2e, 0x2e, 0x83, 0xec, 0x5f, 0xee, 0xd1, 0x39, 0x27, 0x3a, 0xf7, 0x5e, 0x19,
-	0x3d, 0xa6, 0xbc, 0x88, 0xc6, 0x19, 0x63, 0xd7, 0x65, 0x31, 0x5e, 0x9e, 0x8f, 0x79, 0x26, 0x70,
-	0xc4, 0x16, 0x57, 0x29, 0x0d, 0x0a, 0xce, 0x24, 0x73, 0x1d, 0x45, 0x08, 0x0c, 0x21, 0x58, 0x9e,
-	0x1f, 0x9d, 0x50, 0xc6, 0x68, 0x06, 0x63, 0x7d, 0x3a, 0x2f, 0xaf, 0xc6, 0x71, 0xc9, 0x89, 0x4c,
-	0xd9, 0xc2, 0xf0, 0x47, 0x3f, 0x50, 0xff, 0x2b, 0xc9, 0xe1, 0x0b, 0x91, 0x51, 0x02, 0xdc, 0x1d,
-	0x20, 0xfb, 0x1a, 0x56, 0x9e, 0x35, 0xb4, 0xfc, 0x5e, 0xa8, 0x7e, 0xba, 0x07, 0x68, 0x7b, 0x41,
-	0x72, 0x10, 0xde, 0xd6, 0xd0, 0xf6, 0x7b, 0xa1, 0x29, 0xdc, 0x33, 0xe4, 0x70, 0xb8, 0x29, 0x53,
-	0x0e, 0x31, 0xce, 0x95, 0xd6, 0xb3, 0x87, 0x96, 0xdf, 0x0d, 0x77, 0x6b, 0x54, 0x1b, 0x8e, 0x7e,
-	0x59, 0xc8, 0x79, 0xc7, 0x8b, 0xe8, 0x13, 0xac, 0xa6, 0x65, 0x9a, 0xc5, 0xc0, 0xdd, 0x97, 0xb5,
-	0x9f, 0x35, 0xb4, 0xfd, 0xfe, 0xe4, 0x34, 0x68, 0x5e, 0x38, 0x68, 0xd2, 0x03, 0x75, 0xb9, 0xfa,
-	0x4f, 0x9f, 0xa1, 0x4e, 0x02, 0x24, 0x06, 0x6e, 0x2e, 0xd3, 0x9f, 0x1c, 0x3f, 0x14, 0xaf, 0x45,
-	0x09, 0x6b, 0xee, 0xd1, 0x0b, 0xd4, 0x52, 0xb8, 0xeb, 0xa1, 0x8e, 0x00, 0xbe, 0x4c, 0x23, 0xa8,
-	0xf2, 0xd5, 0xa5, 0x7b, 0x88, 0xda, 0x39, 0xc8, 0x84, 0xc5, 0xde, 0x96, 0x3e, 0xa8, 0xaa, 0xd1,
-	0x6f, 0x0b, 0x39, 0xef, 0xa5, 0x2c, 0xd6, 0xae, 0x7f, 0x8a, 0x76, 0x13, 0x26, 0x24, 0x2e, 0x88,
-	0x94, 0xc0, 0x17, 0x26, 0x46, 0x2f, 0xdc, 0x51, 0xe0, 0xac, 0xc2, 0x14, 0xa9, 0x20, 0x32, 0xf9,
-	0x4b, 0x32, 0xbd, 0xdb, 0x51, 0xe0, 0x3d, 0xe9, 0x2d, 0x1a, 0xdc, 0x94, 0xc0, 0x57, 0xb8, 0x20,
-	0x9c, 0xe4, 0x20, 0x55, 0x2c, 0x7b, 0x73, 0xac, 0x3d, 0x2d, 0x9a, 0xdd, 0x6b, 0xd6, 0xbb, 0xd2,
-	0xfa, 0xff, 0xae, 0x8c, 0x7e, 0xb6, 0xd0, 0x7e, 0xc8, 0x4a, 0x09, 0x9f, 0x35, 0xef, 0xb5, 0x5e,
-	0x22, 0xf7, 0x03, 0x1a, 0x24, 0x52, 0x16, 0xf8, 0x1a, 0x56, 0x73, 0x93, 0xb8, 0x1e, 0xd4, 0xc9,
-	0x43, 0xd7, 0x66, 0x63, 0xc2, 0xbd, 0xc4, 0xd4, 0xb5, 0x4c, 0x59, 0x29, 0x45, 0xc3, 0x6a, 0xeb,
-	0xdf, 0x56, 0xcd, 0x99, 0x87, 0x7b, 0xd4, 0xd4, 0xf7, 0x56, 0x67, 0xc8, 0x31, 0x64, 0x5c, 0x0f,
-	0xd0, 0xd6, 0x73, 0xda, 0x35, 0xe8, 0x45, 0x35, 0xc6, 0x6f, 0xe8, 0xb0, 0x49, 0xc3, 0x32, 0xcd,
-	0x81, 0x95, 0xd2, 0x6b, 0x0d, 0x2d, 0xbf, 0x3f, 0x79, 0x14, 0x98, 0xc7, 0x10, 0xd4, 0x8f, 0x21,
-	0x78, 0x53, 0x3d, 0x86, 0xf0, 0xa0, 0xe1, 0x74, 0x69, 0x64, 0xee, 0x04, 0x75, 0x72, 0x72, 0x8b,
-	0x09, 0x05, 0x6f, 0x7b, 0x93, 0x43, 0x3b, 0x27, 0xb7, 0xaf, 0x28, 0xb8, 0xcf, 0x51, 0x4f, 0x48,
-	0x92, 0x81, 0x56, 0xb5, 0x37, 0xa9, 0xba, 0x9a, 0xab, 0x74, 0x3e, 0x1a, 0x44, 0x24, 0x4a, 0x00,
-	0x8b, 0xf4, 0x0e, 0xf0, 0x7c, 0x25, 0x41, 0x78, 0x9d, 0xa1, 0xe5, 0xdb, 0xa1, 0xa3, 0xf1, 0x8b,
-	0xf4, 0x0e, 0xa6, 0x0a, 0x55, 0xdb, 0xb5, 0x24, 0x59, 0x1a, 0x63, 0x49, 0x38, 0x05, 0x29, 0xbc,
-	0xae, 0xd9, 0x2e, 0x0d, 0x5e, 0x1a, 0x4c, 0xb5, 0x2c, 0x86, 0x2b, 0x52, 0x66, 0xb2, 0xa2, 0x79,
-	0x3d, 0xd3, 0xb2, 0x0a, 0x35, 0xbc, 0x8f, 0xad, 0x2e, 0x1a, 0xf4, 0xc3, 0x63, 0xf5, 0x6a, 0x41,
-	0x6d, 0x35, 0x67, 0x11, 0x08, 0x91, 0x2e, 0x28, 0x16, 0x92, 0x13, 0x09, 0x74, 0x35, 0xbd, 0x40,
-	0xfb, 0x29, 0x7b, 0x30, 0xb1, 0xa9, 0x13, 0x66, 0xc2, 0xac, 0xcc, 0x4c, 0x65, 0x9a, 0x59, 0xdf,
-	0x9f, 0x54, 0x19, 0x29, 0xcb, 0xc8, 0x82, 0x06, 0x8c, 0xd3, 0xf1, 0xfa, 0xb7, 0x4a, 0xaf, 0x42,
-	0x35, 0x9d, 0xe5, 0xf9, 0xbc, 0xad, 0x5b, 0xf1, 0xf4, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff,
-	0xaa, 0xbd, 0xb2, 0xd0, 0x04, 0x00, 0x00,
+func (x *GrpcKeyBuilder_Name) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GrpcKeyBuilder_Name) ProtoMessage() {}
+
+func (x *GrpcKeyBuilder_Name) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_lookup_v1_rls_config_proto_msgTypes[4]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GrpcKeyBuilder_Name.ProtoReflect.Descriptor instead.
+func (*GrpcKeyBuilder_Name) Descriptor() ([]byte, []int) {
+	return file_grpc_lookup_v1_rls_config_proto_rawDescGZIP(), []int{1, 0}
+}
+
+func (x *GrpcKeyBuilder_Name) GetService() string {
+	if x != nil {
+		return x.Service
+	}
+	return ""
+}
+
+func (x *GrpcKeyBuilder_Name) GetMethod() string {
+	if x != nil {
+		return x.Method
+	}
+	return ""
+}
+
+var File_grpc_lookup_v1_rls_config_proto protoreflect.FileDescriptor
+
+var file_grpc_lookup_v1_rls_config_proto_rawDesc = []byte{
+	0x0a, 0x1f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2f, 0x76, 0x31,
+	0x2f, 0x72, 0x6c, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x12, 0x0e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2e, 0x76,
+	0x31, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
+	0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x22, 0x5c, 0x0a, 0x0b, 0x4e, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72,
+	0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b,
+	0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28,
+	0x09, 0x52, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x71, 0x75,
+	0x69, 0x72, 0x65, 0x64, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08,
+	0x52, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22,
+	0xbc, 0x01, 0x0a, 0x0e, 0x47, 0x72, 0x70, 0x63, 0x4b, 0x65, 0x79, 0x42, 0x75, 0x69, 0x6c, 0x64,
+	0x65, 0x72, 0x12, 0x39, 0x0a, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
+	0x0b, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2e,
+	0x76, 0x31, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x4b, 0x65, 0x79, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65,
+	0x72, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x35, 0x0a,
+	0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b,
+	0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e,
+	0x4e, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x07, 0x68, 0x65, 0x61,
+	0x64, 0x65, 0x72, 0x73, 0x1a, 0x38, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07,
+	0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73,
+	0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x22, 0xd9,
+	0x01, 0x0a, 0x0e, 0x48, 0x74, 0x74, 0x70, 0x4b, 0x65, 0x79, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65,
+	0x72, 0x12, 0x23, 0x0a, 0x0d, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72,
+	0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x68, 0x6f, 0x73, 0x74, 0x50, 0x61,
+	0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x70,
+	0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x70,
+	0x61, 0x74, 0x68, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x12, 0x46, 0x0a, 0x10, 0x71,
+	0x75, 0x65, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18,
+	0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x6f, 0x6f,
+	0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68,
+	0x65, 0x72, 0x52, 0x0f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74,
+	0x65, 0x72, 0x73, 0x12, 0x35, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x04,
+	0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x6f, 0x6f, 0x6b,
+	0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65,
+	0x72, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x22, 0xa6, 0x04, 0x0a, 0x11, 0x52,
+	0x6f, 0x75, 0x74, 0x65, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
+	0x12, 0x49, 0x0a, 0x10, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x6b, 0x65, 0x79, 0x62, 0x75, 0x69, 0x6c,
+	0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x70,
+	0x63, 0x2e, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x74, 0x74, 0x70,
+	0x4b, 0x65, 0x79, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x52, 0x0f, 0x68, 0x74, 0x74, 0x70,
+	0x4b, 0x65, 0x79, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x73, 0x12, 0x49, 0x0a, 0x10, 0x67,
+	0x72, 0x70, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x73, 0x18,
+	0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x6f, 0x6f,
+	0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x4b, 0x65, 0x79, 0x42, 0x75,
+	0x69, 0x6c, 0x64, 0x65, 0x72, 0x52, 0x0f, 0x67, 0x72, 0x70, 0x63, 0x4b, 0x65, 0x79, 0x62, 0x75,
+	0x69, 0x6c, 0x64, 0x65, 0x72, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70,
+	0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d,
+	0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x4f, 0x0a,
+	0x16, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f,
+	0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e,
+	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
+	0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x14, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70,
+	0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x32,
+	0x0a, 0x07, 0x6d, 0x61, 0x78, 0x5f, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
+	0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x6d, 0x61, 0x78, 0x41,
+	0x67, 0x65, 0x12, 0x36, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x6c, 0x65, 0x5f, 0x61, 0x67, 0x65, 0x18,
+	0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+	0x52, 0x08, 0x73, 0x74, 0x61, 0x6c, 0x65, 0x41, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x63, 0x61,
+	0x63, 0x68, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x07,
+	0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x42,
+	0x79, 0x74, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x74, 0x61,
+	0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x76, 0x61, 0x6c,
+	0x69, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x65, 0x66,
+	0x61, 0x75, 0x6c, 0x74, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74,
+	0x4a, 0x04, 0x08, 0x0a, 0x10, 0x0b, 0x52, 0x1b, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f,
+	0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74,
+	0x65, 0x67, 0x79, 0x42, 0x53, 0x0a, 0x11, 0x69, 0x6f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c,
+	0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x42, 0x0e, 0x52, 0x6c, 0x73, 0x43, 0x6f, 0x6e,
+	0x66, 0x69, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2c, 0x67, 0x6f, 0x6f, 0x67,
+	0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x72,
+	0x70, 0x63, 0x2f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x6c,
+	0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+	file_grpc_lookup_v1_rls_config_proto_rawDescOnce sync.Once
+	file_grpc_lookup_v1_rls_config_proto_rawDescData = file_grpc_lookup_v1_rls_config_proto_rawDesc
+)
+
+func file_grpc_lookup_v1_rls_config_proto_rawDescGZIP() []byte {
+	file_grpc_lookup_v1_rls_config_proto_rawDescOnce.Do(func() {
+		file_grpc_lookup_v1_rls_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_grpc_lookup_v1_rls_config_proto_rawDescData)
+	})
+	return file_grpc_lookup_v1_rls_config_proto_rawDescData
+}
+
+var file_grpc_lookup_v1_rls_config_proto_msgTypes = make([]protoimpl.MessageInfo, 5)
+var file_grpc_lookup_v1_rls_config_proto_goTypes = []interface{}{
+	(*NameMatcher)(nil),         // 0: grpc.lookup.v1.NameMatcher
+	(*GrpcKeyBuilder)(nil),      // 1: grpc.lookup.v1.GrpcKeyBuilder
+	(*HttpKeyBuilder)(nil),      // 2: grpc.lookup.v1.HttpKeyBuilder
+	(*RouteLookupConfig)(nil),   // 3: grpc.lookup.v1.RouteLookupConfig
+	(*GrpcKeyBuilder_Name)(nil), // 4: grpc.lookup.v1.GrpcKeyBuilder.Name
+	(*duration.Duration)(nil),   // 5: google.protobuf.Duration
+}
+var file_grpc_lookup_v1_rls_config_proto_depIdxs = []int32{
+	4, // 0: grpc.lookup.v1.GrpcKeyBuilder.names:type_name -> grpc.lookup.v1.GrpcKeyBuilder.Name
+	0, // 1: grpc.lookup.v1.GrpcKeyBuilder.headers:type_name -> grpc.lookup.v1.NameMatcher
+	0, // 2: grpc.lookup.v1.HttpKeyBuilder.query_parameters:type_name -> grpc.lookup.v1.NameMatcher
+	0, // 3: grpc.lookup.v1.HttpKeyBuilder.headers:type_name -> grpc.lookup.v1.NameMatcher
+	2, // 4: grpc.lookup.v1.RouteLookupConfig.http_keybuilders:type_name -> grpc.lookup.v1.HttpKeyBuilder
+	1, // 5: grpc.lookup.v1.RouteLookupConfig.grpc_keybuilders:type_name -> grpc.lookup.v1.GrpcKeyBuilder
+	5, // 6: grpc.lookup.v1.RouteLookupConfig.lookup_service_timeout:type_name -> google.protobuf.Duration
+	5, // 7: grpc.lookup.v1.RouteLookupConfig.max_age:type_name -> google.protobuf.Duration
+	5, // 8: grpc.lookup.v1.RouteLookupConfig.stale_age:type_name -> google.protobuf.Duration
+	9, // [9:9] is the sub-list for method output_type
+	9, // [9:9] is the sub-list for method input_type
+	9, // [9:9] is the sub-list for extension type_name
+	9, // [9:9] is the sub-list for extension extendee
+	0, // [0:9] is the sub-list for field type_name
+}
+
+func init() { file_grpc_lookup_v1_rls_config_proto_init() }
+func file_grpc_lookup_v1_rls_config_proto_init() {
+	if File_grpc_lookup_v1_rls_config_proto != nil {
+		return
+	}
+	if !protoimpl.UnsafeEnabled {
+		file_grpc_lookup_v1_rls_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*NameMatcher); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_lookup_v1_rls_config_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GrpcKeyBuilder); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_lookup_v1_rls_config_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*HttpKeyBuilder); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_lookup_v1_rls_config_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*RouteLookupConfig); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_lookup_v1_rls_config_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GrpcKeyBuilder_Name); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_grpc_lookup_v1_rls_config_proto_rawDesc,
+			NumEnums:      0,
+			NumMessages:   5,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_grpc_lookup_v1_rls_config_proto_goTypes,
+		DependencyIndexes: file_grpc_lookup_v1_rls_config_proto_depIdxs,
+		MessageInfos:      file_grpc_lookup_v1_rls_config_proto_msgTypes,
+	}.Build()
+	File_grpc_lookup_v1_rls_config_proto = out.File
+	file_grpc_lookup_v1_rls_config_proto_rawDesc = nil
+	file_grpc_lookup_v1_rls_config_proto_goTypes = nil
+	file_grpc_lookup_v1_rls_config_proto_depIdxs = nil
 }
diff --git a/benchmark/grpc_testing/control.pb.go b/benchmark/grpc_testing/control.pb.go
index 7a109d8..9cb9a2f 100644
--- a/benchmark/grpc_testing/control.pb.go
+++ b/benchmark/grpc_testing/control.pb.go
@@ -1,24 +1,43 @@
+// Copyright 2016 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.25.0
+// 	protoc        v3.3.0
 // source: benchmark/grpc_testing/control.proto
 
 package grpc_testing
 
 import (
-	fmt "fmt"
 	proto "github.com/golang/protobuf/proto"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
 )
 
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
 
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+// This is a compile-time assertion that a sufficiently up-to-date version
+// of the legacy proto package is being used.
+const _ = proto.ProtoPackageIsVersion4
 
 type ClientType int32
 
@@ -27,22 +46,43 @@
 	ClientType_ASYNC_CLIENT ClientType = 1
 )
 
-var ClientType_name = map[int32]string{
-	0: "SYNC_CLIENT",
-	1: "ASYNC_CLIENT",
-}
+// Enum value maps for ClientType.
+var (
+	ClientType_name = map[int32]string{
+		0: "SYNC_CLIENT",
+		1: "ASYNC_CLIENT",
+	}
+	ClientType_value = map[string]int32{
+		"SYNC_CLIENT":  0,
+		"ASYNC_CLIENT": 1,
+	}
+)
 
-var ClientType_value = map[string]int32{
-	"SYNC_CLIENT":  0,
-	"ASYNC_CLIENT": 1,
+func (x ClientType) Enum() *ClientType {
+	p := new(ClientType)
+	*p = x
+	return p
 }
 
 func (x ClientType) String() string {
-	return proto.EnumName(ClientType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (ClientType) Descriptor() protoreflect.EnumDescriptor {
+	return file_benchmark_grpc_testing_control_proto_enumTypes[0].Descriptor()
+}
+
+func (ClientType) Type() protoreflect.EnumType {
+	return &file_benchmark_grpc_testing_control_proto_enumTypes[0]
+}
+
+func (x ClientType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ClientType.Descriptor instead.
 func (ClientType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_6f4e2bf9f888bddb, []int{0}
+	return file_benchmark_grpc_testing_control_proto_rawDescGZIP(), []int{0}
 }
 
 type ServerType int32
@@ -53,24 +93,45 @@
 	ServerType_ASYNC_GENERIC_SERVER ServerType = 2
 )
 
-var ServerType_name = map[int32]string{
-	0: "SYNC_SERVER",
-	1: "ASYNC_SERVER",
-	2: "ASYNC_GENERIC_SERVER",
-}
+// Enum value maps for ServerType.
+var (
+	ServerType_name = map[int32]string{
+		0: "SYNC_SERVER",
+		1: "ASYNC_SERVER",
+		2: "ASYNC_GENERIC_SERVER",
+	}
+	ServerType_value = map[string]int32{
+		"SYNC_SERVER":          0,
+		"ASYNC_SERVER":         1,
+		"ASYNC_GENERIC_SERVER": 2,
+	}
+)
 
-var ServerType_value = map[string]int32{
-	"SYNC_SERVER":          0,
-	"ASYNC_SERVER":         1,
-	"ASYNC_GENERIC_SERVER": 2,
+func (x ServerType) Enum() *ServerType {
+	p := new(ServerType)
+	*p = x
+	return p
 }
 
 func (x ServerType) String() string {
-	return proto.EnumName(ServerType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (ServerType) Descriptor() protoreflect.EnumDescriptor {
+	return file_benchmark_grpc_testing_control_proto_enumTypes[1].Descriptor()
+}
+
+func (ServerType) Type() protoreflect.EnumType {
+	return &file_benchmark_grpc_testing_control_proto_enumTypes[1]
+}
+
+func (x ServerType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ServerType.Descriptor instead.
 func (ServerType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_6f4e2bf9f888bddb, []int{1}
+	return file_benchmark_grpc_testing_control_proto_rawDescGZIP(), []int{1}
 }
 
 type RpcType int32
@@ -80,195 +141,248 @@
 	RpcType_STREAMING RpcType = 1
 )
 
-var RpcType_name = map[int32]string{
-	0: "UNARY",
-	1: "STREAMING",
-}
+// Enum value maps for RpcType.
+var (
+	RpcType_name = map[int32]string{
+		0: "UNARY",
+		1: "STREAMING",
+	}
+	RpcType_value = map[string]int32{
+		"UNARY":     0,
+		"STREAMING": 1,
+	}
+)
 
-var RpcType_value = map[string]int32{
-	"UNARY":     0,
-	"STREAMING": 1,
+func (x RpcType) Enum() *RpcType {
+	p := new(RpcType)
+	*p = x
+	return p
 }
 
 func (x RpcType) String() string {
-	return proto.EnumName(RpcType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (RpcType) Descriptor() protoreflect.EnumDescriptor {
+	return file_benchmark_grpc_testing_control_proto_enumTypes[2].Descriptor()
+}
+
+func (RpcType) Type() protoreflect.EnumType {
+	return &file_benchmark_grpc_testing_control_proto_enumTypes[2]
+}
+
+func (x RpcType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use RpcType.Descriptor instead.
 func (RpcType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_6f4e2bf9f888bddb, []int{2}
+	return file_benchmark_grpc_testing_control_proto_rawDescGZIP(), []int{2}
 }
 
 // Parameters of poisson process distribution, which is a good representation
 // of activity coming in from independent identical stationary sources.
 type PoissonParams struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The rate of arrivals (a.k.a. lambda parameter of the exp distribution).
-	OfferedLoad          float64  `protobuf:"fixed64,1,opt,name=offered_load,json=offeredLoad,proto3" json:"offered_load,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	OfferedLoad float64 `protobuf:"fixed64,1,opt,name=offered_load,json=offeredLoad,proto3" json:"offered_load,omitempty"`
 }
 
-func (m *PoissonParams) Reset()         { *m = PoissonParams{} }
-func (m *PoissonParams) String() string { return proto.CompactTextString(m) }
-func (*PoissonParams) ProtoMessage()    {}
+func (x *PoissonParams) Reset() {
+	*x = PoissonParams{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_control_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *PoissonParams) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PoissonParams) ProtoMessage() {}
+
+func (x *PoissonParams) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_control_proto_msgTypes[0]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use PoissonParams.ProtoReflect.Descriptor instead.
 func (*PoissonParams) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6f4e2bf9f888bddb, []int{0}
+	return file_benchmark_grpc_testing_control_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *PoissonParams) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_PoissonParams.Unmarshal(m, b)
-}
-func (m *PoissonParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_PoissonParams.Marshal(b, m, deterministic)
-}
-func (m *PoissonParams) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PoissonParams.Merge(m, src)
-}
-func (m *PoissonParams) XXX_Size() int {
-	return xxx_messageInfo_PoissonParams.Size(m)
-}
-func (m *PoissonParams) XXX_DiscardUnknown() {
-	xxx_messageInfo_PoissonParams.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_PoissonParams proto.InternalMessageInfo
-
-func (m *PoissonParams) GetOfferedLoad() float64 {
-	if m != nil {
-		return m.OfferedLoad
+func (x *PoissonParams) GetOfferedLoad() float64 {
+	if x != nil {
+		return x.OfferedLoad
 	}
 	return 0
 }
 
 type UniformParams struct {
-	InterarrivalLo       float64  `protobuf:"fixed64,1,opt,name=interarrival_lo,json=interarrivalLo,proto3" json:"interarrival_lo,omitempty"`
-	InterarrivalHi       float64  `protobuf:"fixed64,2,opt,name=interarrival_hi,json=interarrivalHi,proto3" json:"interarrival_hi,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	InterarrivalLo float64 `protobuf:"fixed64,1,opt,name=interarrival_lo,json=interarrivalLo,proto3" json:"interarrival_lo,omitempty"`
+	InterarrivalHi float64 `protobuf:"fixed64,2,opt,name=interarrival_hi,json=interarrivalHi,proto3" json:"interarrival_hi,omitempty"`
 }
 
-func (m *UniformParams) Reset()         { *m = UniformParams{} }
-func (m *UniformParams) String() string { return proto.CompactTextString(m) }
-func (*UniformParams) ProtoMessage()    {}
+func (x *UniformParams) Reset() {
+	*x = UniformParams{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_control_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *UniformParams) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UniformParams) ProtoMessage() {}
+
+func (x *UniformParams) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_control_proto_msgTypes[1]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use UniformParams.ProtoReflect.Descriptor instead.
 func (*UniformParams) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6f4e2bf9f888bddb, []int{1}
+	return file_benchmark_grpc_testing_control_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *UniformParams) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_UniformParams.Unmarshal(m, b)
-}
-func (m *UniformParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_UniformParams.Marshal(b, m, deterministic)
-}
-func (m *UniformParams) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_UniformParams.Merge(m, src)
-}
-func (m *UniformParams) XXX_Size() int {
-	return xxx_messageInfo_UniformParams.Size(m)
-}
-func (m *UniformParams) XXX_DiscardUnknown() {
-	xxx_messageInfo_UniformParams.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_UniformParams proto.InternalMessageInfo
-
-func (m *UniformParams) GetInterarrivalLo() float64 {
-	if m != nil {
-		return m.InterarrivalLo
+func (x *UniformParams) GetInterarrivalLo() float64 {
+	if x != nil {
+		return x.InterarrivalLo
 	}
 	return 0
 }
 
-func (m *UniformParams) GetInterarrivalHi() float64 {
-	if m != nil {
-		return m.InterarrivalHi
+func (x *UniformParams) GetInterarrivalHi() float64 {
+	if x != nil {
+		return x.InterarrivalHi
 	}
 	return 0
 }
 
 type DeterministicParams struct {
-	OfferedLoad          float64  `protobuf:"fixed64,1,opt,name=offered_load,json=offeredLoad,proto3" json:"offered_load,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	OfferedLoad float64 `protobuf:"fixed64,1,opt,name=offered_load,json=offeredLoad,proto3" json:"offered_load,omitempty"`
 }
 
-func (m *DeterministicParams) Reset()         { *m = DeterministicParams{} }
-func (m *DeterministicParams) String() string { return proto.CompactTextString(m) }
-func (*DeterministicParams) ProtoMessage()    {}
+func (x *DeterministicParams) Reset() {
+	*x = DeterministicParams{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_control_proto_msgTypes[2]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *DeterministicParams) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeterministicParams) ProtoMessage() {}
+
+func (x *DeterministicParams) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_control_proto_msgTypes[2]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeterministicParams.ProtoReflect.Descriptor instead.
 func (*DeterministicParams) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6f4e2bf9f888bddb, []int{2}
+	return file_benchmark_grpc_testing_control_proto_rawDescGZIP(), []int{2}
 }
 
-func (m *DeterministicParams) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_DeterministicParams.Unmarshal(m, b)
-}
-func (m *DeterministicParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_DeterministicParams.Marshal(b, m, deterministic)
-}
-func (m *DeterministicParams) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DeterministicParams.Merge(m, src)
-}
-func (m *DeterministicParams) XXX_Size() int {
-	return xxx_messageInfo_DeterministicParams.Size(m)
-}
-func (m *DeterministicParams) XXX_DiscardUnknown() {
-	xxx_messageInfo_DeterministicParams.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_DeterministicParams proto.InternalMessageInfo
-
-func (m *DeterministicParams) GetOfferedLoad() float64 {
-	if m != nil {
-		return m.OfferedLoad
+func (x *DeterministicParams) GetOfferedLoad() float64 {
+	if x != nil {
+		return x.OfferedLoad
 	}
 	return 0
 }
 
 type ParetoParams struct {
-	InterarrivalBase     float64  `protobuf:"fixed64,1,opt,name=interarrival_base,json=interarrivalBase,proto3" json:"interarrival_base,omitempty"`
-	Alpha                float64  `protobuf:"fixed64,2,opt,name=alpha,proto3" json:"alpha,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	InterarrivalBase float64 `protobuf:"fixed64,1,opt,name=interarrival_base,json=interarrivalBase,proto3" json:"interarrival_base,omitempty"`
+	Alpha            float64 `protobuf:"fixed64,2,opt,name=alpha,proto3" json:"alpha,omitempty"`
 }
 
-func (m *ParetoParams) Reset()         { *m = ParetoParams{} }
-func (m *ParetoParams) String() string { return proto.CompactTextString(m) }
-func (*ParetoParams) ProtoMessage()    {}
+func (x *ParetoParams) Reset() {
+	*x = ParetoParams{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_control_proto_msgTypes[3]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ParetoParams) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ParetoParams) ProtoMessage() {}
+
+func (x *ParetoParams) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_control_proto_msgTypes[3]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ParetoParams.ProtoReflect.Descriptor instead.
 func (*ParetoParams) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6f4e2bf9f888bddb, []int{3}
+	return file_benchmark_grpc_testing_control_proto_rawDescGZIP(), []int{3}
 }
 
-func (m *ParetoParams) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ParetoParams.Unmarshal(m, b)
-}
-func (m *ParetoParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ParetoParams.Marshal(b, m, deterministic)
-}
-func (m *ParetoParams) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ParetoParams.Merge(m, src)
-}
-func (m *ParetoParams) XXX_Size() int {
-	return xxx_messageInfo_ParetoParams.Size(m)
-}
-func (m *ParetoParams) XXX_DiscardUnknown() {
-	xxx_messageInfo_ParetoParams.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ParetoParams proto.InternalMessageInfo
-
-func (m *ParetoParams) GetInterarrivalBase() float64 {
-	if m != nil {
-		return m.InterarrivalBase
+func (x *ParetoParams) GetInterarrivalBase() float64 {
+	if x != nil {
+		return x.InterarrivalBase
 	}
 	return 0
 }
 
-func (m *ParetoParams) GetAlpha() float64 {
-	if m != nil {
-		return m.Alpha
+func (x *ParetoParams) GetAlpha() float64 {
+	if x != nil {
+		return x.Alpha
 	}
 	return 0
 }
@@ -276,73 +390,130 @@
 // Once an RPC finishes, immediately start a new one.
 // No configuration parameters needed.
 type ClosedLoopParams struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 }
 
-func (m *ClosedLoopParams) Reset()         { *m = ClosedLoopParams{} }
-func (m *ClosedLoopParams) String() string { return proto.CompactTextString(m) }
-func (*ClosedLoopParams) ProtoMessage()    {}
+func (x *ClosedLoopParams) Reset() {
+	*x = ClosedLoopParams{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_control_proto_msgTypes[4]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ClosedLoopParams) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ClosedLoopParams) ProtoMessage() {}
+
+func (x *ClosedLoopParams) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_control_proto_msgTypes[4]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ClosedLoopParams.ProtoReflect.Descriptor instead.
 func (*ClosedLoopParams) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6f4e2bf9f888bddb, []int{4}
+	return file_benchmark_grpc_testing_control_proto_rawDescGZIP(), []int{4}
 }
 
-func (m *ClosedLoopParams) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ClosedLoopParams.Unmarshal(m, b)
-}
-func (m *ClosedLoopParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ClosedLoopParams.Marshal(b, m, deterministic)
-}
-func (m *ClosedLoopParams) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ClosedLoopParams.Merge(m, src)
-}
-func (m *ClosedLoopParams) XXX_Size() int {
-	return xxx_messageInfo_ClosedLoopParams.Size(m)
-}
-func (m *ClosedLoopParams) XXX_DiscardUnknown() {
-	xxx_messageInfo_ClosedLoopParams.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ClosedLoopParams proto.InternalMessageInfo
-
 type LoadParams struct {
-	// Types that are valid to be assigned to Load:
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// Types that are assignable to Load:
 	//	*LoadParams_ClosedLoop
 	//	*LoadParams_Poisson
 	//	*LoadParams_Uniform
 	//	*LoadParams_Determ
 	//	*LoadParams_Pareto
-	Load                 isLoadParams_Load `protobuf_oneof:"load"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
+	Load isLoadParams_Load `protobuf_oneof:"load"`
 }
 
-func (m *LoadParams) Reset()         { *m = LoadParams{} }
-func (m *LoadParams) String() string { return proto.CompactTextString(m) }
-func (*LoadParams) ProtoMessage()    {}
+func (x *LoadParams) Reset() {
+	*x = LoadParams{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_control_proto_msgTypes[5]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *LoadParams) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*LoadParams) ProtoMessage() {}
+
+func (x *LoadParams) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_control_proto_msgTypes[5]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use LoadParams.ProtoReflect.Descriptor instead.
 func (*LoadParams) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6f4e2bf9f888bddb, []int{5}
+	return file_benchmark_grpc_testing_control_proto_rawDescGZIP(), []int{5}
 }
 
-func (m *LoadParams) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_LoadParams.Unmarshal(m, b)
-}
-func (m *LoadParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_LoadParams.Marshal(b, m, deterministic)
-}
-func (m *LoadParams) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_LoadParams.Merge(m, src)
-}
-func (m *LoadParams) XXX_Size() int {
-	return xxx_messageInfo_LoadParams.Size(m)
-}
-func (m *LoadParams) XXX_DiscardUnknown() {
-	xxx_messageInfo_LoadParams.DiscardUnknown(m)
+func (m *LoadParams) GetLoad() isLoadParams_Load {
+	if m != nil {
+		return m.Load
+	}
+	return nil
 }
 
-var xxx_messageInfo_LoadParams proto.InternalMessageInfo
+func (x *LoadParams) GetClosedLoop() *ClosedLoopParams {
+	if x, ok := x.GetLoad().(*LoadParams_ClosedLoop); ok {
+		return x.ClosedLoop
+	}
+	return nil
+}
+
+func (x *LoadParams) GetPoisson() *PoissonParams {
+	if x, ok := x.GetLoad().(*LoadParams_Poisson); ok {
+		return x.Poisson
+	}
+	return nil
+}
+
+func (x *LoadParams) GetUniform() *UniformParams {
+	if x, ok := x.GetLoad().(*LoadParams_Uniform); ok {
+		return x.Uniform
+	}
+	return nil
+}
+
+func (x *LoadParams) GetDeterm() *DeterministicParams {
+	if x, ok := x.GetLoad().(*LoadParams_Determ); ok {
+		return x.Determ
+	}
+	return nil
+}
+
+func (x *LoadParams) GetPareto() *ParetoParams {
+	if x, ok := x.GetLoad().(*LoadParams_Pareto); ok {
+		return x.Pareto
+	}
+	return nil
+}
 
 type isLoadParams_Load interface {
 	isLoadParams_Load()
@@ -378,108 +549,67 @@
 
 func (*LoadParams_Pareto) isLoadParams_Load() {}
 
-func (m *LoadParams) GetLoad() isLoadParams_Load {
-	if m != nil {
-		return m.Load
-	}
-	return nil
-}
-
-func (m *LoadParams) GetClosedLoop() *ClosedLoopParams {
-	if x, ok := m.GetLoad().(*LoadParams_ClosedLoop); ok {
-		return x.ClosedLoop
-	}
-	return nil
-}
-
-func (m *LoadParams) GetPoisson() *PoissonParams {
-	if x, ok := m.GetLoad().(*LoadParams_Poisson); ok {
-		return x.Poisson
-	}
-	return nil
-}
-
-func (m *LoadParams) GetUniform() *UniformParams {
-	if x, ok := m.GetLoad().(*LoadParams_Uniform); ok {
-		return x.Uniform
-	}
-	return nil
-}
-
-func (m *LoadParams) GetDeterm() *DeterministicParams {
-	if x, ok := m.GetLoad().(*LoadParams_Determ); ok {
-		return x.Determ
-	}
-	return nil
-}
-
-func (m *LoadParams) GetPareto() *ParetoParams {
-	if x, ok := m.GetLoad().(*LoadParams_Pareto); ok {
-		return x.Pareto
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*LoadParams) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*LoadParams_ClosedLoop)(nil),
-		(*LoadParams_Poisson)(nil),
-		(*LoadParams_Uniform)(nil),
-		(*LoadParams_Determ)(nil),
-		(*LoadParams_Pareto)(nil),
-	}
-}
-
 // presence of SecurityParams implies use of TLS
 type SecurityParams struct {
-	UseTestCa            bool     `protobuf:"varint,1,opt,name=use_test_ca,json=useTestCa,proto3" json:"use_test_ca,omitempty"`
-	ServerHostOverride   string   `protobuf:"bytes,2,opt,name=server_host_override,json=serverHostOverride,proto3" json:"server_host_override,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	UseTestCa          bool   `protobuf:"varint,1,opt,name=use_test_ca,json=useTestCa,proto3" json:"use_test_ca,omitempty"`
+	ServerHostOverride string `protobuf:"bytes,2,opt,name=server_host_override,json=serverHostOverride,proto3" json:"server_host_override,omitempty"`
 }
 
-func (m *SecurityParams) Reset()         { *m = SecurityParams{} }
-func (m *SecurityParams) String() string { return proto.CompactTextString(m) }
-func (*SecurityParams) ProtoMessage()    {}
+func (x *SecurityParams) Reset() {
+	*x = SecurityParams{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_control_proto_msgTypes[6]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *SecurityParams) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SecurityParams) ProtoMessage() {}
+
+func (x *SecurityParams) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_control_proto_msgTypes[6]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SecurityParams.ProtoReflect.Descriptor instead.
 func (*SecurityParams) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6f4e2bf9f888bddb, []int{6}
+	return file_benchmark_grpc_testing_control_proto_rawDescGZIP(), []int{6}
 }
 
-func (m *SecurityParams) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SecurityParams.Unmarshal(m, b)
-}
-func (m *SecurityParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SecurityParams.Marshal(b, m, deterministic)
-}
-func (m *SecurityParams) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SecurityParams.Merge(m, src)
-}
-func (m *SecurityParams) XXX_Size() int {
-	return xxx_messageInfo_SecurityParams.Size(m)
-}
-func (m *SecurityParams) XXX_DiscardUnknown() {
-	xxx_messageInfo_SecurityParams.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SecurityParams proto.InternalMessageInfo
-
-func (m *SecurityParams) GetUseTestCa() bool {
-	if m != nil {
-		return m.UseTestCa
+func (x *SecurityParams) GetUseTestCa() bool {
+	if x != nil {
+		return x.UseTestCa
 	}
 	return false
 }
 
-func (m *SecurityParams) GetServerHostOverride() string {
-	if m != nil {
-		return m.ServerHostOverride
+func (x *SecurityParams) GetServerHostOverride() string {
+	if x != nil {
+		return x.ServerHostOverride
 	}
 	return ""
 }
 
 type ClientConfig struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// List of targets to connect to. At least one target needs to be specified.
 	ServerTargets  []string        `protobuf:"bytes,1,rep,name=server_targets,json=serverTargets,proto3" json:"server_targets,omitempty"`
 	ClientType     ClientType      `protobuf:"varint,2,opt,name=client_type,json=clientType,proto3,enum=grpc.testing.ClientType" json:"client_type,omitempty"`
@@ -498,236 +628,285 @@
 	PayloadConfig   *PayloadConfig   `protobuf:"bytes,11,opt,name=payload_config,json=payloadConfig,proto3" json:"payload_config,omitempty"`
 	HistogramParams *HistogramParams `protobuf:"bytes,12,opt,name=histogram_params,json=histogramParams,proto3" json:"histogram_params,omitempty"`
 	// Specify the cores we should run the client on, if desired
-	CoreList             []int32  `protobuf:"varint,13,rep,packed,name=core_list,json=coreList,proto3" json:"core_list,omitempty"`
-	CoreLimit            int32    `protobuf:"varint,14,opt,name=core_limit,json=coreLimit,proto3" json:"core_limit,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	CoreList  []int32 `protobuf:"varint,13,rep,packed,name=core_list,json=coreList,proto3" json:"core_list,omitempty"`
+	CoreLimit int32   `protobuf:"varint,14,opt,name=core_limit,json=coreLimit,proto3" json:"core_limit,omitempty"`
 }
 
-func (m *ClientConfig) Reset()         { *m = ClientConfig{} }
-func (m *ClientConfig) String() string { return proto.CompactTextString(m) }
-func (*ClientConfig) ProtoMessage()    {}
+func (x *ClientConfig) Reset() {
+	*x = ClientConfig{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_control_proto_msgTypes[7]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ClientConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ClientConfig) ProtoMessage() {}
+
+func (x *ClientConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_control_proto_msgTypes[7]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ClientConfig.ProtoReflect.Descriptor instead.
 func (*ClientConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6f4e2bf9f888bddb, []int{7}
+	return file_benchmark_grpc_testing_control_proto_rawDescGZIP(), []int{7}
 }
 
-func (m *ClientConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ClientConfig.Unmarshal(m, b)
-}
-func (m *ClientConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ClientConfig.Marshal(b, m, deterministic)
-}
-func (m *ClientConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ClientConfig.Merge(m, src)
-}
-func (m *ClientConfig) XXX_Size() int {
-	return xxx_messageInfo_ClientConfig.Size(m)
-}
-func (m *ClientConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_ClientConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ClientConfig proto.InternalMessageInfo
-
-func (m *ClientConfig) GetServerTargets() []string {
-	if m != nil {
-		return m.ServerTargets
+func (x *ClientConfig) GetServerTargets() []string {
+	if x != nil {
+		return x.ServerTargets
 	}
 	return nil
 }
 
-func (m *ClientConfig) GetClientType() ClientType {
-	if m != nil {
-		return m.ClientType
+func (x *ClientConfig) GetClientType() ClientType {
+	if x != nil {
+		return x.ClientType
 	}
 	return ClientType_SYNC_CLIENT
 }
 
-func (m *ClientConfig) GetSecurityParams() *SecurityParams {
-	if m != nil {
-		return m.SecurityParams
+func (x *ClientConfig) GetSecurityParams() *SecurityParams {
+	if x != nil {
+		return x.SecurityParams
 	}
 	return nil
 }
 
-func (m *ClientConfig) GetOutstandingRpcsPerChannel() int32 {
-	if m != nil {
-		return m.OutstandingRpcsPerChannel
+func (x *ClientConfig) GetOutstandingRpcsPerChannel() int32 {
+	if x != nil {
+		return x.OutstandingRpcsPerChannel
 	}
 	return 0
 }
 
-func (m *ClientConfig) GetClientChannels() int32 {
-	if m != nil {
-		return m.ClientChannels
+func (x *ClientConfig) GetClientChannels() int32 {
+	if x != nil {
+		return x.ClientChannels
 	}
 	return 0
 }
 
-func (m *ClientConfig) GetAsyncClientThreads() int32 {
-	if m != nil {
-		return m.AsyncClientThreads
+func (x *ClientConfig) GetAsyncClientThreads() int32 {
+	if x != nil {
+		return x.AsyncClientThreads
 	}
 	return 0
 }
 
-func (m *ClientConfig) GetRpcType() RpcType {
-	if m != nil {
-		return m.RpcType
+func (x *ClientConfig) GetRpcType() RpcType {
+	if x != nil {
+		return x.RpcType
 	}
 	return RpcType_UNARY
 }
 
-func (m *ClientConfig) GetLoadParams() *LoadParams {
-	if m != nil {
-		return m.LoadParams
+func (x *ClientConfig) GetLoadParams() *LoadParams {
+	if x != nil {
+		return x.LoadParams
 	}
 	return nil
 }
 
-func (m *ClientConfig) GetPayloadConfig() *PayloadConfig {
-	if m != nil {
-		return m.PayloadConfig
+func (x *ClientConfig) GetPayloadConfig() *PayloadConfig {
+	if x != nil {
+		return x.PayloadConfig
 	}
 	return nil
 }
 
-func (m *ClientConfig) GetHistogramParams() *HistogramParams {
-	if m != nil {
-		return m.HistogramParams
+func (x *ClientConfig) GetHistogramParams() *HistogramParams {
+	if x != nil {
+		return x.HistogramParams
 	}
 	return nil
 }
 
-func (m *ClientConfig) GetCoreList() []int32 {
-	if m != nil {
-		return m.CoreList
+func (x *ClientConfig) GetCoreList() []int32 {
+	if x != nil {
+		return x.CoreList
 	}
 	return nil
 }
 
-func (m *ClientConfig) GetCoreLimit() int32 {
-	if m != nil {
-		return m.CoreLimit
+func (x *ClientConfig) GetCoreLimit() int32 {
+	if x != nil {
+		return x.CoreLimit
 	}
 	return 0
 }
 
 type ClientStatus struct {
-	Stats                *ClientStats `protobuf:"bytes,1,opt,name=stats,proto3" json:"stats,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
-	XXX_unrecognized     []byte       `json:"-"`
-	XXX_sizecache        int32        `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Stats *ClientStats `protobuf:"bytes,1,opt,name=stats,proto3" json:"stats,omitempty"`
 }
 
-func (m *ClientStatus) Reset()         { *m = ClientStatus{} }
-func (m *ClientStatus) String() string { return proto.CompactTextString(m) }
-func (*ClientStatus) ProtoMessage()    {}
+func (x *ClientStatus) Reset() {
+	*x = ClientStatus{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_control_proto_msgTypes[8]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ClientStatus) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ClientStatus) ProtoMessage() {}
+
+func (x *ClientStatus) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_control_proto_msgTypes[8]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ClientStatus.ProtoReflect.Descriptor instead.
 func (*ClientStatus) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6f4e2bf9f888bddb, []int{8}
+	return file_benchmark_grpc_testing_control_proto_rawDescGZIP(), []int{8}
 }
 
-func (m *ClientStatus) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ClientStatus.Unmarshal(m, b)
-}
-func (m *ClientStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ClientStatus.Marshal(b, m, deterministic)
-}
-func (m *ClientStatus) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ClientStatus.Merge(m, src)
-}
-func (m *ClientStatus) XXX_Size() int {
-	return xxx_messageInfo_ClientStatus.Size(m)
-}
-func (m *ClientStatus) XXX_DiscardUnknown() {
-	xxx_messageInfo_ClientStatus.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ClientStatus proto.InternalMessageInfo
-
-func (m *ClientStatus) GetStats() *ClientStats {
-	if m != nil {
-		return m.Stats
+func (x *ClientStatus) GetStats() *ClientStats {
+	if x != nil {
+		return x.Stats
 	}
 	return nil
 }
 
 // Request current stats
 type Mark struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// if true, the stats will be reset after taking their snapshot.
-	Reset_               bool     `protobuf:"varint,1,opt,name=reset,proto3" json:"reset,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Reset_ bool `protobuf:"varint,1,opt,name=reset,proto3" json:"reset,omitempty"`
 }
 
-func (m *Mark) Reset()         { *m = Mark{} }
-func (m *Mark) String() string { return proto.CompactTextString(m) }
-func (*Mark) ProtoMessage()    {}
+func (x *Mark) Reset() {
+	*x = Mark{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_control_proto_msgTypes[9]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Mark) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Mark) ProtoMessage() {}
+
+func (x *Mark) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_control_proto_msgTypes[9]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Mark.ProtoReflect.Descriptor instead.
 func (*Mark) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6f4e2bf9f888bddb, []int{9}
+	return file_benchmark_grpc_testing_control_proto_rawDescGZIP(), []int{9}
 }
 
-func (m *Mark) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Mark.Unmarshal(m, b)
-}
-func (m *Mark) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Mark.Marshal(b, m, deterministic)
-}
-func (m *Mark) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Mark.Merge(m, src)
-}
-func (m *Mark) XXX_Size() int {
-	return xxx_messageInfo_Mark.Size(m)
-}
-func (m *Mark) XXX_DiscardUnknown() {
-	xxx_messageInfo_Mark.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Mark proto.InternalMessageInfo
-
-func (m *Mark) GetReset_() bool {
-	if m != nil {
-		return m.Reset_
+func (x *Mark) GetReset_() bool {
+	if x != nil {
+		return x.Reset_
 	}
 	return false
 }
 
 type ClientArgs struct {
-	// Types that are valid to be assigned to Argtype:
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// Types that are assignable to Argtype:
 	//	*ClientArgs_Setup
 	//	*ClientArgs_Mark
-	Argtype              isClientArgs_Argtype `protobuf_oneof:"argtype"`
-	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
-	XXX_unrecognized     []byte               `json:"-"`
-	XXX_sizecache        int32                `json:"-"`
+	Argtype isClientArgs_Argtype `protobuf_oneof:"argtype"`
 }
 
-func (m *ClientArgs) Reset()         { *m = ClientArgs{} }
-func (m *ClientArgs) String() string { return proto.CompactTextString(m) }
-func (*ClientArgs) ProtoMessage()    {}
+func (x *ClientArgs) Reset() {
+	*x = ClientArgs{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_control_proto_msgTypes[10]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ClientArgs) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ClientArgs) ProtoMessage() {}
+
+func (x *ClientArgs) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_control_proto_msgTypes[10]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ClientArgs.ProtoReflect.Descriptor instead.
 func (*ClientArgs) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6f4e2bf9f888bddb, []int{10}
+	return file_benchmark_grpc_testing_control_proto_rawDescGZIP(), []int{10}
 }
 
-func (m *ClientArgs) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ClientArgs.Unmarshal(m, b)
-}
-func (m *ClientArgs) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ClientArgs.Marshal(b, m, deterministic)
-}
-func (m *ClientArgs) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ClientArgs.Merge(m, src)
-}
-func (m *ClientArgs) XXX_Size() int {
-	return xxx_messageInfo_ClientArgs.Size(m)
-}
-func (m *ClientArgs) XXX_DiscardUnknown() {
-	xxx_messageInfo_ClientArgs.DiscardUnknown(m)
+func (m *ClientArgs) GetArgtype() isClientArgs_Argtype {
+	if m != nil {
+		return m.Argtype
+	}
+	return nil
 }
 
-var xxx_messageInfo_ClientArgs proto.InternalMessageInfo
+func (x *ClientArgs) GetSetup() *ClientConfig {
+	if x, ok := x.GetArgtype().(*ClientArgs_Setup); ok {
+		return x.Setup
+	}
+	return nil
+}
+
+func (x *ClientArgs) GetMark() *Mark {
+	if x, ok := x.GetArgtype().(*ClientArgs_Mark); ok {
+		return x.Mark
+	}
+	return nil
+}
 
 type isClientArgs_Argtype interface {
 	isClientArgs_Argtype()
@@ -745,36 +924,11 @@
 
 func (*ClientArgs_Mark) isClientArgs_Argtype() {}
 
-func (m *ClientArgs) GetArgtype() isClientArgs_Argtype {
-	if m != nil {
-		return m.Argtype
-	}
-	return nil
-}
-
-func (m *ClientArgs) GetSetup() *ClientConfig {
-	if x, ok := m.GetArgtype().(*ClientArgs_Setup); ok {
-		return x.Setup
-	}
-	return nil
-}
-
-func (m *ClientArgs) GetMark() *Mark {
-	if x, ok := m.GetArgtype().(*ClientArgs_Mark); ok {
-		return x.Mark
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*ClientArgs) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*ClientArgs_Setup)(nil),
-		(*ClientArgs_Mark)(nil),
-	}
-}
-
 type ServerConfig struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	ServerType     ServerType      `protobuf:"varint,1,opt,name=server_type,json=serverType,proto3,enum=grpc.testing.ServerType" json:"server_type,omitempty"`
 	SecurityParams *SecurityParams `protobuf:"bytes,2,opt,name=security_params,json=securityParams,proto3" json:"security_params,omitempty"`
 	// Port on which to listen. Zero means pick unused port.
@@ -786,120 +940,153 @@
 	// payload config, used in generic server
 	PayloadConfig *PayloadConfig `protobuf:"bytes,9,opt,name=payload_config,json=payloadConfig,proto3" json:"payload_config,omitempty"`
 	// Specify the cores we should run the server on, if desired
-	CoreList             []int32  `protobuf:"varint,10,rep,packed,name=core_list,json=coreList,proto3" json:"core_list,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	CoreList []int32 `protobuf:"varint,10,rep,packed,name=core_list,json=coreList,proto3" json:"core_list,omitempty"`
 }
 
-func (m *ServerConfig) Reset()         { *m = ServerConfig{} }
-func (m *ServerConfig) String() string { return proto.CompactTextString(m) }
-func (*ServerConfig) ProtoMessage()    {}
+func (x *ServerConfig) Reset() {
+	*x = ServerConfig{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_control_proto_msgTypes[11]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ServerConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ServerConfig) ProtoMessage() {}
+
+func (x *ServerConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_control_proto_msgTypes[11]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ServerConfig.ProtoReflect.Descriptor instead.
 func (*ServerConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6f4e2bf9f888bddb, []int{11}
+	return file_benchmark_grpc_testing_control_proto_rawDescGZIP(), []int{11}
 }
 
-func (m *ServerConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ServerConfig.Unmarshal(m, b)
-}
-func (m *ServerConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ServerConfig.Marshal(b, m, deterministic)
-}
-func (m *ServerConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ServerConfig.Merge(m, src)
-}
-func (m *ServerConfig) XXX_Size() int {
-	return xxx_messageInfo_ServerConfig.Size(m)
-}
-func (m *ServerConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_ServerConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ServerConfig proto.InternalMessageInfo
-
-func (m *ServerConfig) GetServerType() ServerType {
-	if m != nil {
-		return m.ServerType
+func (x *ServerConfig) GetServerType() ServerType {
+	if x != nil {
+		return x.ServerType
 	}
 	return ServerType_SYNC_SERVER
 }
 
-func (m *ServerConfig) GetSecurityParams() *SecurityParams {
-	if m != nil {
-		return m.SecurityParams
+func (x *ServerConfig) GetSecurityParams() *SecurityParams {
+	if x != nil {
+		return x.SecurityParams
 	}
 	return nil
 }
 
-func (m *ServerConfig) GetPort() int32 {
-	if m != nil {
-		return m.Port
+func (x *ServerConfig) GetPort() int32 {
+	if x != nil {
+		return x.Port
 	}
 	return 0
 }
 
-func (m *ServerConfig) GetAsyncServerThreads() int32 {
-	if m != nil {
-		return m.AsyncServerThreads
+func (x *ServerConfig) GetAsyncServerThreads() int32 {
+	if x != nil {
+		return x.AsyncServerThreads
 	}
 	return 0
 }
 
-func (m *ServerConfig) GetCoreLimit() int32 {
-	if m != nil {
-		return m.CoreLimit
+func (x *ServerConfig) GetCoreLimit() int32 {
+	if x != nil {
+		return x.CoreLimit
 	}
 	return 0
 }
 
-func (m *ServerConfig) GetPayloadConfig() *PayloadConfig {
-	if m != nil {
-		return m.PayloadConfig
+func (x *ServerConfig) GetPayloadConfig() *PayloadConfig {
+	if x != nil {
+		return x.PayloadConfig
 	}
 	return nil
 }
 
-func (m *ServerConfig) GetCoreList() []int32 {
-	if m != nil {
-		return m.CoreList
+func (x *ServerConfig) GetCoreList() []int32 {
+	if x != nil {
+		return x.CoreList
 	}
 	return nil
 }
 
 type ServerArgs struct {
-	// Types that are valid to be assigned to Argtype:
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// Types that are assignable to Argtype:
 	//	*ServerArgs_Setup
 	//	*ServerArgs_Mark
-	Argtype              isServerArgs_Argtype `protobuf_oneof:"argtype"`
-	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
-	XXX_unrecognized     []byte               `json:"-"`
-	XXX_sizecache        int32                `json:"-"`
+	Argtype isServerArgs_Argtype `protobuf_oneof:"argtype"`
 }
 
-func (m *ServerArgs) Reset()         { *m = ServerArgs{} }
-func (m *ServerArgs) String() string { return proto.CompactTextString(m) }
-func (*ServerArgs) ProtoMessage()    {}
+func (x *ServerArgs) Reset() {
+	*x = ServerArgs{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_control_proto_msgTypes[12]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ServerArgs) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ServerArgs) ProtoMessage() {}
+
+func (x *ServerArgs) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_control_proto_msgTypes[12]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ServerArgs.ProtoReflect.Descriptor instead.
 func (*ServerArgs) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6f4e2bf9f888bddb, []int{12}
+	return file_benchmark_grpc_testing_control_proto_rawDescGZIP(), []int{12}
 }
 
-func (m *ServerArgs) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ServerArgs.Unmarshal(m, b)
-}
-func (m *ServerArgs) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ServerArgs.Marshal(b, m, deterministic)
-}
-func (m *ServerArgs) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ServerArgs.Merge(m, src)
-}
-func (m *ServerArgs) XXX_Size() int {
-	return xxx_messageInfo_ServerArgs.Size(m)
-}
-func (m *ServerArgs) XXX_DiscardUnknown() {
-	xxx_messageInfo_ServerArgs.DiscardUnknown(m)
+func (m *ServerArgs) GetArgtype() isServerArgs_Argtype {
+	if m != nil {
+		return m.Argtype
+	}
+	return nil
 }
 
-var xxx_messageInfo_ServerArgs proto.InternalMessageInfo
+func (x *ServerArgs) GetSetup() *ServerConfig {
+	if x, ok := x.GetArgtype().(*ServerArgs_Setup); ok {
+		return x.Setup
+	}
+	return nil
+}
+
+func (x *ServerArgs) GetMark() *Mark {
+	if x, ok := x.GetArgtype().(*ServerArgs_Mark); ok {
+		return x.Mark
+	}
+	return nil
+}
 
 type isServerArgs_Argtype interface {
 	isServerArgs_Argtype()
@@ -917,196 +1104,201 @@
 
 func (*ServerArgs_Mark) isServerArgs_Argtype() {}
 
-func (m *ServerArgs) GetArgtype() isServerArgs_Argtype {
-	if m != nil {
-		return m.Argtype
-	}
-	return nil
-}
-
-func (m *ServerArgs) GetSetup() *ServerConfig {
-	if x, ok := m.GetArgtype().(*ServerArgs_Setup); ok {
-		return x.Setup
-	}
-	return nil
-}
-
-func (m *ServerArgs) GetMark() *Mark {
-	if x, ok := m.GetArgtype().(*ServerArgs_Mark); ok {
-		return x.Mark
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*ServerArgs) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*ServerArgs_Setup)(nil),
-		(*ServerArgs_Mark)(nil),
-	}
-}
-
 type ServerStatus struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	Stats *ServerStats `protobuf:"bytes,1,opt,name=stats,proto3" json:"stats,omitempty"`
 	// the port bound by the server
 	Port int32 `protobuf:"varint,2,opt,name=port,proto3" json:"port,omitempty"`
 	// Number of cores available to the server
-	Cores                int32    `protobuf:"varint,3,opt,name=cores,proto3" json:"cores,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Cores int32 `protobuf:"varint,3,opt,name=cores,proto3" json:"cores,omitempty"`
 }
 
-func (m *ServerStatus) Reset()         { *m = ServerStatus{} }
-func (m *ServerStatus) String() string { return proto.CompactTextString(m) }
-func (*ServerStatus) ProtoMessage()    {}
+func (x *ServerStatus) Reset() {
+	*x = ServerStatus{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_control_proto_msgTypes[13]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ServerStatus) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ServerStatus) ProtoMessage() {}
+
+func (x *ServerStatus) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_control_proto_msgTypes[13]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ServerStatus.ProtoReflect.Descriptor instead.
 func (*ServerStatus) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6f4e2bf9f888bddb, []int{13}
+	return file_benchmark_grpc_testing_control_proto_rawDescGZIP(), []int{13}
 }
 
-func (m *ServerStatus) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ServerStatus.Unmarshal(m, b)
-}
-func (m *ServerStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ServerStatus.Marshal(b, m, deterministic)
-}
-func (m *ServerStatus) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ServerStatus.Merge(m, src)
-}
-func (m *ServerStatus) XXX_Size() int {
-	return xxx_messageInfo_ServerStatus.Size(m)
-}
-func (m *ServerStatus) XXX_DiscardUnknown() {
-	xxx_messageInfo_ServerStatus.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ServerStatus proto.InternalMessageInfo
-
-func (m *ServerStatus) GetStats() *ServerStats {
-	if m != nil {
-		return m.Stats
+func (x *ServerStatus) GetStats() *ServerStats {
+	if x != nil {
+		return x.Stats
 	}
 	return nil
 }
 
-func (m *ServerStatus) GetPort() int32 {
-	if m != nil {
-		return m.Port
+func (x *ServerStatus) GetPort() int32 {
+	if x != nil {
+		return x.Port
 	}
 	return 0
 }
 
-func (m *ServerStatus) GetCores() int32 {
-	if m != nil {
-		return m.Cores
+func (x *ServerStatus) GetCores() int32 {
+	if x != nil {
+		return x.Cores
 	}
 	return 0
 }
 
 type CoreRequest struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 }
 
-func (m *CoreRequest) Reset()         { *m = CoreRequest{} }
-func (m *CoreRequest) String() string { return proto.CompactTextString(m) }
-func (*CoreRequest) ProtoMessage()    {}
+func (x *CoreRequest) Reset() {
+	*x = CoreRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_control_proto_msgTypes[14]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *CoreRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CoreRequest) ProtoMessage() {}
+
+func (x *CoreRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_control_proto_msgTypes[14]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use CoreRequest.ProtoReflect.Descriptor instead.
 func (*CoreRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6f4e2bf9f888bddb, []int{14}
+	return file_benchmark_grpc_testing_control_proto_rawDescGZIP(), []int{14}
 }
 
-func (m *CoreRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_CoreRequest.Unmarshal(m, b)
-}
-func (m *CoreRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_CoreRequest.Marshal(b, m, deterministic)
-}
-func (m *CoreRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CoreRequest.Merge(m, src)
-}
-func (m *CoreRequest) XXX_Size() int {
-	return xxx_messageInfo_CoreRequest.Size(m)
-}
-func (m *CoreRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_CoreRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_CoreRequest proto.InternalMessageInfo
-
 type CoreResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Number of cores available on the server
-	Cores                int32    `protobuf:"varint,1,opt,name=cores,proto3" json:"cores,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Cores int32 `protobuf:"varint,1,opt,name=cores,proto3" json:"cores,omitempty"`
 }
 
-func (m *CoreResponse) Reset()         { *m = CoreResponse{} }
-func (m *CoreResponse) String() string { return proto.CompactTextString(m) }
-func (*CoreResponse) ProtoMessage()    {}
+func (x *CoreResponse) Reset() {
+	*x = CoreResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_control_proto_msgTypes[15]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *CoreResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CoreResponse) ProtoMessage() {}
+
+func (x *CoreResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_control_proto_msgTypes[15]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use CoreResponse.ProtoReflect.Descriptor instead.
 func (*CoreResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6f4e2bf9f888bddb, []int{15}
+	return file_benchmark_grpc_testing_control_proto_rawDescGZIP(), []int{15}
 }
 
-func (m *CoreResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_CoreResponse.Unmarshal(m, b)
-}
-func (m *CoreResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_CoreResponse.Marshal(b, m, deterministic)
-}
-func (m *CoreResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CoreResponse.Merge(m, src)
-}
-func (m *CoreResponse) XXX_Size() int {
-	return xxx_messageInfo_CoreResponse.Size(m)
-}
-func (m *CoreResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_CoreResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_CoreResponse proto.InternalMessageInfo
-
-func (m *CoreResponse) GetCores() int32 {
-	if m != nil {
-		return m.Cores
+func (x *CoreResponse) GetCores() int32 {
+	if x != nil {
+		return x.Cores
 	}
 	return 0
 }
 
 type Void struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 }
 
-func (m *Void) Reset()         { *m = Void{} }
-func (m *Void) String() string { return proto.CompactTextString(m) }
-func (*Void) ProtoMessage()    {}
+func (x *Void) Reset() {
+	*x = Void{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_control_proto_msgTypes[16]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Void) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Void) ProtoMessage() {}
+
+func (x *Void) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_control_proto_msgTypes[16]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Void.ProtoReflect.Descriptor instead.
 func (*Void) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6f4e2bf9f888bddb, []int{16}
+	return file_benchmark_grpc_testing_control_proto_rawDescGZIP(), []int{16}
 }
 
-func (m *Void) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Void.Unmarshal(m, b)
-}
-func (m *Void) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Void.Marshal(b, m, deterministic)
-}
-func (m *Void) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Void.Merge(m, src)
-}
-func (m *Void) XXX_Size() int {
-	return xxx_messageInfo_Void.Size(m)
-}
-func (m *Void) XXX_DiscardUnknown() {
-	xxx_messageInfo_Void.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Void proto.InternalMessageInfo
-
 // A single performance scenario: input to qps_json_driver
 type Scenario struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Human readable name for this scenario
 	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
 	// Client configuration
@@ -1122,239 +1314,681 @@
 	// Benchmark time, in seconds
 	BenchmarkSeconds int32 `protobuf:"varint,7,opt,name=benchmark_seconds,json=benchmarkSeconds,proto3" json:"benchmark_seconds,omitempty"`
 	// Number of workers to spawn locally (usually zero)
-	SpawnLocalWorkerCount int32    `protobuf:"varint,8,opt,name=spawn_local_worker_count,json=spawnLocalWorkerCount,proto3" json:"spawn_local_worker_count,omitempty"`
-	XXX_NoUnkeyedLiteral  struct{} `json:"-"`
-	XXX_unrecognized      []byte   `json:"-"`
-	XXX_sizecache         int32    `json:"-"`
+	SpawnLocalWorkerCount int32 `protobuf:"varint,8,opt,name=spawn_local_worker_count,json=spawnLocalWorkerCount,proto3" json:"spawn_local_worker_count,omitempty"`
 }
 
-func (m *Scenario) Reset()         { *m = Scenario{} }
-func (m *Scenario) String() string { return proto.CompactTextString(m) }
-func (*Scenario) ProtoMessage()    {}
+func (x *Scenario) Reset() {
+	*x = Scenario{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_control_proto_msgTypes[17]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Scenario) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Scenario) ProtoMessage() {}
+
+func (x *Scenario) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_control_proto_msgTypes[17]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Scenario.ProtoReflect.Descriptor instead.
 func (*Scenario) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6f4e2bf9f888bddb, []int{17}
+	return file_benchmark_grpc_testing_control_proto_rawDescGZIP(), []int{17}
 }
 
-func (m *Scenario) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Scenario.Unmarshal(m, b)
-}
-func (m *Scenario) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Scenario.Marshal(b, m, deterministic)
-}
-func (m *Scenario) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Scenario.Merge(m, src)
-}
-func (m *Scenario) XXX_Size() int {
-	return xxx_messageInfo_Scenario.Size(m)
-}
-func (m *Scenario) XXX_DiscardUnknown() {
-	xxx_messageInfo_Scenario.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Scenario proto.InternalMessageInfo
-
-func (m *Scenario) GetName() string {
-	if m != nil {
-		return m.Name
+func (x *Scenario) GetName() string {
+	if x != nil {
+		return x.Name
 	}
 	return ""
 }
 
-func (m *Scenario) GetClientConfig() *ClientConfig {
-	if m != nil {
-		return m.ClientConfig
+func (x *Scenario) GetClientConfig() *ClientConfig {
+	if x != nil {
+		return x.ClientConfig
 	}
 	return nil
 }
 
-func (m *Scenario) GetNumClients() int32 {
-	if m != nil {
-		return m.NumClients
+func (x *Scenario) GetNumClients() int32 {
+	if x != nil {
+		return x.NumClients
 	}
 	return 0
 }
 
-func (m *Scenario) GetServerConfig() *ServerConfig {
-	if m != nil {
-		return m.ServerConfig
+func (x *Scenario) GetServerConfig() *ServerConfig {
+	if x != nil {
+		return x.ServerConfig
 	}
 	return nil
 }
 
-func (m *Scenario) GetNumServers() int32 {
-	if m != nil {
-		return m.NumServers
+func (x *Scenario) GetNumServers() int32 {
+	if x != nil {
+		return x.NumServers
 	}
 	return 0
 }
 
-func (m *Scenario) GetWarmupSeconds() int32 {
-	if m != nil {
-		return m.WarmupSeconds
+func (x *Scenario) GetWarmupSeconds() int32 {
+	if x != nil {
+		return x.WarmupSeconds
 	}
 	return 0
 }
 
-func (m *Scenario) GetBenchmarkSeconds() int32 {
-	if m != nil {
-		return m.BenchmarkSeconds
+func (x *Scenario) GetBenchmarkSeconds() int32 {
+	if x != nil {
+		return x.BenchmarkSeconds
 	}
 	return 0
 }
 
-func (m *Scenario) GetSpawnLocalWorkerCount() int32 {
-	if m != nil {
-		return m.SpawnLocalWorkerCount
+func (x *Scenario) GetSpawnLocalWorkerCount() int32 {
+	if x != nil {
+		return x.SpawnLocalWorkerCount
 	}
 	return 0
 }
 
 // A set of scenarios to be run with qps_json_driver
 type Scenarios struct {
-	Scenarios            []*Scenario `protobuf:"bytes,1,rep,name=scenarios,proto3" json:"scenarios,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
-	XXX_unrecognized     []byte      `json:"-"`
-	XXX_sizecache        int32       `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Scenarios []*Scenario `protobuf:"bytes,1,rep,name=scenarios,proto3" json:"scenarios,omitempty"`
 }
 
-func (m *Scenarios) Reset()         { *m = Scenarios{} }
-func (m *Scenarios) String() string { return proto.CompactTextString(m) }
-func (*Scenarios) ProtoMessage()    {}
+func (x *Scenarios) Reset() {
+	*x = Scenarios{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_control_proto_msgTypes[18]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Scenarios) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Scenarios) ProtoMessage() {}
+
+func (x *Scenarios) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_control_proto_msgTypes[18]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Scenarios.ProtoReflect.Descriptor instead.
 func (*Scenarios) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6f4e2bf9f888bddb, []int{18}
+	return file_benchmark_grpc_testing_control_proto_rawDescGZIP(), []int{18}
 }
 
-func (m *Scenarios) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Scenarios.Unmarshal(m, b)
-}
-func (m *Scenarios) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Scenarios.Marshal(b, m, deterministic)
-}
-func (m *Scenarios) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Scenarios.Merge(m, src)
-}
-func (m *Scenarios) XXX_Size() int {
-	return xxx_messageInfo_Scenarios.Size(m)
-}
-func (m *Scenarios) XXX_DiscardUnknown() {
-	xxx_messageInfo_Scenarios.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Scenarios proto.InternalMessageInfo
-
-func (m *Scenarios) GetScenarios() []*Scenario {
-	if m != nil {
-		return m.Scenarios
+func (x *Scenarios) GetScenarios() []*Scenario {
+	if x != nil {
+		return x.Scenarios
 	}
 	return nil
 }
 
-func init() {
-	proto.RegisterEnum("grpc.testing.ClientType", ClientType_name, ClientType_value)
-	proto.RegisterEnum("grpc.testing.ServerType", ServerType_name, ServerType_value)
-	proto.RegisterEnum("grpc.testing.RpcType", RpcType_name, RpcType_value)
-	proto.RegisterType((*PoissonParams)(nil), "grpc.testing.PoissonParams")
-	proto.RegisterType((*UniformParams)(nil), "grpc.testing.UniformParams")
-	proto.RegisterType((*DeterministicParams)(nil), "grpc.testing.DeterministicParams")
-	proto.RegisterType((*ParetoParams)(nil), "grpc.testing.ParetoParams")
-	proto.RegisterType((*ClosedLoopParams)(nil), "grpc.testing.ClosedLoopParams")
-	proto.RegisterType((*LoadParams)(nil), "grpc.testing.LoadParams")
-	proto.RegisterType((*SecurityParams)(nil), "grpc.testing.SecurityParams")
-	proto.RegisterType((*ClientConfig)(nil), "grpc.testing.ClientConfig")
-	proto.RegisterType((*ClientStatus)(nil), "grpc.testing.ClientStatus")
-	proto.RegisterType((*Mark)(nil), "grpc.testing.Mark")
-	proto.RegisterType((*ClientArgs)(nil), "grpc.testing.ClientArgs")
-	proto.RegisterType((*ServerConfig)(nil), "grpc.testing.ServerConfig")
-	proto.RegisterType((*ServerArgs)(nil), "grpc.testing.ServerArgs")
-	proto.RegisterType((*ServerStatus)(nil), "grpc.testing.ServerStatus")
-	proto.RegisterType((*CoreRequest)(nil), "grpc.testing.CoreRequest")
-	proto.RegisterType((*CoreResponse)(nil), "grpc.testing.CoreResponse")
-	proto.RegisterType((*Void)(nil), "grpc.testing.Void")
-	proto.RegisterType((*Scenario)(nil), "grpc.testing.Scenario")
-	proto.RegisterType((*Scenarios)(nil), "grpc.testing.Scenarios")
+var File_benchmark_grpc_testing_control_proto protoreflect.FileDescriptor
+
+var file_benchmark_grpc_testing_control_proto_rawDesc = []byte{
+	0x0a, 0x24, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x2f, 0x67, 0x72, 0x70, 0x63,
+	0x5f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x69, 0x6e, 0x67, 0x1a, 0x25, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x2f,
+	0x67, 0x72, 0x70, 0x63, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x61, 0x79,
+	0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x22, 0x62, 0x65, 0x6e,
+	0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x74, 0x65, 0x73, 0x74,
+	0x69, 0x6e, 0x67, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22,
+	0x32, 0x0a, 0x0d, 0x50, 0x6f, 0x69, 0x73, 0x73, 0x6f, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73,
+	0x12, 0x21, 0x0a, 0x0c, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x65, 0x64, 0x5f, 0x6c, 0x6f, 0x61, 0x64,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x65, 0x64, 0x4c,
+	0x6f, 0x61, 0x64, 0x22, 0x61, 0x0a, 0x0d, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x50, 0x61,
+	0x72, 0x61, 0x6d, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x61, 0x72, 0x72,
+	0x69, 0x76, 0x61, 0x6c, 0x5f, 0x6c, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0e, 0x69,
+	0x6e, 0x74, 0x65, 0x72, 0x61, 0x72, 0x72, 0x69, 0x76, 0x61, 0x6c, 0x4c, 0x6f, 0x12, 0x27, 0x0a,
+	0x0f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x61, 0x72, 0x72, 0x69, 0x76, 0x61, 0x6c, 0x5f, 0x68, 0x69,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x61, 0x72, 0x72,
+	0x69, 0x76, 0x61, 0x6c, 0x48, 0x69, 0x22, 0x38, 0x0a, 0x13, 0x44, 0x65, 0x74, 0x65, 0x72, 0x6d,
+	0x69, 0x6e, 0x69, 0x73, 0x74, 0x69, 0x63, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x21, 0x0a,
+	0x0c, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x65, 0x64, 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x01, 0x52, 0x0b, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x65, 0x64, 0x4c, 0x6f, 0x61, 0x64,
+	0x22, 0x51, 0x0a, 0x0c, 0x50, 0x61, 0x72, 0x65, 0x74, 0x6f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73,
+	0x12, 0x2b, 0x0a, 0x11, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x61, 0x72, 0x72, 0x69, 0x76, 0x61, 0x6c,
+	0x5f, 0x62, 0x61, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x69, 0x6e, 0x74,
+	0x65, 0x72, 0x61, 0x72, 0x72, 0x69, 0x76, 0x61, 0x6c, 0x42, 0x61, 0x73, 0x65, 0x12, 0x14, 0x0a,
+	0x05, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x61, 0x6c,
+	0x70, 0x68, 0x61, 0x22, 0x12, 0x0a, 0x10, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x4c, 0x6f, 0x6f,
+	0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0xbc, 0x02, 0x0a, 0x0a, 0x4c, 0x6f, 0x61, 0x64,
+	0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x41, 0x0a, 0x0b, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64,
+	0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72,
+	0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x43, 0x6c, 0x6f, 0x73, 0x65,
+	0x64, 0x4c, 0x6f, 0x6f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x0a, 0x63,
+	0x6c, 0x6f, 0x73, 0x65, 0x64, 0x4c, 0x6f, 0x6f, 0x70, 0x12, 0x37, 0x0a, 0x07, 0x70, 0x6f, 0x69,
+	0x73, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70,
+	0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x6f, 0x69, 0x73, 0x73, 0x6f,
+	0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x07, 0x70, 0x6f, 0x69, 0x73, 0x73,
+	0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x07, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x03, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69,
+	0x6e, 0x67, 0x2e, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73,
+	0x48, 0x00, 0x52, 0x07, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x3b, 0x0a, 0x06, 0x64,
+	0x65, 0x74, 0x65, 0x72, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x72,
+	0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x44, 0x65, 0x74, 0x65, 0x72,
+	0x6d, 0x69, 0x6e, 0x69, 0x73, 0x74, 0x69, 0x63, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00,
+	0x52, 0x06, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x12, 0x34, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65,
+	0x74, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x61, 0x72, 0x65, 0x74, 0x6f, 0x50, 0x61,
+	0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x74, 0x6f, 0x42, 0x06,
+	0x0a, 0x04, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x62, 0x0a, 0x0e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69,
+	0x74, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1e, 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x5f,
+	0x74, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x75,
+	0x73, 0x65, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x12, 0x30, 0x0a, 0x14, 0x73, 0x65, 0x72, 0x76,
+	0x65, 0x72, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x48, 0x6f,
+	0x73, 0x74, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x22, 0x8a, 0x05, 0x0a, 0x0c, 0x43,
+	0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x25, 0x0a, 0x0e, 0x73,
+	0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20,
+	0x03, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x61, 0x72, 0x67, 0x65,
+	0x74, 0x73, 0x12, 0x39, 0x0a, 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70,
+	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70,
+	0x65, 0x52, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x45, 0x0a,
+	0x0f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73,
+	0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x50, 0x61,
+	0x72, 0x61, 0x6d, 0x73, 0x52, 0x0e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x50, 0x61,
+	0x72, 0x61, 0x6d, 0x73, 0x12, 0x3f, 0x0a, 0x1c, 0x6f, 0x75, 0x74, 0x73, 0x74, 0x61, 0x6e, 0x64,
+	0x69, 0x6e, 0x67, 0x5f, 0x72, 0x70, 0x63, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x63, 0x68, 0x61,
+	0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x19, 0x6f, 0x75, 0x74, 0x73,
+	0x74, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x70, 0x63, 0x73, 0x50, 0x65, 0x72, 0x43, 0x68,
+	0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f,
+	0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e,
+	0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x12, 0x30,
+	0x0a, 0x14, 0x61, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x74,
+	0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x61, 0x73,
+	0x79, 0x6e, 0x63, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73,
+	0x12, 0x30, 0x0a, 0x08, 0x72, 0x70, 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01,
+	0x28, 0x0e, 0x32, 0x15, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e,
+	0x67, 0x2e, 0x52, 0x70, 0x63, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07, 0x72, 0x70, 0x63, 0x54, 0x79,
+	0x70, 0x65, 0x12, 0x39, 0x0a, 0x0b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d,
+	0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d,
+	0x73, 0x52, 0x0a, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x42, 0x0a,
+	0x0e, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18,
+	0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x66,
+	0x69, 0x67, 0x52, 0x0d, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69,
+	0x67, 0x12, 0x48, 0x0a, 0x10, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x5f, 0x70,
+	0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x72,
+	0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f,
+	0x67, 0x72, 0x61, 0x6d, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x0f, 0x68, 0x69, 0x73, 0x74,
+	0x6f, 0x67, 0x72, 0x61, 0x6d, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x63,
+	0x6f, 0x72, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08,
+	0x63, 0x6f, 0x72, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6f, 0x72, 0x65,
+	0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x6f,
+	0x72, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x3f, 0x0a, 0x0c, 0x43, 0x6c, 0x69, 0x65, 0x6e,
+	0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2f, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74,
+	0x73, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x22, 0x1c, 0x0a, 0x04, 0x4d, 0x61, 0x72, 0x6b,
+	0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52,
+	0x05, 0x72, 0x65, 0x73, 0x65, 0x74, 0x22, 0x75, 0x0a, 0x0a, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74,
+	0x41, 0x72, 0x67, 0x73, 0x12, 0x32, 0x0a, 0x05, 0x73, 0x65, 0x74, 0x75, 0x70, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69,
+	0x6e, 0x67, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48,
+	0x00, 0x52, 0x05, 0x73, 0x65, 0x74, 0x75, 0x70, 0x12, 0x28, 0x0a, 0x04, 0x6d, 0x61, 0x72, 0x6b,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x48, 0x00, 0x52, 0x04, 0x6d, 0x61,
+	0x72, 0x6b, 0x42, 0x09, 0x0a, 0x07, 0x61, 0x72, 0x67, 0x74, 0x79, 0x70, 0x65, 0x22, 0xd6, 0x02,
+	0x0a, 0x0c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x39,
+	0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69,
+	0x6e, 0x67, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x73,
+	0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x45, 0x0a, 0x0f, 0x73, 0x65, 0x63,
+	0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e,
+	0x67, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73,
+	0x52, 0x0e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73,
+	0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04,
+	0x70, 0x6f, 0x72, 0x74, 0x12, 0x30, 0x0a, 0x14, 0x61, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x73, 0x65,
+	0x72, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x18, 0x07, 0x20, 0x01,
+	0x28, 0x05, 0x52, 0x12, 0x61, 0x73, 0x79, 0x6e, 0x63, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54,
+	0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x6c,
+	0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x6f, 0x72, 0x65,
+	0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x42, 0x0a, 0x0e, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64,
+	0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e,
+	0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x61, 0x79,
+	0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0d, 0x70, 0x61, 0x79, 0x6c,
+	0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6f, 0x72,
+	0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x63, 0x6f,
+	0x72, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x75, 0x0a, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72,
+	0x41, 0x72, 0x67, 0x73, 0x12, 0x32, 0x0a, 0x05, 0x73, 0x65, 0x74, 0x75, 0x70, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69,
+	0x6e, 0x67, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48,
+	0x00, 0x52, 0x05, 0x73, 0x65, 0x74, 0x75, 0x70, 0x12, 0x28, 0x0a, 0x04, 0x6d, 0x61, 0x72, 0x6b,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x48, 0x00, 0x52, 0x04, 0x6d, 0x61,
+	0x72, 0x6b, 0x42, 0x09, 0x0a, 0x07, 0x61, 0x72, 0x67, 0x74, 0x79, 0x70, 0x65, 0x22, 0x69, 0x0a,
+	0x0c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2f, 0x0a,
+	0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67,
+	0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x65, 0x72, 0x76,
+	0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x12, 0x12,
+	0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x6f,
+	0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28,
+	0x05, 0x52, 0x05, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x22, 0x0d, 0x0a, 0x0b, 0x43, 0x6f, 0x72, 0x65,
+	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x24, 0x0a, 0x0c, 0x43, 0x6f, 0x72, 0x65, 0x52,
+	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x72, 0x65, 0x73,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x22, 0x06, 0x0a,
+	0x04, 0x56, 0x6f, 0x69, 0x64, 0x22, 0xef, 0x02, 0x0a, 0x08, 0x53, 0x63, 0x65, 0x6e, 0x61, 0x72,
+	0x69, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x0d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74,
+	0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
+	0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x43, 0x6c, 0x69,
+	0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e,
+	0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1f, 0x0a, 0x0b, 0x6e, 0x75, 0x6d, 0x5f, 0x63,
+	0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6e, 0x75,
+	0x6d, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x3f, 0x0a, 0x0d, 0x73, 0x65, 0x72, 0x76,
+	0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53,
+	0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0c, 0x73, 0x65, 0x72,
+	0x76, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1f, 0x0a, 0x0b, 0x6e, 0x75, 0x6d,
+	0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a,
+	0x6e, 0x75, 0x6d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x77, 0x61,
+	0x72, 0x6d, 0x75, 0x70, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x06, 0x20, 0x01,
+	0x28, 0x05, 0x52, 0x0d, 0x77, 0x61, 0x72, 0x6d, 0x75, 0x70, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64,
+	0x73, 0x12, 0x2b, 0x0a, 0x11, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x73,
+	0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x62, 0x65,
+	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x37,
+	0x0a, 0x18, 0x73, 0x70, 0x61, 0x77, 0x6e, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x77, 0x6f,
+	0x72, 0x6b, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05,
+	0x52, 0x15, 0x73, 0x70, 0x61, 0x77, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x57, 0x6f, 0x72, 0x6b,
+	0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x41, 0x0a, 0x09, 0x53, 0x63, 0x65, 0x6e, 0x61,
+	0x72, 0x69, 0x6f, 0x73, 0x12, 0x34, 0x0a, 0x09, 0x73, 0x63, 0x65, 0x6e, 0x61, 0x72, 0x69, 0x6f,
+	0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x63, 0x65, 0x6e, 0x61, 0x72, 0x69, 0x6f, 0x52,
+	0x09, 0x73, 0x63, 0x65, 0x6e, 0x61, 0x72, 0x69, 0x6f, 0x73, 0x2a, 0x2f, 0x0a, 0x0a, 0x43, 0x6c,
+	0x69, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x59, 0x4e, 0x43,
+	0x5f, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x41, 0x53, 0x59,
+	0x4e, 0x43, 0x5f, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x10, 0x01, 0x2a, 0x49, 0x0a, 0x0a, 0x53,
+	0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x59, 0x4e,
+	0x43, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x41, 0x53,
+	0x59, 0x4e, 0x43, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14,
+	0x41, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x47, 0x45, 0x4e, 0x45, 0x52, 0x49, 0x43, 0x5f, 0x53, 0x45,
+	0x52, 0x56, 0x45, 0x52, 0x10, 0x02, 0x2a, 0x23, 0x0a, 0x07, 0x52, 0x70, 0x63, 0x54, 0x79, 0x70,
+	0x65, 0x12, 0x09, 0x0a, 0x05, 0x55, 0x4e, 0x41, 0x52, 0x59, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09,
+	0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x42, 0x2f, 0x5a, 0x2d, 0x67,
+	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67,
+	0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x2f,
+	0x67, 0x72, 0x70, 0x63, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x62, 0x06, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x33,
 }
 
-func init() {
-	proto.RegisterFile("benchmark/grpc_testing/control.proto", fileDescriptor_6f4e2bf9f888bddb)
+var (
+	file_benchmark_grpc_testing_control_proto_rawDescOnce sync.Once
+	file_benchmark_grpc_testing_control_proto_rawDescData = file_benchmark_grpc_testing_control_proto_rawDesc
+)
+
+func file_benchmark_grpc_testing_control_proto_rawDescGZIP() []byte {
+	file_benchmark_grpc_testing_control_proto_rawDescOnce.Do(func() {
+		file_benchmark_grpc_testing_control_proto_rawDescData = protoimpl.X.CompressGZIP(file_benchmark_grpc_testing_control_proto_rawDescData)
+	})
+	return file_benchmark_grpc_testing_control_proto_rawDescData
 }
 
-var fileDescriptor_6f4e2bf9f888bddb = []byte{
-	// 1219 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0xed, 0x6e, 0xdb, 0x36,
-	0x17, 0xb6, 0x5d, 0xdb, 0xb1, 0x8e, 0x3f, 0xe2, 0x97, 0x6f, 0x3a, 0xa8, 0xe9, 0xc7, 0x5a, 0xad,
-	0xc5, 0x82, 0x0e, 0xb3, 0x0b, 0xaf, 0x40, 0x57, 0xec, 0x47, 0xe1, 0x78, 0x46, 0x1d, 0x20, 0xcd,
-	0x32, 0x3a, 0xed, 0xd0, 0xfd, 0x11, 0x18, 0x99, 0x91, 0x85, 0xca, 0xa2, 0x46, 0x52, 0x2d, 0x72,
-	0x0b, 0xbb, 0xa6, 0x5d, 0xc7, 0x6e, 0x63, 0xb7, 0x30, 0xf0, 0x43, 0x8e, 0xe4, 0xba, 0x68, 0xb6,
-	0xfd, 0x13, 0xcf, 0x79, 0x1e, 0x1e, 0xf2, 0x3c, 0xe7, 0x1c, 0x0a, 0x1e, 0x9e, 0xd3, 0x24, 0x58,
-	0xae, 0x08, 0x7f, 0x37, 0x0c, 0x79, 0x1a, 0xf8, 0x92, 0x0a, 0x19, 0x25, 0xe1, 0x30, 0x60, 0x89,
-	0xe4, 0x2c, 0x1e, 0xa4, 0x9c, 0x49, 0x86, 0x3a, 0xca, 0x37, 0xb0, 0xbe, 0xfd, 0x47, 0x9f, 0xe0,
-	0xa4, 0xe4, 0x32, 0x66, 0x64, 0x21, 0x0c, 0x69, 0xdf, 0xfb, 0x04, 0x4c, 0x48, 0x22, 0x2d, 0xc6,
-	0x1b, 0x41, 0xf7, 0x94, 0x45, 0x42, 0xb0, 0xe4, 0x94, 0x70, 0xb2, 0x12, 0xe8, 0x01, 0x74, 0xd8,
-	0xc5, 0x05, 0xe5, 0x74, 0xe1, 0xab, 0xbd, 0xdc, 0xea, 0xfd, 0xea, 0x41, 0x15, 0xb7, 0xad, 0xed,
-	0x98, 0x91, 0x85, 0x47, 0xa0, 0xfb, 0x3a, 0x89, 0x2e, 0x18, 0x5f, 0x59, 0xce, 0xd7, 0xb0, 0x1b,
-	0x25, 0x92, 0x72, 0xc2, 0x79, 0xf4, 0x9e, 0xc4, 0x7e, 0xcc, 0x2c, 0xad, 0x57, 0x34, 0x1f, 0xb3,
-	0x8f, 0x80, 0xcb, 0xc8, 0xad, 0x7d, 0x0c, 0x9c, 0x45, 0xde, 0xf7, 0xf0, 0xff, 0x1f, 0xa9, 0xa4,
-	0x7c, 0x15, 0x25, 0x91, 0x90, 0x51, 0x70, 0xfd, 0xc3, 0xfd, 0x0c, 0x9d, 0x53, 0xc2, 0xa9, 0x64,
-	0x96, 0xf2, 0x0d, 0xfc, 0xaf, 0x14, 0xf2, 0x9c, 0x08, 0x6a, 0x79, 0xfd, 0xa2, 0xe3, 0x90, 0x08,
-	0x8a, 0xf6, 0xa0, 0x41, 0xe2, 0x74, 0x49, 0xec, 0xa9, 0xcc, 0xc2, 0x43, 0xd0, 0x9f, 0xc4, 0x4c,
-	0xa8, 0x00, 0x2c, 0x35, 0xdb, 0x7a, 0x7f, 0xd4, 0x00, 0x54, 0x3c, 0x1b, 0x65, 0x0c, 0xed, 0x40,
-	0x43, 0xfc, 0x98, 0xb1, 0x54, 0xef, 0xdf, 0x1e, 0xdd, 0x1b, 0x14, 0x55, 0x1b, 0x6c, 0xee, 0x31,
-	0xab, 0x60, 0x08, 0xd6, 0x36, 0xf4, 0x0c, 0x76, 0x52, 0xa3, 0x84, 0x8e, 0xde, 0x1e, 0xdd, 0x2e,
-	0xd3, 0x4b, 0x32, 0xcd, 0x2a, 0x38, 0x47, 0x2b, 0x62, 0x66, 0xe4, 0x70, 0x6f, 0x6c, 0x23, 0x96,
-	0xb4, 0x52, 0x44, 0x8b, 0x46, 0x3f, 0x40, 0x73, 0xa1, 0x93, 0xec, 0xd6, 0x35, 0xef, 0x41, 0x99,
-	0xb7, 0x45, 0x80, 0x59, 0x05, 0x5b, 0x0a, 0x7a, 0x0a, 0xcd, 0x54, 0xe7, 0xd9, 0x6d, 0x68, 0xf2,
-	0xfe, 0xc6, 0x69, 0x0b, 0x1a, 0x28, 0x96, 0xc1, 0x1e, 0x36, 0xa1, 0xae, 0x84, 0xf3, 0xce, 0xa1,
-	0x37, 0xa7, 0x41, 0xc6, 0x23, 0x79, 0x69, 0x33, 0x78, 0x0f, 0xda, 0x99, 0xa0, 0xba, 0x46, 0xfd,
-	0x80, 0xe8, 0x0c, 0xb6, 0xb0, 0x93, 0x09, 0x7a, 0x46, 0x85, 0x9c, 0x10, 0xf4, 0x04, 0xf6, 0x04,
-	0xe5, 0xef, 0x29, 0xf7, 0x97, 0x4c, 0x48, 0x9f, 0xbd, 0xa7, 0x9c, 0x47, 0x0b, 0xaa, 0x73, 0xe5,
-	0x60, 0x64, 0x7c, 0x33, 0x26, 0xe4, 0x4f, 0xd6, 0xe3, 0xfd, 0xde, 0x80, 0xce, 0x24, 0x8e, 0x68,
-	0x22, 0x27, 0x2c, 0xb9, 0x88, 0x42, 0xf4, 0x08, 0x7a, 0x76, 0x0b, 0x49, 0x78, 0x48, 0xa5, 0x70,
-	0xab, 0xf7, 0x6f, 0x1c, 0x38, 0xb8, 0x6b, 0xac, 0x67, 0xc6, 0x88, 0x9e, 0x2b, 0x2d, 0x15, 0xcd,
-	0x97, 0x97, 0xa9, 0x09, 0xd0, 0x1b, 0xb9, 0x9b, 0x5a, 0x2a, 0xc0, 0xd9, 0x65, 0x4a, 0x95, 0x86,
-	0xf9, 0x37, 0x9a, 0xc2, 0xae, 0xb0, 0xd7, 0xf2, 0x53, 0x7d, 0x2f, 0x2b, 0xc9, 0x9d, 0x32, 0xbd,
-	0x7c, 0x77, 0xdc, 0x13, 0xe5, 0x5c, 0xbc, 0x80, 0x3b, 0x2c, 0x93, 0x42, 0x92, 0x64, 0x11, 0x25,
-	0xa1, 0xcf, 0xd3, 0x40, 0xf8, 0x29, 0xe5, 0x7e, 0xb0, 0x24, 0x49, 0x42, 0x63, 0x2d, 0x57, 0x03,
-	0xdf, 0x2a, 0x60, 0x70, 0x1a, 0x88, 0x53, 0xca, 0x27, 0x06, 0xa0, 0xfa, 0xcc, 0x5e, 0xc1, 0x52,
-	0x84, 0x56, 0xa9, 0x81, 0x7b, 0xc6, 0x6c, 0x71, 0x42, 0x65, 0x95, 0x88, 0xcb, 0x24, 0xf0, 0xf3,
-	0x1b, 0x2f, 0x39, 0x25, 0x0b, 0xe1, 0xee, 0x68, 0x34, 0xd2, 0x3e, 0x7b, 0x57, 0xe3, 0x41, 0x4f,
-	0xa0, 0xa5, 0x67, 0x89, 0x4a, 0x4d, 0x4b, 0xa7, 0xe6, 0x66, 0xf9, 0x6e, 0x38, 0x0d, 0x74, 0x5e,
-	0x76, 0xb8, 0xf9, 0x50, 0xf9, 0x54, 0x9a, 0xe7, 0x09, 0x01, 0x9d, 0x90, 0x8d, 0x7c, 0x5e, 0xb5,
-	0x12, 0x86, 0xf8, 0xaa, 0xad, 0x0e, 0xa1, 0x67, 0x67, 0x9a, 0x1f, 0x68, 0x0d, 0xdd, 0xf6, 0xd6,
-	0xd6, 0x30, 0x18, 0x23, 0x33, 0xee, 0xa6, 0xc5, 0x25, 0x9a, 0x41, 0x7f, 0x19, 0x09, 0xc9, 0x42,
-	0x4e, 0x56, 0xf9, 0x19, 0x3a, 0x7a, 0x97, 0xbb, 0xe5, 0x5d, 0x66, 0x39, 0xca, 0x1e, 0x64, 0x77,
-	0x59, 0x36, 0xa0, 0xdb, 0xe0, 0x04, 0x8c, 0x53, 0x3f, 0x8e, 0x84, 0x74, 0xbb, 0xf7, 0x6f, 0x1c,
-	0x34, 0x70, 0x4b, 0x19, 0x8e, 0x23, 0x21, 0xd1, 0x5d, 0x00, 0xeb, 0x5c, 0x45, 0xd2, 0xed, 0xe9,
-	0xfc, 0x39, 0xc6, 0xbb, 0x8a, 0xa4, 0xf7, 0x22, 0xaf, 0xc5, 0xb9, 0x24, 0x32, 0x13, 0x68, 0x08,
-	0x0d, 0x3d, 0x86, 0xed, 0xa8, 0xb8, 0xb5, 0xad, 0xbc, 0x14, 0x54, 0x60, 0x83, 0xf3, 0xee, 0x40,
-	0xfd, 0x15, 0xe1, 0xef, 0xd4, 0x88, 0xe2, 0x54, 0x50, 0x69, 0x3b, 0xc4, 0x2c, 0xbc, 0x0c, 0xc0,
-	0x70, 0xc6, 0x3c, 0x14, 0x68, 0x04, 0x0d, 0x41, 0x65, 0x96, 0xcf, 0xa1, 0xfd, 0x6d, 0x9b, 0x9b,
-	0xec, 0xcc, 0x2a, 0xd8, 0x40, 0xd1, 0x01, 0xd4, 0xd5, 0x4b, 0x61, 0x67, 0x0f, 0x2a, 0x53, 0x54,
-	0xe4, 0x59, 0x05, 0x6b, 0xc4, 0xa1, 0x03, 0x3b, 0x84, 0x87, 0xaa, 0x00, 0xbc, 0x3f, 0x6b, 0xd0,
-	0x99, 0xeb, 0xe6, 0xb1, 0xc9, 0x7e, 0x0e, 0xed, 0xbc, 0xc5, 0x54, 0x81, 0x54, 0xb7, 0xf5, 0x8e,
-	0x21, 0x98, 0xde, 0x11, 0xeb, 0xef, 0x6d, 0xbd, 0x53, 0xfb, 0x17, 0xbd, 0x83, 0xa0, 0x9e, 0x32,
-	0x2e, 0x6d, 0x8f, 0xe8, 0xef, 0xab, 0x2a, 0xcf, 0xcf, 0xb6, 0xa5, 0xca, 0xed, 0xa9, 0x6c, 0x95,
-	0x97, 0xd5, 0x6c, 0x6d, 0xa8, 0xb9, 0xa5, 0x2e, 0x9d, 0x7f, 0x5c, 0x97, 0xa5, 0x6a, 0x82, 0x72,
-	0x35, 0x29, 0x3d, 0xcd, 0x81, 0xae, 0xa1, 0x67, 0x51, 0x80, 0xff, 0xa8, 0x67, 0x94, 0xcb, 0x79,
-	0xad, 0x2a, 0xbd, 0x82, 0xe6, 0x55, 0xba, 0xce, 0x7e, 0xad, 0x90, 0xfd, 0x3d, 0x68, 0xa8, 0x7b,
-	0x99, 0x51, 0xd8, 0xc0, 0x66, 0xe1, 0x75, 0xa1, 0x3d, 0x61, 0x9c, 0x62, 0xfa, 0x5b, 0x46, 0x85,
-	0xf4, 0x1e, 0x42, 0xc7, 0x2c, 0x45, 0xca, 0x12, 0xf3, 0x12, 0x1b, 0x52, 0xb5, 0x48, 0x6a, 0x42,
-	0xfd, 0x0d, 0x8b, 0x16, 0xde, 0x5f, 0x35, 0x68, 0xcd, 0x03, 0x9a, 0x10, 0x1e, 0x31, 0x15, 0x33,
-	0x21, 0x2b, 0x53, 0x6c, 0x0e, 0xd6, 0xdf, 0xe8, 0x05, 0x74, 0xf3, 0x01, 0x68, 0xf4, 0xa9, 0x7d,
-	0xae, 0x13, 0x70, 0x27, 0x28, 0xbe, 0x15, 0x5f, 0x42, 0x3b, 0xc9, 0x56, 0x76, 0x2c, 0xe6, 0x47,
-	0x87, 0x24, 0x5b, 0x19, 0x8e, 0x9a, 0xd1, 0xf6, 0xd9, 0xc8, 0x23, 0xd4, 0x3f, 0xa7, 0x0d, 0xee,
-	0x88, 0x62, 0xab, 0xd8, 0x08, 0xc6, 0x96, 0xcf, 0x67, 0x15, 0xc1, 0x70, 0x84, 0x7a, 0xae, 0x3e,
-	0x10, 0xbe, 0xca, 0x52, 0x5f, 0xd0, 0x80, 0x25, 0x0b, 0xe1, 0x36, 0x35, 0xa6, 0x6b, 0xac, 0x73,
-	0x63, 0x54, 0x3f, 0x38, 0xeb, 0xff, 0xbc, 0x35, 0xd2, 0x54, 0x76, 0x7f, 0xed, 0xc8, 0xc1, 0xcf,
-	0xc0, 0x15, 0x29, 0xf9, 0x90, 0xf8, 0x31, 0x0b, 0x48, 0xec, 0x7f, 0x60, 0xfc, 0x9d, 0xbe, 0x41,
-	0x96, 0xe4, 0x55, 0x7e, 0x53, 0xfb, 0x8f, 0x95, 0xfb, 0x17, 0xed, 0x9d, 0x28, 0xa7, 0x37, 0x06,
-	0x27, 0x4f, 0xb8, 0x40, 0x4f, 0xc1, 0x11, 0xf9, 0x42, 0xbf, 0xa1, 0xed, 0xd1, 0x17, 0x1b, 0xf7,
-	0xb6, 0x6e, 0x7c, 0x05, 0x7c, 0x3c, 0xcc, 0x67, 0x94, 0x6e, 0xf7, 0x5d, 0x68, 0xcf, 0xdf, 0x9e,
-	0x4c, 0xfc, 0xc9, 0xf1, 0xd1, 0xf4, 0xe4, 0xac, 0x5f, 0x41, 0x7d, 0xe8, 0x8c, 0x8b, 0x96, 0xea,
-	0xe3, 0xa3, 0xbc, 0x09, 0x4a, 0x84, 0xf9, 0x14, 0xbf, 0x99, 0xe2, 0x22, 0xc1, 0x5a, 0xaa, 0xc8,
-	0x85, 0x3d, 0x63, 0x79, 0x39, 0x3d, 0x99, 0xe2, 0xa3, 0xb5, 0xa7, 0xf6, 0xf8, 0x2b, 0xd8, 0xb1,
-	0xef, 0x12, 0x72, 0xa0, 0xf1, 0xfa, 0x64, 0x8c, 0xdf, 0xf6, 0x2b, 0xa8, 0x0b, 0xce, 0xfc, 0x0c,
-	0x4f, 0xc7, 0xaf, 0x8e, 0x4e, 0x5e, 0xf6, 0xab, 0x87, 0xc3, 0x5f, 0xbf, 0x0d, 0x19, 0x0b, 0x63,
-	0x3a, 0x08, 0x59, 0x4c, 0x92, 0x70, 0xc0, 0x78, 0xa8, 0xff, 0x9c, 0x87, 0xdb, 0x7f, 0xa4, 0xcf,
-	0x9b, 0xfa, 0x1f, 0xfa, 0xbb, 0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, 0x0d, 0x89, 0xaf, 0xc1, 0xc4,
-	0x0b, 0x00, 0x00,
+var file_benchmark_grpc_testing_control_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
+var file_benchmark_grpc_testing_control_proto_msgTypes = make([]protoimpl.MessageInfo, 19)
+var file_benchmark_grpc_testing_control_proto_goTypes = []interface{}{
+	(ClientType)(0),             // 0: grpc.testing.ClientType
+	(ServerType)(0),             // 1: grpc.testing.ServerType
+	(RpcType)(0),                // 2: grpc.testing.RpcType
+	(*PoissonParams)(nil),       // 3: grpc.testing.PoissonParams
+	(*UniformParams)(nil),       // 4: grpc.testing.UniformParams
+	(*DeterministicParams)(nil), // 5: grpc.testing.DeterministicParams
+	(*ParetoParams)(nil),        // 6: grpc.testing.ParetoParams
+	(*ClosedLoopParams)(nil),    // 7: grpc.testing.ClosedLoopParams
+	(*LoadParams)(nil),          // 8: grpc.testing.LoadParams
+	(*SecurityParams)(nil),      // 9: grpc.testing.SecurityParams
+	(*ClientConfig)(nil),        // 10: grpc.testing.ClientConfig
+	(*ClientStatus)(nil),        // 11: grpc.testing.ClientStatus
+	(*Mark)(nil),                // 12: grpc.testing.Mark
+	(*ClientArgs)(nil),          // 13: grpc.testing.ClientArgs
+	(*ServerConfig)(nil),        // 14: grpc.testing.ServerConfig
+	(*ServerArgs)(nil),          // 15: grpc.testing.ServerArgs
+	(*ServerStatus)(nil),        // 16: grpc.testing.ServerStatus
+	(*CoreRequest)(nil),         // 17: grpc.testing.CoreRequest
+	(*CoreResponse)(nil),        // 18: grpc.testing.CoreResponse
+	(*Void)(nil),                // 19: grpc.testing.Void
+	(*Scenario)(nil),            // 20: grpc.testing.Scenario
+	(*Scenarios)(nil),           // 21: grpc.testing.Scenarios
+	(*PayloadConfig)(nil),       // 22: grpc.testing.PayloadConfig
+	(*HistogramParams)(nil),     // 23: grpc.testing.HistogramParams
+	(*ClientStats)(nil),         // 24: grpc.testing.ClientStats
+	(*ServerStats)(nil),         // 25: grpc.testing.ServerStats
+}
+var file_benchmark_grpc_testing_control_proto_depIdxs = []int32{
+	7,  // 0: grpc.testing.LoadParams.closed_loop:type_name -> grpc.testing.ClosedLoopParams
+	3,  // 1: grpc.testing.LoadParams.poisson:type_name -> grpc.testing.PoissonParams
+	4,  // 2: grpc.testing.LoadParams.uniform:type_name -> grpc.testing.UniformParams
+	5,  // 3: grpc.testing.LoadParams.determ:type_name -> grpc.testing.DeterministicParams
+	6,  // 4: grpc.testing.LoadParams.pareto:type_name -> grpc.testing.ParetoParams
+	0,  // 5: grpc.testing.ClientConfig.client_type:type_name -> grpc.testing.ClientType
+	9,  // 6: grpc.testing.ClientConfig.security_params:type_name -> grpc.testing.SecurityParams
+	2,  // 7: grpc.testing.ClientConfig.rpc_type:type_name -> grpc.testing.RpcType
+	8,  // 8: grpc.testing.ClientConfig.load_params:type_name -> grpc.testing.LoadParams
+	22, // 9: grpc.testing.ClientConfig.payload_config:type_name -> grpc.testing.PayloadConfig
+	23, // 10: grpc.testing.ClientConfig.histogram_params:type_name -> grpc.testing.HistogramParams
+	24, // 11: grpc.testing.ClientStatus.stats:type_name -> grpc.testing.ClientStats
+	10, // 12: grpc.testing.ClientArgs.setup:type_name -> grpc.testing.ClientConfig
+	12, // 13: grpc.testing.ClientArgs.mark:type_name -> grpc.testing.Mark
+	1,  // 14: grpc.testing.ServerConfig.server_type:type_name -> grpc.testing.ServerType
+	9,  // 15: grpc.testing.ServerConfig.security_params:type_name -> grpc.testing.SecurityParams
+	22, // 16: grpc.testing.ServerConfig.payload_config:type_name -> grpc.testing.PayloadConfig
+	14, // 17: grpc.testing.ServerArgs.setup:type_name -> grpc.testing.ServerConfig
+	12, // 18: grpc.testing.ServerArgs.mark:type_name -> grpc.testing.Mark
+	25, // 19: grpc.testing.ServerStatus.stats:type_name -> grpc.testing.ServerStats
+	10, // 20: grpc.testing.Scenario.client_config:type_name -> grpc.testing.ClientConfig
+	14, // 21: grpc.testing.Scenario.server_config:type_name -> grpc.testing.ServerConfig
+	20, // 22: grpc.testing.Scenarios.scenarios:type_name -> grpc.testing.Scenario
+	23, // [23:23] is the sub-list for method output_type
+	23, // [23:23] is the sub-list for method input_type
+	23, // [23:23] is the sub-list for extension type_name
+	23, // [23:23] is the sub-list for extension extendee
+	0,  // [0:23] is the sub-list for field type_name
+}
+
+func init() { file_benchmark_grpc_testing_control_proto_init() }
+func file_benchmark_grpc_testing_control_proto_init() {
+	if File_benchmark_grpc_testing_control_proto != nil {
+		return
+	}
+	file_benchmark_grpc_testing_payloads_proto_init()
+	file_benchmark_grpc_testing_stats_proto_init()
+	if !protoimpl.UnsafeEnabled {
+		file_benchmark_grpc_testing_control_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*PoissonParams); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_control_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*UniformParams); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_control_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*DeterministicParams); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_control_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ParetoParams); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_control_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ClosedLoopParams); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_control_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*LoadParams); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_control_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SecurityParams); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_control_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ClientConfig); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_control_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ClientStatus); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_control_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Mark); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_control_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ClientArgs); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_control_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ServerConfig); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_control_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ServerArgs); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_control_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ServerStatus); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_control_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*CoreRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_control_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*CoreResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_control_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Void); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_control_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Scenario); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_control_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Scenarios); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	file_benchmark_grpc_testing_control_proto_msgTypes[5].OneofWrappers = []interface{}{
+		(*LoadParams_ClosedLoop)(nil),
+		(*LoadParams_Poisson)(nil),
+		(*LoadParams_Uniform)(nil),
+		(*LoadParams_Determ)(nil),
+		(*LoadParams_Pareto)(nil),
+	}
+	file_benchmark_grpc_testing_control_proto_msgTypes[10].OneofWrappers = []interface{}{
+		(*ClientArgs_Setup)(nil),
+		(*ClientArgs_Mark)(nil),
+	}
+	file_benchmark_grpc_testing_control_proto_msgTypes[12].OneofWrappers = []interface{}{
+		(*ServerArgs_Setup)(nil),
+		(*ServerArgs_Mark)(nil),
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_benchmark_grpc_testing_control_proto_rawDesc,
+			NumEnums:      3,
+			NumMessages:   19,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_benchmark_grpc_testing_control_proto_goTypes,
+		DependencyIndexes: file_benchmark_grpc_testing_control_proto_depIdxs,
+		EnumInfos:         file_benchmark_grpc_testing_control_proto_enumTypes,
+		MessageInfos:      file_benchmark_grpc_testing_control_proto_msgTypes,
+	}.Build()
+	File_benchmark_grpc_testing_control_proto = out.File
+	file_benchmark_grpc_testing_control_proto_rawDesc = nil
+	file_benchmark_grpc_testing_control_proto_goTypes = nil
+	file_benchmark_grpc_testing_control_proto_depIdxs = nil
 }
diff --git a/benchmark/grpc_testing/messages.pb.go b/benchmark/grpc_testing/messages.pb.go
index 0fddbc1..924e24e 100644
--- a/benchmark/grpc_testing/messages.pb.go
+++ b/benchmark/grpc_testing/messages.pb.go
@@ -1,24 +1,45 @@
+// Copyright 2016 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Message definitions to be used by integration test service definitions.
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.25.0
+// 	protoc        v3.3.0
 // source: benchmark/grpc_testing/messages.proto
 
 package grpc_testing
 
 import (
-	fmt "fmt"
 	proto "github.com/golang/protobuf/proto"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
 )
 
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
 
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+// This is a compile-time assertion that a sufficiently up-to-date version
+// of the legacy proto package is being used.
+const _ = proto.ProtoPackageIsVersion4
 
 // The type of payload that should be returned.
 type PayloadType int32
@@ -32,24 +53,45 @@
 	PayloadType_RANDOM PayloadType = 2
 )
 
-var PayloadType_name = map[int32]string{
-	0: "COMPRESSABLE",
-	1: "UNCOMPRESSABLE",
-	2: "RANDOM",
-}
+// Enum value maps for PayloadType.
+var (
+	PayloadType_name = map[int32]string{
+		0: "COMPRESSABLE",
+		1: "UNCOMPRESSABLE",
+		2: "RANDOM",
+	}
+	PayloadType_value = map[string]int32{
+		"COMPRESSABLE":   0,
+		"UNCOMPRESSABLE": 1,
+		"RANDOM":         2,
+	}
+)
 
-var PayloadType_value = map[string]int32{
-	"COMPRESSABLE":   0,
-	"UNCOMPRESSABLE": 1,
-	"RANDOM":         2,
+func (x PayloadType) Enum() *PayloadType {
+	p := new(PayloadType)
+	*p = x
+	return p
 }
 
 func (x PayloadType) String() string {
-	return proto.EnumName(PayloadType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (PayloadType) Descriptor() protoreflect.EnumDescriptor {
+	return file_benchmark_grpc_testing_messages_proto_enumTypes[0].Descriptor()
+}
+
+func (PayloadType) Type() protoreflect.EnumType {
+	return &file_benchmark_grpc_testing_messages_proto_enumTypes[0]
+}
+
+func (x PayloadType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use PayloadType.Descriptor instead.
 func (PayloadType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_7e3146bec7fa4346, []int{0}
+	return file_benchmark_grpc_testing_messages_proto_rawDescGZIP(), []int{0}
 }
 
 // Compression algorithms
@@ -62,72 +104,101 @@
 	CompressionType_DEFLATE CompressionType = 2
 )
 
-var CompressionType_name = map[int32]string{
-	0: "NONE",
-	1: "GZIP",
-	2: "DEFLATE",
-}
+// Enum value maps for CompressionType.
+var (
+	CompressionType_name = map[int32]string{
+		0: "NONE",
+		1: "GZIP",
+		2: "DEFLATE",
+	}
+	CompressionType_value = map[string]int32{
+		"NONE":    0,
+		"GZIP":    1,
+		"DEFLATE": 2,
+	}
+)
 
-var CompressionType_value = map[string]int32{
-	"NONE":    0,
-	"GZIP":    1,
-	"DEFLATE": 2,
+func (x CompressionType) Enum() *CompressionType {
+	p := new(CompressionType)
+	*p = x
+	return p
 }
 
 func (x CompressionType) String() string {
-	return proto.EnumName(CompressionType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (CompressionType) Descriptor() protoreflect.EnumDescriptor {
+	return file_benchmark_grpc_testing_messages_proto_enumTypes[1].Descriptor()
+}
+
+func (CompressionType) Type() protoreflect.EnumType {
+	return &file_benchmark_grpc_testing_messages_proto_enumTypes[1]
+}
+
+func (x CompressionType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use CompressionType.Descriptor instead.
 func (CompressionType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_7e3146bec7fa4346, []int{1}
+	return file_benchmark_grpc_testing_messages_proto_rawDescGZIP(), []int{1}
 }
 
 // A block of data, to simply increase gRPC message size.
 type Payload struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The type of data in body.
 	Type PayloadType `protobuf:"varint,1,opt,name=type,proto3,enum=grpc.testing.PayloadType" json:"type,omitempty"`
 	// Primary contents of payload.
-	Body                 []byte   `protobuf:"bytes,2,opt,name=body,proto3" json:"body,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Body []byte `protobuf:"bytes,2,opt,name=body,proto3" json:"body,omitempty"`
 }
 
-func (m *Payload) Reset()         { *m = Payload{} }
-func (m *Payload) String() string { return proto.CompactTextString(m) }
-func (*Payload) ProtoMessage()    {}
+func (x *Payload) Reset() {
+	*x = Payload{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_messages_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Payload) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Payload) ProtoMessage() {}
+
+func (x *Payload) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_messages_proto_msgTypes[0]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Payload.ProtoReflect.Descriptor instead.
 func (*Payload) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7e3146bec7fa4346, []int{0}
+	return file_benchmark_grpc_testing_messages_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *Payload) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Payload.Unmarshal(m, b)
-}
-func (m *Payload) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Payload.Marshal(b, m, deterministic)
-}
-func (m *Payload) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Payload.Merge(m, src)
-}
-func (m *Payload) XXX_Size() int {
-	return xxx_messageInfo_Payload.Size(m)
-}
-func (m *Payload) XXX_DiscardUnknown() {
-	xxx_messageInfo_Payload.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Payload proto.InternalMessageInfo
-
-func (m *Payload) GetType() PayloadType {
-	if m != nil {
-		return m.Type
+func (x *Payload) GetType() PayloadType {
+	if x != nil {
+		return x.Type
 	}
 	return PayloadType_COMPRESSABLE
 }
 
-func (m *Payload) GetBody() []byte {
-	if m != nil {
-		return m.Body
+func (x *Payload) GetBody() []byte {
+	if x != nil {
+		return x.Body
 	}
 	return nil
 }
@@ -135,54 +206,66 @@
 // A protobuf representation for grpc status. This is used by test
 // clients to specify a status that the server should attempt to return.
 type EchoStatus struct {
-	Code                 int32    `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`
-	Message              string   `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Code    int32  `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`
+	Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
 }
 
-func (m *EchoStatus) Reset()         { *m = EchoStatus{} }
-func (m *EchoStatus) String() string { return proto.CompactTextString(m) }
-func (*EchoStatus) ProtoMessage()    {}
+func (x *EchoStatus) Reset() {
+	*x = EchoStatus{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_messages_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *EchoStatus) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EchoStatus) ProtoMessage() {}
+
+func (x *EchoStatus) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_messages_proto_msgTypes[1]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use EchoStatus.ProtoReflect.Descriptor instead.
 func (*EchoStatus) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7e3146bec7fa4346, []int{1}
+	return file_benchmark_grpc_testing_messages_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *EchoStatus) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_EchoStatus.Unmarshal(m, b)
-}
-func (m *EchoStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_EchoStatus.Marshal(b, m, deterministic)
-}
-func (m *EchoStatus) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_EchoStatus.Merge(m, src)
-}
-func (m *EchoStatus) XXX_Size() int {
-	return xxx_messageInfo_EchoStatus.Size(m)
-}
-func (m *EchoStatus) XXX_DiscardUnknown() {
-	xxx_messageInfo_EchoStatus.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_EchoStatus proto.InternalMessageInfo
-
-func (m *EchoStatus) GetCode() int32 {
-	if m != nil {
-		return m.Code
+func (x *EchoStatus) GetCode() int32 {
+	if x != nil {
+		return x.Code
 	}
 	return 0
 }
 
-func (m *EchoStatus) GetMessage() string {
-	if m != nil {
-		return m.Message
+func (x *EchoStatus) GetMessage() string {
+	if x != nil {
+		return x.Message
 	}
 	return ""
 }
 
 // Unary request.
 type SimpleRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Desired payload type in the response from the server.
 	// If response_type is RANDOM, server randomly chooses one from other formats.
 	ResponseType PayloadType `protobuf:"varint,1,opt,name=response_type,json=responseType,proto3,enum=grpc.testing.PayloadType" json:"response_type,omitempty"`
@@ -198,282 +281,322 @@
 	// Compression algorithm to be used by the server for the response (stream)
 	ResponseCompression CompressionType `protobuf:"varint,6,opt,name=response_compression,json=responseCompression,proto3,enum=grpc.testing.CompressionType" json:"response_compression,omitempty"`
 	// Whether server should return a given status
-	ResponseStatus       *EchoStatus `protobuf:"bytes,7,opt,name=response_status,json=responseStatus,proto3" json:"response_status,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
-	XXX_unrecognized     []byte      `json:"-"`
-	XXX_sizecache        int32       `json:"-"`
+	ResponseStatus *EchoStatus `protobuf:"bytes,7,opt,name=response_status,json=responseStatus,proto3" json:"response_status,omitempty"`
 }
 
-func (m *SimpleRequest) Reset()         { *m = SimpleRequest{} }
-func (m *SimpleRequest) String() string { return proto.CompactTextString(m) }
-func (*SimpleRequest) ProtoMessage()    {}
+func (x *SimpleRequest) Reset() {
+	*x = SimpleRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_messages_proto_msgTypes[2]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *SimpleRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SimpleRequest) ProtoMessage() {}
+
+func (x *SimpleRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_messages_proto_msgTypes[2]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SimpleRequest.ProtoReflect.Descriptor instead.
 func (*SimpleRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7e3146bec7fa4346, []int{2}
+	return file_benchmark_grpc_testing_messages_proto_rawDescGZIP(), []int{2}
 }
 
-func (m *SimpleRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SimpleRequest.Unmarshal(m, b)
-}
-func (m *SimpleRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SimpleRequest.Marshal(b, m, deterministic)
-}
-func (m *SimpleRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SimpleRequest.Merge(m, src)
-}
-func (m *SimpleRequest) XXX_Size() int {
-	return xxx_messageInfo_SimpleRequest.Size(m)
-}
-func (m *SimpleRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_SimpleRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SimpleRequest proto.InternalMessageInfo
-
-func (m *SimpleRequest) GetResponseType() PayloadType {
-	if m != nil {
-		return m.ResponseType
+func (x *SimpleRequest) GetResponseType() PayloadType {
+	if x != nil {
+		return x.ResponseType
 	}
 	return PayloadType_COMPRESSABLE
 }
 
-func (m *SimpleRequest) GetResponseSize() int32 {
-	if m != nil {
-		return m.ResponseSize
+func (x *SimpleRequest) GetResponseSize() int32 {
+	if x != nil {
+		return x.ResponseSize
 	}
 	return 0
 }
 
-func (m *SimpleRequest) GetPayload() *Payload {
-	if m != nil {
-		return m.Payload
+func (x *SimpleRequest) GetPayload() *Payload {
+	if x != nil {
+		return x.Payload
 	}
 	return nil
 }
 
-func (m *SimpleRequest) GetFillUsername() bool {
-	if m != nil {
-		return m.FillUsername
+func (x *SimpleRequest) GetFillUsername() bool {
+	if x != nil {
+		return x.FillUsername
 	}
 	return false
 }
 
-func (m *SimpleRequest) GetFillOauthScope() bool {
-	if m != nil {
-		return m.FillOauthScope
+func (x *SimpleRequest) GetFillOauthScope() bool {
+	if x != nil {
+		return x.FillOauthScope
 	}
 	return false
 }
 
-func (m *SimpleRequest) GetResponseCompression() CompressionType {
-	if m != nil {
-		return m.ResponseCompression
+func (x *SimpleRequest) GetResponseCompression() CompressionType {
+	if x != nil {
+		return x.ResponseCompression
 	}
 	return CompressionType_NONE
 }
 
-func (m *SimpleRequest) GetResponseStatus() *EchoStatus {
-	if m != nil {
-		return m.ResponseStatus
+func (x *SimpleRequest) GetResponseStatus() *EchoStatus {
+	if x != nil {
+		return x.ResponseStatus
 	}
 	return nil
 }
 
 // Unary response, as configured by the request.
 type SimpleResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Payload to increase message size.
 	Payload *Payload `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"`
 	// The user the request came from, for verifying authentication was
 	// successful when the client expected it.
 	Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"`
 	// OAuth scope.
-	OauthScope           string   `protobuf:"bytes,3,opt,name=oauth_scope,json=oauthScope,proto3" json:"oauth_scope,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	OauthScope string `protobuf:"bytes,3,opt,name=oauth_scope,json=oauthScope,proto3" json:"oauth_scope,omitempty"`
 }
 
-func (m *SimpleResponse) Reset()         { *m = SimpleResponse{} }
-func (m *SimpleResponse) String() string { return proto.CompactTextString(m) }
-func (*SimpleResponse) ProtoMessage()    {}
+func (x *SimpleResponse) Reset() {
+	*x = SimpleResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_messages_proto_msgTypes[3]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *SimpleResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SimpleResponse) ProtoMessage() {}
+
+func (x *SimpleResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_messages_proto_msgTypes[3]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SimpleResponse.ProtoReflect.Descriptor instead.
 func (*SimpleResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7e3146bec7fa4346, []int{3}
+	return file_benchmark_grpc_testing_messages_proto_rawDescGZIP(), []int{3}
 }
 
-func (m *SimpleResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SimpleResponse.Unmarshal(m, b)
-}
-func (m *SimpleResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SimpleResponse.Marshal(b, m, deterministic)
-}
-func (m *SimpleResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SimpleResponse.Merge(m, src)
-}
-func (m *SimpleResponse) XXX_Size() int {
-	return xxx_messageInfo_SimpleResponse.Size(m)
-}
-func (m *SimpleResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_SimpleResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SimpleResponse proto.InternalMessageInfo
-
-func (m *SimpleResponse) GetPayload() *Payload {
-	if m != nil {
-		return m.Payload
+func (x *SimpleResponse) GetPayload() *Payload {
+	if x != nil {
+		return x.Payload
 	}
 	return nil
 }
 
-func (m *SimpleResponse) GetUsername() string {
-	if m != nil {
-		return m.Username
+func (x *SimpleResponse) GetUsername() string {
+	if x != nil {
+		return x.Username
 	}
 	return ""
 }
 
-func (m *SimpleResponse) GetOauthScope() string {
-	if m != nil {
-		return m.OauthScope
+func (x *SimpleResponse) GetOauthScope() string {
+	if x != nil {
+		return x.OauthScope
 	}
 	return ""
 }
 
 // Client-streaming request.
 type StreamingInputCallRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Optional input payload sent along with the request.
-	Payload              *Payload `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Payload *Payload `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"`
 }
 
-func (m *StreamingInputCallRequest) Reset()         { *m = StreamingInputCallRequest{} }
-func (m *StreamingInputCallRequest) String() string { return proto.CompactTextString(m) }
-func (*StreamingInputCallRequest) ProtoMessage()    {}
+func (x *StreamingInputCallRequest) Reset() {
+	*x = StreamingInputCallRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_messages_proto_msgTypes[4]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *StreamingInputCallRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*StreamingInputCallRequest) ProtoMessage() {}
+
+func (x *StreamingInputCallRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_messages_proto_msgTypes[4]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use StreamingInputCallRequest.ProtoReflect.Descriptor instead.
 func (*StreamingInputCallRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7e3146bec7fa4346, []int{4}
+	return file_benchmark_grpc_testing_messages_proto_rawDescGZIP(), []int{4}
 }
 
-func (m *StreamingInputCallRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_StreamingInputCallRequest.Unmarshal(m, b)
-}
-func (m *StreamingInputCallRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_StreamingInputCallRequest.Marshal(b, m, deterministic)
-}
-func (m *StreamingInputCallRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_StreamingInputCallRequest.Merge(m, src)
-}
-func (m *StreamingInputCallRequest) XXX_Size() int {
-	return xxx_messageInfo_StreamingInputCallRequest.Size(m)
-}
-func (m *StreamingInputCallRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_StreamingInputCallRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_StreamingInputCallRequest proto.InternalMessageInfo
-
-func (m *StreamingInputCallRequest) GetPayload() *Payload {
-	if m != nil {
-		return m.Payload
+func (x *StreamingInputCallRequest) GetPayload() *Payload {
+	if x != nil {
+		return x.Payload
 	}
 	return nil
 }
 
 // Client-streaming response.
 type StreamingInputCallResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Aggregated size of payloads received from the client.
-	AggregatedPayloadSize int32    `protobuf:"varint,1,opt,name=aggregated_payload_size,json=aggregatedPayloadSize,proto3" json:"aggregated_payload_size,omitempty"`
-	XXX_NoUnkeyedLiteral  struct{} `json:"-"`
-	XXX_unrecognized      []byte   `json:"-"`
-	XXX_sizecache         int32    `json:"-"`
+	AggregatedPayloadSize int32 `protobuf:"varint,1,opt,name=aggregated_payload_size,json=aggregatedPayloadSize,proto3" json:"aggregated_payload_size,omitempty"`
 }
 
-func (m *StreamingInputCallResponse) Reset()         { *m = StreamingInputCallResponse{} }
-func (m *StreamingInputCallResponse) String() string { return proto.CompactTextString(m) }
-func (*StreamingInputCallResponse) ProtoMessage()    {}
+func (x *StreamingInputCallResponse) Reset() {
+	*x = StreamingInputCallResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_messages_proto_msgTypes[5]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *StreamingInputCallResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*StreamingInputCallResponse) ProtoMessage() {}
+
+func (x *StreamingInputCallResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_messages_proto_msgTypes[5]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use StreamingInputCallResponse.ProtoReflect.Descriptor instead.
 func (*StreamingInputCallResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7e3146bec7fa4346, []int{5}
+	return file_benchmark_grpc_testing_messages_proto_rawDescGZIP(), []int{5}
 }
 
-func (m *StreamingInputCallResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_StreamingInputCallResponse.Unmarshal(m, b)
-}
-func (m *StreamingInputCallResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_StreamingInputCallResponse.Marshal(b, m, deterministic)
-}
-func (m *StreamingInputCallResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_StreamingInputCallResponse.Merge(m, src)
-}
-func (m *StreamingInputCallResponse) XXX_Size() int {
-	return xxx_messageInfo_StreamingInputCallResponse.Size(m)
-}
-func (m *StreamingInputCallResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_StreamingInputCallResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_StreamingInputCallResponse proto.InternalMessageInfo
-
-func (m *StreamingInputCallResponse) GetAggregatedPayloadSize() int32 {
-	if m != nil {
-		return m.AggregatedPayloadSize
+func (x *StreamingInputCallResponse) GetAggregatedPayloadSize() int32 {
+	if x != nil {
+		return x.AggregatedPayloadSize
 	}
 	return 0
 }
 
 // Configuration for a particular response.
 type ResponseParameters struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Desired payload sizes in responses from the server.
 	// If response_type is COMPRESSABLE, this denotes the size before compression.
 	Size int32 `protobuf:"varint,1,opt,name=size,proto3" json:"size,omitempty"`
 	// Desired interval between consecutive responses in the response stream in
 	// microseconds.
-	IntervalUs           int32    `protobuf:"varint,2,opt,name=interval_us,json=intervalUs,proto3" json:"interval_us,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	IntervalUs int32 `protobuf:"varint,2,opt,name=interval_us,json=intervalUs,proto3" json:"interval_us,omitempty"`
 }
 
-func (m *ResponseParameters) Reset()         { *m = ResponseParameters{} }
-func (m *ResponseParameters) String() string { return proto.CompactTextString(m) }
-func (*ResponseParameters) ProtoMessage()    {}
+func (x *ResponseParameters) Reset() {
+	*x = ResponseParameters{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_messages_proto_msgTypes[6]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ResponseParameters) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ResponseParameters) ProtoMessage() {}
+
+func (x *ResponseParameters) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_messages_proto_msgTypes[6]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ResponseParameters.ProtoReflect.Descriptor instead.
 func (*ResponseParameters) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7e3146bec7fa4346, []int{6}
+	return file_benchmark_grpc_testing_messages_proto_rawDescGZIP(), []int{6}
 }
 
-func (m *ResponseParameters) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ResponseParameters.Unmarshal(m, b)
-}
-func (m *ResponseParameters) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ResponseParameters.Marshal(b, m, deterministic)
-}
-func (m *ResponseParameters) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ResponseParameters.Merge(m, src)
-}
-func (m *ResponseParameters) XXX_Size() int {
-	return xxx_messageInfo_ResponseParameters.Size(m)
-}
-func (m *ResponseParameters) XXX_DiscardUnknown() {
-	xxx_messageInfo_ResponseParameters.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ResponseParameters proto.InternalMessageInfo
-
-func (m *ResponseParameters) GetSize() int32 {
-	if m != nil {
-		return m.Size
+func (x *ResponseParameters) GetSize() int32 {
+	if x != nil {
+		return x.Size
 	}
 	return 0
 }
 
-func (m *ResponseParameters) GetIntervalUs() int32 {
-	if m != nil {
-		return m.IntervalUs
+func (x *ResponseParameters) GetIntervalUs() int32 {
+	if x != nil {
+		return x.IntervalUs
 	}
 	return 0
 }
 
 // Server-streaming request.
 type StreamingOutputCallRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Desired payload type in the response from the server.
 	// If response_type is RANDOM, the payload from each response in the stream
 	// might be of different types. This is to simulate a mixed type of payload
@@ -486,109 +609,121 @@
 	// Compression algorithm to be used by the server for the response (stream)
 	ResponseCompression CompressionType `protobuf:"varint,6,opt,name=response_compression,json=responseCompression,proto3,enum=grpc.testing.CompressionType" json:"response_compression,omitempty"`
 	// Whether server should return a given status
-	ResponseStatus       *EchoStatus `protobuf:"bytes,7,opt,name=response_status,json=responseStatus,proto3" json:"response_status,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
-	XXX_unrecognized     []byte      `json:"-"`
-	XXX_sizecache        int32       `json:"-"`
+	ResponseStatus *EchoStatus `protobuf:"bytes,7,opt,name=response_status,json=responseStatus,proto3" json:"response_status,omitempty"`
 }
 
-func (m *StreamingOutputCallRequest) Reset()         { *m = StreamingOutputCallRequest{} }
-func (m *StreamingOutputCallRequest) String() string { return proto.CompactTextString(m) }
-func (*StreamingOutputCallRequest) ProtoMessage()    {}
+func (x *StreamingOutputCallRequest) Reset() {
+	*x = StreamingOutputCallRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_messages_proto_msgTypes[7]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *StreamingOutputCallRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*StreamingOutputCallRequest) ProtoMessage() {}
+
+func (x *StreamingOutputCallRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_messages_proto_msgTypes[7]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use StreamingOutputCallRequest.ProtoReflect.Descriptor instead.
 func (*StreamingOutputCallRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7e3146bec7fa4346, []int{7}
+	return file_benchmark_grpc_testing_messages_proto_rawDescGZIP(), []int{7}
 }
 
-func (m *StreamingOutputCallRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_StreamingOutputCallRequest.Unmarshal(m, b)
-}
-func (m *StreamingOutputCallRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_StreamingOutputCallRequest.Marshal(b, m, deterministic)
-}
-func (m *StreamingOutputCallRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_StreamingOutputCallRequest.Merge(m, src)
-}
-func (m *StreamingOutputCallRequest) XXX_Size() int {
-	return xxx_messageInfo_StreamingOutputCallRequest.Size(m)
-}
-func (m *StreamingOutputCallRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_StreamingOutputCallRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_StreamingOutputCallRequest proto.InternalMessageInfo
-
-func (m *StreamingOutputCallRequest) GetResponseType() PayloadType {
-	if m != nil {
-		return m.ResponseType
+func (x *StreamingOutputCallRequest) GetResponseType() PayloadType {
+	if x != nil {
+		return x.ResponseType
 	}
 	return PayloadType_COMPRESSABLE
 }
 
-func (m *StreamingOutputCallRequest) GetResponseParameters() []*ResponseParameters {
-	if m != nil {
-		return m.ResponseParameters
+func (x *StreamingOutputCallRequest) GetResponseParameters() []*ResponseParameters {
+	if x != nil {
+		return x.ResponseParameters
 	}
 	return nil
 }
 
-func (m *StreamingOutputCallRequest) GetPayload() *Payload {
-	if m != nil {
-		return m.Payload
+func (x *StreamingOutputCallRequest) GetPayload() *Payload {
+	if x != nil {
+		return x.Payload
 	}
 	return nil
 }
 
-func (m *StreamingOutputCallRequest) GetResponseCompression() CompressionType {
-	if m != nil {
-		return m.ResponseCompression
+func (x *StreamingOutputCallRequest) GetResponseCompression() CompressionType {
+	if x != nil {
+		return x.ResponseCompression
 	}
 	return CompressionType_NONE
 }
 
-func (m *StreamingOutputCallRequest) GetResponseStatus() *EchoStatus {
-	if m != nil {
-		return m.ResponseStatus
+func (x *StreamingOutputCallRequest) GetResponseStatus() *EchoStatus {
+	if x != nil {
+		return x.ResponseStatus
 	}
 	return nil
 }
 
 // Server-streaming response, as configured by the request and parameters.
 type StreamingOutputCallResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Payload to increase response size.
-	Payload              *Payload `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Payload *Payload `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"`
 }
 
-func (m *StreamingOutputCallResponse) Reset()         { *m = StreamingOutputCallResponse{} }
-func (m *StreamingOutputCallResponse) String() string { return proto.CompactTextString(m) }
-func (*StreamingOutputCallResponse) ProtoMessage()    {}
+func (x *StreamingOutputCallResponse) Reset() {
+	*x = StreamingOutputCallResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_messages_proto_msgTypes[8]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *StreamingOutputCallResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*StreamingOutputCallResponse) ProtoMessage() {}
+
+func (x *StreamingOutputCallResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_messages_proto_msgTypes[8]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use StreamingOutputCallResponse.ProtoReflect.Descriptor instead.
 func (*StreamingOutputCallResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7e3146bec7fa4346, []int{8}
+	return file_benchmark_grpc_testing_messages_proto_rawDescGZIP(), []int{8}
 }
 
-func (m *StreamingOutputCallResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_StreamingOutputCallResponse.Unmarshal(m, b)
-}
-func (m *StreamingOutputCallResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_StreamingOutputCallResponse.Marshal(b, m, deterministic)
-}
-func (m *StreamingOutputCallResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_StreamingOutputCallResponse.Merge(m, src)
-}
-func (m *StreamingOutputCallResponse) XXX_Size() int {
-	return xxx_messageInfo_StreamingOutputCallResponse.Size(m)
-}
-func (m *StreamingOutputCallResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_StreamingOutputCallResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_StreamingOutputCallResponse proto.InternalMessageInfo
-
-func (m *StreamingOutputCallResponse) GetPayload() *Payload {
-	if m != nil {
-		return m.Payload
+func (x *StreamingOutputCallResponse) GetPayload() *Payload {
+	if x != nil {
+		return x.Payload
 	}
 	return nil
 }
@@ -596,40 +731,48 @@
 // For reconnect interop test only.
 // Client tells server what reconnection parameters it used.
 type ReconnectParams struct {
-	MaxReconnectBackoffMs int32    `protobuf:"varint,1,opt,name=max_reconnect_backoff_ms,json=maxReconnectBackoffMs,proto3" json:"max_reconnect_backoff_ms,omitempty"`
-	XXX_NoUnkeyedLiteral  struct{} `json:"-"`
-	XXX_unrecognized      []byte   `json:"-"`
-	XXX_sizecache         int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	MaxReconnectBackoffMs int32 `protobuf:"varint,1,opt,name=max_reconnect_backoff_ms,json=maxReconnectBackoffMs,proto3" json:"max_reconnect_backoff_ms,omitempty"`
 }
 
-func (m *ReconnectParams) Reset()         { *m = ReconnectParams{} }
-func (m *ReconnectParams) String() string { return proto.CompactTextString(m) }
-func (*ReconnectParams) ProtoMessage()    {}
+func (x *ReconnectParams) Reset() {
+	*x = ReconnectParams{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_messages_proto_msgTypes[9]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ReconnectParams) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ReconnectParams) ProtoMessage() {}
+
+func (x *ReconnectParams) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_messages_proto_msgTypes[9]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ReconnectParams.ProtoReflect.Descriptor instead.
 func (*ReconnectParams) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7e3146bec7fa4346, []int{9}
+	return file_benchmark_grpc_testing_messages_proto_rawDescGZIP(), []int{9}
 }
 
-func (m *ReconnectParams) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ReconnectParams.Unmarshal(m, b)
-}
-func (m *ReconnectParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ReconnectParams.Marshal(b, m, deterministic)
-}
-func (m *ReconnectParams) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ReconnectParams.Merge(m, src)
-}
-func (m *ReconnectParams) XXX_Size() int {
-	return xxx_messageInfo_ReconnectParams.Size(m)
-}
-func (m *ReconnectParams) XXX_DiscardUnknown() {
-	xxx_messageInfo_ReconnectParams.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ReconnectParams proto.InternalMessageInfo
-
-func (m *ReconnectParams) GetMaxReconnectBackoffMs() int32 {
-	if m != nil {
-		return m.MaxReconnectBackoffMs
+func (x *ReconnectParams) GetMaxReconnectBackoffMs() int32 {
+	if x != nil {
+		return x.MaxReconnectBackoffMs
 	}
 	return 0
 }
@@ -638,116 +781,380 @@
 // Server tells client whether its reconnects are following the spec and the
 // reconnect backoffs it saw.
 type ReconnectInfo struct {
-	Passed               bool     `protobuf:"varint,1,opt,name=passed,proto3" json:"passed,omitempty"`
-	BackoffMs            []int32  `protobuf:"varint,2,rep,packed,name=backoff_ms,json=backoffMs,proto3" json:"backoff_ms,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Passed    bool    `protobuf:"varint,1,opt,name=passed,proto3" json:"passed,omitempty"`
+	BackoffMs []int32 `protobuf:"varint,2,rep,packed,name=backoff_ms,json=backoffMs,proto3" json:"backoff_ms,omitempty"`
 }
 
-func (m *ReconnectInfo) Reset()         { *m = ReconnectInfo{} }
-func (m *ReconnectInfo) String() string { return proto.CompactTextString(m) }
-func (*ReconnectInfo) ProtoMessage()    {}
+func (x *ReconnectInfo) Reset() {
+	*x = ReconnectInfo{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_messages_proto_msgTypes[10]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ReconnectInfo) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ReconnectInfo) ProtoMessage() {}
+
+func (x *ReconnectInfo) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_messages_proto_msgTypes[10]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ReconnectInfo.ProtoReflect.Descriptor instead.
 func (*ReconnectInfo) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7e3146bec7fa4346, []int{10}
+	return file_benchmark_grpc_testing_messages_proto_rawDescGZIP(), []int{10}
 }
 
-func (m *ReconnectInfo) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ReconnectInfo.Unmarshal(m, b)
-}
-func (m *ReconnectInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ReconnectInfo.Marshal(b, m, deterministic)
-}
-func (m *ReconnectInfo) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ReconnectInfo.Merge(m, src)
-}
-func (m *ReconnectInfo) XXX_Size() int {
-	return xxx_messageInfo_ReconnectInfo.Size(m)
-}
-func (m *ReconnectInfo) XXX_DiscardUnknown() {
-	xxx_messageInfo_ReconnectInfo.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ReconnectInfo proto.InternalMessageInfo
-
-func (m *ReconnectInfo) GetPassed() bool {
-	if m != nil {
-		return m.Passed
+func (x *ReconnectInfo) GetPassed() bool {
+	if x != nil {
+		return x.Passed
 	}
 	return false
 }
 
-func (m *ReconnectInfo) GetBackoffMs() []int32 {
-	if m != nil {
-		return m.BackoffMs
+func (x *ReconnectInfo) GetBackoffMs() []int32 {
+	if x != nil {
+		return x.BackoffMs
 	}
 	return nil
 }
 
-func init() {
-	proto.RegisterEnum("grpc.testing.PayloadType", PayloadType_name, PayloadType_value)
-	proto.RegisterEnum("grpc.testing.CompressionType", CompressionType_name, CompressionType_value)
-	proto.RegisterType((*Payload)(nil), "grpc.testing.Payload")
-	proto.RegisterType((*EchoStatus)(nil), "grpc.testing.EchoStatus")
-	proto.RegisterType((*SimpleRequest)(nil), "grpc.testing.SimpleRequest")
-	proto.RegisterType((*SimpleResponse)(nil), "grpc.testing.SimpleResponse")
-	proto.RegisterType((*StreamingInputCallRequest)(nil), "grpc.testing.StreamingInputCallRequest")
-	proto.RegisterType((*StreamingInputCallResponse)(nil), "grpc.testing.StreamingInputCallResponse")
-	proto.RegisterType((*ResponseParameters)(nil), "grpc.testing.ResponseParameters")
-	proto.RegisterType((*StreamingOutputCallRequest)(nil), "grpc.testing.StreamingOutputCallRequest")
-	proto.RegisterType((*StreamingOutputCallResponse)(nil), "grpc.testing.StreamingOutputCallResponse")
-	proto.RegisterType((*ReconnectParams)(nil), "grpc.testing.ReconnectParams")
-	proto.RegisterType((*ReconnectInfo)(nil), "grpc.testing.ReconnectInfo")
+var File_benchmark_grpc_testing_messages_proto protoreflect.FileDescriptor
+
+var file_benchmark_grpc_testing_messages_proto_rawDesc = []byte{
+	0x0a, 0x25, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x2f, 0x67, 0x72, 0x70, 0x63,
+	0x5f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+	0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x69, 0x6e, 0x67, 0x22, 0x4c, 0x0a, 0x07, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64,
+	0x12, 0x2d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19,
+	0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x61,
+	0x79, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12,
+	0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x62,
+	0x6f, 0x64, 0x79, 0x22, 0x3a, 0x0a, 0x0a, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x75,
+	0x73, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
+	0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22,
+	0x89, 0x03, 0x0a, 0x0d, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+	0x74, 0x12, 0x3e, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x74, 0x79,
+	0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x54,
+	0x79, 0x70, 0x65, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x79, 0x70,
+	0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x73, 0x69,
+	0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+	0x73, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x2f, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61,
+	0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x07,
+	0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x69, 0x6c, 0x6c, 0x5f,
+	0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c,
+	0x66, 0x69, 0x6c, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x10,
+	0x66, 0x69, 0x6c, 0x6c, 0x5f, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65,
+	0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x66, 0x69, 0x6c, 0x6c, 0x4f, 0x61, 0x75, 0x74,
+	0x68, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x50, 0x0a, 0x14, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+	0x73, 0x65, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06,
+	0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x69, 0x6e, 0x67, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x54,
+	0x79, 0x70, 0x65, 0x52, 0x13, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x6d,
+	0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a, 0x0f, 0x72, 0x65, 0x73, 0x70,
+	0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67,
+	0x2e, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0e, 0x72, 0x65, 0x73,
+	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x7e, 0x0a, 0x0e, 0x53,
+	0x69, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a,
+	0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15,
+	0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x61,
+	0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x1a,
+	0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x61,
+	0x75, 0x74, 0x68, 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x0a, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x22, 0x4c, 0x0a, 0x19, 0x53,
+	0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x43, 0x61, 0x6c,
+	0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2f, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c,
+	0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x72, 0x70, 0x63,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64,
+	0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x54, 0x0a, 0x1a, 0x53, 0x74, 0x72,
+	0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x43, 0x61, 0x6c, 0x6c, 0x52,
+	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x17, 0x61, 0x67, 0x67, 0x72, 0x65,
+	0x67, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x73, 0x69,
+	0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67,
+	0x61, 0x74, 0x65, 0x64, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x69, 0x7a, 0x65, 0x22,
+	0x49, 0x0a, 0x12, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d,
+	0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x74,
+	0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a,
+	0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x55, 0x73, 0x22, 0xf5, 0x02, 0x0a, 0x1a, 0x53,
+	0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x43, 0x61,
+	0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x0d, 0x72, 0x65, 0x73,
+	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e,
+	0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e,
+	0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x72, 0x65, 0x73,
+	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x51, 0x0a, 0x13, 0x72, 0x65, 0x73,
+	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73,
+	0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x61,
+	0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x52, 0x12, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+	0x73, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x2f, 0x0a, 0x07,
+	0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e,
+	0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x61, 0x79,
+	0x6c, 0x6f, 0x61, 0x64, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x50, 0x0a,
+	0x14, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65,
+	0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x67, 0x72,
+	0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x72,
+	0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x13, 0x72, 0x65, 0x73, 0x70,
+	0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12,
+	0x41, 0x0a, 0x0f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74,
+	0x75, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x74, 0x61, 0x74,
+	0x75, 0x73, 0x52, 0x0e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x53, 0x74, 0x61, 0x74,
+	0x75, 0x73, 0x22, 0x4e, 0x0a, 0x1b, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x4f,
+	0x75, 0x74, 0x70, 0x75, 0x74, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+	0x65, 0x12, 0x2f, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e,
+	0x67, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f,
+	0x61, 0x64, 0x22, 0x4a, 0x0a, 0x0f, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x50,
+	0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x37, 0x0a, 0x18, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x63,
+	0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x6f, 0x66, 0x66, 0x5f, 0x6d,
+	0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x63, 0x6f,
+	0x6e, 0x6e, 0x65, 0x63, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x6f, 0x66, 0x66, 0x4d, 0x73, 0x22, 0x46,
+	0x0a, 0x0d, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12,
+	0x16, 0x0a, 0x06, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52,
+	0x06, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x61, 0x63, 0x6b, 0x6f,
+	0x66, 0x66, 0x5f, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x62, 0x61, 0x63,
+	0x6b, 0x6f, 0x66, 0x66, 0x4d, 0x73, 0x2a, 0x3f, 0x0a, 0x0b, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61,
+	0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x43, 0x4f, 0x4d, 0x50, 0x52, 0x45, 0x53,
+	0x53, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x55, 0x4e, 0x43, 0x4f, 0x4d,
+	0x50, 0x52, 0x45, 0x53, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x52,
+	0x41, 0x4e, 0x44, 0x4f, 0x4d, 0x10, 0x02, 0x2a, 0x32, 0x0a, 0x0f, 0x43, 0x6f, 0x6d, 0x70, 0x72,
+	0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f,
+	0x4e, 0x45, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x47, 0x5a, 0x49, 0x50, 0x10, 0x01, 0x12, 0x0b,
+	0x0a, 0x07, 0x44, 0x45, 0x46, 0x4c, 0x41, 0x54, 0x45, 0x10, 0x02, 0x42, 0x2f, 0x5a, 0x2d, 0x67,
+	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67,
+	0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x2f,
+	0x67, 0x72, 0x70, 0x63, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x62, 0x06, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x33,
 }
 
-func init() {
-	proto.RegisterFile("benchmark/grpc_testing/messages.proto", fileDescriptor_7e3146bec7fa4346)
+var (
+	file_benchmark_grpc_testing_messages_proto_rawDescOnce sync.Once
+	file_benchmark_grpc_testing_messages_proto_rawDescData = file_benchmark_grpc_testing_messages_proto_rawDesc
+)
+
+func file_benchmark_grpc_testing_messages_proto_rawDescGZIP() []byte {
+	file_benchmark_grpc_testing_messages_proto_rawDescOnce.Do(func() {
+		file_benchmark_grpc_testing_messages_proto_rawDescData = protoimpl.X.CompressGZIP(file_benchmark_grpc_testing_messages_proto_rawDescData)
+	})
+	return file_benchmark_grpc_testing_messages_proto_rawDescData
 }
 
-var fileDescriptor_7e3146bec7fa4346 = []byte{
-	// 690 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x55, 0x4b, 0x6f, 0xd3, 0x4c,
-	0x14, 0xfd, 0x9c, 0x77, 0x6f, 0xd2, 0x34, 0x9a, 0x8f, 0x82, 0x5b, 0x54, 0x11, 0x19, 0x21, 0x45,
-	0x95, 0x9a, 0x48, 0x41, 0x02, 0x89, 0x05, 0x28, 0x6d, 0x53, 0x14, 0x94, 0x26, 0xc1, 0x6e, 0x37,
-	0xdd, 0x58, 0x13, 0x67, 0xe2, 0x5a, 0xb5, 0x3d, 0x66, 0x66, 0x82, 0x9a, 0x2e, 0xd8, 0xf3, 0x83,
-	0xd9, 0x23, 0x8f, 0x1f, 0x71, 0xda, 0x2c, 0x5a, 0xd8, 0xb0, 0x9b, 0x39, 0xf7, 0xdc, 0xe3, 0xfb,
-	0x38, 0xd6, 0xc0, 0x9b, 0x29, 0xf1, 0xad, 0x6b, 0x0f, 0xb3, 0x9b, 0x8e, 0xcd, 0x02, 0xcb, 0x14,
-	0x84, 0x0b, 0xc7, 0xb7, 0x3b, 0x1e, 0xe1, 0x1c, 0xdb, 0x84, 0xb7, 0x03, 0x46, 0x05, 0x45, 0xb5,
-	0x30, 0xd8, 0x8e, 0x83, 0xda, 0x10, 0xca, 0x13, 0xbc, 0x74, 0x29, 0x9e, 0xa1, 0x23, 0x28, 0x88,
-	0x65, 0x40, 0x54, 0xa5, 0xa9, 0xb4, 0xea, 0xdd, 0xbd, 0x76, 0x96, 0xd7, 0x8e, 0x49, 0x17, 0xcb,
-	0x80, 0xe8, 0x92, 0x86, 0x10, 0x14, 0xa6, 0x74, 0xb6, 0x54, 0x73, 0x4d, 0xa5, 0x55, 0xd3, 0xe5,
-	0x59, 0xfb, 0x00, 0xd0, 0xb7, 0xae, 0xa9, 0x21, 0xb0, 0x58, 0xf0, 0x90, 0x61, 0xd1, 0x59, 0x24,
-	0x58, 0xd4, 0xe5, 0x19, 0xa9, 0x50, 0x8e, 0xeb, 0x91, 0x89, 0x5b, 0x7a, 0x72, 0xd5, 0x7e, 0xe6,
-	0x61, 0xdb, 0x70, 0xbc, 0xc0, 0x25, 0x3a, 0xf9, 0xb6, 0x20, 0x5c, 0xa0, 0x8f, 0xb0, 0xcd, 0x08,
-	0x0f, 0xa8, 0xcf, 0x89, 0xf9, 0xb8, 0xca, 0x6a, 0x09, 0x3f, 0xbc, 0xa1, 0xd7, 0x99, 0x7c, 0xee,
-	0xdc, 0x45, 0x5f, 0x2c, 0xae, 0x48, 0x86, 0x73, 0x47, 0x50, 0x07, 0xca, 0x41, 0xa4, 0xa0, 0xe6,
-	0x9b, 0x4a, 0xab, 0xda, 0xdd, 0xdd, 0x28, 0xaf, 0x27, 0xac, 0x50, 0x75, 0xee, 0xb8, 0xae, 0xb9,
-	0xe0, 0x84, 0xf9, 0xd8, 0x23, 0x6a, 0xa1, 0xa9, 0xb4, 0x2a, 0x7a, 0x2d, 0x04, 0x2f, 0x63, 0x0c,
-	0xb5, 0xa0, 0x21, 0x49, 0x14, 0x2f, 0xc4, 0xb5, 0xc9, 0x2d, 0x1a, 0x10, 0xb5, 0x28, 0x79, 0xf5,
-	0x10, 0x1f, 0x87, 0xb0, 0x11, 0xa2, 0x68, 0x02, 0xcf, 0xd2, 0x22, 0x2d, 0xea, 0x05, 0x8c, 0x70,
-	0xee, 0x50, 0x5f, 0x2d, 0xc9, 0x5e, 0x0f, 0xd6, 0x8b, 0x39, 0x59, 0x11, 0x64, 0xbf, 0xff, 0x27,
-	0xa9, 0x99, 0x00, 0xea, 0xc1, 0xce, 0xaa, 0x6d, 0xb9, 0x09, 0xb5, 0x2c, 0x3b, 0x53, 0xd7, 0xc5,
-	0x56, 0x9b, 0xd2, 0xeb, 0xe9, 0x48, 0xe4, 0x5d, 0xfb, 0x01, 0xf5, 0x64, 0x15, 0x11, 0x9e, 0x1d,
-	0x93, 0xf2, 0xa8, 0x31, 0xed, 0x43, 0x25, 0x9d, 0x50, 0xb4, 0xe9, 0xf4, 0x8e, 0x5e, 0x41, 0x35,
-	0x3b, 0x98, 0xbc, 0x0c, 0x03, 0x4d, 0x87, 0xa2, 0x0d, 0x61, 0xcf, 0x10, 0x8c, 0x60, 0xcf, 0xf1,
-	0xed, 0x81, 0x1f, 0x2c, 0xc4, 0x09, 0x76, 0xdd, 0xc4, 0x16, 0x4f, 0x2d, 0x45, 0xbb, 0x80, 0xfd,
-	0x4d, 0x6a, 0x71, 0x67, 0xef, 0xe0, 0x05, 0xb6, 0x6d, 0x46, 0x6c, 0x2c, 0xc8, 0xcc, 0x8c, 0x73,
-	0x22, 0xbf, 0x44, 0xc6, 0xdd, 0x5d, 0x85, 0x63, 0xe9, 0xd0, 0x38, 0xda, 0x00, 0x50, 0xa2, 0x31,
-	0xc1, 0x0c, 0x7b, 0x44, 0x10, 0x26, 0x3d, 0x9f, 0x49, 0x95, 0xe7, 0xb0, 0x5d, 0xc7, 0x17, 0x84,
-	0x7d, 0xc7, 0xa1, 0x6b, 0x62, 0x17, 0x42, 0x02, 0x5d, 0x72, 0xed, 0x57, 0x2e, 0x53, 0xe1, 0x78,
-	0x21, 0xee, 0x35, 0xfc, 0xb7, 0xff, 0xc1, 0x57, 0x48, 0x7d, 0x62, 0x06, 0x69, 0xa9, 0x6a, 0xae,
-	0x99, 0x6f, 0x55, 0xbb, 0xcd, 0x75, 0x95, 0x87, 0x2d, 0xe9, 0x88, 0x3d, 0x6c, 0xf3, 0xc9, 0x7f,
-	0xcd, 0x3f, 0x69, 0xf3, 0x11, 0xbc, 0xdc, 0x38, 0xf6, 0x3f, 0xf4, 0xbc, 0xf6, 0x05, 0x76, 0x74,
-	0x62, 0x51, 0xdf, 0x27, 0x96, 0x90, 0xc3, 0xe2, 0xe8, 0x3d, 0xa8, 0x1e, 0xbe, 0x35, 0x59, 0x02,
-	0x9b, 0x53, 0x6c, 0xdd, 0xd0, 0xf9, 0xdc, 0xf4, 0x78, 0x62, 0x2f, 0x0f, 0xdf, 0xa6, 0x59, 0xc7,
-	0x51, 0xf4, 0x9c, 0x6b, 0x67, 0xb0, 0x9d, 0xa2, 0x03, 0x7f, 0x4e, 0xd1, 0x73, 0x28, 0x05, 0x98,
-	0x73, 0x12, 0x15, 0x53, 0xd1, 0xe3, 0x1b, 0x3a, 0x00, 0xc8, 0x68, 0x86, 0x4b, 0x2d, 0xea, 0x5b,
-	0xd3, 0x44, 0xe7, 0xf0, 0x13, 0x54, 0x33, 0xce, 0x40, 0x0d, 0xa8, 0x9d, 0x8c, 0xcf, 0x27, 0x7a,
-	0xdf, 0x30, 0x7a, 0xc7, 0xc3, 0x7e, 0xe3, 0x3f, 0x84, 0xa0, 0x7e, 0x39, 0x5a, 0xc3, 0x14, 0x04,
-	0x50, 0xd2, 0x7b, 0xa3, 0xd3, 0xf1, 0x79, 0x23, 0x77, 0xd8, 0x85, 0x9d, 0x7b, 0xfb, 0x40, 0x15,
-	0x28, 0x8c, 0xc6, 0xa3, 0x30, 0xb9, 0x02, 0x85, 0xcf, 0x57, 0x83, 0x49, 0x43, 0x41, 0x55, 0x28,
-	0x9f, 0xf6, 0xcf, 0x86, 0xbd, 0x8b, 0x7e, 0x23, 0x77, 0xdc, 0xb9, 0x3a, 0xb2, 0x29, 0xb5, 0x5d,
-	0xd2, 0xb6, 0xa9, 0x8b, 0x7d, 0xbb, 0x4d, 0x99, 0x2d, 0x1f, 0xa5, 0xce, 0xe6, 0x37, 0x6a, 0x5a,
-	0x92, 0x6f, 0xd3, 0xdb, 0xdf, 0x01, 0x00, 0x00, 0xff, 0xff, 0xea, 0xde, 0x4b, 0x12, 0xc4, 0x06,
-	0x00, 0x00,
+var file_benchmark_grpc_testing_messages_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
+var file_benchmark_grpc_testing_messages_proto_msgTypes = make([]protoimpl.MessageInfo, 11)
+var file_benchmark_grpc_testing_messages_proto_goTypes = []interface{}{
+	(PayloadType)(0),                    // 0: grpc.testing.PayloadType
+	(CompressionType)(0),                // 1: grpc.testing.CompressionType
+	(*Payload)(nil),                     // 2: grpc.testing.Payload
+	(*EchoStatus)(nil),                  // 3: grpc.testing.EchoStatus
+	(*SimpleRequest)(nil),               // 4: grpc.testing.SimpleRequest
+	(*SimpleResponse)(nil),              // 5: grpc.testing.SimpleResponse
+	(*StreamingInputCallRequest)(nil),   // 6: grpc.testing.StreamingInputCallRequest
+	(*StreamingInputCallResponse)(nil),  // 7: grpc.testing.StreamingInputCallResponse
+	(*ResponseParameters)(nil),          // 8: grpc.testing.ResponseParameters
+	(*StreamingOutputCallRequest)(nil),  // 9: grpc.testing.StreamingOutputCallRequest
+	(*StreamingOutputCallResponse)(nil), // 10: grpc.testing.StreamingOutputCallResponse
+	(*ReconnectParams)(nil),             // 11: grpc.testing.ReconnectParams
+	(*ReconnectInfo)(nil),               // 12: grpc.testing.ReconnectInfo
+}
+var file_benchmark_grpc_testing_messages_proto_depIdxs = []int32{
+	0,  // 0: grpc.testing.Payload.type:type_name -> grpc.testing.PayloadType
+	0,  // 1: grpc.testing.SimpleRequest.response_type:type_name -> grpc.testing.PayloadType
+	2,  // 2: grpc.testing.SimpleRequest.payload:type_name -> grpc.testing.Payload
+	1,  // 3: grpc.testing.SimpleRequest.response_compression:type_name -> grpc.testing.CompressionType
+	3,  // 4: grpc.testing.SimpleRequest.response_status:type_name -> grpc.testing.EchoStatus
+	2,  // 5: grpc.testing.SimpleResponse.payload:type_name -> grpc.testing.Payload
+	2,  // 6: grpc.testing.StreamingInputCallRequest.payload:type_name -> grpc.testing.Payload
+	0,  // 7: grpc.testing.StreamingOutputCallRequest.response_type:type_name -> grpc.testing.PayloadType
+	8,  // 8: grpc.testing.StreamingOutputCallRequest.response_parameters:type_name -> grpc.testing.ResponseParameters
+	2,  // 9: grpc.testing.StreamingOutputCallRequest.payload:type_name -> grpc.testing.Payload
+	1,  // 10: grpc.testing.StreamingOutputCallRequest.response_compression:type_name -> grpc.testing.CompressionType
+	3,  // 11: grpc.testing.StreamingOutputCallRequest.response_status:type_name -> grpc.testing.EchoStatus
+	2,  // 12: grpc.testing.StreamingOutputCallResponse.payload:type_name -> grpc.testing.Payload
+	13, // [13:13] is the sub-list for method output_type
+	13, // [13:13] is the sub-list for method input_type
+	13, // [13:13] is the sub-list for extension type_name
+	13, // [13:13] is the sub-list for extension extendee
+	0,  // [0:13] is the sub-list for field type_name
+}
+
+func init() { file_benchmark_grpc_testing_messages_proto_init() }
+func file_benchmark_grpc_testing_messages_proto_init() {
+	if File_benchmark_grpc_testing_messages_proto != nil {
+		return
+	}
+	if !protoimpl.UnsafeEnabled {
+		file_benchmark_grpc_testing_messages_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Payload); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_messages_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*EchoStatus); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_messages_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SimpleRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_messages_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SimpleResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_messages_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*StreamingInputCallRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_messages_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*StreamingInputCallResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_messages_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ResponseParameters); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_messages_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*StreamingOutputCallRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_messages_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*StreamingOutputCallResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_messages_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ReconnectParams); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_messages_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ReconnectInfo); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_benchmark_grpc_testing_messages_proto_rawDesc,
+			NumEnums:      2,
+			NumMessages:   11,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_benchmark_grpc_testing_messages_proto_goTypes,
+		DependencyIndexes: file_benchmark_grpc_testing_messages_proto_depIdxs,
+		EnumInfos:         file_benchmark_grpc_testing_messages_proto_enumTypes,
+		MessageInfos:      file_benchmark_grpc_testing_messages_proto_msgTypes,
+	}.Build()
+	File_benchmark_grpc_testing_messages_proto = out.File
+	file_benchmark_grpc_testing_messages_proto_rawDesc = nil
+	file_benchmark_grpc_testing_messages_proto_goTypes = nil
+	file_benchmark_grpc_testing_messages_proto_depIdxs = nil
 }
diff --git a/benchmark/grpc_testing/payloads.pb.go b/benchmark/grpc_testing/payloads.pb.go
index c96b7b6..5e63138 100644
--- a/benchmark/grpc_testing/payloads.pb.go
+++ b/benchmark/grpc_testing/payloads.pb.go
@@ -1,185 +1,263 @@
+// Copyright 2016 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.25.0
+// 	protoc        v3.3.0
 // source: benchmark/grpc_testing/payloads.proto
 
 package grpc_testing
 
 import (
-	fmt "fmt"
 	proto "github.com/golang/protobuf/proto"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
 )
 
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
 
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+// This is a compile-time assertion that a sufficiently up-to-date version
+// of the legacy proto package is being used.
+const _ = proto.ProtoPackageIsVersion4
 
 type ByteBufferParams struct {
-	ReqSize              int32    `protobuf:"varint,1,opt,name=req_size,json=reqSize,proto3" json:"req_size,omitempty"`
-	RespSize             int32    `protobuf:"varint,2,opt,name=resp_size,json=respSize,proto3" json:"resp_size,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	ReqSize  int32 `protobuf:"varint,1,opt,name=req_size,json=reqSize,proto3" json:"req_size,omitempty"`
+	RespSize int32 `protobuf:"varint,2,opt,name=resp_size,json=respSize,proto3" json:"resp_size,omitempty"`
 }
 
-func (m *ByteBufferParams) Reset()         { *m = ByteBufferParams{} }
-func (m *ByteBufferParams) String() string { return proto.CompactTextString(m) }
-func (*ByteBufferParams) ProtoMessage()    {}
+func (x *ByteBufferParams) Reset() {
+	*x = ByteBufferParams{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_payloads_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ByteBufferParams) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ByteBufferParams) ProtoMessage() {}
+
+func (x *ByteBufferParams) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_payloads_proto_msgTypes[0]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ByteBufferParams.ProtoReflect.Descriptor instead.
 func (*ByteBufferParams) Descriptor() ([]byte, []int) {
-	return fileDescriptor_69438956f5d73a41, []int{0}
+	return file_benchmark_grpc_testing_payloads_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *ByteBufferParams) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ByteBufferParams.Unmarshal(m, b)
-}
-func (m *ByteBufferParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ByteBufferParams.Marshal(b, m, deterministic)
-}
-func (m *ByteBufferParams) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ByteBufferParams.Merge(m, src)
-}
-func (m *ByteBufferParams) XXX_Size() int {
-	return xxx_messageInfo_ByteBufferParams.Size(m)
-}
-func (m *ByteBufferParams) XXX_DiscardUnknown() {
-	xxx_messageInfo_ByteBufferParams.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ByteBufferParams proto.InternalMessageInfo
-
-func (m *ByteBufferParams) GetReqSize() int32 {
-	if m != nil {
-		return m.ReqSize
+func (x *ByteBufferParams) GetReqSize() int32 {
+	if x != nil {
+		return x.ReqSize
 	}
 	return 0
 }
 
-func (m *ByteBufferParams) GetRespSize() int32 {
-	if m != nil {
-		return m.RespSize
+func (x *ByteBufferParams) GetRespSize() int32 {
+	if x != nil {
+		return x.RespSize
 	}
 	return 0
 }
 
 type SimpleProtoParams struct {
-	ReqSize              int32    `protobuf:"varint,1,opt,name=req_size,json=reqSize,proto3" json:"req_size,omitempty"`
-	RespSize             int32    `protobuf:"varint,2,opt,name=resp_size,json=respSize,proto3" json:"resp_size,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	ReqSize  int32 `protobuf:"varint,1,opt,name=req_size,json=reqSize,proto3" json:"req_size,omitempty"`
+	RespSize int32 `protobuf:"varint,2,opt,name=resp_size,json=respSize,proto3" json:"resp_size,omitempty"`
 }
 
-func (m *SimpleProtoParams) Reset()         { *m = SimpleProtoParams{} }
-func (m *SimpleProtoParams) String() string { return proto.CompactTextString(m) }
-func (*SimpleProtoParams) ProtoMessage()    {}
+func (x *SimpleProtoParams) Reset() {
+	*x = SimpleProtoParams{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_payloads_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *SimpleProtoParams) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SimpleProtoParams) ProtoMessage() {}
+
+func (x *SimpleProtoParams) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_payloads_proto_msgTypes[1]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SimpleProtoParams.ProtoReflect.Descriptor instead.
 func (*SimpleProtoParams) Descriptor() ([]byte, []int) {
-	return fileDescriptor_69438956f5d73a41, []int{1}
+	return file_benchmark_grpc_testing_payloads_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *SimpleProtoParams) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SimpleProtoParams.Unmarshal(m, b)
-}
-func (m *SimpleProtoParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SimpleProtoParams.Marshal(b, m, deterministic)
-}
-func (m *SimpleProtoParams) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SimpleProtoParams.Merge(m, src)
-}
-func (m *SimpleProtoParams) XXX_Size() int {
-	return xxx_messageInfo_SimpleProtoParams.Size(m)
-}
-func (m *SimpleProtoParams) XXX_DiscardUnknown() {
-	xxx_messageInfo_SimpleProtoParams.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SimpleProtoParams proto.InternalMessageInfo
-
-func (m *SimpleProtoParams) GetReqSize() int32 {
-	if m != nil {
-		return m.ReqSize
+func (x *SimpleProtoParams) GetReqSize() int32 {
+	if x != nil {
+		return x.ReqSize
 	}
 	return 0
 }
 
-func (m *SimpleProtoParams) GetRespSize() int32 {
-	if m != nil {
-		return m.RespSize
+func (x *SimpleProtoParams) GetRespSize() int32 {
+	if x != nil {
+		return x.RespSize
 	}
 	return 0
 }
 
 type ComplexProtoParams struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 }
 
-func (m *ComplexProtoParams) Reset()         { *m = ComplexProtoParams{} }
-func (m *ComplexProtoParams) String() string { return proto.CompactTextString(m) }
-func (*ComplexProtoParams) ProtoMessage()    {}
+func (x *ComplexProtoParams) Reset() {
+	*x = ComplexProtoParams{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_payloads_proto_msgTypes[2]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ComplexProtoParams) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ComplexProtoParams) ProtoMessage() {}
+
+func (x *ComplexProtoParams) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_payloads_proto_msgTypes[2]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ComplexProtoParams.ProtoReflect.Descriptor instead.
 func (*ComplexProtoParams) Descriptor() ([]byte, []int) {
-	return fileDescriptor_69438956f5d73a41, []int{2}
+	return file_benchmark_grpc_testing_payloads_proto_rawDescGZIP(), []int{2}
 }
 
-func (m *ComplexProtoParams) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ComplexProtoParams.Unmarshal(m, b)
-}
-func (m *ComplexProtoParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ComplexProtoParams.Marshal(b, m, deterministic)
-}
-func (m *ComplexProtoParams) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ComplexProtoParams.Merge(m, src)
-}
-func (m *ComplexProtoParams) XXX_Size() int {
-	return xxx_messageInfo_ComplexProtoParams.Size(m)
-}
-func (m *ComplexProtoParams) XXX_DiscardUnknown() {
-	xxx_messageInfo_ComplexProtoParams.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ComplexProtoParams proto.InternalMessageInfo
-
 type PayloadConfig struct {
-	// Types that are valid to be assigned to Payload:
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// Types that are assignable to Payload:
 	//	*PayloadConfig_BytebufParams
 	//	*PayloadConfig_SimpleParams
 	//	*PayloadConfig_ComplexParams
-	Payload              isPayloadConfig_Payload `protobuf_oneof:"payload"`
-	XXX_NoUnkeyedLiteral struct{}                `json:"-"`
-	XXX_unrecognized     []byte                  `json:"-"`
-	XXX_sizecache        int32                   `json:"-"`
+	Payload isPayloadConfig_Payload `protobuf_oneof:"payload"`
 }
 
-func (m *PayloadConfig) Reset()         { *m = PayloadConfig{} }
-func (m *PayloadConfig) String() string { return proto.CompactTextString(m) }
-func (*PayloadConfig) ProtoMessage()    {}
+func (x *PayloadConfig) Reset() {
+	*x = PayloadConfig{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_payloads_proto_msgTypes[3]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *PayloadConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PayloadConfig) ProtoMessage() {}
+
+func (x *PayloadConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_payloads_proto_msgTypes[3]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use PayloadConfig.ProtoReflect.Descriptor instead.
 func (*PayloadConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_69438956f5d73a41, []int{3}
+	return file_benchmark_grpc_testing_payloads_proto_rawDescGZIP(), []int{3}
 }
 
-func (m *PayloadConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_PayloadConfig.Unmarshal(m, b)
-}
-func (m *PayloadConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_PayloadConfig.Marshal(b, m, deterministic)
-}
-func (m *PayloadConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PayloadConfig.Merge(m, src)
-}
-func (m *PayloadConfig) XXX_Size() int {
-	return xxx_messageInfo_PayloadConfig.Size(m)
-}
-func (m *PayloadConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_PayloadConfig.DiscardUnknown(m)
+func (m *PayloadConfig) GetPayload() isPayloadConfig_Payload {
+	if m != nil {
+		return m.Payload
+	}
+	return nil
 }
 
-var xxx_messageInfo_PayloadConfig proto.InternalMessageInfo
+func (x *PayloadConfig) GetBytebufParams() *ByteBufferParams {
+	if x, ok := x.GetPayload().(*PayloadConfig_BytebufParams); ok {
+		return x.BytebufParams
+	}
+	return nil
+}
+
+func (x *PayloadConfig) GetSimpleParams() *SimpleProtoParams {
+	if x, ok := x.GetPayload().(*PayloadConfig_SimpleParams); ok {
+		return x.SimpleParams
+	}
+	return nil
+}
+
+func (x *PayloadConfig) GetComplexParams() *ComplexProtoParams {
+	if x, ok := x.GetPayload().(*PayloadConfig_ComplexParams); ok {
+		return x.ComplexParams
+	}
+	return nil
+}
 
 type isPayloadConfig_Payload interface {
 	isPayloadConfig_Payload()
@@ -203,73 +281,151 @@
 
 func (*PayloadConfig_ComplexParams) isPayloadConfig_Payload() {}
 
-func (m *PayloadConfig) GetPayload() isPayloadConfig_Payload {
-	if m != nil {
-		return m.Payload
-	}
-	return nil
+var File_benchmark_grpc_testing_payloads_proto protoreflect.FileDescriptor
+
+var file_benchmark_grpc_testing_payloads_proto_rawDesc = []byte{
+	0x0a, 0x25, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x2f, 0x67, 0x72, 0x70, 0x63,
+	0x5f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64,
+	0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x69, 0x6e, 0x67, 0x22, 0x4a, 0x0a, 0x10, 0x42, 0x79, 0x74, 0x65, 0x42, 0x75, 0x66,
+	0x66, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, 0x71,
+	0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x72, 0x65, 0x71,
+	0x53, 0x69, 0x7a, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x70, 0x5f, 0x73, 0x69, 0x7a,
+	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x53, 0x69, 0x7a,
+	0x65, 0x22, 0x4b, 0x0a, 0x11, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f,
+	0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x5f, 0x73, 0x69,
+	0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x72, 0x65, 0x71, 0x53, 0x69, 0x7a,
+	0x65, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x70, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x14,
+	0x0a, 0x12, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x61,
+	0x72, 0x61, 0x6d, 0x73, 0x22, 0xf6, 0x01, 0x0a, 0x0d, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64,
+	0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x47, 0x0a, 0x0e, 0x62, 0x79, 0x74, 0x65, 0x62, 0x75,
+	0x66, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e,
+	0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x42, 0x79,
+	0x74, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00,
+	0x52, 0x0d, 0x62, 0x79, 0x74, 0x65, 0x62, 0x75, 0x66, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12,
+	0x46, 0x0a, 0x0d, 0x73, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x74,
+	0x6f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x69, 0x6d, 0x70, 0x6c,
+	0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x49, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x6c,
+	0x65, 0x78, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x43,
+	0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x61, 0x72, 0x61, 0x6d,
+	0x73, 0x48, 0x00, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61,
+	0x6d, 0x73, 0x42, 0x09, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x2f, 0x5a,
+	0x2d, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f,
+	0x72, 0x67, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
+	0x6b, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x62, 0x06,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
-func (m *PayloadConfig) GetBytebufParams() *ByteBufferParams {
-	if x, ok := m.GetPayload().(*PayloadConfig_BytebufParams); ok {
-		return x.BytebufParams
-	}
-	return nil
+var (
+	file_benchmark_grpc_testing_payloads_proto_rawDescOnce sync.Once
+	file_benchmark_grpc_testing_payloads_proto_rawDescData = file_benchmark_grpc_testing_payloads_proto_rawDesc
+)
+
+func file_benchmark_grpc_testing_payloads_proto_rawDescGZIP() []byte {
+	file_benchmark_grpc_testing_payloads_proto_rawDescOnce.Do(func() {
+		file_benchmark_grpc_testing_payloads_proto_rawDescData = protoimpl.X.CompressGZIP(file_benchmark_grpc_testing_payloads_proto_rawDescData)
+	})
+	return file_benchmark_grpc_testing_payloads_proto_rawDescData
 }
 
-func (m *PayloadConfig) GetSimpleParams() *SimpleProtoParams {
-	if x, ok := m.GetPayload().(*PayloadConfig_SimpleParams); ok {
-		return x.SimpleParams
-	}
-	return nil
+var file_benchmark_grpc_testing_payloads_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
+var file_benchmark_grpc_testing_payloads_proto_goTypes = []interface{}{
+	(*ByteBufferParams)(nil),   // 0: grpc.testing.ByteBufferParams
+	(*SimpleProtoParams)(nil),  // 1: grpc.testing.SimpleProtoParams
+	(*ComplexProtoParams)(nil), // 2: grpc.testing.ComplexProtoParams
+	(*PayloadConfig)(nil),      // 3: grpc.testing.PayloadConfig
+}
+var file_benchmark_grpc_testing_payloads_proto_depIdxs = []int32{
+	0, // 0: grpc.testing.PayloadConfig.bytebuf_params:type_name -> grpc.testing.ByteBufferParams
+	1, // 1: grpc.testing.PayloadConfig.simple_params:type_name -> grpc.testing.SimpleProtoParams
+	2, // 2: grpc.testing.PayloadConfig.complex_params:type_name -> grpc.testing.ComplexProtoParams
+	3, // [3:3] is the sub-list for method output_type
+	3, // [3:3] is the sub-list for method input_type
+	3, // [3:3] is the sub-list for extension type_name
+	3, // [3:3] is the sub-list for extension extendee
+	0, // [0:3] is the sub-list for field type_name
 }
 
-func (m *PayloadConfig) GetComplexParams() *ComplexProtoParams {
-	if x, ok := m.GetPayload().(*PayloadConfig_ComplexParams); ok {
-		return x.ComplexParams
+func init() { file_benchmark_grpc_testing_payloads_proto_init() }
+func file_benchmark_grpc_testing_payloads_proto_init() {
+	if File_benchmark_grpc_testing_payloads_proto != nil {
+		return
 	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*PayloadConfig) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
+	if !protoimpl.UnsafeEnabled {
+		file_benchmark_grpc_testing_payloads_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ByteBufferParams); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_payloads_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SimpleProtoParams); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_payloads_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ComplexProtoParams); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_payloads_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*PayloadConfig); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	file_benchmark_grpc_testing_payloads_proto_msgTypes[3].OneofWrappers = []interface{}{
 		(*PayloadConfig_BytebufParams)(nil),
 		(*PayloadConfig_SimpleParams)(nil),
 		(*PayloadConfig_ComplexParams)(nil),
 	}
-}
-
-func init() {
-	proto.RegisterType((*ByteBufferParams)(nil), "grpc.testing.ByteBufferParams")
-	proto.RegisterType((*SimpleProtoParams)(nil), "grpc.testing.SimpleProtoParams")
-	proto.RegisterType((*ComplexProtoParams)(nil), "grpc.testing.ComplexProtoParams")
-	proto.RegisterType((*PayloadConfig)(nil), "grpc.testing.PayloadConfig")
-}
-
-func init() {
-	proto.RegisterFile("benchmark/grpc_testing/payloads.proto", fileDescriptor_69438956f5d73a41)
-}
-
-var fileDescriptor_69438956f5d73a41 = []byte{
-	// 289 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x91, 0xc1, 0x4b, 0xc3, 0x30,
-	0x18, 0xc5, 0xd7, 0x89, 0x6e, 0xfb, 0x5c, 0x87, 0x16, 0x0f, 0x8a, 0xa0, 0xa3, 0x20, 0x78, 0x31,
-	0x05, 0xfd, 0x0f, 0x3a, 0xd0, 0xa9, 0x97, 0xd2, 0xdd, 0xbc, 0x94, 0xb4, 0x7e, 0x8d, 0xc5, 0xb6,
-	0xc9, 0x92, 0x0e, 0xec, 0xfe, 0x70, 0xcf, 0x92, 0x34, 0x83, 0xcd, 0x79, 0xf3, 0x9a, 0x97, 0xf7,
-	0xfb, 0xde, 0xe3, 0xc1, 0x4d, 0x8a, 0x75, 0xf6, 0x51, 0x51, 0xf9, 0x19, 0x30, 0x29, 0xb2, 0xa4,
-	0x41, 0xd5, 0x14, 0x35, 0x0b, 0x04, 0x6d, 0x4b, 0x4e, 0xdf, 0x15, 0x11, 0x92, 0x37, 0xdc, 0x1b,
-	0x6b, 0x91, 0x58, 0xd1, 0x7f, 0x81, 0x93, 0xb0, 0x6d, 0x30, 0x5c, 0xe5, 0x39, 0xca, 0x88, 0x4a,
-	0x5a, 0x29, 0xef, 0x02, 0x86, 0x12, 0x97, 0x89, 0x2a, 0xd6, 0x78, 0xee, 0x4c, 0x9d, 0xdb, 0xc3,
-	0x78, 0x20, 0x71, 0xb9, 0x28, 0xd6, 0xe8, 0x5d, 0xc2, 0x48, 0xa2, 0x12, 0x9d, 0xd6, 0x37, 0xda,
-	0x50, 0x3f, 0x68, 0xd1, 0x7f, 0x85, 0xd3, 0x45, 0x51, 0x89, 0x12, 0x23, 0x7d, 0xe8, 0x9f, 0xb0,
-	0x33, 0xf0, 0x66, 0x5c, 0xc3, 0xbe, 0xb6, 0x68, 0xfe, 0xb7, 0x03, 0x6e, 0xd4, 0xf5, 0x99, 0xf1,
-	0x3a, 0x2f, 0x98, 0xf7, 0x04, 0x93, 0xb4, 0x6d, 0x30, 0x5d, 0xe5, 0x89, 0x30, 0x7f, 0xcc, 0x95,
-	0xe3, 0xfb, 0x2b, 0xb2, 0xdd, 0x93, 0xfc, 0x2e, 0x39, 0xef, 0xc5, 0xae, 0xf5, 0xd9, 0xa0, 0x8f,
-	0xe0, 0x2a, 0x93, 0x7e, 0xc3, 0xe9, 0x1b, 0xce, 0xf5, 0x2e, 0x67, 0xaf, 0xe0, 0xbc, 0x17, 0x8f,
-	0x3b, 0x9f, 0xe5, 0x3c, 0xc3, 0x24, 0xeb, 0x82, 0x6f, 0x40, 0x07, 0x06, 0x34, 0xdd, 0x05, 0xed,
-	0x97, 0xd3, 0x91, 0xac, 0xb3, 0x7b, 0x08, 0x47, 0x30, 0xb0, 0xe3, 0x85, 0xc1, 0xdb, 0x1d, 0xe3,
-	0x9c, 0x95, 0x48, 0x18, 0x2f, 0x69, 0xcd, 0x08, 0x97, 0xcc, 0xcc, 0x1c, 0xfc, 0xbd, 0x7a, 0x7a,
-	0x64, 0xd6, 0x7e, 0xf8, 0x09, 0x00, 0x00, 0xff, 0xff, 0x15, 0x79, 0xad, 0xbf, 0x16, 0x02, 0x00,
-	0x00,
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_benchmark_grpc_testing_payloads_proto_rawDesc,
+			NumEnums:      0,
+			NumMessages:   4,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_benchmark_grpc_testing_payloads_proto_goTypes,
+		DependencyIndexes: file_benchmark_grpc_testing_payloads_proto_depIdxs,
+		MessageInfos:      file_benchmark_grpc_testing_payloads_proto_msgTypes,
+	}.Build()
+	File_benchmark_grpc_testing_payloads_proto = out.File
+	file_benchmark_grpc_testing_payloads_proto_rawDesc = nil
+	file_benchmark_grpc_testing_payloads_proto_goTypes = nil
+	file_benchmark_grpc_testing_payloads_proto_depIdxs = nil
 }
diff --git a/benchmark/grpc_testing/services.pb.go b/benchmark/grpc_testing/services.pb.go
index 4d0acd3..70f66ff 100644
--- a/benchmark/grpc_testing/services.pb.go
+++ b/benchmark/grpc_testing/services.pb.go
@@ -1,49 +1,152 @@
+// Copyright 2016 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// An integration test service that covers all the method signature permutations
+// of unary/streaming requests/responses.
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.25.0
+// 	protoc        v3.3.0
 // source: benchmark/grpc_testing/services.proto
 
 package grpc_testing
 
 import (
-	fmt "fmt"
 	proto "github.com/golang/protobuf/proto"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
 )
 
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
 
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+// This is a compile-time assertion that a sufficiently up-to-date version
+// of the legacy proto package is being used.
+const _ = proto.ProtoPackageIsVersion4
 
-func init() {
-	proto.RegisterFile("benchmark/grpc_testing/services.proto", fileDescriptor_e86b6b5d31c265e4)
+var File_benchmark_grpc_testing_services_proto protoreflect.FileDescriptor
+
+var file_benchmark_grpc_testing_services_proto_rawDesc = []byte{
+	0x0a, 0x25, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x2f, 0x67, 0x72, 0x70, 0x63,
+	0x5f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
+	0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x69, 0x6e, 0x67, 0x1a, 0x25, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
+	0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x6d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x24, 0x62, 0x65,
+	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x74, 0x65, 0x73,
+	0x74, 0x69, 0x6e, 0x67, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x32, 0x87, 0x02, 0x0a, 0x10, 0x42, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
+	0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x46, 0x0a, 0x09, 0x55, 0x6e, 0x61, 0x72, 0x79,
+	0x43, 0x61, 0x6c, 0x6c, 0x12, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x69, 0x6e, 0x67, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+	0x74, 0x1a, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67,
+	0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+	0x4e, 0x0a, 0x0d, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x43, 0x61, 0x6c, 0x6c,
+	0x12, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e,
+	0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e,
+	0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x69, 0x6d,
+	0x70, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, 0x01, 0x12,
+	0x5b, 0x0a, 0x1a, 0x55, 0x6e, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x65, 0x64,
+	0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x43, 0x61, 0x6c, 0x6c, 0x12, 0x1b, 0x2e,
+	0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x69, 0x6d,
+	0x70, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x67, 0x72, 0x70,
+	0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65,
+	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, 0x01, 0x32, 0x97, 0x02, 0x0a,
+	0x0d, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x45,
+	0x0a, 0x09, 0x52, 0x75, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x18, 0x2e, 0x67, 0x72,
+	0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65,
+	0x72, 0x41, 0x72, 0x67, 0x73, 0x1a, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75,
+	0x73, 0x28, 0x01, 0x30, 0x01, 0x12, 0x45, 0x0a, 0x09, 0x52, 0x75, 0x6e, 0x43, 0x6c, 0x69, 0x65,
+	0x6e, 0x74, 0x12, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e,
+	0x67, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x41, 0x72, 0x67, 0x73, 0x1a, 0x1a, 0x2e, 0x67,
+	0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x43, 0x6c, 0x69, 0x65,
+	0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x28, 0x01, 0x30, 0x01, 0x12, 0x42, 0x0a, 0x09,
+	0x43, 0x6f, 0x72, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x43, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71,
+	0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x69, 0x6e, 0x67, 0x2e, 0x43, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+	0x12, 0x34, 0x0a, 0x0a, 0x51, 0x75, 0x69, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x12, 0x12,
+	0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x56, 0x6f,
+	0x69, 0x64, 0x1a, 0x12, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e,
+	0x67, 0x2e, 0x56, 0x6f, 0x69, 0x64, 0x42, 0x2f, 0x5a, 0x2d, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+	0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x72, 0x70, 0x63,
+	0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f,
+	0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
-var fileDescriptor_e86b6b5d31c265e4 = []byte{
-	// 309 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x92, 0xc1, 0x4a, 0x3b, 0x31,
-	0x10, 0xc6, 0x69, 0x0f, 0x7f, 0x68, 0xf8, 0x17, 0x24, 0x27, 0x8d, 0x1e, 0x15, 0xbc, 0xb8, 0x2b,
-	0xd5, 0x17, 0xb0, 0x8b, 0x1e, 0x05, 0xbb, 0x54, 0x41, 0x0f, 0x92, 0x6e, 0x87, 0x18, 0x9a, 0x9d,
-	0x59, 0x27, 0xb3, 0x82, 0x4f, 0xe0, 0x23, 0xf8, 0xba, 0xd2, 0xdd, 0x56, 0x6a, 0xd9, 0x9e, 0xf4,
-	0x98, 0xf9, 0xbe, 0xf9, 0x4d, 0x26, 0xf9, 0xd4, 0xc9, 0x0c, 0xb0, 0x78, 0x29, 0x2d, 0x2f, 0x52,
-	0xc7, 0x55, 0xf1, 0x2c, 0x10, 0xc5, 0xa3, 0x4b, 0x23, 0xf0, 0x9b, 0x2f, 0x20, 0x26, 0x15, 0x93,
-	0x90, 0xfe, 0xbf, 0x14, 0x93, 0x95, 0x68, 0x76, 0x35, 0x95, 0x10, 0xa3, 0x75, 0xeb, 0x26, 0x73,
-	0xbc, 0xc3, 0x56, 0x10, 0x0a, 0x53, 0x68, 0x5d, 0xa3, 0x8f, 0xbe, 0xda, 0x1b, 0xaf, 0x8d, 0x79,
-	0x3b, 0x56, 0xdf, 0xa8, 0xc1, 0x14, 0x2d, 0xbf, 0x67, 0x36, 0x04, 0x7d, 0x98, 0x6c, 0x4e, 0x4f,
-	0x72, 0x5f, 0x56, 0x01, 0x26, 0xf0, 0x5a, 0x43, 0x14, 0x73, 0xd4, 0x2d, 0xc6, 0x8a, 0x30, 0x82,
-	0xbe, 0x55, 0xc3, 0x5c, 0x18, 0x6c, 0xe9, 0xd1, 0xfd, 0x92, 0x75, 0xda, 0x3b, 0xef, 0xe9, 0x27,
-	0x65, 0xa6, 0x58, 0x10, 0x46, 0x61, 0xeb, 0x11, 0xe6, 0x7f, 0x09, 0x1f, 0x7d, 0xf6, 0xd5, 0xf0,
-	0x81, 0x78, 0x01, 0xbc, 0x7e, 0x86, 0x6b, 0x35, 0x98, 0xd4, 0xb8, 0x3c, 0x01, 0xeb, 0xfd, 0x2d,
-	0x40, 0x53, 0xbd, 0x62, 0x17, 0x8d, 0xe9, 0x52, 0x72, 0xb1, 0x52, 0xc7, 0xe6, 0xd6, 0x2d, 0x26,
-	0x0b, 0x1e, 0x50, 0xb6, 0x31, 0x6d, 0xb5, 0x0b, 0xd3, 0x2a, 0x1b, 0x98, 0xb1, 0x1a, 0x64, 0xc4,
-	0x90, 0x51, 0x8d, 0xa2, 0x0f, 0xb6, 0xcc, 0xc4, 0xdf, 0x9b, 0x9a, 0x2e, 0x69, 0xf5, 0x21, 0x97,
-	0x4a, 0xdd, 0xd5, 0x5e, 0xda, 0x35, 0xb5, 0xfe, 0xe9, 0xbc, 0x27, 0x3f, 0x37, 0x1d, 0xb5, 0x71,
-	0xfa, 0x78, 0xe6, 0x88, 0x5c, 0x80, 0xc4, 0x51, 0xb0, 0xe8, 0x12, 0x62, 0xd7, 0x64, 0x2a, 0xed,
-	0x8e, 0xd8, 0xec, 0x5f, 0x93, 0xad, 0x8b, 0xaf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x77, 0x96, 0x9e,
-	0xdb, 0xdf, 0x02, 0x00, 0x00,
+var file_benchmark_grpc_testing_services_proto_goTypes = []interface{}{
+	(*SimpleRequest)(nil),  // 0: grpc.testing.SimpleRequest
+	(*ServerArgs)(nil),     // 1: grpc.testing.ServerArgs
+	(*ClientArgs)(nil),     // 2: grpc.testing.ClientArgs
+	(*CoreRequest)(nil),    // 3: grpc.testing.CoreRequest
+	(*Void)(nil),           // 4: grpc.testing.Void
+	(*SimpleResponse)(nil), // 5: grpc.testing.SimpleResponse
+	(*ServerStatus)(nil),   // 6: grpc.testing.ServerStatus
+	(*ClientStatus)(nil),   // 7: grpc.testing.ClientStatus
+	(*CoreResponse)(nil),   // 8: grpc.testing.CoreResponse
+}
+var file_benchmark_grpc_testing_services_proto_depIdxs = []int32{
+	0, // 0: grpc.testing.BenchmarkService.UnaryCall:input_type -> grpc.testing.SimpleRequest
+	0, // 1: grpc.testing.BenchmarkService.StreamingCall:input_type -> grpc.testing.SimpleRequest
+	0, // 2: grpc.testing.BenchmarkService.UnconstrainedStreamingCall:input_type -> grpc.testing.SimpleRequest
+	1, // 3: grpc.testing.WorkerService.RunServer:input_type -> grpc.testing.ServerArgs
+	2, // 4: grpc.testing.WorkerService.RunClient:input_type -> grpc.testing.ClientArgs
+	3, // 5: grpc.testing.WorkerService.CoreCount:input_type -> grpc.testing.CoreRequest
+	4, // 6: grpc.testing.WorkerService.QuitWorker:input_type -> grpc.testing.Void
+	5, // 7: grpc.testing.BenchmarkService.UnaryCall:output_type -> grpc.testing.SimpleResponse
+	5, // 8: grpc.testing.BenchmarkService.StreamingCall:output_type -> grpc.testing.SimpleResponse
+	5, // 9: grpc.testing.BenchmarkService.UnconstrainedStreamingCall:output_type -> grpc.testing.SimpleResponse
+	6, // 10: grpc.testing.WorkerService.RunServer:output_type -> grpc.testing.ServerStatus
+	7, // 11: grpc.testing.WorkerService.RunClient:output_type -> grpc.testing.ClientStatus
+	8, // 12: grpc.testing.WorkerService.CoreCount:output_type -> grpc.testing.CoreResponse
+	4, // 13: grpc.testing.WorkerService.QuitWorker:output_type -> grpc.testing.Void
+	7, // [7:14] is the sub-list for method output_type
+	0, // [0:7] is the sub-list for method input_type
+	0, // [0:0] is the sub-list for extension type_name
+	0, // [0:0] is the sub-list for extension extendee
+	0, // [0:0] is the sub-list for field type_name
+}
+
+func init() { file_benchmark_grpc_testing_services_proto_init() }
+func file_benchmark_grpc_testing_services_proto_init() {
+	if File_benchmark_grpc_testing_services_proto != nil {
+		return
+	}
+	file_benchmark_grpc_testing_messages_proto_init()
+	file_benchmark_grpc_testing_control_proto_init()
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_benchmark_grpc_testing_services_proto_rawDesc,
+			NumEnums:      0,
+			NumMessages:   0,
+			NumExtensions: 0,
+			NumServices:   2,
+		},
+		GoTypes:           file_benchmark_grpc_testing_services_proto_goTypes,
+		DependencyIndexes: file_benchmark_grpc_testing_services_proto_depIdxs,
+	}.Build()
+	File_benchmark_grpc_testing_services_proto = out.File
+	file_benchmark_grpc_testing_services_proto_rawDesc = nil
+	file_benchmark_grpc_testing_services_proto_goTypes = nil
+	file_benchmark_grpc_testing_services_proto_depIdxs = nil
 }
diff --git a/benchmark/grpc_testing/stats.pb.go b/benchmark/grpc_testing/stats.pb.go
index ebe310c..9dcf37a 100644
--- a/benchmark/grpc_testing/stats.pb.go
+++ b/benchmark/grpc_testing/stats.pb.go
@@ -1,312 +1,473 @@
+// Copyright 2016 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.25.0
+// 	protoc        v3.3.0
 // source: benchmark/grpc_testing/stats.proto
 
 package grpc_testing
 
 import (
-	fmt "fmt"
 	proto "github.com/golang/protobuf/proto"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
 )
 
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
 
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+// This is a compile-time assertion that a sufficiently up-to-date version
+// of the legacy proto package is being used.
+const _ = proto.ProtoPackageIsVersion4
 
 type ServerStats struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// wall clock time change in seconds since last reset
 	TimeElapsed float64 `protobuf:"fixed64,1,opt,name=time_elapsed,json=timeElapsed,proto3" json:"time_elapsed,omitempty"`
 	// change in user time (in seconds) used by the server since last reset
 	TimeUser float64 `protobuf:"fixed64,2,opt,name=time_user,json=timeUser,proto3" json:"time_user,omitempty"`
 	// change in server time (in seconds) used by the server process and all
 	// threads since last reset
-	TimeSystem           float64  `protobuf:"fixed64,3,opt,name=time_system,json=timeSystem,proto3" json:"time_system,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	TimeSystem float64 `protobuf:"fixed64,3,opt,name=time_system,json=timeSystem,proto3" json:"time_system,omitempty"`
 }
 
-func (m *ServerStats) Reset()         { *m = ServerStats{} }
-func (m *ServerStats) String() string { return proto.CompactTextString(m) }
-func (*ServerStats) ProtoMessage()    {}
+func (x *ServerStats) Reset() {
+	*x = ServerStats{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_stats_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ServerStats) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ServerStats) ProtoMessage() {}
+
+func (x *ServerStats) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_stats_proto_msgTypes[0]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ServerStats.ProtoReflect.Descriptor instead.
 func (*ServerStats) Descriptor() ([]byte, []int) {
-	return fileDescriptor_a0658d5f374c86d6, []int{0}
+	return file_benchmark_grpc_testing_stats_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *ServerStats) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ServerStats.Unmarshal(m, b)
-}
-func (m *ServerStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ServerStats.Marshal(b, m, deterministic)
-}
-func (m *ServerStats) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ServerStats.Merge(m, src)
-}
-func (m *ServerStats) XXX_Size() int {
-	return xxx_messageInfo_ServerStats.Size(m)
-}
-func (m *ServerStats) XXX_DiscardUnknown() {
-	xxx_messageInfo_ServerStats.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ServerStats proto.InternalMessageInfo
-
-func (m *ServerStats) GetTimeElapsed() float64 {
-	if m != nil {
-		return m.TimeElapsed
+func (x *ServerStats) GetTimeElapsed() float64 {
+	if x != nil {
+		return x.TimeElapsed
 	}
 	return 0
 }
 
-func (m *ServerStats) GetTimeUser() float64 {
-	if m != nil {
-		return m.TimeUser
+func (x *ServerStats) GetTimeUser() float64 {
+	if x != nil {
+		return x.TimeUser
 	}
 	return 0
 }
 
-func (m *ServerStats) GetTimeSystem() float64 {
-	if m != nil {
-		return m.TimeSystem
+func (x *ServerStats) GetTimeSystem() float64 {
+	if x != nil {
+		return x.TimeSystem
 	}
 	return 0
 }
 
 // Histogram params based on grpc/support/histogram.c
 type HistogramParams struct {
-	Resolution           float64  `protobuf:"fixed64,1,opt,name=resolution,proto3" json:"resolution,omitempty"`
-	MaxPossible          float64  `protobuf:"fixed64,2,opt,name=max_possible,json=maxPossible,proto3" json:"max_possible,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Resolution  float64 `protobuf:"fixed64,1,opt,name=resolution,proto3" json:"resolution,omitempty"`                      // first bucket is [0, 1 + resolution)
+	MaxPossible float64 `protobuf:"fixed64,2,opt,name=max_possible,json=maxPossible,proto3" json:"max_possible,omitempty"` // use enough buckets to allow this value
 }
 
-func (m *HistogramParams) Reset()         { *m = HistogramParams{} }
-func (m *HistogramParams) String() string { return proto.CompactTextString(m) }
-func (*HistogramParams) ProtoMessage()    {}
+func (x *HistogramParams) Reset() {
+	*x = HistogramParams{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_stats_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *HistogramParams) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*HistogramParams) ProtoMessage() {}
+
+func (x *HistogramParams) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_stats_proto_msgTypes[1]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use HistogramParams.ProtoReflect.Descriptor instead.
 func (*HistogramParams) Descriptor() ([]byte, []int) {
-	return fileDescriptor_a0658d5f374c86d6, []int{1}
+	return file_benchmark_grpc_testing_stats_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *HistogramParams) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_HistogramParams.Unmarshal(m, b)
-}
-func (m *HistogramParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_HistogramParams.Marshal(b, m, deterministic)
-}
-func (m *HistogramParams) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_HistogramParams.Merge(m, src)
-}
-func (m *HistogramParams) XXX_Size() int {
-	return xxx_messageInfo_HistogramParams.Size(m)
-}
-func (m *HistogramParams) XXX_DiscardUnknown() {
-	xxx_messageInfo_HistogramParams.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_HistogramParams proto.InternalMessageInfo
-
-func (m *HistogramParams) GetResolution() float64 {
-	if m != nil {
-		return m.Resolution
+func (x *HistogramParams) GetResolution() float64 {
+	if x != nil {
+		return x.Resolution
 	}
 	return 0
 }
 
-func (m *HistogramParams) GetMaxPossible() float64 {
-	if m != nil {
-		return m.MaxPossible
+func (x *HistogramParams) GetMaxPossible() float64 {
+	if x != nil {
+		return x.MaxPossible
 	}
 	return 0
 }
 
 // Histogram data based on grpc/support/histogram.c
 type HistogramData struct {
-	Bucket               []uint32 `protobuf:"varint,1,rep,packed,name=bucket,proto3" json:"bucket,omitempty"`
-	MinSeen              float64  `protobuf:"fixed64,2,opt,name=min_seen,json=minSeen,proto3" json:"min_seen,omitempty"`
-	MaxSeen              float64  `protobuf:"fixed64,3,opt,name=max_seen,json=maxSeen,proto3" json:"max_seen,omitempty"`
-	Sum                  float64  `protobuf:"fixed64,4,opt,name=sum,proto3" json:"sum,omitempty"`
-	SumOfSquares         float64  `protobuf:"fixed64,5,opt,name=sum_of_squares,json=sumOfSquares,proto3" json:"sum_of_squares,omitempty"`
-	Count                float64  `protobuf:"fixed64,6,opt,name=count,proto3" json:"count,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Bucket       []uint32 `protobuf:"varint,1,rep,packed,name=bucket,proto3" json:"bucket,omitempty"`
+	MinSeen      float64  `protobuf:"fixed64,2,opt,name=min_seen,json=minSeen,proto3" json:"min_seen,omitempty"`
+	MaxSeen      float64  `protobuf:"fixed64,3,opt,name=max_seen,json=maxSeen,proto3" json:"max_seen,omitempty"`
+	Sum          float64  `protobuf:"fixed64,4,opt,name=sum,proto3" json:"sum,omitempty"`
+	SumOfSquares float64  `protobuf:"fixed64,5,opt,name=sum_of_squares,json=sumOfSquares,proto3" json:"sum_of_squares,omitempty"`
+	Count        float64  `protobuf:"fixed64,6,opt,name=count,proto3" json:"count,omitempty"`
 }
 
-func (m *HistogramData) Reset()         { *m = HistogramData{} }
-func (m *HistogramData) String() string { return proto.CompactTextString(m) }
-func (*HistogramData) ProtoMessage()    {}
+func (x *HistogramData) Reset() {
+	*x = HistogramData{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_stats_proto_msgTypes[2]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *HistogramData) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*HistogramData) ProtoMessage() {}
+
+func (x *HistogramData) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_stats_proto_msgTypes[2]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use HistogramData.ProtoReflect.Descriptor instead.
 func (*HistogramData) Descriptor() ([]byte, []int) {
-	return fileDescriptor_a0658d5f374c86d6, []int{2}
+	return file_benchmark_grpc_testing_stats_proto_rawDescGZIP(), []int{2}
 }
 
-func (m *HistogramData) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_HistogramData.Unmarshal(m, b)
-}
-func (m *HistogramData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_HistogramData.Marshal(b, m, deterministic)
-}
-func (m *HistogramData) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_HistogramData.Merge(m, src)
-}
-func (m *HistogramData) XXX_Size() int {
-	return xxx_messageInfo_HistogramData.Size(m)
-}
-func (m *HistogramData) XXX_DiscardUnknown() {
-	xxx_messageInfo_HistogramData.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_HistogramData proto.InternalMessageInfo
-
-func (m *HistogramData) GetBucket() []uint32 {
-	if m != nil {
-		return m.Bucket
+func (x *HistogramData) GetBucket() []uint32 {
+	if x != nil {
+		return x.Bucket
 	}
 	return nil
 }
 
-func (m *HistogramData) GetMinSeen() float64 {
-	if m != nil {
-		return m.MinSeen
+func (x *HistogramData) GetMinSeen() float64 {
+	if x != nil {
+		return x.MinSeen
 	}
 	return 0
 }
 
-func (m *HistogramData) GetMaxSeen() float64 {
-	if m != nil {
-		return m.MaxSeen
+func (x *HistogramData) GetMaxSeen() float64 {
+	if x != nil {
+		return x.MaxSeen
 	}
 	return 0
 }
 
-func (m *HistogramData) GetSum() float64 {
-	if m != nil {
-		return m.Sum
+func (x *HistogramData) GetSum() float64 {
+	if x != nil {
+		return x.Sum
 	}
 	return 0
 }
 
-func (m *HistogramData) GetSumOfSquares() float64 {
-	if m != nil {
-		return m.SumOfSquares
+func (x *HistogramData) GetSumOfSquares() float64 {
+	if x != nil {
+		return x.SumOfSquares
 	}
 	return 0
 }
 
-func (m *HistogramData) GetCount() float64 {
-	if m != nil {
-		return m.Count
+func (x *HistogramData) GetCount() float64 {
+	if x != nil {
+		return x.Count
 	}
 	return 0
 }
 
 type ClientStats struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Latency histogram. Data points are in nanoseconds.
 	Latencies *HistogramData `protobuf:"bytes,1,opt,name=latencies,proto3" json:"latencies,omitempty"`
 	// See ServerStats for details.
-	TimeElapsed          float64  `protobuf:"fixed64,2,opt,name=time_elapsed,json=timeElapsed,proto3" json:"time_elapsed,omitempty"`
-	TimeUser             float64  `protobuf:"fixed64,3,opt,name=time_user,json=timeUser,proto3" json:"time_user,omitempty"`
-	TimeSystem           float64  `protobuf:"fixed64,4,opt,name=time_system,json=timeSystem,proto3" json:"time_system,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	TimeElapsed float64 `protobuf:"fixed64,2,opt,name=time_elapsed,json=timeElapsed,proto3" json:"time_elapsed,omitempty"`
+	TimeUser    float64 `protobuf:"fixed64,3,opt,name=time_user,json=timeUser,proto3" json:"time_user,omitempty"`
+	TimeSystem  float64 `protobuf:"fixed64,4,opt,name=time_system,json=timeSystem,proto3" json:"time_system,omitempty"`
 }
 
-func (m *ClientStats) Reset()         { *m = ClientStats{} }
-func (m *ClientStats) String() string { return proto.CompactTextString(m) }
-func (*ClientStats) ProtoMessage()    {}
+func (x *ClientStats) Reset() {
+	*x = ClientStats{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_stats_proto_msgTypes[3]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ClientStats) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ClientStats) ProtoMessage() {}
+
+func (x *ClientStats) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_stats_proto_msgTypes[3]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ClientStats.ProtoReflect.Descriptor instead.
 func (*ClientStats) Descriptor() ([]byte, []int) {
-	return fileDescriptor_a0658d5f374c86d6, []int{3}
+	return file_benchmark_grpc_testing_stats_proto_rawDescGZIP(), []int{3}
 }
 
-func (m *ClientStats) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ClientStats.Unmarshal(m, b)
-}
-func (m *ClientStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ClientStats.Marshal(b, m, deterministic)
-}
-func (m *ClientStats) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ClientStats.Merge(m, src)
-}
-func (m *ClientStats) XXX_Size() int {
-	return xxx_messageInfo_ClientStats.Size(m)
-}
-func (m *ClientStats) XXX_DiscardUnknown() {
-	xxx_messageInfo_ClientStats.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ClientStats proto.InternalMessageInfo
-
-func (m *ClientStats) GetLatencies() *HistogramData {
-	if m != nil {
-		return m.Latencies
+func (x *ClientStats) GetLatencies() *HistogramData {
+	if x != nil {
+		return x.Latencies
 	}
 	return nil
 }
 
-func (m *ClientStats) GetTimeElapsed() float64 {
-	if m != nil {
-		return m.TimeElapsed
+func (x *ClientStats) GetTimeElapsed() float64 {
+	if x != nil {
+		return x.TimeElapsed
 	}
 	return 0
 }
 
-func (m *ClientStats) GetTimeUser() float64 {
-	if m != nil {
-		return m.TimeUser
+func (x *ClientStats) GetTimeUser() float64 {
+	if x != nil {
+		return x.TimeUser
 	}
 	return 0
 }
 
-func (m *ClientStats) GetTimeSystem() float64 {
-	if m != nil {
-		return m.TimeSystem
+func (x *ClientStats) GetTimeSystem() float64 {
+	if x != nil {
+		return x.TimeSystem
 	}
 	return 0
 }
 
-func init() {
-	proto.RegisterType((*ServerStats)(nil), "grpc.testing.ServerStats")
-	proto.RegisterType((*HistogramParams)(nil), "grpc.testing.HistogramParams")
-	proto.RegisterType((*HistogramData)(nil), "grpc.testing.HistogramData")
-	proto.RegisterType((*ClientStats)(nil), "grpc.testing.ClientStats")
+var File_benchmark_grpc_testing_stats_proto protoreflect.FileDescriptor
+
+var file_benchmark_grpc_testing_stats_proto_rawDesc = []byte{
+	0x0a, 0x22, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x2f, 0x67, 0x72, 0x70, 0x63,
+	0x5f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69,
+	0x6e, 0x67, 0x22, 0x6e, 0x0a, 0x0b, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74,
+	0x73, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x65, 0x6c, 0x61, 0x70, 0x73, 0x65,
+	0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x74, 0x69, 0x6d, 0x65, 0x45, 0x6c, 0x61,
+	0x70, 0x73, 0x65, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x75, 0x73, 0x65,
+	0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x74, 0x69, 0x6d, 0x65, 0x55, 0x73, 0x65,
+	0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d,
+	0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x79, 0x73, 0x74,
+	0x65, 0x6d, 0x22, 0x54, 0x0a, 0x0f, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x50,
+	0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74,
+	0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x6f, 0x6c,
+	0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x6f, 0x73,
+	0x73, 0x69, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x6d, 0x61, 0x78,
+	0x50, 0x6f, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x22, 0xab, 0x01, 0x0a, 0x0d, 0x48, 0x69, 0x73,
+	0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75,
+	0x63, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b,
+	0x65, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x6d, 0x69, 0x6e, 0x53, 0x65, 0x65, 0x6e, 0x12, 0x19, 0x0a,
+	0x08, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52,
+	0x07, 0x6d, 0x61, 0x78, 0x53, 0x65, 0x65, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x75, 0x6d, 0x18,
+	0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x73, 0x75, 0x6d, 0x12, 0x24, 0x0a, 0x0e, 0x73, 0x75,
+	0x6d, 0x5f, 0x6f, 0x66, 0x5f, 0x73, 0x71, 0x75, 0x61, 0x72, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01,
+	0x28, 0x01, 0x52, 0x0c, 0x73, 0x75, 0x6d, 0x4f, 0x66, 0x53, 0x71, 0x75, 0x61, 0x72, 0x65, 0x73,
+	0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52,
+	0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xa9, 0x01, 0x0a, 0x0b, 0x43, 0x6c, 0x69, 0x65, 0x6e,
+	0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x39, 0x0a, 0x09, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63,
+	0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72,
+	0x61, 0x6d, 0x44, 0x61, 0x74, 0x61, 0x52, 0x09, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x69, 0x65,
+	0x73, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x65, 0x6c, 0x61, 0x70, 0x73, 0x65,
+	0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x74, 0x69, 0x6d, 0x65, 0x45, 0x6c, 0x61,
+	0x70, 0x73, 0x65, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x75, 0x73, 0x65,
+	0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x74, 0x69, 0x6d, 0x65, 0x55, 0x73, 0x65,
+	0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d,
+	0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x79, 0x73, 0x74,
+	0x65, 0x6d, 0x42, 0x2f, 0x5a, 0x2d, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c,
+	0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x62, 0x65, 0x6e,
+	0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x74, 0x65, 0x73, 0x74,
+	0x69, 0x6e, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
-func init() {
-	proto.RegisterFile("benchmark/grpc_testing/stats.proto", fileDescriptor_a0658d5f374c86d6)
+var (
+	file_benchmark_grpc_testing_stats_proto_rawDescOnce sync.Once
+	file_benchmark_grpc_testing_stats_proto_rawDescData = file_benchmark_grpc_testing_stats_proto_rawDesc
+)
+
+func file_benchmark_grpc_testing_stats_proto_rawDescGZIP() []byte {
+	file_benchmark_grpc_testing_stats_proto_rawDescOnce.Do(func() {
+		file_benchmark_grpc_testing_stats_proto_rawDescData = protoimpl.X.CompressGZIP(file_benchmark_grpc_testing_stats_proto_rawDescData)
+	})
+	return file_benchmark_grpc_testing_stats_proto_rawDescData
 }
 
-var fileDescriptor_a0658d5f374c86d6 = []byte{
-	// 376 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x92, 0xcf, 0x0b, 0xd3, 0x30,
-	0x14, 0xc7, 0xe9, 0xba, 0xcd, 0xed, 0x75, 0x53, 0x09, 0x22, 0x95, 0x81, 0xce, 0xe2, 0x61, 0x17,
-	0x5b, 0xd0, 0x93, 0x57, 0x7f, 0x80, 0x37, 0xc7, 0xaa, 0x17, 0x2f, 0x25, 0xad, 0x6f, 0x31, 0xac,
-	0x49, 0x6a, 0x5e, 0x22, 0xf5, 0x4f, 0x12, 0xff, 0x49, 0x69, 0x5a, 0x74, 0xfe, 0x40, 0x6f, 0xcd,
-	0xe7, 0xf3, 0x25, 0x69, 0xf2, 0x7d, 0x90, 0xd5, 0xa8, 0x9b, 0x8f, 0x8a, 0xdb, 0x4b, 0x21, 0x6c,
-	0xd7, 0x54, 0x0e, 0xc9, 0x49, 0x2d, 0x0a, 0x72, 0xdc, 0x51, 0xde, 0x59, 0xe3, 0x0c, 0xdb, 0x0c,
-	0x26, 0x9f, 0x4c, 0xa6, 0x21, 0x29, 0xd1, 0x7e, 0x46, 0x5b, 0x0e, 0x11, 0xf6, 0x10, 0x36, 0x4e,
-	0x2a, 0xac, 0xb0, 0xe5, 0x1d, 0xe1, 0x87, 0x34, 0xda, 0x47, 0x87, 0xe8, 0x94, 0x0c, 0xec, 0xd5,
-	0x88, 0xd8, 0x0e, 0xd6, 0x21, 0xe2, 0x09, 0x6d, 0x3a, 0x0b, 0x7e, 0x35, 0x80, 0x77, 0x84, 0x96,
-	0x3d, 0x80, 0x90, 0xad, 0xe8, 0x0b, 0x39, 0x54, 0x69, 0x1c, 0x34, 0x0c, 0xa8, 0x0c, 0x24, 0x7b,
-	0x0b, 0xb7, 0x5e, 0x4b, 0x72, 0x46, 0x58, 0xae, 0x8e, 0xdc, 0x72, 0x45, 0xec, 0x3e, 0x80, 0x45,
-	0x32, 0xad, 0x77, 0xd2, 0xe8, 0xe9, 0xc4, 0x2b, 0x32, 0xfc, 0x93, 0xe2, 0x7d, 0xd5, 0x19, 0x22,
-	0x59, 0xb7, 0x38, 0x9d, 0x99, 0x28, 0xde, 0x1f, 0x27, 0x94, 0x7d, 0x8b, 0x60, 0xfb, 0x63, 0xdb,
-	0x97, 0xdc, 0x71, 0x76, 0x17, 0x96, 0xb5, 0x6f, 0x2e, 0xe8, 0xd2, 0x68, 0x1f, 0x1f, 0xb6, 0xa7,
-	0x69, 0xc5, 0xee, 0xc1, 0x4a, 0x49, 0x5d, 0x11, 0xa2, 0x9e, 0x36, 0xba, 0xa1, 0xa4, 0x2e, 0x11,
-	0x75, 0x50, 0xbc, 0x1f, 0x55, 0x3c, 0x29, 0xde, 0x07, 0x75, 0x1b, 0x62, 0xf2, 0x2a, 0x9d, 0x07,
-	0x3a, 0x7c, 0xb2, 0x47, 0x70, 0x93, 0xbc, 0xaa, 0xcc, 0xb9, 0xa2, 0x4f, 0x9e, 0x5b, 0xa4, 0x74,
-	0x11, 0xe4, 0x86, 0xbc, 0x7a, 0x73, 0x2e, 0x47, 0xc6, 0xee, 0xc0, 0xa2, 0x31, 0x5e, 0xbb, 0x74,
-	0x19, 0xe4, 0xb8, 0xc8, 0xbe, 0x46, 0x90, 0xbc, 0x68, 0x25, 0x6a, 0x37, 0x3e, 0xfa, 0x33, 0x58,
-	0xb7, 0xdc, 0xa1, 0x6e, 0x24, 0x52, 0xb8, 0x7f, 0xf2, 0x64, 0x97, 0x5f, 0xb7, 0x94, 0xff, 0x72,
-	0xb7, 0xd3, 0xcf, 0xf4, 0x1f, 0x7d, 0xcd, 0xfe, 0xd3, 0x57, 0xfc, 0xef, 0xbe, 0xe6, 0xbf, 0xf7,
-	0xf5, 0xbc, 0x78, 0xff, 0x58, 0x18, 0x23, 0x5a, 0xcc, 0x85, 0x69, 0xb9, 0x16, 0xb9, 0xb1, 0x22,
-	0xcc, 0x56, 0xf1, 0xf7, 0x51, 0xab, 0x97, 0x61, 0xca, 0x9e, 0x7e, 0x0f, 0x00, 0x00, 0xff, 0xff,
-	0xcc, 0xda, 0x99, 0x65, 0x8b, 0x02, 0x00, 0x00,
+var file_benchmark_grpc_testing_stats_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
+var file_benchmark_grpc_testing_stats_proto_goTypes = []interface{}{
+	(*ServerStats)(nil),     // 0: grpc.testing.ServerStats
+	(*HistogramParams)(nil), // 1: grpc.testing.HistogramParams
+	(*HistogramData)(nil),   // 2: grpc.testing.HistogramData
+	(*ClientStats)(nil),     // 3: grpc.testing.ClientStats
+}
+var file_benchmark_grpc_testing_stats_proto_depIdxs = []int32{
+	2, // 0: grpc.testing.ClientStats.latencies:type_name -> grpc.testing.HistogramData
+	1, // [1:1] is the sub-list for method output_type
+	1, // [1:1] is the sub-list for method input_type
+	1, // [1:1] is the sub-list for extension type_name
+	1, // [1:1] is the sub-list for extension extendee
+	0, // [0:1] is the sub-list for field type_name
+}
+
+func init() { file_benchmark_grpc_testing_stats_proto_init() }
+func file_benchmark_grpc_testing_stats_proto_init() {
+	if File_benchmark_grpc_testing_stats_proto != nil {
+		return
+	}
+	if !protoimpl.UnsafeEnabled {
+		file_benchmark_grpc_testing_stats_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ServerStats); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_stats_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*HistogramParams); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_stats_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*HistogramData); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_stats_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ClientStats); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_benchmark_grpc_testing_stats_proto_rawDesc,
+			NumEnums:      0,
+			NumMessages:   4,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_benchmark_grpc_testing_stats_proto_goTypes,
+		DependencyIndexes: file_benchmark_grpc_testing_stats_proto_depIdxs,
+		MessageInfos:      file_benchmark_grpc_testing_stats_proto_msgTypes,
+	}.Build()
+	File_benchmark_grpc_testing_stats_proto = out.File
+	file_benchmark_grpc_testing_stats_proto_rawDesc = nil
+	file_benchmark_grpc_testing_stats_proto_goTypes = nil
+	file_benchmark_grpc_testing_stats_proto_depIdxs = nil
 }
diff --git a/binarylog/grpc_binarylog_v1/binarylog.pb.go b/binarylog/grpc_binarylog_v1/binarylog.pb.go
index f826ec7..da04729 100644
--- a/binarylog/grpc_binarylog_v1/binarylog.pb.go
+++ b/binarylog/grpc_binarylog_v1/binarylog.pb.go
@@ -1,26 +1,49 @@
+// Copyright 2018 The gRPC Authors
+// All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// The canonical version of this proto can be found at
+// https://github.com/grpc/grpc-proto/blob/master/grpc/binlog/v1/binarylog.proto
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.25.0
+// 	protoc        v3.3.0
 // source: grpc/binlog/v1/binarylog.proto
 
 package grpc_binarylog_v1
 
 import (
-	fmt "fmt"
 	proto "github.com/golang/protobuf/proto"
 	duration "github.com/golang/protobuf/ptypes/duration"
 	timestamp "github.com/golang/protobuf/ptypes/timestamp"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
 )
 
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
 
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+// This is a compile-time assertion that a sufficiently up-to-date version
+// of the legacy proto package is being used.
+const _ = proto.ProtoPackageIsVersion4
 
 // Enumerates the type of event
 // Note the terminology is different from the RPC semantics
@@ -56,34 +79,55 @@
 	GrpcLogEntry_EVENT_TYPE_CANCEL GrpcLogEntry_EventType = 7
 )
 
-var GrpcLogEntry_EventType_name = map[int32]string{
-	0: "EVENT_TYPE_UNKNOWN",
-	1: "EVENT_TYPE_CLIENT_HEADER",
-	2: "EVENT_TYPE_SERVER_HEADER",
-	3: "EVENT_TYPE_CLIENT_MESSAGE",
-	4: "EVENT_TYPE_SERVER_MESSAGE",
-	5: "EVENT_TYPE_CLIENT_HALF_CLOSE",
-	6: "EVENT_TYPE_SERVER_TRAILER",
-	7: "EVENT_TYPE_CANCEL",
-}
+// Enum value maps for GrpcLogEntry_EventType.
+var (
+	GrpcLogEntry_EventType_name = map[int32]string{
+		0: "EVENT_TYPE_UNKNOWN",
+		1: "EVENT_TYPE_CLIENT_HEADER",
+		2: "EVENT_TYPE_SERVER_HEADER",
+		3: "EVENT_TYPE_CLIENT_MESSAGE",
+		4: "EVENT_TYPE_SERVER_MESSAGE",
+		5: "EVENT_TYPE_CLIENT_HALF_CLOSE",
+		6: "EVENT_TYPE_SERVER_TRAILER",
+		7: "EVENT_TYPE_CANCEL",
+	}
+	GrpcLogEntry_EventType_value = map[string]int32{
+		"EVENT_TYPE_UNKNOWN":           0,
+		"EVENT_TYPE_CLIENT_HEADER":     1,
+		"EVENT_TYPE_SERVER_HEADER":     2,
+		"EVENT_TYPE_CLIENT_MESSAGE":    3,
+		"EVENT_TYPE_SERVER_MESSAGE":    4,
+		"EVENT_TYPE_CLIENT_HALF_CLOSE": 5,
+		"EVENT_TYPE_SERVER_TRAILER":    6,
+		"EVENT_TYPE_CANCEL":            7,
+	}
+)
 
-var GrpcLogEntry_EventType_value = map[string]int32{
-	"EVENT_TYPE_UNKNOWN":           0,
-	"EVENT_TYPE_CLIENT_HEADER":     1,
-	"EVENT_TYPE_SERVER_HEADER":     2,
-	"EVENT_TYPE_CLIENT_MESSAGE":    3,
-	"EVENT_TYPE_SERVER_MESSAGE":    4,
-	"EVENT_TYPE_CLIENT_HALF_CLOSE": 5,
-	"EVENT_TYPE_SERVER_TRAILER":    6,
-	"EVENT_TYPE_CANCEL":            7,
+func (x GrpcLogEntry_EventType) Enum() *GrpcLogEntry_EventType {
+	p := new(GrpcLogEntry_EventType)
+	*p = x
+	return p
 }
 
 func (x GrpcLogEntry_EventType) String() string {
-	return proto.EnumName(GrpcLogEntry_EventType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (GrpcLogEntry_EventType) Descriptor() protoreflect.EnumDescriptor {
+	return file_grpc_binlog_v1_binarylog_proto_enumTypes[0].Descriptor()
+}
+
+func (GrpcLogEntry_EventType) Type() protoreflect.EnumType {
+	return &file_grpc_binlog_v1_binarylog_proto_enumTypes[0]
+}
+
+func (x GrpcLogEntry_EventType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use GrpcLogEntry_EventType.Descriptor instead.
 func (GrpcLogEntry_EventType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_b7972e58de45083a, []int{0, 0}
+	return file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{0, 0}
 }
 
 // Enumerates the entity that generates the log entry
@@ -95,24 +139,45 @@
 	GrpcLogEntry_LOGGER_SERVER  GrpcLogEntry_Logger = 2
 )
 
-var GrpcLogEntry_Logger_name = map[int32]string{
-	0: "LOGGER_UNKNOWN",
-	1: "LOGGER_CLIENT",
-	2: "LOGGER_SERVER",
-}
+// Enum value maps for GrpcLogEntry_Logger.
+var (
+	GrpcLogEntry_Logger_name = map[int32]string{
+		0: "LOGGER_UNKNOWN",
+		1: "LOGGER_CLIENT",
+		2: "LOGGER_SERVER",
+	}
+	GrpcLogEntry_Logger_value = map[string]int32{
+		"LOGGER_UNKNOWN": 0,
+		"LOGGER_CLIENT":  1,
+		"LOGGER_SERVER":  2,
+	}
+)
 
-var GrpcLogEntry_Logger_value = map[string]int32{
-	"LOGGER_UNKNOWN": 0,
-	"LOGGER_CLIENT":  1,
-	"LOGGER_SERVER":  2,
+func (x GrpcLogEntry_Logger) Enum() *GrpcLogEntry_Logger {
+	p := new(GrpcLogEntry_Logger)
+	*p = x
+	return p
 }
 
 func (x GrpcLogEntry_Logger) String() string {
-	return proto.EnumName(GrpcLogEntry_Logger_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (GrpcLogEntry_Logger) Descriptor() protoreflect.EnumDescriptor {
+	return file_grpc_binlog_v1_binarylog_proto_enumTypes[1].Descriptor()
+}
+
+func (GrpcLogEntry_Logger) Type() protoreflect.EnumType {
+	return &file_grpc_binlog_v1_binarylog_proto_enumTypes[1]
+}
+
+func (x GrpcLogEntry_Logger) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use GrpcLogEntry_Logger.Descriptor instead.
 func (GrpcLogEntry_Logger) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_b7972e58de45083a, []int{0, 1}
+	return file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{0, 1}
 }
 
 type Address_Type int32
@@ -128,30 +193,55 @@
 	Address_TYPE_UNIX Address_Type = 3
 )
 
-var Address_Type_name = map[int32]string{
-	0: "TYPE_UNKNOWN",
-	1: "TYPE_IPV4",
-	2: "TYPE_IPV6",
-	3: "TYPE_UNIX",
-}
+// Enum value maps for Address_Type.
+var (
+	Address_Type_name = map[int32]string{
+		0: "TYPE_UNKNOWN",
+		1: "TYPE_IPV4",
+		2: "TYPE_IPV6",
+		3: "TYPE_UNIX",
+	}
+	Address_Type_value = map[string]int32{
+		"TYPE_UNKNOWN": 0,
+		"TYPE_IPV4":    1,
+		"TYPE_IPV6":    2,
+		"TYPE_UNIX":    3,
+	}
+)
 
-var Address_Type_value = map[string]int32{
-	"TYPE_UNKNOWN": 0,
-	"TYPE_IPV4":    1,
-	"TYPE_IPV6":    2,
-	"TYPE_UNIX":    3,
+func (x Address_Type) Enum() *Address_Type {
+	p := new(Address_Type)
+	*p = x
+	return p
 }
 
 func (x Address_Type) String() string {
-	return proto.EnumName(Address_Type_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (Address_Type) Descriptor() protoreflect.EnumDescriptor {
+	return file_grpc_binlog_v1_binarylog_proto_enumTypes[2].Descriptor()
+}
+
+func (Address_Type) Type() protoreflect.EnumType {
+	return &file_grpc_binlog_v1_binarylog_proto_enumTypes[2]
+}
+
+func (x Address_Type) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use Address_Type.Descriptor instead.
 func (Address_Type) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_b7972e58de45083a, []int{7, 0}
+	return file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{7, 0}
 }
 
 // Log entry we store in binary logs
 type GrpcLogEntry struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The timestamp of the binary log message
 	Timestamp *timestamp.Timestamp `protobuf:"bytes,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
 	// Uniquely identifies a call. The value must not be 0 in order to disambiguate
@@ -166,11 +256,11 @@
 	// durability or ordering is not guaranteed.
 	SequenceIdWithinCall uint64                 `protobuf:"varint,3,opt,name=sequence_id_within_call,json=sequenceIdWithinCall,proto3" json:"sequence_id_within_call,omitempty"`
 	Type                 GrpcLogEntry_EventType `protobuf:"varint,4,opt,name=type,proto3,enum=grpc.binarylog.v1.GrpcLogEntry_EventType" json:"type,omitempty"`
-	Logger               GrpcLogEntry_Logger    `protobuf:"varint,5,opt,name=logger,proto3,enum=grpc.binarylog.v1.GrpcLogEntry_Logger" json:"logger,omitempty"`
+	Logger               GrpcLogEntry_Logger    `protobuf:"varint,5,opt,name=logger,proto3,enum=grpc.binarylog.v1.GrpcLogEntry_Logger" json:"logger,omitempty"` // One of the above Logger enum
 	// The logger uses one of the following fields to record the payload,
 	// according to the type of the log entry.
 	//
-	// Types that are valid to be assigned to Payload:
+	// Types that are assignable to Payload:
 	//	*GrpcLogEntry_ClientHeader
 	//	*GrpcLogEntry_ServerHeader
 	//	*GrpcLogEntry_Message
@@ -183,72 +273,125 @@
 	// EVENT_TYPE_SERVER_HEADER normally or EVENT_TYPE_SERVER_TRAILER in
 	// the case of trailers-only. On server side, peer is always
 	// logged on EVENT_TYPE_CLIENT_HEADER.
-	Peer                 *Address `protobuf:"bytes,11,opt,name=peer,proto3" json:"peer,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Peer *Address `protobuf:"bytes,11,opt,name=peer,proto3" json:"peer,omitempty"`
 }
 
-func (m *GrpcLogEntry) Reset()         { *m = GrpcLogEntry{} }
-func (m *GrpcLogEntry) String() string { return proto.CompactTextString(m) }
-func (*GrpcLogEntry) ProtoMessage()    {}
+func (x *GrpcLogEntry) Reset() {
+	*x = GrpcLogEntry{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GrpcLogEntry) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GrpcLogEntry) ProtoMessage() {}
+
+func (x *GrpcLogEntry) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[0]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GrpcLogEntry.ProtoReflect.Descriptor instead.
 func (*GrpcLogEntry) Descriptor() ([]byte, []int) {
-	return fileDescriptor_b7972e58de45083a, []int{0}
+	return file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *GrpcLogEntry) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GrpcLogEntry.Unmarshal(m, b)
-}
-func (m *GrpcLogEntry) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GrpcLogEntry.Marshal(b, m, deterministic)
-}
-func (m *GrpcLogEntry) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GrpcLogEntry.Merge(m, src)
-}
-func (m *GrpcLogEntry) XXX_Size() int {
-	return xxx_messageInfo_GrpcLogEntry.Size(m)
-}
-func (m *GrpcLogEntry) XXX_DiscardUnknown() {
-	xxx_messageInfo_GrpcLogEntry.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GrpcLogEntry proto.InternalMessageInfo
-
-func (m *GrpcLogEntry) GetTimestamp() *timestamp.Timestamp {
-	if m != nil {
-		return m.Timestamp
+func (x *GrpcLogEntry) GetTimestamp() *timestamp.Timestamp {
+	if x != nil {
+		return x.Timestamp
 	}
 	return nil
 }
 
-func (m *GrpcLogEntry) GetCallId() uint64 {
-	if m != nil {
-		return m.CallId
+func (x *GrpcLogEntry) GetCallId() uint64 {
+	if x != nil {
+		return x.CallId
 	}
 	return 0
 }
 
-func (m *GrpcLogEntry) GetSequenceIdWithinCall() uint64 {
-	if m != nil {
-		return m.SequenceIdWithinCall
+func (x *GrpcLogEntry) GetSequenceIdWithinCall() uint64 {
+	if x != nil {
+		return x.SequenceIdWithinCall
 	}
 	return 0
 }
 
-func (m *GrpcLogEntry) GetType() GrpcLogEntry_EventType {
-	if m != nil {
-		return m.Type
+func (x *GrpcLogEntry) GetType() GrpcLogEntry_EventType {
+	if x != nil {
+		return x.Type
 	}
 	return GrpcLogEntry_EVENT_TYPE_UNKNOWN
 }
 
-func (m *GrpcLogEntry) GetLogger() GrpcLogEntry_Logger {
-	if m != nil {
-		return m.Logger
+func (x *GrpcLogEntry) GetLogger() GrpcLogEntry_Logger {
+	if x != nil {
+		return x.Logger
 	}
 	return GrpcLogEntry_LOGGER_UNKNOWN
 }
 
+func (m *GrpcLogEntry) GetPayload() isGrpcLogEntry_Payload {
+	if m != nil {
+		return m.Payload
+	}
+	return nil
+}
+
+func (x *GrpcLogEntry) GetClientHeader() *ClientHeader {
+	if x, ok := x.GetPayload().(*GrpcLogEntry_ClientHeader); ok {
+		return x.ClientHeader
+	}
+	return nil
+}
+
+func (x *GrpcLogEntry) GetServerHeader() *ServerHeader {
+	if x, ok := x.GetPayload().(*GrpcLogEntry_ServerHeader); ok {
+		return x.ServerHeader
+	}
+	return nil
+}
+
+func (x *GrpcLogEntry) GetMessage() *Message {
+	if x, ok := x.GetPayload().(*GrpcLogEntry_Message); ok {
+		return x.Message
+	}
+	return nil
+}
+
+func (x *GrpcLogEntry) GetTrailer() *Trailer {
+	if x, ok := x.GetPayload().(*GrpcLogEntry_Trailer); ok {
+		return x.Trailer
+	}
+	return nil
+}
+
+func (x *GrpcLogEntry) GetPayloadTruncated() bool {
+	if x != nil {
+		return x.PayloadTruncated
+	}
+	return false
+}
+
+func (x *GrpcLogEntry) GetPeer() *Address {
+	if x != nil {
+		return x.Peer
+	}
+	return nil
+}
+
 type isGrpcLogEntry_Payload interface {
 	isGrpcLogEntry_Payload()
 }
@@ -262,6 +405,7 @@
 }
 
 type GrpcLogEntry_Message struct {
+	// Used by EVENT_TYPE_CLIENT_MESSAGE, EVENT_TYPE_SERVER_MESSAGE
 	Message *Message `protobuf:"bytes,8,opt,name=message,proto3,oneof"`
 }
 
@@ -277,66 +421,11 @@
 
 func (*GrpcLogEntry_Trailer) isGrpcLogEntry_Payload() {}
 
-func (m *GrpcLogEntry) GetPayload() isGrpcLogEntry_Payload {
-	if m != nil {
-		return m.Payload
-	}
-	return nil
-}
-
-func (m *GrpcLogEntry) GetClientHeader() *ClientHeader {
-	if x, ok := m.GetPayload().(*GrpcLogEntry_ClientHeader); ok {
-		return x.ClientHeader
-	}
-	return nil
-}
-
-func (m *GrpcLogEntry) GetServerHeader() *ServerHeader {
-	if x, ok := m.GetPayload().(*GrpcLogEntry_ServerHeader); ok {
-		return x.ServerHeader
-	}
-	return nil
-}
-
-func (m *GrpcLogEntry) GetMessage() *Message {
-	if x, ok := m.GetPayload().(*GrpcLogEntry_Message); ok {
-		return x.Message
-	}
-	return nil
-}
-
-func (m *GrpcLogEntry) GetTrailer() *Trailer {
-	if x, ok := m.GetPayload().(*GrpcLogEntry_Trailer); ok {
-		return x.Trailer
-	}
-	return nil
-}
-
-func (m *GrpcLogEntry) GetPayloadTruncated() bool {
-	if m != nil {
-		return m.PayloadTruncated
-	}
-	return false
-}
-
-func (m *GrpcLogEntry) GetPeer() *Address {
-	if m != nil {
-		return m.Peer
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*GrpcLogEntry) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*GrpcLogEntry_ClientHeader)(nil),
-		(*GrpcLogEntry_ServerHeader)(nil),
-		(*GrpcLogEntry_Message)(nil),
-		(*GrpcLogEntry_Trailer)(nil),
-	}
-}
-
 type ClientHeader struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// This contains only the metadata from the application.
 	Metadata *Metadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
 	// The name of the RPC method, which looks something like:
@@ -350,106 +439,122 @@
 	// <host> or <host>:<port> .
 	Authority string `protobuf:"bytes,3,opt,name=authority,proto3" json:"authority,omitempty"`
 	// the RPC timeout
-	Timeout              *duration.Duration `protobuf:"bytes,4,opt,name=timeout,proto3" json:"timeout,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
-	XXX_unrecognized     []byte             `json:"-"`
-	XXX_sizecache        int32              `json:"-"`
+	Timeout *duration.Duration `protobuf:"bytes,4,opt,name=timeout,proto3" json:"timeout,omitempty"`
 }
 
-func (m *ClientHeader) Reset()         { *m = ClientHeader{} }
-func (m *ClientHeader) String() string { return proto.CompactTextString(m) }
-func (*ClientHeader) ProtoMessage()    {}
+func (x *ClientHeader) Reset() {
+	*x = ClientHeader{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ClientHeader) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ClientHeader) ProtoMessage() {}
+
+func (x *ClientHeader) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[1]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ClientHeader.ProtoReflect.Descriptor instead.
 func (*ClientHeader) Descriptor() ([]byte, []int) {
-	return fileDescriptor_b7972e58de45083a, []int{1}
+	return file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *ClientHeader) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ClientHeader.Unmarshal(m, b)
-}
-func (m *ClientHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ClientHeader.Marshal(b, m, deterministic)
-}
-func (m *ClientHeader) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ClientHeader.Merge(m, src)
-}
-func (m *ClientHeader) XXX_Size() int {
-	return xxx_messageInfo_ClientHeader.Size(m)
-}
-func (m *ClientHeader) XXX_DiscardUnknown() {
-	xxx_messageInfo_ClientHeader.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ClientHeader proto.InternalMessageInfo
-
-func (m *ClientHeader) GetMetadata() *Metadata {
-	if m != nil {
-		return m.Metadata
+func (x *ClientHeader) GetMetadata() *Metadata {
+	if x != nil {
+		return x.Metadata
 	}
 	return nil
 }
 
-func (m *ClientHeader) GetMethodName() string {
-	if m != nil {
-		return m.MethodName
+func (x *ClientHeader) GetMethodName() string {
+	if x != nil {
+		return x.MethodName
 	}
 	return ""
 }
 
-func (m *ClientHeader) GetAuthority() string {
-	if m != nil {
-		return m.Authority
+func (x *ClientHeader) GetAuthority() string {
+	if x != nil {
+		return x.Authority
 	}
 	return ""
 }
 
-func (m *ClientHeader) GetTimeout() *duration.Duration {
-	if m != nil {
-		return m.Timeout
+func (x *ClientHeader) GetTimeout() *duration.Duration {
+	if x != nil {
+		return x.Timeout
 	}
 	return nil
 }
 
 type ServerHeader struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// This contains only the metadata from the application.
-	Metadata             *Metadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}  `json:"-"`
-	XXX_unrecognized     []byte    `json:"-"`
-	XXX_sizecache        int32     `json:"-"`
+	Metadata *Metadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
 }
 
-func (m *ServerHeader) Reset()         { *m = ServerHeader{} }
-func (m *ServerHeader) String() string { return proto.CompactTextString(m) }
-func (*ServerHeader) ProtoMessage()    {}
+func (x *ServerHeader) Reset() {
+	*x = ServerHeader{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[2]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ServerHeader) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ServerHeader) ProtoMessage() {}
+
+func (x *ServerHeader) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[2]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ServerHeader.ProtoReflect.Descriptor instead.
 func (*ServerHeader) Descriptor() ([]byte, []int) {
-	return fileDescriptor_b7972e58de45083a, []int{2}
+	return file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{2}
 }
 
-func (m *ServerHeader) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ServerHeader.Unmarshal(m, b)
-}
-func (m *ServerHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ServerHeader.Marshal(b, m, deterministic)
-}
-func (m *ServerHeader) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ServerHeader.Merge(m, src)
-}
-func (m *ServerHeader) XXX_Size() int {
-	return xxx_messageInfo_ServerHeader.Size(m)
-}
-func (m *ServerHeader) XXX_DiscardUnknown() {
-	xxx_messageInfo_ServerHeader.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ServerHeader proto.InternalMessageInfo
-
-func (m *ServerHeader) GetMetadata() *Metadata {
-	if m != nil {
-		return m.Metadata
+func (x *ServerHeader) GetMetadata() *Metadata {
+	if x != nil {
+		return x.Metadata
 	}
 	return nil
 }
 
 type Trailer struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// This contains only the metadata from the application.
 	Metadata *Metadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
 	// The gRPC status code.
@@ -459,112 +564,124 @@
 	StatusMessage string `protobuf:"bytes,3,opt,name=status_message,json=statusMessage,proto3" json:"status_message,omitempty"`
 	// The value of the 'grpc-status-details-bin' metadata key. If
 	// present, this is always an encoded 'google.rpc.Status' message.
-	StatusDetails        []byte   `protobuf:"bytes,4,opt,name=status_details,json=statusDetails,proto3" json:"status_details,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	StatusDetails []byte `protobuf:"bytes,4,opt,name=status_details,json=statusDetails,proto3" json:"status_details,omitempty"`
 }
 
-func (m *Trailer) Reset()         { *m = Trailer{} }
-func (m *Trailer) String() string { return proto.CompactTextString(m) }
-func (*Trailer) ProtoMessage()    {}
+func (x *Trailer) Reset() {
+	*x = Trailer{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[3]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Trailer) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Trailer) ProtoMessage() {}
+
+func (x *Trailer) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[3]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Trailer.ProtoReflect.Descriptor instead.
 func (*Trailer) Descriptor() ([]byte, []int) {
-	return fileDescriptor_b7972e58de45083a, []int{3}
+	return file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{3}
 }
 
-func (m *Trailer) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Trailer.Unmarshal(m, b)
-}
-func (m *Trailer) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Trailer.Marshal(b, m, deterministic)
-}
-func (m *Trailer) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Trailer.Merge(m, src)
-}
-func (m *Trailer) XXX_Size() int {
-	return xxx_messageInfo_Trailer.Size(m)
-}
-func (m *Trailer) XXX_DiscardUnknown() {
-	xxx_messageInfo_Trailer.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Trailer proto.InternalMessageInfo
-
-func (m *Trailer) GetMetadata() *Metadata {
-	if m != nil {
-		return m.Metadata
+func (x *Trailer) GetMetadata() *Metadata {
+	if x != nil {
+		return x.Metadata
 	}
 	return nil
 }
 
-func (m *Trailer) GetStatusCode() uint32 {
-	if m != nil {
-		return m.StatusCode
+func (x *Trailer) GetStatusCode() uint32 {
+	if x != nil {
+		return x.StatusCode
 	}
 	return 0
 }
 
-func (m *Trailer) GetStatusMessage() string {
-	if m != nil {
-		return m.StatusMessage
+func (x *Trailer) GetStatusMessage() string {
+	if x != nil {
+		return x.StatusMessage
 	}
 	return ""
 }
 
-func (m *Trailer) GetStatusDetails() []byte {
-	if m != nil {
-		return m.StatusDetails
+func (x *Trailer) GetStatusDetails() []byte {
+	if x != nil {
+		return x.StatusDetails
 	}
 	return nil
 }
 
 // Message payload, used by CLIENT_MESSAGE and SERVER_MESSAGE
 type Message struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Length of the message. It may not be the same as the length of the
 	// data field, as the logging payload can be truncated or omitted.
 	Length uint32 `protobuf:"varint,1,opt,name=length,proto3" json:"length,omitempty"`
 	// May be truncated or omitted.
-	Data                 []byte   `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
 }
 
-func (m *Message) Reset()         { *m = Message{} }
-func (m *Message) String() string { return proto.CompactTextString(m) }
-func (*Message) ProtoMessage()    {}
+func (x *Message) Reset() {
+	*x = Message{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[4]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Message) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Message) ProtoMessage() {}
+
+func (x *Message) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[4]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Message.ProtoReflect.Descriptor instead.
 func (*Message) Descriptor() ([]byte, []int) {
-	return fileDescriptor_b7972e58de45083a, []int{4}
+	return file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{4}
 }
 
-func (m *Message) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Message.Unmarshal(m, b)
-}
-func (m *Message) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Message.Marshal(b, m, deterministic)
-}
-func (m *Message) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Message.Merge(m, src)
-}
-func (m *Message) XXX_Size() int {
-	return xxx_messageInfo_Message.Size(m)
-}
-func (m *Message) XXX_DiscardUnknown() {
-	xxx_messageInfo_Message.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Message proto.InternalMessageInfo
-
-func (m *Message) GetLength() uint32 {
-	if m != nil {
-		return m.Length
+func (x *Message) GetLength() uint32 {
+	if x != nil {
+		return x.Length
 	}
 	return 0
 }
 
-func (m *Message) GetData() []byte {
-	if m != nil {
-		return m.Data
+func (x *Message) GetData() []byte {
+	if x != nil {
+		return x.Data
 	}
 	return nil
 }
@@ -591,222 +708,480 @@
 // header is just a normal metadata key.
 // The pair will not count towards the size limit.
 type Metadata struct {
-	Entry                []*MetadataEntry `protobuf:"bytes,1,rep,name=entry,proto3" json:"entry,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
-	XXX_unrecognized     []byte           `json:"-"`
-	XXX_sizecache        int32            `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Entry []*MetadataEntry `protobuf:"bytes,1,rep,name=entry,proto3" json:"entry,omitempty"`
 }
 
-func (m *Metadata) Reset()         { *m = Metadata{} }
-func (m *Metadata) String() string { return proto.CompactTextString(m) }
-func (*Metadata) ProtoMessage()    {}
+func (x *Metadata) Reset() {
+	*x = Metadata{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[5]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Metadata) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Metadata) ProtoMessage() {}
+
+func (x *Metadata) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[5]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Metadata.ProtoReflect.Descriptor instead.
 func (*Metadata) Descriptor() ([]byte, []int) {
-	return fileDescriptor_b7972e58de45083a, []int{5}
+	return file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{5}
 }
 
-func (m *Metadata) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Metadata.Unmarshal(m, b)
-}
-func (m *Metadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Metadata.Marshal(b, m, deterministic)
-}
-func (m *Metadata) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Metadata.Merge(m, src)
-}
-func (m *Metadata) XXX_Size() int {
-	return xxx_messageInfo_Metadata.Size(m)
-}
-func (m *Metadata) XXX_DiscardUnknown() {
-	xxx_messageInfo_Metadata.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Metadata proto.InternalMessageInfo
-
-func (m *Metadata) GetEntry() []*MetadataEntry {
-	if m != nil {
-		return m.Entry
+func (x *Metadata) GetEntry() []*MetadataEntry {
+	if x != nil {
+		return x.Entry
 	}
 	return nil
 }
 
 // A metadata key value pair
 type MetadataEntry struct {
-	Key                  string   `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
-	Value                []byte   `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Key   string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
+	Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
 }
 
-func (m *MetadataEntry) Reset()         { *m = MetadataEntry{} }
-func (m *MetadataEntry) String() string { return proto.CompactTextString(m) }
-func (*MetadataEntry) ProtoMessage()    {}
+func (x *MetadataEntry) Reset() {
+	*x = MetadataEntry{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[6]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *MetadataEntry) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MetadataEntry) ProtoMessage() {}
+
+func (x *MetadataEntry) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[6]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use MetadataEntry.ProtoReflect.Descriptor instead.
 func (*MetadataEntry) Descriptor() ([]byte, []int) {
-	return fileDescriptor_b7972e58de45083a, []int{6}
+	return file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{6}
 }
 
-func (m *MetadataEntry) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_MetadataEntry.Unmarshal(m, b)
-}
-func (m *MetadataEntry) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_MetadataEntry.Marshal(b, m, deterministic)
-}
-func (m *MetadataEntry) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_MetadataEntry.Merge(m, src)
-}
-func (m *MetadataEntry) XXX_Size() int {
-	return xxx_messageInfo_MetadataEntry.Size(m)
-}
-func (m *MetadataEntry) XXX_DiscardUnknown() {
-	xxx_messageInfo_MetadataEntry.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_MetadataEntry proto.InternalMessageInfo
-
-func (m *MetadataEntry) GetKey() string {
-	if m != nil {
-		return m.Key
+func (x *MetadataEntry) GetKey() string {
+	if x != nil {
+		return x.Key
 	}
 	return ""
 }
 
-func (m *MetadataEntry) GetValue() []byte {
-	if m != nil {
-		return m.Value
+func (x *MetadataEntry) GetValue() []byte {
+	if x != nil {
+		return x.Value
 	}
 	return nil
 }
 
 // Address information
 type Address struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	Type    Address_Type `protobuf:"varint,1,opt,name=type,proto3,enum=grpc.binarylog.v1.Address_Type" json:"type,omitempty"`
 	Address string       `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"`
 	// only for TYPE_IPV4 and TYPE_IPV6
-	IpPort               uint32   `protobuf:"varint,3,opt,name=ip_port,json=ipPort,proto3" json:"ip_port,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	IpPort uint32 `protobuf:"varint,3,opt,name=ip_port,json=ipPort,proto3" json:"ip_port,omitempty"`
 }
 
-func (m *Address) Reset()         { *m = Address{} }
-func (m *Address) String() string { return proto.CompactTextString(m) }
-func (*Address) ProtoMessage()    {}
+func (x *Address) Reset() {
+	*x = Address{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[7]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Address) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Address) ProtoMessage() {}
+
+func (x *Address) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[7]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Address.ProtoReflect.Descriptor instead.
 func (*Address) Descriptor() ([]byte, []int) {
-	return fileDescriptor_b7972e58de45083a, []int{7}
+	return file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{7}
 }
 
-func (m *Address) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Address.Unmarshal(m, b)
-}
-func (m *Address) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Address.Marshal(b, m, deterministic)
-}
-func (m *Address) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Address.Merge(m, src)
-}
-func (m *Address) XXX_Size() int {
-	return xxx_messageInfo_Address.Size(m)
-}
-func (m *Address) XXX_DiscardUnknown() {
-	xxx_messageInfo_Address.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Address proto.InternalMessageInfo
-
-func (m *Address) GetType() Address_Type {
-	if m != nil {
-		return m.Type
+func (x *Address) GetType() Address_Type {
+	if x != nil {
+		return x.Type
 	}
 	return Address_TYPE_UNKNOWN
 }
 
-func (m *Address) GetAddress() string {
-	if m != nil {
-		return m.Address
+func (x *Address) GetAddress() string {
+	if x != nil {
+		return x.Address
 	}
 	return ""
 }
 
-func (m *Address) GetIpPort() uint32 {
-	if m != nil {
-		return m.IpPort
+func (x *Address) GetIpPort() uint32 {
+	if x != nil {
+		return x.IpPort
 	}
 	return 0
 }
 
-func init() {
-	proto.RegisterEnum("grpc.binarylog.v1.GrpcLogEntry_EventType", GrpcLogEntry_EventType_name, GrpcLogEntry_EventType_value)
-	proto.RegisterEnum("grpc.binarylog.v1.GrpcLogEntry_Logger", GrpcLogEntry_Logger_name, GrpcLogEntry_Logger_value)
-	proto.RegisterEnum("grpc.binarylog.v1.Address_Type", Address_Type_name, Address_Type_value)
-	proto.RegisterType((*GrpcLogEntry)(nil), "grpc.binarylog.v1.GrpcLogEntry")
-	proto.RegisterType((*ClientHeader)(nil), "grpc.binarylog.v1.ClientHeader")
-	proto.RegisterType((*ServerHeader)(nil), "grpc.binarylog.v1.ServerHeader")
-	proto.RegisterType((*Trailer)(nil), "grpc.binarylog.v1.Trailer")
-	proto.RegisterType((*Message)(nil), "grpc.binarylog.v1.Message")
-	proto.RegisterType((*Metadata)(nil), "grpc.binarylog.v1.Metadata")
-	proto.RegisterType((*MetadataEntry)(nil), "grpc.binarylog.v1.MetadataEntry")
-	proto.RegisterType((*Address)(nil), "grpc.binarylog.v1.Address")
+var File_grpc_binlog_v1_binarylog_proto protoreflect.FileDescriptor
+
+var file_grpc_binlog_v1_binarylog_proto_rawDesc = []byte{
+	0x0a, 0x1e, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x62, 0x69, 0x6e, 0x6c, 0x6f, 0x67, 0x2f, 0x76, 0x31,
+	0x2f, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x12, 0x11, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67,
+	0x2e, 0x76, 0x31, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x22, 0xbb, 0x07, 0x0a, 0x0c, 0x47, 0x72, 0x70, 0x63, 0x4c, 0x6f, 0x67,
+	0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
+	0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
+	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73,
+	0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12,
+	0x17, 0x0a, 0x07, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04,
+	0x52, 0x06, 0x63, 0x61, 0x6c, 0x6c, 0x49, 0x64, 0x12, 0x35, 0x0a, 0x17, 0x73, 0x65, 0x71, 0x75,
+	0x65, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x69, 0x6e, 0x5f, 0x63,
+	0x61, 0x6c, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x14, 0x73, 0x65, 0x71, 0x75, 0x65,
+	0x6e, 0x63, 0x65, 0x49, 0x64, 0x57, 0x69, 0x74, 0x68, 0x69, 0x6e, 0x43, 0x61, 0x6c, 0x6c, 0x12,
+	0x3d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e,
+	0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e, 0x76,
+	0x31, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x45,
+	0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x3e,
+	0x0a, 0x06, 0x6c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26,
+	0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e,
+	0x76, 0x31, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x2e,
+	0x4c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x52, 0x06, 0x6c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x12, 0x46,
+	0x0a, 0x0d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18,
+	0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e,
+	0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74,
+	0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74,
+	0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x46, 0x0a, 0x0d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
+	0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e,
+	0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e, 0x76,
+	0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x00,
+	0x52, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x36,
+	0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67,
+	0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x07, 0x6d,
+	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x36, 0x0a, 0x07, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x65,
+	0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62,
+	0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x69,
+	0x6c, 0x65, 0x72, 0x48, 0x00, 0x52, 0x07, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x65, 0x72, 0x12, 0x2b,
+	0x0a, 0x11, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61,
+	0x74, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x70, 0x61, 0x79, 0x6c, 0x6f,
+	0x61, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x2e, 0x0a, 0x04, 0x70,
+	0x65, 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63,
+	0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64,
+	0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x04, 0x70, 0x65, 0x65, 0x72, 0x22, 0xf5, 0x01, 0x0a, 0x09,
+	0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x12, 0x45, 0x56, 0x45,
+	0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10,
+	0x00, 0x12, 0x1c, 0x0a, 0x18, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f,
+	0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, 0x10, 0x01, 0x12,
+	0x1c, 0x0a, 0x18, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45,
+	0x52, 0x56, 0x45, 0x52, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, 0x10, 0x02, 0x12, 0x1d, 0x0a,
+	0x19, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x4c, 0x49, 0x45,
+	0x4e, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x03, 0x12, 0x1d, 0x0a, 0x19,
+	0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45,
+	0x52, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x04, 0x12, 0x20, 0x0a, 0x1c, 0x45,
+	0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54,
+	0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x10, 0x05, 0x12, 0x1d, 0x0a,
+	0x19, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x52, 0x56,
+	0x45, 0x52, 0x5f, 0x54, 0x52, 0x41, 0x49, 0x4c, 0x45, 0x52, 0x10, 0x06, 0x12, 0x15, 0x0a, 0x11,
+	0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45,
+	0x4c, 0x10, 0x07, 0x22, 0x42, 0x0a, 0x06, 0x4c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x12, 0x12, 0x0a,
+	0x0e, 0x4c, 0x4f, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10,
+	0x00, 0x12, 0x11, 0x0a, 0x0d, 0x4c, 0x4f, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x43, 0x4c, 0x49, 0x45,
+	0x4e, 0x54, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x4c, 0x4f, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x53,
+	0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x02, 0x42, 0x09, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f,
+	0x61, 0x64, 0x22, 0xbb, 0x01, 0x0a, 0x0c, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x48, 0x65, 0x61,
+	0x64, 0x65, 0x72, 0x12, 0x37, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e,
+	0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,
+	0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1f, 0x0a, 0x0b,
+	0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a,
+	0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x33, 0x0a, 0x07, 0x74,
+	0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67,
+	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44,
+	0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74,
+	0x22, 0x47, 0x0a, 0x0c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72,
+	0x12, 0x37, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79,
+	0x6c, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52,
+	0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xb1, 0x01, 0x0a, 0x07, 0x54, 0x72,
+	0x61, 0x69, 0x6c, 0x65, 0x72, 0x12, 0x37, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
+	0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62,
+	0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61,
+	0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1f,
+	0x0a, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x0d, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12,
+	0x25, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
+	0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4d,
+	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73,
+	0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d,
+	0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x35, 0x0a,
+	0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67,
+	0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68,
+	0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04,
+	0x64, 0x61, 0x74, 0x61, 0x22, 0x42, 0x0a, 0x08, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
+	0x12, 0x36, 0x0a, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
+	0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67,
+	0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72,
+	0x79, 0x52, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x22, 0x37, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61,
+	0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76,
+	0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
+	0x65, 0x22, 0xb8, 0x01, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x33, 0x0a,
+	0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x67, 0x72,
+	0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x2e,
+	0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79,
+	0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x17, 0x0a, 0x07,
+	0x69, 0x70, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x69,
+	0x70, 0x50, 0x6f, 0x72, 0x74, 0x22, 0x45, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a,
+	0x0c, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12,
+	0x0d, 0x0a, 0x09, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x50, 0x56, 0x34, 0x10, 0x01, 0x12, 0x0d,
+	0x0a, 0x09, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x10, 0x02, 0x12, 0x0d, 0x0a,
+	0x09, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x49, 0x58, 0x10, 0x03, 0x42, 0x5c, 0x0a, 0x14,
+	0x69, 0x6f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f,
+	0x67, 0x2e, 0x76, 0x31, 0x42, 0x0e, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x4c, 0x6f, 0x67, 0x50,
+	0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x32, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67,
+	0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x62,
+	0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x62, 0x69,
+	0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x5f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x33,
 }
 
-func init() { proto.RegisterFile("grpc/binlog/v1/binarylog.proto", fileDescriptor_b7972e58de45083a) }
+var (
+	file_grpc_binlog_v1_binarylog_proto_rawDescOnce sync.Once
+	file_grpc_binlog_v1_binarylog_proto_rawDescData = file_grpc_binlog_v1_binarylog_proto_rawDesc
+)
 
-var fileDescriptor_b7972e58de45083a = []byte{
-	// 904 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x55, 0x51, 0x6f, 0xe3, 0x44,
-	0x10, 0xae, 0xdb, 0x34, 0x6e, 0x26, 0x49, 0xe5, 0xae, 0xca, 0x9d, 0xaf, 0x94, 0x6b, 0x64, 0x09,
-	0x14, 0x84, 0xe4, 0xa8, 0x29, 0xd7, 0xe3, 0x05, 0xa4, 0x24, 0xf5, 0xa5, 0x11, 0xb9, 0x34, 0xda,
-	0xe4, 0x7a, 0x80, 0x90, 0xac, 0x6d, 0xbc, 0x38, 0x16, 0x8e, 0xd7, 0xac, 0x37, 0x41, 0xf9, 0x59,
-	0xbc, 0x21, 0xdd, 0xef, 0xe2, 0x1d, 0x79, 0xd7, 0x4e, 0x4d, 0xd3, 0x82, 0xc4, 0xbd, 0xed, 0x7c,
-	0xf3, 0xcd, 0x37, 0xbb, 0xe3, 0x99, 0x31, 0xbc, 0xf4, 0x79, 0x3c, 0x6b, 0xdd, 0x05, 0x51, 0xc8,
-	0xfc, 0xd6, 0xea, 0x3c, 0x3d, 0x11, 0xbe, 0x0e, 0x99, 0x6f, 0xc7, 0x9c, 0x09, 0x86, 0x8e, 0x52,
-	0xbf, 0x7d, 0x8f, 0xae, 0xce, 0x4f, 0x5e, 0xfa, 0x8c, 0xf9, 0x21, 0x6d, 0x49, 0xc2, 0xdd, 0xf2,
-	0x97, 0x96, 0xb7, 0xe4, 0x44, 0x04, 0x2c, 0x52, 0x21, 0x27, 0x67, 0x0f, 0xfd, 0x22, 0x58, 0xd0,
-	0x44, 0x90, 0x45, 0xac, 0x08, 0xd6, 0x07, 0x1d, 0x6a, 0x7d, 0x1e, 0xcf, 0x86, 0xcc, 0x77, 0x22,
-	0xc1, 0xd7, 0xe8, 0x1b, 0xa8, 0x6c, 0x38, 0xa6, 0xd6, 0xd0, 0x9a, 0xd5, 0xf6, 0x89, 0xad, 0x54,
-	0xec, 0x5c, 0xc5, 0x9e, 0xe6, 0x0c, 0x7c, 0x4f, 0x46, 0xcf, 0x41, 0x9f, 0x91, 0x30, 0x74, 0x03,
-	0xcf, 0xdc, 0x6d, 0x68, 0xcd, 0x12, 0x2e, 0xa7, 0xe6, 0xc0, 0x43, 0xaf, 0xe0, 0x79, 0x42, 0x7f,
-	0x5b, 0xd2, 0x68, 0x46, 0xdd, 0xc0, 0x73, 0x7f, 0x0f, 0xc4, 0x3c, 0x88, 0xdc, 0xd4, 0x69, 0xee,
-	0x49, 0xe2, 0x71, 0xee, 0x1e, 0x78, 0xef, 0xa5, 0xb3, 0x47, 0xc2, 0x10, 0x7d, 0x0b, 0x25, 0xb1,
-	0x8e, 0xa9, 0x59, 0x6a, 0x68, 0xcd, 0xc3, 0xf6, 0x97, 0xf6, 0xd6, 0xeb, 0xed, 0xe2, 0xc5, 0x6d,
-	0x67, 0x45, 0x23, 0x31, 0x5d, 0xc7, 0x14, 0xcb, 0x30, 0xf4, 0x1d, 0x94, 0x43, 0xe6, 0xfb, 0x94,
-	0x9b, 0xfb, 0x52, 0xe0, 0x8b, 0xff, 0x12, 0x18, 0x4a, 0x36, 0xce, 0xa2, 0xd0, 0x1b, 0xa8, 0xcf,
-	0xc2, 0x80, 0x46, 0xc2, 0x9d, 0x53, 0xe2, 0x51, 0x6e, 0x96, 0x65, 0x31, 0xce, 0x1e, 0x91, 0xe9,
-	0x49, 0xde, 0xb5, 0xa4, 0x5d, 0xef, 0xe0, 0xda, 0xac, 0x60, 0xa7, 0x3a, 0x09, 0xe5, 0x2b, 0xca,
-	0x73, 0x1d, 0xfd, 0x49, 0x9d, 0x89, 0xe4, 0xdd, 0xeb, 0x24, 0x05, 0x1b, 0x5d, 0x82, 0xbe, 0xa0,
-	0x49, 0x42, 0x7c, 0x6a, 0x1e, 0xe4, 0x9f, 0x65, 0x4b, 0xe1, 0xad, 0x62, 0x5c, 0xef, 0xe0, 0x9c,
-	0x9c, 0xc6, 0x09, 0x4e, 0x82, 0x90, 0x72, 0xb3, 0xf2, 0x64, 0xdc, 0x54, 0x31, 0xd2, 0xb8, 0x8c,
-	0x8c, 0xbe, 0x82, 0xa3, 0x98, 0xac, 0x43, 0x46, 0x3c, 0x57, 0xf0, 0x65, 0x34, 0x23, 0x82, 0x7a,
-	0x26, 0x34, 0xb4, 0xe6, 0x01, 0x36, 0x32, 0xc7, 0x34, 0xc7, 0x91, 0x0d, 0xa5, 0x98, 0x52, 0x6e,
-	0x56, 0x9f, 0xcc, 0xd0, 0xf1, 0x3c, 0x4e, 0x93, 0x04, 0x4b, 0x9e, 0xf5, 0x97, 0x06, 0x95, 0xcd,
-	0x07, 0x43, 0xcf, 0x00, 0x39, 0xb7, 0xce, 0x68, 0xea, 0x4e, 0x7f, 0x1c, 0x3b, 0xee, 0xbb, 0xd1,
-	0xf7, 0xa3, 0x9b, 0xf7, 0x23, 0x63, 0x07, 0x9d, 0x82, 0x59, 0xc0, 0x7b, 0xc3, 0x41, 0x7a, 0xbe,
-	0x76, 0x3a, 0x57, 0x0e, 0x36, 0xb4, 0x07, 0xde, 0x89, 0x83, 0x6f, 0x1d, 0x9c, 0x7b, 0x77, 0xd1,
-	0x67, 0xf0, 0x62, 0x3b, 0xf6, 0xad, 0x33, 0x99, 0x74, 0xfa, 0x8e, 0xb1, 0xf7, 0xc0, 0x9d, 0x05,
-	0xe7, 0xee, 0x12, 0x6a, 0xc0, 0xe9, 0x23, 0x99, 0x3b, 0xc3, 0x37, 0x6e, 0x6f, 0x78, 0x33, 0x71,
-	0x8c, 0xfd, 0xc7, 0x05, 0xa6, 0xb8, 0x33, 0x18, 0x3a, 0xd8, 0x28, 0xa3, 0x4f, 0xe0, 0xa8, 0x28,
-	0xd0, 0x19, 0xf5, 0x9c, 0xa1, 0xa1, 0x5b, 0x5d, 0x28, 0xab, 0x36, 0x43, 0x08, 0x0e, 0x87, 0x37,
-	0xfd, 0xbe, 0x83, 0x0b, 0xef, 0x3d, 0x82, 0x7a, 0x86, 0xa9, 0x8c, 0x86, 0x56, 0x80, 0x54, 0x0a,
-	0x63, 0xb7, 0x5b, 0x01, 0x3d, 0xab, 0xbf, 0xf5, 0x41, 0x83, 0x5a, 0xb1, 0xf9, 0xd0, 0x6b, 0x38,
-	0x58, 0x50, 0x41, 0x3c, 0x22, 0x48, 0x36, 0xbc, 0x9f, 0x3e, 0xda, 0x25, 0x8a, 0x82, 0x37, 0x64,
-	0x74, 0x06, 0xd5, 0x05, 0x15, 0x73, 0xe6, 0xb9, 0x11, 0x59, 0x50, 0x39, 0xc0, 0x15, 0x0c, 0x0a,
-	0x1a, 0x91, 0x05, 0x45, 0xa7, 0x50, 0x21, 0x4b, 0x31, 0x67, 0x3c, 0x10, 0x6b, 0x39, 0xb6, 0x15,
-	0x7c, 0x0f, 0xa0, 0x0b, 0xd0, 0xd3, 0x45, 0xc0, 0x96, 0x42, 0x8e, 0x6b, 0xb5, 0xfd, 0x62, 0x6b,
-	0x67, 0x5c, 0x65, 0x9b, 0x09, 0xe7, 0x4c, 0xab, 0x0f, 0xb5, 0x62, 0xc7, 0xff, 0xef, 0xcb, 0x5b,
-	0x7f, 0x68, 0xa0, 0x67, 0x1d, 0xfc, 0x51, 0x15, 0x48, 0x04, 0x11, 0xcb, 0xc4, 0x9d, 0x31, 0x4f,
-	0x55, 0xa0, 0x8e, 0x41, 0x41, 0x3d, 0xe6, 0x51, 0xf4, 0x39, 0x1c, 0x66, 0x84, 0x7c, 0x0e, 0x55,
-	0x19, 0xea, 0x0a, 0xcd, 0x46, 0xaf, 0x40, 0xf3, 0xa8, 0x20, 0x41, 0x98, 0xc8, 0x8a, 0xd4, 0x72,
-	0xda, 0x95, 0x02, 0xad, 0x57, 0xa0, 0xe7, 0x11, 0xcf, 0xa0, 0x1c, 0xd2, 0xc8, 0x17, 0x73, 0x79,
-	0xe1, 0x3a, 0xce, 0x2c, 0x84, 0xa0, 0x24, 0x9f, 0xb1, 0x2b, 0xe3, 0xe5, 0xd9, 0xea, 0xc2, 0x41,
-	0x7e, 0x77, 0x74, 0x09, 0xfb, 0x34, 0xdd, 0x5c, 0xa6, 0xd6, 0xd8, 0x6b, 0x56, 0xdb, 0x8d, 0x7f,
-	0x79, 0xa7, 0xdc, 0x70, 0x58, 0xd1, 0xad, 0xd7, 0x50, 0xff, 0x07, 0x8e, 0x0c, 0xd8, 0xfb, 0x95,
-	0xae, 0x65, 0xf6, 0x0a, 0x4e, 0x8f, 0xe8, 0x18, 0xf6, 0x57, 0x24, 0x5c, 0xd2, 0x2c, 0xb7, 0x32,
-	0xac, 0x3f, 0x35, 0xd0, 0xb3, 0x39, 0x46, 0x17, 0xd9, 0x76, 0xd6, 0xe4, 0x72, 0x3d, 0x7b, 0x7a,
-	0xe2, 0xed, 0xc2, 0x4e, 0x36, 0x41, 0x27, 0x0a, 0xcd, 0x3a, 0x2c, 0x37, 0xd3, 0x9f, 0x47, 0x10,
-	0xbb, 0x31, 0xe3, 0x42, 0x56, 0xb5, 0x8e, 0xcb, 0x41, 0x3c, 0x66, 0x5c, 0x58, 0x0e, 0x94, 0xe4,
-	0x8e, 0x30, 0xa0, 0xf6, 0x60, 0x3b, 0xd4, 0xa1, 0x22, 0x91, 0xc1, 0xf8, 0xf6, 0x6b, 0x43, 0x2b,
-	0x9a, 0x97, 0xc6, 0xee, 0xc6, 0x7c, 0x37, 0x1a, 0xfc, 0x60, 0xec, 0x75, 0x7f, 0x86, 0xe3, 0x80,
-	0x6d, 0x5f, 0xb2, 0x7b, 0xd8, 0x95, 0xd6, 0x90, 0xf9, 0xe3, 0xb4, 0x51, 0xc7, 0xda, 0x4f, 0xed,
-	0xac, 0x71, 0x7d, 0x16, 0x92, 0xc8, 0xb7, 0x19, 0xf7, 0x5b, 0xf9, 0x7f, 0x59, 0x85, 0x49, 0xd3,
-	0xdd, 0x98, 0xee, 0xea, 0xfc, 0xae, 0x2c, 0xbb, 0xfc, 0xe2, 0xef, 0x00, 0x00, 0x00, 0xff, 0xff,
-	0x10, 0x93, 0x68, 0x41, 0xc2, 0x07, 0x00, 0x00,
+func file_grpc_binlog_v1_binarylog_proto_rawDescGZIP() []byte {
+	file_grpc_binlog_v1_binarylog_proto_rawDescOnce.Do(func() {
+		file_grpc_binlog_v1_binarylog_proto_rawDescData = protoimpl.X.CompressGZIP(file_grpc_binlog_v1_binarylog_proto_rawDescData)
+	})
+	return file_grpc_binlog_v1_binarylog_proto_rawDescData
+}
+
+var file_grpc_binlog_v1_binarylog_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
+var file_grpc_binlog_v1_binarylog_proto_msgTypes = make([]protoimpl.MessageInfo, 8)
+var file_grpc_binlog_v1_binarylog_proto_goTypes = []interface{}{
+	(GrpcLogEntry_EventType)(0), // 0: grpc.binarylog.v1.GrpcLogEntry.EventType
+	(GrpcLogEntry_Logger)(0),    // 1: grpc.binarylog.v1.GrpcLogEntry.Logger
+	(Address_Type)(0),           // 2: grpc.binarylog.v1.Address.Type
+	(*GrpcLogEntry)(nil),        // 3: grpc.binarylog.v1.GrpcLogEntry
+	(*ClientHeader)(nil),        // 4: grpc.binarylog.v1.ClientHeader
+	(*ServerHeader)(nil),        // 5: grpc.binarylog.v1.ServerHeader
+	(*Trailer)(nil),             // 6: grpc.binarylog.v1.Trailer
+	(*Message)(nil),             // 7: grpc.binarylog.v1.Message
+	(*Metadata)(nil),            // 8: grpc.binarylog.v1.Metadata
+	(*MetadataEntry)(nil),       // 9: grpc.binarylog.v1.MetadataEntry
+	(*Address)(nil),             // 10: grpc.binarylog.v1.Address
+	(*timestamp.Timestamp)(nil), // 11: google.protobuf.Timestamp
+	(*duration.Duration)(nil),   // 12: google.protobuf.Duration
+}
+var file_grpc_binlog_v1_binarylog_proto_depIdxs = []int32{
+	11, // 0: grpc.binarylog.v1.GrpcLogEntry.timestamp:type_name -> google.protobuf.Timestamp
+	0,  // 1: grpc.binarylog.v1.GrpcLogEntry.type:type_name -> grpc.binarylog.v1.GrpcLogEntry.EventType
+	1,  // 2: grpc.binarylog.v1.GrpcLogEntry.logger:type_name -> grpc.binarylog.v1.GrpcLogEntry.Logger
+	4,  // 3: grpc.binarylog.v1.GrpcLogEntry.client_header:type_name -> grpc.binarylog.v1.ClientHeader
+	5,  // 4: grpc.binarylog.v1.GrpcLogEntry.server_header:type_name -> grpc.binarylog.v1.ServerHeader
+	7,  // 5: grpc.binarylog.v1.GrpcLogEntry.message:type_name -> grpc.binarylog.v1.Message
+	6,  // 6: grpc.binarylog.v1.GrpcLogEntry.trailer:type_name -> grpc.binarylog.v1.Trailer
+	10, // 7: grpc.binarylog.v1.GrpcLogEntry.peer:type_name -> grpc.binarylog.v1.Address
+	8,  // 8: grpc.binarylog.v1.ClientHeader.metadata:type_name -> grpc.binarylog.v1.Metadata
+	12, // 9: grpc.binarylog.v1.ClientHeader.timeout:type_name -> google.protobuf.Duration
+	8,  // 10: grpc.binarylog.v1.ServerHeader.metadata:type_name -> grpc.binarylog.v1.Metadata
+	8,  // 11: grpc.binarylog.v1.Trailer.metadata:type_name -> grpc.binarylog.v1.Metadata
+	9,  // 12: grpc.binarylog.v1.Metadata.entry:type_name -> grpc.binarylog.v1.MetadataEntry
+	2,  // 13: grpc.binarylog.v1.Address.type:type_name -> grpc.binarylog.v1.Address.Type
+	14, // [14:14] is the sub-list for method output_type
+	14, // [14:14] is the sub-list for method input_type
+	14, // [14:14] is the sub-list for extension type_name
+	14, // [14:14] is the sub-list for extension extendee
+	0,  // [0:14] is the sub-list for field type_name
+}
+
+func init() { file_grpc_binlog_v1_binarylog_proto_init() }
+func file_grpc_binlog_v1_binarylog_proto_init() {
+	if File_grpc_binlog_v1_binarylog_proto != nil {
+		return
+	}
+	if !protoimpl.UnsafeEnabled {
+		file_grpc_binlog_v1_binarylog_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GrpcLogEntry); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_binlog_v1_binarylog_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ClientHeader); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_binlog_v1_binarylog_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ServerHeader); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_binlog_v1_binarylog_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Trailer); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_binlog_v1_binarylog_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Message); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_binlog_v1_binarylog_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Metadata); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_binlog_v1_binarylog_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*MetadataEntry); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_binlog_v1_binarylog_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Address); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	file_grpc_binlog_v1_binarylog_proto_msgTypes[0].OneofWrappers = []interface{}{
+		(*GrpcLogEntry_ClientHeader)(nil),
+		(*GrpcLogEntry_ServerHeader)(nil),
+		(*GrpcLogEntry_Message)(nil),
+		(*GrpcLogEntry_Trailer)(nil),
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_grpc_binlog_v1_binarylog_proto_rawDesc,
+			NumEnums:      3,
+			NumMessages:   8,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_grpc_binlog_v1_binarylog_proto_goTypes,
+		DependencyIndexes: file_grpc_binlog_v1_binarylog_proto_depIdxs,
+		EnumInfos:         file_grpc_binlog_v1_binarylog_proto_enumTypes,
+		MessageInfos:      file_grpc_binlog_v1_binarylog_proto_msgTypes,
+	}.Build()
+	File_grpc_binlog_v1_binarylog_proto = out.File
+	file_grpc_binlog_v1_binarylog_proto_rawDesc = nil
+	file_grpc_binlog_v1_binarylog_proto_goTypes = nil
+	file_grpc_binlog_v1_binarylog_proto_depIdxs = nil
 }
diff --git a/channelz/grpc_channelz_v1/channelz.pb.go b/channelz/grpc_channelz_v1/channelz.pb.go
index 9c364e1..ca98e68 100644
--- a/channelz/grpc_channelz_v1/channelz.pb.go
+++ b/channelz/grpc_channelz_v1/channelz.pb.go
@@ -1,28 +1,54 @@
+// Copyright 2018 The gRPC Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// This file defines an interface for exporting monitoring information
+// out of gRPC servers.  See the full design at
+// https://github.com/grpc/proposal/blob/master/A14-channelz.md
+//
+// The canonical version of this proto can be found at
+// https://github.com/grpc/grpc-proto/blob/master/grpc/channelz/v1/channelz.proto
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.25.0
+// 	protoc        v3.3.0
 // source: grpc/channelz/v1/channelz.proto
 
 package grpc_channelz_v1
 
 import (
-	fmt "fmt"
 	proto "github.com/golang/protobuf/proto"
 	any "github.com/golang/protobuf/ptypes/any"
 	duration "github.com/golang/protobuf/ptypes/duration"
 	timestamp "github.com/golang/protobuf/ptypes/timestamp"
 	wrappers "github.com/golang/protobuf/ptypes/wrappers"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
 )
 
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
 
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+// This is a compile-time assertion that a sufficiently up-to-date version
+// of the legacy proto package is being used.
+const _ = proto.ProtoPackageIsVersion4
 
 type ChannelConnectivityState_State int32
 
@@ -35,30 +61,51 @@
 	ChannelConnectivityState_SHUTDOWN          ChannelConnectivityState_State = 5
 )
 
-var ChannelConnectivityState_State_name = map[int32]string{
-	0: "UNKNOWN",
-	1: "IDLE",
-	2: "CONNECTING",
-	3: "READY",
-	4: "TRANSIENT_FAILURE",
-	5: "SHUTDOWN",
-}
+// Enum value maps for ChannelConnectivityState_State.
+var (
+	ChannelConnectivityState_State_name = map[int32]string{
+		0: "UNKNOWN",
+		1: "IDLE",
+		2: "CONNECTING",
+		3: "READY",
+		4: "TRANSIENT_FAILURE",
+		5: "SHUTDOWN",
+	}
+	ChannelConnectivityState_State_value = map[string]int32{
+		"UNKNOWN":           0,
+		"IDLE":              1,
+		"CONNECTING":        2,
+		"READY":             3,
+		"TRANSIENT_FAILURE": 4,
+		"SHUTDOWN":          5,
+	}
+)
 
-var ChannelConnectivityState_State_value = map[string]int32{
-	"UNKNOWN":           0,
-	"IDLE":              1,
-	"CONNECTING":        2,
-	"READY":             3,
-	"TRANSIENT_FAILURE": 4,
-	"SHUTDOWN":          5,
+func (x ChannelConnectivityState_State) Enum() *ChannelConnectivityState_State {
+	p := new(ChannelConnectivityState_State)
+	*p = x
+	return p
 }
 
 func (x ChannelConnectivityState_State) String() string {
-	return proto.EnumName(ChannelConnectivityState_State_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (ChannelConnectivityState_State) Descriptor() protoreflect.EnumDescriptor {
+	return file_grpc_channelz_v1_channelz_proto_enumTypes[0].Descriptor()
+}
+
+func (ChannelConnectivityState_State) Type() protoreflect.EnumType {
+	return &file_grpc_channelz_v1_channelz_proto_enumTypes[0]
+}
+
+func (x ChannelConnectivityState_State) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ChannelConnectivityState_State.Descriptor instead.
 func (ChannelConnectivityState_State) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{2, 0}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{2, 0}
 }
 
 // The supported severity levels of trace events.
@@ -71,34 +118,59 @@
 	ChannelTraceEvent_CT_ERROR   ChannelTraceEvent_Severity = 3
 )
 
-var ChannelTraceEvent_Severity_name = map[int32]string{
-	0: "CT_UNKNOWN",
-	1: "CT_INFO",
-	2: "CT_WARNING",
-	3: "CT_ERROR",
-}
+// Enum value maps for ChannelTraceEvent_Severity.
+var (
+	ChannelTraceEvent_Severity_name = map[int32]string{
+		0: "CT_UNKNOWN",
+		1: "CT_INFO",
+		2: "CT_WARNING",
+		3: "CT_ERROR",
+	}
+	ChannelTraceEvent_Severity_value = map[string]int32{
+		"CT_UNKNOWN": 0,
+		"CT_INFO":    1,
+		"CT_WARNING": 2,
+		"CT_ERROR":   3,
+	}
+)
 
-var ChannelTraceEvent_Severity_value = map[string]int32{
-	"CT_UNKNOWN": 0,
-	"CT_INFO":    1,
-	"CT_WARNING": 2,
-	"CT_ERROR":   3,
+func (x ChannelTraceEvent_Severity) Enum() *ChannelTraceEvent_Severity {
+	p := new(ChannelTraceEvent_Severity)
+	*p = x
+	return p
 }
 
 func (x ChannelTraceEvent_Severity) String() string {
-	return proto.EnumName(ChannelTraceEvent_Severity_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (ChannelTraceEvent_Severity) Descriptor() protoreflect.EnumDescriptor {
+	return file_grpc_channelz_v1_channelz_proto_enumTypes[1].Descriptor()
+}
+
+func (ChannelTraceEvent_Severity) Type() protoreflect.EnumType {
+	return &file_grpc_channelz_v1_channelz_proto_enumTypes[1]
+}
+
+func (x ChannelTraceEvent_Severity) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ChannelTraceEvent_Severity.Descriptor instead.
 func (ChannelTraceEvent_Severity) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{4, 0}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{4, 0}
 }
 
 // Channel is a logical grouping of channels, subchannels, and sockets.
 type Channel struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The identifier for this channel. This should bet set.
 	Ref *ChannelRef `protobuf:"bytes,1,opt,name=ref,proto3" json:"ref,omitempty"`
 	// Data specific to this channel.
-	Data *ChannelData `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
+	Data *ChannelData `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` // At most one of 'channel_ref+subchannel_ref' and 'socket' is set.
 	// There are no ordering guarantees on the order of channel refs.
 	// There may not be cycles in the ref graph.
 	// A channel ref may be present in more than one channel or subchannel.
@@ -109,68 +181,72 @@
 	// A sub channel ref may be present in more than one channel or subchannel.
 	SubchannelRef []*SubchannelRef `protobuf:"bytes,4,rep,name=subchannel_ref,json=subchannelRef,proto3" json:"subchannel_ref,omitempty"`
 	// There are no ordering guarantees on the order of sockets.
-	SocketRef            []*SocketRef `protobuf:"bytes,5,rep,name=socket_ref,json=socketRef,proto3" json:"socket_ref,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
-	XXX_unrecognized     []byte       `json:"-"`
-	XXX_sizecache        int32        `json:"-"`
+	SocketRef []*SocketRef `protobuf:"bytes,5,rep,name=socket_ref,json=socketRef,proto3" json:"socket_ref,omitempty"`
 }
 
-func (m *Channel) Reset()         { *m = Channel{} }
-func (m *Channel) String() string { return proto.CompactTextString(m) }
-func (*Channel) ProtoMessage()    {}
+func (x *Channel) Reset() {
+	*x = Channel{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Channel) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Channel) ProtoMessage() {}
+
+func (x *Channel) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[0]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Channel.ProtoReflect.Descriptor instead.
 func (*Channel) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{0}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *Channel) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Channel.Unmarshal(m, b)
-}
-func (m *Channel) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Channel.Marshal(b, m, deterministic)
-}
-func (m *Channel) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Channel.Merge(m, src)
-}
-func (m *Channel) XXX_Size() int {
-	return xxx_messageInfo_Channel.Size(m)
-}
-func (m *Channel) XXX_DiscardUnknown() {
-	xxx_messageInfo_Channel.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Channel proto.InternalMessageInfo
-
-func (m *Channel) GetRef() *ChannelRef {
-	if m != nil {
-		return m.Ref
+func (x *Channel) GetRef() *ChannelRef {
+	if x != nil {
+		return x.Ref
 	}
 	return nil
 }
 
-func (m *Channel) GetData() *ChannelData {
-	if m != nil {
-		return m.Data
+func (x *Channel) GetData() *ChannelData {
+	if x != nil {
+		return x.Data
 	}
 	return nil
 }
 
-func (m *Channel) GetChannelRef() []*ChannelRef {
-	if m != nil {
-		return m.ChannelRef
+func (x *Channel) GetChannelRef() []*ChannelRef {
+	if x != nil {
+		return x.ChannelRef
 	}
 	return nil
 }
 
-func (m *Channel) GetSubchannelRef() []*SubchannelRef {
-	if m != nil {
-		return m.SubchannelRef
+func (x *Channel) GetSubchannelRef() []*SubchannelRef {
+	if x != nil {
+		return x.SubchannelRef
 	}
 	return nil
 }
 
-func (m *Channel) GetSocketRef() []*SocketRef {
-	if m != nil {
-		return m.SocketRef
+func (x *Channel) GetSocketRef() []*SocketRef {
+	if x != nil {
+		return x.SocketRef
 	}
 	return nil
 }
@@ -178,10 +254,14 @@
 // Subchannel is a logical grouping of channels, subchannels, and sockets.
 // A subchannel is load balanced over by it's ancestor
 type Subchannel struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The identifier for this channel.
 	Ref *SubchannelRef `protobuf:"bytes,1,opt,name=ref,proto3" json:"ref,omitempty"`
 	// Data specific to this channel.
-	Data *ChannelData `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
+	Data *ChannelData `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` // At most one of 'channel_ref+subchannel_ref' and 'socket' is set.
 	// There are no ordering guarantees on the order of channel refs.
 	// There may not be cycles in the ref graph.
 	// A channel ref may be present in more than one channel or subchannel.
@@ -192,68 +272,72 @@
 	// A sub channel ref may be present in more than one channel or subchannel.
 	SubchannelRef []*SubchannelRef `protobuf:"bytes,4,rep,name=subchannel_ref,json=subchannelRef,proto3" json:"subchannel_ref,omitempty"`
 	// There are no ordering guarantees on the order of sockets.
-	SocketRef            []*SocketRef `protobuf:"bytes,5,rep,name=socket_ref,json=socketRef,proto3" json:"socket_ref,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
-	XXX_unrecognized     []byte       `json:"-"`
-	XXX_sizecache        int32        `json:"-"`
+	SocketRef []*SocketRef `protobuf:"bytes,5,rep,name=socket_ref,json=socketRef,proto3" json:"socket_ref,omitempty"`
 }
 
-func (m *Subchannel) Reset()         { *m = Subchannel{} }
-func (m *Subchannel) String() string { return proto.CompactTextString(m) }
-func (*Subchannel) ProtoMessage()    {}
+func (x *Subchannel) Reset() {
+	*x = Subchannel{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Subchannel) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Subchannel) ProtoMessage() {}
+
+func (x *Subchannel) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[1]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Subchannel.ProtoReflect.Descriptor instead.
 func (*Subchannel) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{1}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *Subchannel) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Subchannel.Unmarshal(m, b)
-}
-func (m *Subchannel) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Subchannel.Marshal(b, m, deterministic)
-}
-func (m *Subchannel) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Subchannel.Merge(m, src)
-}
-func (m *Subchannel) XXX_Size() int {
-	return xxx_messageInfo_Subchannel.Size(m)
-}
-func (m *Subchannel) XXX_DiscardUnknown() {
-	xxx_messageInfo_Subchannel.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Subchannel proto.InternalMessageInfo
-
-func (m *Subchannel) GetRef() *SubchannelRef {
-	if m != nil {
-		return m.Ref
+func (x *Subchannel) GetRef() *SubchannelRef {
+	if x != nil {
+		return x.Ref
 	}
 	return nil
 }
 
-func (m *Subchannel) GetData() *ChannelData {
-	if m != nil {
-		return m.Data
+func (x *Subchannel) GetData() *ChannelData {
+	if x != nil {
+		return x.Data
 	}
 	return nil
 }
 
-func (m *Subchannel) GetChannelRef() []*ChannelRef {
-	if m != nil {
-		return m.ChannelRef
+func (x *Subchannel) GetChannelRef() []*ChannelRef {
+	if x != nil {
+		return x.ChannelRef
 	}
 	return nil
 }
 
-func (m *Subchannel) GetSubchannelRef() []*SubchannelRef {
-	if m != nil {
-		return m.SubchannelRef
+func (x *Subchannel) GetSubchannelRef() []*SubchannelRef {
+	if x != nil {
+		return x.SubchannelRef
 	}
 	return nil
 }
 
-func (m *Subchannel) GetSocketRef() []*SocketRef {
-	if m != nil {
-		return m.SocketRef
+func (x *Subchannel) GetSocketRef() []*SocketRef {
+	if x != nil {
+		return x.SocketRef
 	}
 	return nil
 }
@@ -261,46 +345,58 @@
 // These come from the specified states in this document:
 // https://github.com/grpc/grpc/blob/master/doc/connectivity-semantics-and-api.md
 type ChannelConnectivityState struct {
-	State                ChannelConnectivityState_State `protobuf:"varint,1,opt,name=state,proto3,enum=grpc.channelz.v1.ChannelConnectivityState_State" json:"state,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                       `json:"-"`
-	XXX_unrecognized     []byte                         `json:"-"`
-	XXX_sizecache        int32                          `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	State ChannelConnectivityState_State `protobuf:"varint,1,opt,name=state,proto3,enum=grpc.channelz.v1.ChannelConnectivityState_State" json:"state,omitempty"`
 }
 
-func (m *ChannelConnectivityState) Reset()         { *m = ChannelConnectivityState{} }
-func (m *ChannelConnectivityState) String() string { return proto.CompactTextString(m) }
-func (*ChannelConnectivityState) ProtoMessage()    {}
+func (x *ChannelConnectivityState) Reset() {
+	*x = ChannelConnectivityState{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[2]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ChannelConnectivityState) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ChannelConnectivityState) ProtoMessage() {}
+
+func (x *ChannelConnectivityState) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[2]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ChannelConnectivityState.ProtoReflect.Descriptor instead.
 func (*ChannelConnectivityState) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{2}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{2}
 }
 
-func (m *ChannelConnectivityState) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ChannelConnectivityState.Unmarshal(m, b)
-}
-func (m *ChannelConnectivityState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ChannelConnectivityState.Marshal(b, m, deterministic)
-}
-func (m *ChannelConnectivityState) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ChannelConnectivityState.Merge(m, src)
-}
-func (m *ChannelConnectivityState) XXX_Size() int {
-	return xxx_messageInfo_ChannelConnectivityState.Size(m)
-}
-func (m *ChannelConnectivityState) XXX_DiscardUnknown() {
-	xxx_messageInfo_ChannelConnectivityState.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ChannelConnectivityState proto.InternalMessageInfo
-
-func (m *ChannelConnectivityState) GetState() ChannelConnectivityState_State {
-	if m != nil {
-		return m.State
+func (x *ChannelConnectivityState) GetState() ChannelConnectivityState_State {
+	if x != nil {
+		return x.State
 	}
 	return ChannelConnectivityState_UNKNOWN
 }
 
 // Channel data is data related to a specific Channel or Subchannel.
 type ChannelData struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The connectivity state of the channel or subchannel.  Implementations
 	// should always set this.
 	State *ChannelConnectivityState `protobuf:"bytes,1,opt,name=state,proto3" json:"state,omitempty"`
@@ -316,81 +412,85 @@
 	CallsFailed int64 `protobuf:"varint,6,opt,name=calls_failed,json=callsFailed,proto3" json:"calls_failed,omitempty"`
 	// The last time a call was started on the channel.
 	LastCallStartedTimestamp *timestamp.Timestamp `protobuf:"bytes,7,opt,name=last_call_started_timestamp,json=lastCallStartedTimestamp,proto3" json:"last_call_started_timestamp,omitempty"`
-	XXX_NoUnkeyedLiteral     struct{}             `json:"-"`
-	XXX_unrecognized         []byte               `json:"-"`
-	XXX_sizecache            int32                `json:"-"`
 }
 
-func (m *ChannelData) Reset()         { *m = ChannelData{} }
-func (m *ChannelData) String() string { return proto.CompactTextString(m) }
-func (*ChannelData) ProtoMessage()    {}
+func (x *ChannelData) Reset() {
+	*x = ChannelData{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[3]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ChannelData) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ChannelData) ProtoMessage() {}
+
+func (x *ChannelData) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[3]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ChannelData.ProtoReflect.Descriptor instead.
 func (*ChannelData) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{3}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{3}
 }
 
-func (m *ChannelData) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ChannelData.Unmarshal(m, b)
-}
-func (m *ChannelData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ChannelData.Marshal(b, m, deterministic)
-}
-func (m *ChannelData) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ChannelData.Merge(m, src)
-}
-func (m *ChannelData) XXX_Size() int {
-	return xxx_messageInfo_ChannelData.Size(m)
-}
-func (m *ChannelData) XXX_DiscardUnknown() {
-	xxx_messageInfo_ChannelData.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ChannelData proto.InternalMessageInfo
-
-func (m *ChannelData) GetState() *ChannelConnectivityState {
-	if m != nil {
-		return m.State
+func (x *ChannelData) GetState() *ChannelConnectivityState {
+	if x != nil {
+		return x.State
 	}
 	return nil
 }
 
-func (m *ChannelData) GetTarget() string {
-	if m != nil {
-		return m.Target
+func (x *ChannelData) GetTarget() string {
+	if x != nil {
+		return x.Target
 	}
 	return ""
 }
 
-func (m *ChannelData) GetTrace() *ChannelTrace {
-	if m != nil {
-		return m.Trace
+func (x *ChannelData) GetTrace() *ChannelTrace {
+	if x != nil {
+		return x.Trace
 	}
 	return nil
 }
 
-func (m *ChannelData) GetCallsStarted() int64 {
-	if m != nil {
-		return m.CallsStarted
+func (x *ChannelData) GetCallsStarted() int64 {
+	if x != nil {
+		return x.CallsStarted
 	}
 	return 0
 }
 
-func (m *ChannelData) GetCallsSucceeded() int64 {
-	if m != nil {
-		return m.CallsSucceeded
+func (x *ChannelData) GetCallsSucceeded() int64 {
+	if x != nil {
+		return x.CallsSucceeded
 	}
 	return 0
 }
 
-func (m *ChannelData) GetCallsFailed() int64 {
-	if m != nil {
-		return m.CallsFailed
+func (x *ChannelData) GetCallsFailed() int64 {
+	if x != nil {
+		return x.CallsFailed
 	}
 	return 0
 }
 
-func (m *ChannelData) GetLastCallStartedTimestamp() *timestamp.Timestamp {
-	if m != nil {
-		return m.LastCallStartedTimestamp
+func (x *ChannelData) GetLastCallStartedTimestamp() *timestamp.Timestamp {
+	if x != nil {
+		return x.LastCallStartedTimestamp
 	}
 	return nil
 }
@@ -398,6 +498,10 @@
 // A trace event is an interesting thing that happened to a channel or
 // subchannel, such as creation, address resolution, subchannel creation, etc.
 type ChannelTraceEvent struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// High level description of the event.
 	Description string `protobuf:"bytes,1,opt,name=description,proto3" json:"description,omitempty"`
 	// the severity of the trace event
@@ -409,57 +513,82 @@
 	// this field would be filled if this trace event was for a subchannel being
 	// created.
 	//
-	// Types that are valid to be assigned to ChildRef:
+	// Types that are assignable to ChildRef:
 	//	*ChannelTraceEvent_ChannelRef
 	//	*ChannelTraceEvent_SubchannelRef
-	ChildRef             isChannelTraceEvent_ChildRef `protobuf_oneof:"child_ref"`
-	XXX_NoUnkeyedLiteral struct{}                     `json:"-"`
-	XXX_unrecognized     []byte                       `json:"-"`
-	XXX_sizecache        int32                        `json:"-"`
+	ChildRef isChannelTraceEvent_ChildRef `protobuf_oneof:"child_ref"`
 }
 
-func (m *ChannelTraceEvent) Reset()         { *m = ChannelTraceEvent{} }
-func (m *ChannelTraceEvent) String() string { return proto.CompactTextString(m) }
-func (*ChannelTraceEvent) ProtoMessage()    {}
+func (x *ChannelTraceEvent) Reset() {
+	*x = ChannelTraceEvent{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[4]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ChannelTraceEvent) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ChannelTraceEvent) ProtoMessage() {}
+
+func (x *ChannelTraceEvent) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[4]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ChannelTraceEvent.ProtoReflect.Descriptor instead.
 func (*ChannelTraceEvent) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{4}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{4}
 }
 
-func (m *ChannelTraceEvent) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ChannelTraceEvent.Unmarshal(m, b)
-}
-func (m *ChannelTraceEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ChannelTraceEvent.Marshal(b, m, deterministic)
-}
-func (m *ChannelTraceEvent) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ChannelTraceEvent.Merge(m, src)
-}
-func (m *ChannelTraceEvent) XXX_Size() int {
-	return xxx_messageInfo_ChannelTraceEvent.Size(m)
-}
-func (m *ChannelTraceEvent) XXX_DiscardUnknown() {
-	xxx_messageInfo_ChannelTraceEvent.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ChannelTraceEvent proto.InternalMessageInfo
-
-func (m *ChannelTraceEvent) GetDescription() string {
-	if m != nil {
-		return m.Description
+func (x *ChannelTraceEvent) GetDescription() string {
+	if x != nil {
+		return x.Description
 	}
 	return ""
 }
 
-func (m *ChannelTraceEvent) GetSeverity() ChannelTraceEvent_Severity {
-	if m != nil {
-		return m.Severity
+func (x *ChannelTraceEvent) GetSeverity() ChannelTraceEvent_Severity {
+	if x != nil {
+		return x.Severity
 	}
 	return ChannelTraceEvent_CT_UNKNOWN
 }
 
-func (m *ChannelTraceEvent) GetTimestamp() *timestamp.Timestamp {
+func (x *ChannelTraceEvent) GetTimestamp() *timestamp.Timestamp {
+	if x != nil {
+		return x.Timestamp
+	}
+	return nil
+}
+
+func (m *ChannelTraceEvent) GetChildRef() isChannelTraceEvent_ChildRef {
 	if m != nil {
-		return m.Timestamp
+		return m.ChildRef
+	}
+	return nil
+}
+
+func (x *ChannelTraceEvent) GetChannelRef() *ChannelRef {
+	if x, ok := x.GetChildRef().(*ChannelTraceEvent_ChannelRef); ok {
+		return x.ChannelRef
+	}
+	return nil
+}
+
+func (x *ChannelTraceEvent) GetSubchannelRef() *SubchannelRef {
+	if x, ok := x.GetChildRef().(*ChannelTraceEvent_SubchannelRef); ok {
+		return x.SubchannelRef
 	}
 	return nil
 }
@@ -480,37 +609,12 @@
 
 func (*ChannelTraceEvent_SubchannelRef) isChannelTraceEvent_ChildRef() {}
 
-func (m *ChannelTraceEvent) GetChildRef() isChannelTraceEvent_ChildRef {
-	if m != nil {
-		return m.ChildRef
-	}
-	return nil
-}
-
-func (m *ChannelTraceEvent) GetChannelRef() *ChannelRef {
-	if x, ok := m.GetChildRef().(*ChannelTraceEvent_ChannelRef); ok {
-		return x.ChannelRef
-	}
-	return nil
-}
-
-func (m *ChannelTraceEvent) GetSubchannelRef() *SubchannelRef {
-	if x, ok := m.GetChildRef().(*ChannelTraceEvent_SubchannelRef); ok {
-		return x.SubchannelRef
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*ChannelTraceEvent) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*ChannelTraceEvent_ChannelRef)(nil),
-		(*ChannelTraceEvent_SubchannelRef)(nil),
-	}
-}
-
 // ChannelTrace represents the recent events that have occurred on the channel.
 type ChannelTrace struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Number of events ever logged in this tracing object. This can differ from
 	// events.size() because events can be overwritten or garbage collected by
 	// implementations.
@@ -518,254 +622,290 @@
 	// Time that this channel was created.
 	CreationTimestamp *timestamp.Timestamp `protobuf:"bytes,2,opt,name=creation_timestamp,json=creationTimestamp,proto3" json:"creation_timestamp,omitempty"`
 	// List of events that have occurred on this channel.
-	Events               []*ChannelTraceEvent `protobuf:"bytes,3,rep,name=events,proto3" json:"events,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
-	XXX_unrecognized     []byte               `json:"-"`
-	XXX_sizecache        int32                `json:"-"`
+	Events []*ChannelTraceEvent `protobuf:"bytes,3,rep,name=events,proto3" json:"events,omitempty"`
 }
 
-func (m *ChannelTrace) Reset()         { *m = ChannelTrace{} }
-func (m *ChannelTrace) String() string { return proto.CompactTextString(m) }
-func (*ChannelTrace) ProtoMessage()    {}
+func (x *ChannelTrace) Reset() {
+	*x = ChannelTrace{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[5]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ChannelTrace) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ChannelTrace) ProtoMessage() {}
+
+func (x *ChannelTrace) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[5]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ChannelTrace.ProtoReflect.Descriptor instead.
 func (*ChannelTrace) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{5}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{5}
 }
 
-func (m *ChannelTrace) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ChannelTrace.Unmarshal(m, b)
-}
-func (m *ChannelTrace) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ChannelTrace.Marshal(b, m, deterministic)
-}
-func (m *ChannelTrace) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ChannelTrace.Merge(m, src)
-}
-func (m *ChannelTrace) XXX_Size() int {
-	return xxx_messageInfo_ChannelTrace.Size(m)
-}
-func (m *ChannelTrace) XXX_DiscardUnknown() {
-	xxx_messageInfo_ChannelTrace.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ChannelTrace proto.InternalMessageInfo
-
-func (m *ChannelTrace) GetNumEventsLogged() int64 {
-	if m != nil {
-		return m.NumEventsLogged
+func (x *ChannelTrace) GetNumEventsLogged() int64 {
+	if x != nil {
+		return x.NumEventsLogged
 	}
 	return 0
 }
 
-func (m *ChannelTrace) GetCreationTimestamp() *timestamp.Timestamp {
-	if m != nil {
-		return m.CreationTimestamp
+func (x *ChannelTrace) GetCreationTimestamp() *timestamp.Timestamp {
+	if x != nil {
+		return x.CreationTimestamp
 	}
 	return nil
 }
 
-func (m *ChannelTrace) GetEvents() []*ChannelTraceEvent {
-	if m != nil {
-		return m.Events
+func (x *ChannelTrace) GetEvents() []*ChannelTraceEvent {
+	if x != nil {
+		return x.Events
 	}
 	return nil
 }
 
 // ChannelRef is a reference to a Channel.
 type ChannelRef struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The globally unique id for this channel.  Must be a positive number.
 	ChannelId int64 `protobuf:"varint,1,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"`
 	// An optional name associated with the channel.
-	Name                 string   `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
 }
 
-func (m *ChannelRef) Reset()         { *m = ChannelRef{} }
-func (m *ChannelRef) String() string { return proto.CompactTextString(m) }
-func (*ChannelRef) ProtoMessage()    {}
+func (x *ChannelRef) Reset() {
+	*x = ChannelRef{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[6]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ChannelRef) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ChannelRef) ProtoMessage() {}
+
+func (x *ChannelRef) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[6]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ChannelRef.ProtoReflect.Descriptor instead.
 func (*ChannelRef) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{6}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{6}
 }
 
-func (m *ChannelRef) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ChannelRef.Unmarshal(m, b)
-}
-func (m *ChannelRef) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ChannelRef.Marshal(b, m, deterministic)
-}
-func (m *ChannelRef) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ChannelRef.Merge(m, src)
-}
-func (m *ChannelRef) XXX_Size() int {
-	return xxx_messageInfo_ChannelRef.Size(m)
-}
-func (m *ChannelRef) XXX_DiscardUnknown() {
-	xxx_messageInfo_ChannelRef.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ChannelRef proto.InternalMessageInfo
-
-func (m *ChannelRef) GetChannelId() int64 {
-	if m != nil {
-		return m.ChannelId
+func (x *ChannelRef) GetChannelId() int64 {
+	if x != nil {
+		return x.ChannelId
 	}
 	return 0
 }
 
-func (m *ChannelRef) GetName() string {
-	if m != nil {
-		return m.Name
+func (x *ChannelRef) GetName() string {
+	if x != nil {
+		return x.Name
 	}
 	return ""
 }
 
 // SubchannelRef is a reference to a Subchannel.
 type SubchannelRef struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The globally unique id for this subchannel.  Must be a positive number.
 	SubchannelId int64 `protobuf:"varint,7,opt,name=subchannel_id,json=subchannelId,proto3" json:"subchannel_id,omitempty"`
 	// An optional name associated with the subchannel.
-	Name                 string   `protobuf:"bytes,8,opt,name=name,proto3" json:"name,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Name string `protobuf:"bytes,8,opt,name=name,proto3" json:"name,omitempty"`
 }
 
-func (m *SubchannelRef) Reset()         { *m = SubchannelRef{} }
-func (m *SubchannelRef) String() string { return proto.CompactTextString(m) }
-func (*SubchannelRef) ProtoMessage()    {}
+func (x *SubchannelRef) Reset() {
+	*x = SubchannelRef{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[7]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *SubchannelRef) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SubchannelRef) ProtoMessage() {}
+
+func (x *SubchannelRef) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[7]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SubchannelRef.ProtoReflect.Descriptor instead.
 func (*SubchannelRef) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{7}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{7}
 }
 
-func (m *SubchannelRef) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SubchannelRef.Unmarshal(m, b)
-}
-func (m *SubchannelRef) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SubchannelRef.Marshal(b, m, deterministic)
-}
-func (m *SubchannelRef) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SubchannelRef.Merge(m, src)
-}
-func (m *SubchannelRef) XXX_Size() int {
-	return xxx_messageInfo_SubchannelRef.Size(m)
-}
-func (m *SubchannelRef) XXX_DiscardUnknown() {
-	xxx_messageInfo_SubchannelRef.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SubchannelRef proto.InternalMessageInfo
-
-func (m *SubchannelRef) GetSubchannelId() int64 {
-	if m != nil {
-		return m.SubchannelId
+func (x *SubchannelRef) GetSubchannelId() int64 {
+	if x != nil {
+		return x.SubchannelId
 	}
 	return 0
 }
 
-func (m *SubchannelRef) GetName() string {
-	if m != nil {
-		return m.Name
+func (x *SubchannelRef) GetName() string {
+	if x != nil {
+		return x.Name
 	}
 	return ""
 }
 
 // SocketRef is a reference to a Socket.
 type SocketRef struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The globally unique id for this socket.  Must be a positive number.
 	SocketId int64 `protobuf:"varint,3,opt,name=socket_id,json=socketId,proto3" json:"socket_id,omitempty"`
 	// An optional name associated with the socket.
-	Name                 string   `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"`
 }
 
-func (m *SocketRef) Reset()         { *m = SocketRef{} }
-func (m *SocketRef) String() string { return proto.CompactTextString(m) }
-func (*SocketRef) ProtoMessage()    {}
+func (x *SocketRef) Reset() {
+	*x = SocketRef{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[8]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *SocketRef) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SocketRef) ProtoMessage() {}
+
+func (x *SocketRef) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[8]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SocketRef.ProtoReflect.Descriptor instead.
 func (*SocketRef) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{8}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{8}
 }
 
-func (m *SocketRef) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SocketRef.Unmarshal(m, b)
-}
-func (m *SocketRef) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SocketRef.Marshal(b, m, deterministic)
-}
-func (m *SocketRef) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SocketRef.Merge(m, src)
-}
-func (m *SocketRef) XXX_Size() int {
-	return xxx_messageInfo_SocketRef.Size(m)
-}
-func (m *SocketRef) XXX_DiscardUnknown() {
-	xxx_messageInfo_SocketRef.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SocketRef proto.InternalMessageInfo
-
-func (m *SocketRef) GetSocketId() int64 {
-	if m != nil {
-		return m.SocketId
+func (x *SocketRef) GetSocketId() int64 {
+	if x != nil {
+		return x.SocketId
 	}
 	return 0
 }
 
-func (m *SocketRef) GetName() string {
-	if m != nil {
-		return m.Name
+func (x *SocketRef) GetName() string {
+	if x != nil {
+		return x.Name
 	}
 	return ""
 }
 
 // ServerRef is a reference to a Server.
 type ServerRef struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// A globally unique identifier for this server.  Must be a positive number.
 	ServerId int64 `protobuf:"varint,5,opt,name=server_id,json=serverId,proto3" json:"server_id,omitempty"`
 	// An optional name associated with the server.
-	Name                 string   `protobuf:"bytes,6,opt,name=name,proto3" json:"name,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Name string `protobuf:"bytes,6,opt,name=name,proto3" json:"name,omitempty"`
 }
 
-func (m *ServerRef) Reset()         { *m = ServerRef{} }
-func (m *ServerRef) String() string { return proto.CompactTextString(m) }
-func (*ServerRef) ProtoMessage()    {}
+func (x *ServerRef) Reset() {
+	*x = ServerRef{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[9]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ServerRef) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ServerRef) ProtoMessage() {}
+
+func (x *ServerRef) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[9]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ServerRef.ProtoReflect.Descriptor instead.
 func (*ServerRef) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{9}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{9}
 }
 
-func (m *ServerRef) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ServerRef.Unmarshal(m, b)
-}
-func (m *ServerRef) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ServerRef.Marshal(b, m, deterministic)
-}
-func (m *ServerRef) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ServerRef.Merge(m, src)
-}
-func (m *ServerRef) XXX_Size() int {
-	return xxx_messageInfo_ServerRef.Size(m)
-}
-func (m *ServerRef) XXX_DiscardUnknown() {
-	xxx_messageInfo_ServerRef.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ServerRef proto.InternalMessageInfo
-
-func (m *ServerRef) GetServerId() int64 {
-	if m != nil {
-		return m.ServerId
+func (x *ServerRef) GetServerId() int64 {
+	if x != nil {
+		return x.ServerId
 	}
 	return 0
 }
 
-func (m *ServerRef) GetName() string {
-	if m != nil {
-		return m.Name
+func (x *ServerRef) GetName() string {
+	if x != nil {
+		return x.Name
 	}
 	return ""
 }
@@ -773,66 +913,78 @@
 // Server represents a single server.  There may be multiple servers in a single
 // program.
 type Server struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The identifier for a Server.  This should be set.
 	Ref *ServerRef `protobuf:"bytes,1,opt,name=ref,proto3" json:"ref,omitempty"`
 	// The associated data of the Server.
 	Data *ServerData `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
 	// The sockets that the server is listening on.  There are no ordering
 	// guarantees.  This may be absent.
-	ListenSocket         []*SocketRef `protobuf:"bytes,3,rep,name=listen_socket,json=listenSocket,proto3" json:"listen_socket,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
-	XXX_unrecognized     []byte       `json:"-"`
-	XXX_sizecache        int32        `json:"-"`
+	ListenSocket []*SocketRef `protobuf:"bytes,3,rep,name=listen_socket,json=listenSocket,proto3" json:"listen_socket,omitempty"`
 }
 
-func (m *Server) Reset()         { *m = Server{} }
-func (m *Server) String() string { return proto.CompactTextString(m) }
-func (*Server) ProtoMessage()    {}
+func (x *Server) Reset() {
+	*x = Server{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[10]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Server) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Server) ProtoMessage() {}
+
+func (x *Server) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[10]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Server.ProtoReflect.Descriptor instead.
 func (*Server) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{10}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{10}
 }
 
-func (m *Server) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Server.Unmarshal(m, b)
-}
-func (m *Server) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Server.Marshal(b, m, deterministic)
-}
-func (m *Server) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Server.Merge(m, src)
-}
-func (m *Server) XXX_Size() int {
-	return xxx_messageInfo_Server.Size(m)
-}
-func (m *Server) XXX_DiscardUnknown() {
-	xxx_messageInfo_Server.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Server proto.InternalMessageInfo
-
-func (m *Server) GetRef() *ServerRef {
-	if m != nil {
-		return m.Ref
+func (x *Server) GetRef() *ServerRef {
+	if x != nil {
+		return x.Ref
 	}
 	return nil
 }
 
-func (m *Server) GetData() *ServerData {
-	if m != nil {
-		return m.Data
+func (x *Server) GetData() *ServerData {
+	if x != nil {
+		return x.Data
 	}
 	return nil
 }
 
-func (m *Server) GetListenSocket() []*SocketRef {
-	if m != nil {
-		return m.ListenSocket
+func (x *Server) GetListenSocket() []*SocketRef {
+	if x != nil {
+		return x.ListenSocket
 	}
 	return nil
 }
 
 // ServerData is data for a specific Server.
 type ServerData struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// A trace of recent events on the server.  May be absent.
 	Trace *ChannelTrace `protobuf:"bytes,1,opt,name=trace,proto3" json:"trace,omitempty"`
 	// The number of incoming calls started on the server
@@ -843,73 +995,81 @@
 	CallsFailed int64 `protobuf:"varint,4,opt,name=calls_failed,json=callsFailed,proto3" json:"calls_failed,omitempty"`
 	// The last time a call was started on the server.
 	LastCallStartedTimestamp *timestamp.Timestamp `protobuf:"bytes,5,opt,name=last_call_started_timestamp,json=lastCallStartedTimestamp,proto3" json:"last_call_started_timestamp,omitempty"`
-	XXX_NoUnkeyedLiteral     struct{}             `json:"-"`
-	XXX_unrecognized         []byte               `json:"-"`
-	XXX_sizecache            int32                `json:"-"`
 }
 
-func (m *ServerData) Reset()         { *m = ServerData{} }
-func (m *ServerData) String() string { return proto.CompactTextString(m) }
-func (*ServerData) ProtoMessage()    {}
+func (x *ServerData) Reset() {
+	*x = ServerData{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[11]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ServerData) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ServerData) ProtoMessage() {}
+
+func (x *ServerData) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[11]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ServerData.ProtoReflect.Descriptor instead.
 func (*ServerData) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{11}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{11}
 }
 
-func (m *ServerData) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ServerData.Unmarshal(m, b)
-}
-func (m *ServerData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ServerData.Marshal(b, m, deterministic)
-}
-func (m *ServerData) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ServerData.Merge(m, src)
-}
-func (m *ServerData) XXX_Size() int {
-	return xxx_messageInfo_ServerData.Size(m)
-}
-func (m *ServerData) XXX_DiscardUnknown() {
-	xxx_messageInfo_ServerData.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ServerData proto.InternalMessageInfo
-
-func (m *ServerData) GetTrace() *ChannelTrace {
-	if m != nil {
-		return m.Trace
+func (x *ServerData) GetTrace() *ChannelTrace {
+	if x != nil {
+		return x.Trace
 	}
 	return nil
 }
 
-func (m *ServerData) GetCallsStarted() int64 {
-	if m != nil {
-		return m.CallsStarted
+func (x *ServerData) GetCallsStarted() int64 {
+	if x != nil {
+		return x.CallsStarted
 	}
 	return 0
 }
 
-func (m *ServerData) GetCallsSucceeded() int64 {
-	if m != nil {
-		return m.CallsSucceeded
+func (x *ServerData) GetCallsSucceeded() int64 {
+	if x != nil {
+		return x.CallsSucceeded
 	}
 	return 0
 }
 
-func (m *ServerData) GetCallsFailed() int64 {
-	if m != nil {
-		return m.CallsFailed
+func (x *ServerData) GetCallsFailed() int64 {
+	if x != nil {
+		return x.CallsFailed
 	}
 	return 0
 }
 
-func (m *ServerData) GetLastCallStartedTimestamp() *timestamp.Timestamp {
-	if m != nil {
-		return m.LastCallStartedTimestamp
+func (x *ServerData) GetLastCallStartedTimestamp() *timestamp.Timestamp {
+	if x != nil {
+		return x.LastCallStartedTimestamp
 	}
 	return nil
 }
 
 // Information about an actual connection.  Pronounced "sock-ay".
 type Socket struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The identifier for the Socket.
 	Ref *SocketRef `protobuf:"bytes,1,opt,name=ref,proto3" json:"ref,omitempty"`
 	// Data specific to this Socket.
@@ -923,75 +1083,79 @@
 	Security *Security `protobuf:"bytes,5,opt,name=security,proto3" json:"security,omitempty"`
 	// Optional, represents the name of the remote endpoint, if different than
 	// the original target name.
-	RemoteName           string   `protobuf:"bytes,6,opt,name=remote_name,json=remoteName,proto3" json:"remote_name,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	RemoteName string `protobuf:"bytes,6,opt,name=remote_name,json=remoteName,proto3" json:"remote_name,omitempty"`
 }
 
-func (m *Socket) Reset()         { *m = Socket{} }
-func (m *Socket) String() string { return proto.CompactTextString(m) }
-func (*Socket) ProtoMessage()    {}
+func (x *Socket) Reset() {
+	*x = Socket{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[12]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Socket) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Socket) ProtoMessage() {}
+
+func (x *Socket) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[12]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Socket.ProtoReflect.Descriptor instead.
 func (*Socket) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{12}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{12}
 }
 
-func (m *Socket) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Socket.Unmarshal(m, b)
-}
-func (m *Socket) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Socket.Marshal(b, m, deterministic)
-}
-func (m *Socket) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Socket.Merge(m, src)
-}
-func (m *Socket) XXX_Size() int {
-	return xxx_messageInfo_Socket.Size(m)
-}
-func (m *Socket) XXX_DiscardUnknown() {
-	xxx_messageInfo_Socket.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Socket proto.InternalMessageInfo
-
-func (m *Socket) GetRef() *SocketRef {
-	if m != nil {
-		return m.Ref
+func (x *Socket) GetRef() *SocketRef {
+	if x != nil {
+		return x.Ref
 	}
 	return nil
 }
 
-func (m *Socket) GetData() *SocketData {
-	if m != nil {
-		return m.Data
+func (x *Socket) GetData() *SocketData {
+	if x != nil {
+		return x.Data
 	}
 	return nil
 }
 
-func (m *Socket) GetLocal() *Address {
-	if m != nil {
-		return m.Local
+func (x *Socket) GetLocal() *Address {
+	if x != nil {
+		return x.Local
 	}
 	return nil
 }
 
-func (m *Socket) GetRemote() *Address {
-	if m != nil {
-		return m.Remote
+func (x *Socket) GetRemote() *Address {
+	if x != nil {
+		return x.Remote
 	}
 	return nil
 }
 
-func (m *Socket) GetSecurity() *Security {
-	if m != nil {
-		return m.Security
+func (x *Socket) GetSecurity() *Security {
+	if x != nil {
+		return x.Security
 	}
 	return nil
 }
 
-func (m *Socket) GetRemoteName() string {
-	if m != nil {
-		return m.RemoteName
+func (x *Socket) GetRemoteName() string {
+	if x != nil {
+		return x.RemoteName
 	}
 	return ""
 }
@@ -1000,6 +1164,10 @@
 // are specific to the implementation, so there may be minor differences in
 // the semantics.  (e.g. flow control windows)
 type SocketData struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The number of streams that have been started.
 	StreamsStarted int64 `protobuf:"varint,1,opt,name=streams_started,json=streamsStarted,proto3" json:"streams_started,omitempty"`
 	// The number of streams that have ended successfully:
@@ -1037,164 +1205,204 @@
 	RemoteFlowControlWindow *wrappers.Int64Value `protobuf:"bytes,12,opt,name=remote_flow_control_window,json=remoteFlowControlWindow,proto3" json:"remote_flow_control_window,omitempty"`
 	// Socket options set on this socket.  May be absent if 'summary' is set
 	// on GetSocketRequest.
-	Option               []*SocketOption `protobuf:"bytes,13,rep,name=option,proto3" json:"option,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
-	XXX_unrecognized     []byte          `json:"-"`
-	XXX_sizecache        int32           `json:"-"`
+	Option []*SocketOption `protobuf:"bytes,13,rep,name=option,proto3" json:"option,omitempty"`
 }
 
-func (m *SocketData) Reset()         { *m = SocketData{} }
-func (m *SocketData) String() string { return proto.CompactTextString(m) }
-func (*SocketData) ProtoMessage()    {}
+func (x *SocketData) Reset() {
+	*x = SocketData{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[13]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *SocketData) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SocketData) ProtoMessage() {}
+
+func (x *SocketData) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[13]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SocketData.ProtoReflect.Descriptor instead.
 func (*SocketData) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{13}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{13}
 }
 
-func (m *SocketData) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SocketData.Unmarshal(m, b)
-}
-func (m *SocketData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SocketData.Marshal(b, m, deterministic)
-}
-func (m *SocketData) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SocketData.Merge(m, src)
-}
-func (m *SocketData) XXX_Size() int {
-	return xxx_messageInfo_SocketData.Size(m)
-}
-func (m *SocketData) XXX_DiscardUnknown() {
-	xxx_messageInfo_SocketData.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SocketData proto.InternalMessageInfo
-
-func (m *SocketData) GetStreamsStarted() int64 {
-	if m != nil {
-		return m.StreamsStarted
+func (x *SocketData) GetStreamsStarted() int64 {
+	if x != nil {
+		return x.StreamsStarted
 	}
 	return 0
 }
 
-func (m *SocketData) GetStreamsSucceeded() int64 {
-	if m != nil {
-		return m.StreamsSucceeded
+func (x *SocketData) GetStreamsSucceeded() int64 {
+	if x != nil {
+		return x.StreamsSucceeded
 	}
 	return 0
 }
 
-func (m *SocketData) GetStreamsFailed() int64 {
-	if m != nil {
-		return m.StreamsFailed
+func (x *SocketData) GetStreamsFailed() int64 {
+	if x != nil {
+		return x.StreamsFailed
 	}
 	return 0
 }
 
-func (m *SocketData) GetMessagesSent() int64 {
-	if m != nil {
-		return m.MessagesSent
+func (x *SocketData) GetMessagesSent() int64 {
+	if x != nil {
+		return x.MessagesSent
 	}
 	return 0
 }
 
-func (m *SocketData) GetMessagesReceived() int64 {
-	if m != nil {
-		return m.MessagesReceived
+func (x *SocketData) GetMessagesReceived() int64 {
+	if x != nil {
+		return x.MessagesReceived
 	}
 	return 0
 }
 
-func (m *SocketData) GetKeepAlivesSent() int64 {
-	if m != nil {
-		return m.KeepAlivesSent
+func (x *SocketData) GetKeepAlivesSent() int64 {
+	if x != nil {
+		return x.KeepAlivesSent
 	}
 	return 0
 }
 
-func (m *SocketData) GetLastLocalStreamCreatedTimestamp() *timestamp.Timestamp {
-	if m != nil {
-		return m.LastLocalStreamCreatedTimestamp
+func (x *SocketData) GetLastLocalStreamCreatedTimestamp() *timestamp.Timestamp {
+	if x != nil {
+		return x.LastLocalStreamCreatedTimestamp
 	}
 	return nil
 }
 
-func (m *SocketData) GetLastRemoteStreamCreatedTimestamp() *timestamp.Timestamp {
-	if m != nil {
-		return m.LastRemoteStreamCreatedTimestamp
+func (x *SocketData) GetLastRemoteStreamCreatedTimestamp() *timestamp.Timestamp {
+	if x != nil {
+		return x.LastRemoteStreamCreatedTimestamp
 	}
 	return nil
 }
 
-func (m *SocketData) GetLastMessageSentTimestamp() *timestamp.Timestamp {
-	if m != nil {
-		return m.LastMessageSentTimestamp
+func (x *SocketData) GetLastMessageSentTimestamp() *timestamp.Timestamp {
+	if x != nil {
+		return x.LastMessageSentTimestamp
 	}
 	return nil
 }
 
-func (m *SocketData) GetLastMessageReceivedTimestamp() *timestamp.Timestamp {
-	if m != nil {
-		return m.LastMessageReceivedTimestamp
+func (x *SocketData) GetLastMessageReceivedTimestamp() *timestamp.Timestamp {
+	if x != nil {
+		return x.LastMessageReceivedTimestamp
 	}
 	return nil
 }
 
-func (m *SocketData) GetLocalFlowControlWindow() *wrappers.Int64Value {
-	if m != nil {
-		return m.LocalFlowControlWindow
+func (x *SocketData) GetLocalFlowControlWindow() *wrappers.Int64Value {
+	if x != nil {
+		return x.LocalFlowControlWindow
 	}
 	return nil
 }
 
-func (m *SocketData) GetRemoteFlowControlWindow() *wrappers.Int64Value {
-	if m != nil {
-		return m.RemoteFlowControlWindow
+func (x *SocketData) GetRemoteFlowControlWindow() *wrappers.Int64Value {
+	if x != nil {
+		return x.RemoteFlowControlWindow
 	}
 	return nil
 }
 
-func (m *SocketData) GetOption() []*SocketOption {
-	if m != nil {
-		return m.Option
+func (x *SocketData) GetOption() []*SocketOption {
+	if x != nil {
+		return x.Option
 	}
 	return nil
 }
 
 // Address represents the address used to create the socket.
 type Address struct {
-	// Types that are valid to be assigned to Address:
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// Types that are assignable to Address:
 	//	*Address_TcpipAddress
 	//	*Address_UdsAddress_
 	//	*Address_OtherAddress_
-	Address              isAddress_Address `protobuf_oneof:"address"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
+	Address isAddress_Address `protobuf_oneof:"address"`
 }
 
-func (m *Address) Reset()         { *m = Address{} }
-func (m *Address) String() string { return proto.CompactTextString(m) }
-func (*Address) ProtoMessage()    {}
+func (x *Address) Reset() {
+	*x = Address{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[14]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Address) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Address) ProtoMessage() {}
+
+func (x *Address) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[14]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Address.ProtoReflect.Descriptor instead.
 func (*Address) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{14}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{14}
 }
 
-func (m *Address) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Address.Unmarshal(m, b)
-}
-func (m *Address) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Address.Marshal(b, m, deterministic)
-}
-func (m *Address) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Address.Merge(m, src)
-}
-func (m *Address) XXX_Size() int {
-	return xxx_messageInfo_Address.Size(m)
-}
-func (m *Address) XXX_DiscardUnknown() {
-	xxx_messageInfo_Address.DiscardUnknown(m)
+func (m *Address) GetAddress() isAddress_Address {
+	if m != nil {
+		return m.Address
+	}
+	return nil
 }
 
-var xxx_messageInfo_Address proto.InternalMessageInfo
+func (x *Address) GetTcpipAddress() *Address_TcpIpAddress {
+	if x, ok := x.GetAddress().(*Address_TcpipAddress); ok {
+		return x.TcpipAddress
+	}
+	return nil
+}
+
+func (x *Address) GetUdsAddress() *Address_UdsAddress {
+	if x, ok := x.GetAddress().(*Address_UdsAddress_); ok {
+		return x.UdsAddress
+	}
+	return nil
+}
+
+func (x *Address) GetOtherAddress() *Address_OtherAddress {
+	if x, ok := x.GetAddress().(*Address_OtherAddress_); ok {
+		return x.OtherAddress
+	}
+	return nil
+}
 
 type isAddress_Address interface {
 	isAddress_Address()
@@ -1218,218 +1426,70 @@
 
 func (*Address_OtherAddress_) isAddress_Address() {}
 
-func (m *Address) GetAddress() isAddress_Address {
-	if m != nil {
-		return m.Address
-	}
-	return nil
-}
-
-func (m *Address) GetTcpipAddress() *Address_TcpIpAddress {
-	if x, ok := m.GetAddress().(*Address_TcpipAddress); ok {
-		return x.TcpipAddress
-	}
-	return nil
-}
-
-func (m *Address) GetUdsAddress() *Address_UdsAddress {
-	if x, ok := m.GetAddress().(*Address_UdsAddress_); ok {
-		return x.UdsAddress
-	}
-	return nil
-}
-
-func (m *Address) GetOtherAddress() *Address_OtherAddress {
-	if x, ok := m.GetAddress().(*Address_OtherAddress_); ok {
-		return x.OtherAddress
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*Address) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*Address_TcpipAddress)(nil),
-		(*Address_UdsAddress_)(nil),
-		(*Address_OtherAddress_)(nil),
-	}
-}
-
-type Address_TcpIpAddress struct {
-	// Either the IPv4 or IPv6 address in bytes.  Will be either 4 bytes or 16
-	// bytes in length.
-	IpAddress []byte `protobuf:"bytes,1,opt,name=ip_address,json=ipAddress,proto3" json:"ip_address,omitempty"`
-	// 0-64k, or -1 if not appropriate.
-	Port                 int32    `protobuf:"varint,2,opt,name=port,proto3" json:"port,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Address_TcpIpAddress) Reset()         { *m = Address_TcpIpAddress{} }
-func (m *Address_TcpIpAddress) String() string { return proto.CompactTextString(m) }
-func (*Address_TcpIpAddress) ProtoMessage()    {}
-func (*Address_TcpIpAddress) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{14, 0}
-}
-
-func (m *Address_TcpIpAddress) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Address_TcpIpAddress.Unmarshal(m, b)
-}
-func (m *Address_TcpIpAddress) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Address_TcpIpAddress.Marshal(b, m, deterministic)
-}
-func (m *Address_TcpIpAddress) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Address_TcpIpAddress.Merge(m, src)
-}
-func (m *Address_TcpIpAddress) XXX_Size() int {
-	return xxx_messageInfo_Address_TcpIpAddress.Size(m)
-}
-func (m *Address_TcpIpAddress) XXX_DiscardUnknown() {
-	xxx_messageInfo_Address_TcpIpAddress.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Address_TcpIpAddress proto.InternalMessageInfo
-
-func (m *Address_TcpIpAddress) GetIpAddress() []byte {
-	if m != nil {
-		return m.IpAddress
-	}
-	return nil
-}
-
-func (m *Address_TcpIpAddress) GetPort() int32 {
-	if m != nil {
-		return m.Port
-	}
-	return 0
-}
-
-// A Unix Domain Socket address.
-type Address_UdsAddress struct {
-	Filename             string   `protobuf:"bytes,1,opt,name=filename,proto3" json:"filename,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Address_UdsAddress) Reset()         { *m = Address_UdsAddress{} }
-func (m *Address_UdsAddress) String() string { return proto.CompactTextString(m) }
-func (*Address_UdsAddress) ProtoMessage()    {}
-func (*Address_UdsAddress) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{14, 1}
-}
-
-func (m *Address_UdsAddress) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Address_UdsAddress.Unmarshal(m, b)
-}
-func (m *Address_UdsAddress) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Address_UdsAddress.Marshal(b, m, deterministic)
-}
-func (m *Address_UdsAddress) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Address_UdsAddress.Merge(m, src)
-}
-func (m *Address_UdsAddress) XXX_Size() int {
-	return xxx_messageInfo_Address_UdsAddress.Size(m)
-}
-func (m *Address_UdsAddress) XXX_DiscardUnknown() {
-	xxx_messageInfo_Address_UdsAddress.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Address_UdsAddress proto.InternalMessageInfo
-
-func (m *Address_UdsAddress) GetFilename() string {
-	if m != nil {
-		return m.Filename
-	}
-	return ""
-}
-
-// An address type not included above.
-type Address_OtherAddress struct {
-	// The human readable version of the value.  This value should be set.
-	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
-	// The actual address message.
-	Value                *any.Any `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Address_OtherAddress) Reset()         { *m = Address_OtherAddress{} }
-func (m *Address_OtherAddress) String() string { return proto.CompactTextString(m) }
-func (*Address_OtherAddress) ProtoMessage()    {}
-func (*Address_OtherAddress) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{14, 2}
-}
-
-func (m *Address_OtherAddress) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Address_OtherAddress.Unmarshal(m, b)
-}
-func (m *Address_OtherAddress) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Address_OtherAddress.Marshal(b, m, deterministic)
-}
-func (m *Address_OtherAddress) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Address_OtherAddress.Merge(m, src)
-}
-func (m *Address_OtherAddress) XXX_Size() int {
-	return xxx_messageInfo_Address_OtherAddress.Size(m)
-}
-func (m *Address_OtherAddress) XXX_DiscardUnknown() {
-	xxx_messageInfo_Address_OtherAddress.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Address_OtherAddress proto.InternalMessageInfo
-
-func (m *Address_OtherAddress) GetName() string {
-	if m != nil {
-		return m.Name
-	}
-	return ""
-}
-
-func (m *Address_OtherAddress) GetValue() *any.Any {
-	if m != nil {
-		return m.Value
-	}
-	return nil
-}
-
 // Security represents details about how secure the socket is.
 type Security struct {
-	// Types that are valid to be assigned to Model:
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// Types that are assignable to Model:
 	//	*Security_Tls_
 	//	*Security_Other
-	Model                isSecurity_Model `protobuf_oneof:"model"`
-	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
-	XXX_unrecognized     []byte           `json:"-"`
-	XXX_sizecache        int32            `json:"-"`
+	Model isSecurity_Model `protobuf_oneof:"model"`
 }
 
-func (m *Security) Reset()         { *m = Security{} }
-func (m *Security) String() string { return proto.CompactTextString(m) }
-func (*Security) ProtoMessage()    {}
+func (x *Security) Reset() {
+	*x = Security{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[15]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Security) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Security) ProtoMessage() {}
+
+func (x *Security) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[15]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Security.ProtoReflect.Descriptor instead.
 func (*Security) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{15}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{15}
 }
 
-func (m *Security) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Security.Unmarshal(m, b)
-}
-func (m *Security) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Security.Marshal(b, m, deterministic)
-}
-func (m *Security) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Security.Merge(m, src)
-}
-func (m *Security) XXX_Size() int {
-	return xxx_messageInfo_Security.Size(m)
-}
-func (m *Security) XXX_DiscardUnknown() {
-	xxx_messageInfo_Security.DiscardUnknown(m)
+func (m *Security) GetModel() isSecurity_Model {
+	if m != nil {
+		return m.Model
+	}
+	return nil
 }
 
-var xxx_messageInfo_Security proto.InternalMessageInfo
+func (x *Security) GetTls() *Security_Tls {
+	if x, ok := x.GetModel().(*Security_Tls_); ok {
+		return x.Tls
+	}
+	return nil
+}
+
+func (x *Security) GetOther() *Security_OtherSecurity {
+	if x, ok := x.GetModel().(*Security_Other); ok {
+		return x.Other
+	}
+	return nil
+}
 
 type isSecurity_Model interface {
 	isSecurity_Model()
@@ -1447,185 +1507,13 @@
 
 func (*Security_Other) isSecurity_Model() {}
 
-func (m *Security) GetModel() isSecurity_Model {
-	if m != nil {
-		return m.Model
-	}
-	return nil
-}
-
-func (m *Security) GetTls() *Security_Tls {
-	if x, ok := m.GetModel().(*Security_Tls_); ok {
-		return x.Tls
-	}
-	return nil
-}
-
-func (m *Security) GetOther() *Security_OtherSecurity {
-	if x, ok := m.GetModel().(*Security_Other); ok {
-		return x.Other
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*Security) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*Security_Tls_)(nil),
-		(*Security_Other)(nil),
-	}
-}
-
-type Security_Tls struct {
-	// Types that are valid to be assigned to CipherSuite:
-	//	*Security_Tls_StandardName
-	//	*Security_Tls_OtherName
-	CipherSuite isSecurity_Tls_CipherSuite `protobuf_oneof:"cipher_suite"`
-	// the certificate used by this endpoint.
-	LocalCertificate []byte `protobuf:"bytes,3,opt,name=local_certificate,json=localCertificate,proto3" json:"local_certificate,omitempty"`
-	// the certificate used by the remote endpoint.
-	RemoteCertificate    []byte   `protobuf:"bytes,4,opt,name=remote_certificate,json=remoteCertificate,proto3" json:"remote_certificate,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Security_Tls) Reset()         { *m = Security_Tls{} }
-func (m *Security_Tls) String() string { return proto.CompactTextString(m) }
-func (*Security_Tls) ProtoMessage()    {}
-func (*Security_Tls) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{15, 0}
-}
-
-func (m *Security_Tls) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Security_Tls.Unmarshal(m, b)
-}
-func (m *Security_Tls) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Security_Tls.Marshal(b, m, deterministic)
-}
-func (m *Security_Tls) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Security_Tls.Merge(m, src)
-}
-func (m *Security_Tls) XXX_Size() int {
-	return xxx_messageInfo_Security_Tls.Size(m)
-}
-func (m *Security_Tls) XXX_DiscardUnknown() {
-	xxx_messageInfo_Security_Tls.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Security_Tls proto.InternalMessageInfo
-
-type isSecurity_Tls_CipherSuite interface {
-	isSecurity_Tls_CipherSuite()
-}
-
-type Security_Tls_StandardName struct {
-	StandardName string `protobuf:"bytes,1,opt,name=standard_name,json=standardName,proto3,oneof"`
-}
-
-type Security_Tls_OtherName struct {
-	OtherName string `protobuf:"bytes,2,opt,name=other_name,json=otherName,proto3,oneof"`
-}
-
-func (*Security_Tls_StandardName) isSecurity_Tls_CipherSuite() {}
-
-func (*Security_Tls_OtherName) isSecurity_Tls_CipherSuite() {}
-
-func (m *Security_Tls) GetCipherSuite() isSecurity_Tls_CipherSuite {
-	if m != nil {
-		return m.CipherSuite
-	}
-	return nil
-}
-
-func (m *Security_Tls) GetStandardName() string {
-	if x, ok := m.GetCipherSuite().(*Security_Tls_StandardName); ok {
-		return x.StandardName
-	}
-	return ""
-}
-
-func (m *Security_Tls) GetOtherName() string {
-	if x, ok := m.GetCipherSuite().(*Security_Tls_OtherName); ok {
-		return x.OtherName
-	}
-	return ""
-}
-
-func (m *Security_Tls) GetLocalCertificate() []byte {
-	if m != nil {
-		return m.LocalCertificate
-	}
-	return nil
-}
-
-func (m *Security_Tls) GetRemoteCertificate() []byte {
-	if m != nil {
-		return m.RemoteCertificate
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*Security_Tls) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*Security_Tls_StandardName)(nil),
-		(*Security_Tls_OtherName)(nil),
-	}
-}
-
-type Security_OtherSecurity struct {
-	// The human readable version of the value.
-	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
-	// The actual security details message.
-	Value                *any.Any `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Security_OtherSecurity) Reset()         { *m = Security_OtherSecurity{} }
-func (m *Security_OtherSecurity) String() string { return proto.CompactTextString(m) }
-func (*Security_OtherSecurity) ProtoMessage()    {}
-func (*Security_OtherSecurity) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{15, 1}
-}
-
-func (m *Security_OtherSecurity) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Security_OtherSecurity.Unmarshal(m, b)
-}
-func (m *Security_OtherSecurity) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Security_OtherSecurity.Marshal(b, m, deterministic)
-}
-func (m *Security_OtherSecurity) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Security_OtherSecurity.Merge(m, src)
-}
-func (m *Security_OtherSecurity) XXX_Size() int {
-	return xxx_messageInfo_Security_OtherSecurity.Size(m)
-}
-func (m *Security_OtherSecurity) XXX_DiscardUnknown() {
-	xxx_messageInfo_Security_OtherSecurity.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Security_OtherSecurity proto.InternalMessageInfo
-
-func (m *Security_OtherSecurity) GetName() string {
-	if m != nil {
-		return m.Name
-	}
-	return ""
-}
-
-func (m *Security_OtherSecurity) GetValue() *any.Any {
-	if m != nil {
-		return m.Value
-	}
-	return nil
-}
-
 // SocketOption represents socket options for a socket.  Specifically, these
 // are the options returned by getsockopt().
 type SocketOption struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The full name of the socket option.  Typically this will be the upper case
 	// name, such as "SO_REUSEPORT".
 	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
@@ -1634,54 +1522,58 @@
 	Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
 	// Additional data associated with the socket option.  At least one of value
 	// or additional will be set.
-	Additional           *any.Any `protobuf:"bytes,3,opt,name=additional,proto3" json:"additional,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Additional *any.Any `protobuf:"bytes,3,opt,name=additional,proto3" json:"additional,omitempty"`
 }
 
-func (m *SocketOption) Reset()         { *m = SocketOption{} }
-func (m *SocketOption) String() string { return proto.CompactTextString(m) }
-func (*SocketOption) ProtoMessage()    {}
+func (x *SocketOption) Reset() {
+	*x = SocketOption{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[16]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *SocketOption) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SocketOption) ProtoMessage() {}
+
+func (x *SocketOption) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[16]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SocketOption.ProtoReflect.Descriptor instead.
 func (*SocketOption) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{16}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{16}
 }
 
-func (m *SocketOption) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SocketOption.Unmarshal(m, b)
-}
-func (m *SocketOption) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SocketOption.Marshal(b, m, deterministic)
-}
-func (m *SocketOption) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SocketOption.Merge(m, src)
-}
-func (m *SocketOption) XXX_Size() int {
-	return xxx_messageInfo_SocketOption.Size(m)
-}
-func (m *SocketOption) XXX_DiscardUnknown() {
-	xxx_messageInfo_SocketOption.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SocketOption proto.InternalMessageInfo
-
-func (m *SocketOption) GetName() string {
-	if m != nil {
-		return m.Name
+func (x *SocketOption) GetName() string {
+	if x != nil {
+		return x.Name
 	}
 	return ""
 }
 
-func (m *SocketOption) GetValue() string {
-	if m != nil {
-		return m.Value
+func (x *SocketOption) GetValue() string {
+	if x != nil {
+		return x.Value
 	}
 	return ""
 }
 
-func (m *SocketOption) GetAdditional() *any.Any {
-	if m != nil {
-		return m.Additional
+func (x *SocketOption) GetAdditional() *any.Any {
+	if x != nil {
+		return x.Additional
 	}
 	return nil
 }
@@ -1689,40 +1581,48 @@
 // For use with SocketOption's additional field.  This is primarily used for
 // SO_RCVTIMEO and SO_SNDTIMEO
 type SocketOptionTimeout struct {
-	Duration             *duration.Duration `protobuf:"bytes,1,opt,name=duration,proto3" json:"duration,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
-	XXX_unrecognized     []byte             `json:"-"`
-	XXX_sizecache        int32              `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Duration *duration.Duration `protobuf:"bytes,1,opt,name=duration,proto3" json:"duration,omitempty"`
 }
 
-func (m *SocketOptionTimeout) Reset()         { *m = SocketOptionTimeout{} }
-func (m *SocketOptionTimeout) String() string { return proto.CompactTextString(m) }
-func (*SocketOptionTimeout) ProtoMessage()    {}
+func (x *SocketOptionTimeout) Reset() {
+	*x = SocketOptionTimeout{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[17]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *SocketOptionTimeout) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SocketOptionTimeout) ProtoMessage() {}
+
+func (x *SocketOptionTimeout) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[17]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SocketOptionTimeout.ProtoReflect.Descriptor instead.
 func (*SocketOptionTimeout) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{17}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{17}
 }
 
-func (m *SocketOptionTimeout) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SocketOptionTimeout.Unmarshal(m, b)
-}
-func (m *SocketOptionTimeout) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SocketOptionTimeout.Marshal(b, m, deterministic)
-}
-func (m *SocketOptionTimeout) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SocketOptionTimeout.Merge(m, src)
-}
-func (m *SocketOptionTimeout) XXX_Size() int {
-	return xxx_messageInfo_SocketOptionTimeout.Size(m)
-}
-func (m *SocketOptionTimeout) XXX_DiscardUnknown() {
-	xxx_messageInfo_SocketOptionTimeout.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SocketOptionTimeout proto.InternalMessageInfo
-
-func (m *SocketOptionTimeout) GetDuration() *duration.Duration {
-	if m != nil {
-		return m.Duration
+func (x *SocketOptionTimeout) GetDuration() *duration.Duration {
+	if x != nil {
+		return x.Duration
 	}
 	return nil
 }
@@ -1730,50 +1630,58 @@
 // For use with SocketOption's additional field.  This is primarily used for
 // SO_LINGER.
 type SocketOptionLinger struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// active maps to `struct linger.l_onoff`
 	Active bool `protobuf:"varint,1,opt,name=active,proto3" json:"active,omitempty"`
 	// duration maps to `struct linger.l_linger`
-	Duration             *duration.Duration `protobuf:"bytes,2,opt,name=duration,proto3" json:"duration,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
-	XXX_unrecognized     []byte             `json:"-"`
-	XXX_sizecache        int32              `json:"-"`
+	Duration *duration.Duration `protobuf:"bytes,2,opt,name=duration,proto3" json:"duration,omitempty"`
 }
 
-func (m *SocketOptionLinger) Reset()         { *m = SocketOptionLinger{} }
-func (m *SocketOptionLinger) String() string { return proto.CompactTextString(m) }
-func (*SocketOptionLinger) ProtoMessage()    {}
+func (x *SocketOptionLinger) Reset() {
+	*x = SocketOptionLinger{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[18]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *SocketOptionLinger) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SocketOptionLinger) ProtoMessage() {}
+
+func (x *SocketOptionLinger) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[18]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SocketOptionLinger.ProtoReflect.Descriptor instead.
 func (*SocketOptionLinger) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{18}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{18}
 }
 
-func (m *SocketOptionLinger) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SocketOptionLinger.Unmarshal(m, b)
-}
-func (m *SocketOptionLinger) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SocketOptionLinger.Marshal(b, m, deterministic)
-}
-func (m *SocketOptionLinger) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SocketOptionLinger.Merge(m, src)
-}
-func (m *SocketOptionLinger) XXX_Size() int {
-	return xxx_messageInfo_SocketOptionLinger.Size(m)
-}
-func (m *SocketOptionLinger) XXX_DiscardUnknown() {
-	xxx_messageInfo_SocketOptionLinger.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SocketOptionLinger proto.InternalMessageInfo
-
-func (m *SocketOptionLinger) GetActive() bool {
-	if m != nil {
-		return m.Active
+func (x *SocketOptionLinger) GetActive() bool {
+	if x != nil {
+		return x.Active
 	}
 	return false
 }
 
-func (m *SocketOptionLinger) GetDuration() *duration.Duration {
-	if m != nil {
-		return m.Duration
+func (x *SocketOptionLinger) GetDuration() *duration.Duration {
+	if x != nil {
+		return x.Duration
 	}
 	return nil
 }
@@ -1781,269 +1689,281 @@
 // For use with SocketOption's additional field.  Tcp info for
 // SOL_TCP and TCP_INFO.
 type SocketOptionTcpInfo struct {
-	TcpiState            uint32   `protobuf:"varint,1,opt,name=tcpi_state,json=tcpiState,proto3" json:"tcpi_state,omitempty"`
-	TcpiCaState          uint32   `protobuf:"varint,2,opt,name=tcpi_ca_state,json=tcpiCaState,proto3" json:"tcpi_ca_state,omitempty"`
-	TcpiRetransmits      uint32   `protobuf:"varint,3,opt,name=tcpi_retransmits,json=tcpiRetransmits,proto3" json:"tcpi_retransmits,omitempty"`
-	TcpiProbes           uint32   `protobuf:"varint,4,opt,name=tcpi_probes,json=tcpiProbes,proto3" json:"tcpi_probes,omitempty"`
-	TcpiBackoff          uint32   `protobuf:"varint,5,opt,name=tcpi_backoff,json=tcpiBackoff,proto3" json:"tcpi_backoff,omitempty"`
-	TcpiOptions          uint32   `protobuf:"varint,6,opt,name=tcpi_options,json=tcpiOptions,proto3" json:"tcpi_options,omitempty"`
-	TcpiSndWscale        uint32   `protobuf:"varint,7,opt,name=tcpi_snd_wscale,json=tcpiSndWscale,proto3" json:"tcpi_snd_wscale,omitempty"`
-	TcpiRcvWscale        uint32   `protobuf:"varint,8,opt,name=tcpi_rcv_wscale,json=tcpiRcvWscale,proto3" json:"tcpi_rcv_wscale,omitempty"`
-	TcpiRto              uint32   `protobuf:"varint,9,opt,name=tcpi_rto,json=tcpiRto,proto3" json:"tcpi_rto,omitempty"`
-	TcpiAto              uint32   `protobuf:"varint,10,opt,name=tcpi_ato,json=tcpiAto,proto3" json:"tcpi_ato,omitempty"`
-	TcpiSndMss           uint32   `protobuf:"varint,11,opt,name=tcpi_snd_mss,json=tcpiSndMss,proto3" json:"tcpi_snd_mss,omitempty"`
-	TcpiRcvMss           uint32   `protobuf:"varint,12,opt,name=tcpi_rcv_mss,json=tcpiRcvMss,proto3" json:"tcpi_rcv_mss,omitempty"`
-	TcpiUnacked          uint32   `protobuf:"varint,13,opt,name=tcpi_unacked,json=tcpiUnacked,proto3" json:"tcpi_unacked,omitempty"`
-	TcpiSacked           uint32   `protobuf:"varint,14,opt,name=tcpi_sacked,json=tcpiSacked,proto3" json:"tcpi_sacked,omitempty"`
-	TcpiLost             uint32   `protobuf:"varint,15,opt,name=tcpi_lost,json=tcpiLost,proto3" json:"tcpi_lost,omitempty"`
-	TcpiRetrans          uint32   `protobuf:"varint,16,opt,name=tcpi_retrans,json=tcpiRetrans,proto3" json:"tcpi_retrans,omitempty"`
-	TcpiFackets          uint32   `protobuf:"varint,17,opt,name=tcpi_fackets,json=tcpiFackets,proto3" json:"tcpi_fackets,omitempty"`
-	TcpiLastDataSent     uint32   `protobuf:"varint,18,opt,name=tcpi_last_data_sent,json=tcpiLastDataSent,proto3" json:"tcpi_last_data_sent,omitempty"`
-	TcpiLastAckSent      uint32   `protobuf:"varint,19,opt,name=tcpi_last_ack_sent,json=tcpiLastAckSent,proto3" json:"tcpi_last_ack_sent,omitempty"`
-	TcpiLastDataRecv     uint32   `protobuf:"varint,20,opt,name=tcpi_last_data_recv,json=tcpiLastDataRecv,proto3" json:"tcpi_last_data_recv,omitempty"`
-	TcpiLastAckRecv      uint32   `protobuf:"varint,21,opt,name=tcpi_last_ack_recv,json=tcpiLastAckRecv,proto3" json:"tcpi_last_ack_recv,omitempty"`
-	TcpiPmtu             uint32   `protobuf:"varint,22,opt,name=tcpi_pmtu,json=tcpiPmtu,proto3" json:"tcpi_pmtu,omitempty"`
-	TcpiRcvSsthresh      uint32   `protobuf:"varint,23,opt,name=tcpi_rcv_ssthresh,json=tcpiRcvSsthresh,proto3" json:"tcpi_rcv_ssthresh,omitempty"`
-	TcpiRtt              uint32   `protobuf:"varint,24,opt,name=tcpi_rtt,json=tcpiRtt,proto3" json:"tcpi_rtt,omitempty"`
-	TcpiRttvar           uint32   `protobuf:"varint,25,opt,name=tcpi_rttvar,json=tcpiRttvar,proto3" json:"tcpi_rttvar,omitempty"`
-	TcpiSndSsthresh      uint32   `protobuf:"varint,26,opt,name=tcpi_snd_ssthresh,json=tcpiSndSsthresh,proto3" json:"tcpi_snd_ssthresh,omitempty"`
-	TcpiSndCwnd          uint32   `protobuf:"varint,27,opt,name=tcpi_snd_cwnd,json=tcpiSndCwnd,proto3" json:"tcpi_snd_cwnd,omitempty"`
-	TcpiAdvmss           uint32   `protobuf:"varint,28,opt,name=tcpi_advmss,json=tcpiAdvmss,proto3" json:"tcpi_advmss,omitempty"`
-	TcpiReordering       uint32   `protobuf:"varint,29,opt,name=tcpi_reordering,json=tcpiReordering,proto3" json:"tcpi_reordering,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	TcpiState        uint32 `protobuf:"varint,1,opt,name=tcpi_state,json=tcpiState,proto3" json:"tcpi_state,omitempty"`
+	TcpiCaState      uint32 `protobuf:"varint,2,opt,name=tcpi_ca_state,json=tcpiCaState,proto3" json:"tcpi_ca_state,omitempty"`
+	TcpiRetransmits  uint32 `protobuf:"varint,3,opt,name=tcpi_retransmits,json=tcpiRetransmits,proto3" json:"tcpi_retransmits,omitempty"`
+	TcpiProbes       uint32 `protobuf:"varint,4,opt,name=tcpi_probes,json=tcpiProbes,proto3" json:"tcpi_probes,omitempty"`
+	TcpiBackoff      uint32 `protobuf:"varint,5,opt,name=tcpi_backoff,json=tcpiBackoff,proto3" json:"tcpi_backoff,omitempty"`
+	TcpiOptions      uint32 `protobuf:"varint,6,opt,name=tcpi_options,json=tcpiOptions,proto3" json:"tcpi_options,omitempty"`
+	TcpiSndWscale    uint32 `protobuf:"varint,7,opt,name=tcpi_snd_wscale,json=tcpiSndWscale,proto3" json:"tcpi_snd_wscale,omitempty"`
+	TcpiRcvWscale    uint32 `protobuf:"varint,8,opt,name=tcpi_rcv_wscale,json=tcpiRcvWscale,proto3" json:"tcpi_rcv_wscale,omitempty"`
+	TcpiRto          uint32 `protobuf:"varint,9,opt,name=tcpi_rto,json=tcpiRto,proto3" json:"tcpi_rto,omitempty"`
+	TcpiAto          uint32 `protobuf:"varint,10,opt,name=tcpi_ato,json=tcpiAto,proto3" json:"tcpi_ato,omitempty"`
+	TcpiSndMss       uint32 `protobuf:"varint,11,opt,name=tcpi_snd_mss,json=tcpiSndMss,proto3" json:"tcpi_snd_mss,omitempty"`
+	TcpiRcvMss       uint32 `protobuf:"varint,12,opt,name=tcpi_rcv_mss,json=tcpiRcvMss,proto3" json:"tcpi_rcv_mss,omitempty"`
+	TcpiUnacked      uint32 `protobuf:"varint,13,opt,name=tcpi_unacked,json=tcpiUnacked,proto3" json:"tcpi_unacked,omitempty"`
+	TcpiSacked       uint32 `protobuf:"varint,14,opt,name=tcpi_sacked,json=tcpiSacked,proto3" json:"tcpi_sacked,omitempty"`
+	TcpiLost         uint32 `protobuf:"varint,15,opt,name=tcpi_lost,json=tcpiLost,proto3" json:"tcpi_lost,omitempty"`
+	TcpiRetrans      uint32 `protobuf:"varint,16,opt,name=tcpi_retrans,json=tcpiRetrans,proto3" json:"tcpi_retrans,omitempty"`
+	TcpiFackets      uint32 `protobuf:"varint,17,opt,name=tcpi_fackets,json=tcpiFackets,proto3" json:"tcpi_fackets,omitempty"`
+	TcpiLastDataSent uint32 `protobuf:"varint,18,opt,name=tcpi_last_data_sent,json=tcpiLastDataSent,proto3" json:"tcpi_last_data_sent,omitempty"`
+	TcpiLastAckSent  uint32 `protobuf:"varint,19,opt,name=tcpi_last_ack_sent,json=tcpiLastAckSent,proto3" json:"tcpi_last_ack_sent,omitempty"`
+	TcpiLastDataRecv uint32 `protobuf:"varint,20,opt,name=tcpi_last_data_recv,json=tcpiLastDataRecv,proto3" json:"tcpi_last_data_recv,omitempty"`
+	TcpiLastAckRecv  uint32 `protobuf:"varint,21,opt,name=tcpi_last_ack_recv,json=tcpiLastAckRecv,proto3" json:"tcpi_last_ack_recv,omitempty"`
+	TcpiPmtu         uint32 `protobuf:"varint,22,opt,name=tcpi_pmtu,json=tcpiPmtu,proto3" json:"tcpi_pmtu,omitempty"`
+	TcpiRcvSsthresh  uint32 `protobuf:"varint,23,opt,name=tcpi_rcv_ssthresh,json=tcpiRcvSsthresh,proto3" json:"tcpi_rcv_ssthresh,omitempty"`
+	TcpiRtt          uint32 `protobuf:"varint,24,opt,name=tcpi_rtt,json=tcpiRtt,proto3" json:"tcpi_rtt,omitempty"`
+	TcpiRttvar       uint32 `protobuf:"varint,25,opt,name=tcpi_rttvar,json=tcpiRttvar,proto3" json:"tcpi_rttvar,omitempty"`
+	TcpiSndSsthresh  uint32 `protobuf:"varint,26,opt,name=tcpi_snd_ssthresh,json=tcpiSndSsthresh,proto3" json:"tcpi_snd_ssthresh,omitempty"`
+	TcpiSndCwnd      uint32 `protobuf:"varint,27,opt,name=tcpi_snd_cwnd,json=tcpiSndCwnd,proto3" json:"tcpi_snd_cwnd,omitempty"`
+	TcpiAdvmss       uint32 `protobuf:"varint,28,opt,name=tcpi_advmss,json=tcpiAdvmss,proto3" json:"tcpi_advmss,omitempty"`
+	TcpiReordering   uint32 `protobuf:"varint,29,opt,name=tcpi_reordering,json=tcpiReordering,proto3" json:"tcpi_reordering,omitempty"`
 }
 
-func (m *SocketOptionTcpInfo) Reset()         { *m = SocketOptionTcpInfo{} }
-func (m *SocketOptionTcpInfo) String() string { return proto.CompactTextString(m) }
-func (*SocketOptionTcpInfo) ProtoMessage()    {}
+func (x *SocketOptionTcpInfo) Reset() {
+	*x = SocketOptionTcpInfo{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[19]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *SocketOptionTcpInfo) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SocketOptionTcpInfo) ProtoMessage() {}
+
+func (x *SocketOptionTcpInfo) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[19]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SocketOptionTcpInfo.ProtoReflect.Descriptor instead.
 func (*SocketOptionTcpInfo) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{19}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{19}
 }
 
-func (m *SocketOptionTcpInfo) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SocketOptionTcpInfo.Unmarshal(m, b)
-}
-func (m *SocketOptionTcpInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SocketOptionTcpInfo.Marshal(b, m, deterministic)
-}
-func (m *SocketOptionTcpInfo) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SocketOptionTcpInfo.Merge(m, src)
-}
-func (m *SocketOptionTcpInfo) XXX_Size() int {
-	return xxx_messageInfo_SocketOptionTcpInfo.Size(m)
-}
-func (m *SocketOptionTcpInfo) XXX_DiscardUnknown() {
-	xxx_messageInfo_SocketOptionTcpInfo.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SocketOptionTcpInfo proto.InternalMessageInfo
-
-func (m *SocketOptionTcpInfo) GetTcpiState() uint32 {
-	if m != nil {
-		return m.TcpiState
+func (x *SocketOptionTcpInfo) GetTcpiState() uint32 {
+	if x != nil {
+		return x.TcpiState
 	}
 	return 0
 }
 
-func (m *SocketOptionTcpInfo) GetTcpiCaState() uint32 {
-	if m != nil {
-		return m.TcpiCaState
+func (x *SocketOptionTcpInfo) GetTcpiCaState() uint32 {
+	if x != nil {
+		return x.TcpiCaState
 	}
 	return 0
 }
 
-func (m *SocketOptionTcpInfo) GetTcpiRetransmits() uint32 {
-	if m != nil {
-		return m.TcpiRetransmits
+func (x *SocketOptionTcpInfo) GetTcpiRetransmits() uint32 {
+	if x != nil {
+		return x.TcpiRetransmits
 	}
 	return 0
 }
 
-func (m *SocketOptionTcpInfo) GetTcpiProbes() uint32 {
-	if m != nil {
-		return m.TcpiProbes
+func (x *SocketOptionTcpInfo) GetTcpiProbes() uint32 {
+	if x != nil {
+		return x.TcpiProbes
 	}
 	return 0
 }
 
-func (m *SocketOptionTcpInfo) GetTcpiBackoff() uint32 {
-	if m != nil {
-		return m.TcpiBackoff
+func (x *SocketOptionTcpInfo) GetTcpiBackoff() uint32 {
+	if x != nil {
+		return x.TcpiBackoff
 	}
 	return 0
 }
 
-func (m *SocketOptionTcpInfo) GetTcpiOptions() uint32 {
-	if m != nil {
-		return m.TcpiOptions
+func (x *SocketOptionTcpInfo) GetTcpiOptions() uint32 {
+	if x != nil {
+		return x.TcpiOptions
 	}
 	return 0
 }
 
-func (m *SocketOptionTcpInfo) GetTcpiSndWscale() uint32 {
-	if m != nil {
-		return m.TcpiSndWscale
+func (x *SocketOptionTcpInfo) GetTcpiSndWscale() uint32 {
+	if x != nil {
+		return x.TcpiSndWscale
 	}
 	return 0
 }
 
-func (m *SocketOptionTcpInfo) GetTcpiRcvWscale() uint32 {
-	if m != nil {
-		return m.TcpiRcvWscale
+func (x *SocketOptionTcpInfo) GetTcpiRcvWscale() uint32 {
+	if x != nil {
+		return x.TcpiRcvWscale
 	}
 	return 0
 }
 
-func (m *SocketOptionTcpInfo) GetTcpiRto() uint32 {
-	if m != nil {
-		return m.TcpiRto
+func (x *SocketOptionTcpInfo) GetTcpiRto() uint32 {
+	if x != nil {
+		return x.TcpiRto
 	}
 	return 0
 }
 
-func (m *SocketOptionTcpInfo) GetTcpiAto() uint32 {
-	if m != nil {
-		return m.TcpiAto
+func (x *SocketOptionTcpInfo) GetTcpiAto() uint32 {
+	if x != nil {
+		return x.TcpiAto
 	}
 	return 0
 }
 
-func (m *SocketOptionTcpInfo) GetTcpiSndMss() uint32 {
-	if m != nil {
-		return m.TcpiSndMss
+func (x *SocketOptionTcpInfo) GetTcpiSndMss() uint32 {
+	if x != nil {
+		return x.TcpiSndMss
 	}
 	return 0
 }
 
-func (m *SocketOptionTcpInfo) GetTcpiRcvMss() uint32 {
-	if m != nil {
-		return m.TcpiRcvMss
+func (x *SocketOptionTcpInfo) GetTcpiRcvMss() uint32 {
+	if x != nil {
+		return x.TcpiRcvMss
 	}
 	return 0
 }
 
-func (m *SocketOptionTcpInfo) GetTcpiUnacked() uint32 {
-	if m != nil {
-		return m.TcpiUnacked
+func (x *SocketOptionTcpInfo) GetTcpiUnacked() uint32 {
+	if x != nil {
+		return x.TcpiUnacked
 	}
 	return 0
 }
 
-func (m *SocketOptionTcpInfo) GetTcpiSacked() uint32 {
-	if m != nil {
-		return m.TcpiSacked
+func (x *SocketOptionTcpInfo) GetTcpiSacked() uint32 {
+	if x != nil {
+		return x.TcpiSacked
 	}
 	return 0
 }
 
-func (m *SocketOptionTcpInfo) GetTcpiLost() uint32 {
-	if m != nil {
-		return m.TcpiLost
+func (x *SocketOptionTcpInfo) GetTcpiLost() uint32 {
+	if x != nil {
+		return x.TcpiLost
 	}
 	return 0
 }
 
-func (m *SocketOptionTcpInfo) GetTcpiRetrans() uint32 {
-	if m != nil {
-		return m.TcpiRetrans
+func (x *SocketOptionTcpInfo) GetTcpiRetrans() uint32 {
+	if x != nil {
+		return x.TcpiRetrans
 	}
 	return 0
 }
 
-func (m *SocketOptionTcpInfo) GetTcpiFackets() uint32 {
-	if m != nil {
-		return m.TcpiFackets
+func (x *SocketOptionTcpInfo) GetTcpiFackets() uint32 {
+	if x != nil {
+		return x.TcpiFackets
 	}
 	return 0
 }
 
-func (m *SocketOptionTcpInfo) GetTcpiLastDataSent() uint32 {
-	if m != nil {
-		return m.TcpiLastDataSent
+func (x *SocketOptionTcpInfo) GetTcpiLastDataSent() uint32 {
+	if x != nil {
+		return x.TcpiLastDataSent
 	}
 	return 0
 }
 
-func (m *SocketOptionTcpInfo) GetTcpiLastAckSent() uint32 {
-	if m != nil {
-		return m.TcpiLastAckSent
+func (x *SocketOptionTcpInfo) GetTcpiLastAckSent() uint32 {
+	if x != nil {
+		return x.TcpiLastAckSent
 	}
 	return 0
 }
 
-func (m *SocketOptionTcpInfo) GetTcpiLastDataRecv() uint32 {
-	if m != nil {
-		return m.TcpiLastDataRecv
+func (x *SocketOptionTcpInfo) GetTcpiLastDataRecv() uint32 {
+	if x != nil {
+		return x.TcpiLastDataRecv
 	}
 	return 0
 }
 
-func (m *SocketOptionTcpInfo) GetTcpiLastAckRecv() uint32 {
-	if m != nil {
-		return m.TcpiLastAckRecv
+func (x *SocketOptionTcpInfo) GetTcpiLastAckRecv() uint32 {
+	if x != nil {
+		return x.TcpiLastAckRecv
 	}
 	return 0
 }
 
-func (m *SocketOptionTcpInfo) GetTcpiPmtu() uint32 {
-	if m != nil {
-		return m.TcpiPmtu
+func (x *SocketOptionTcpInfo) GetTcpiPmtu() uint32 {
+	if x != nil {
+		return x.TcpiPmtu
 	}
 	return 0
 }
 
-func (m *SocketOptionTcpInfo) GetTcpiRcvSsthresh() uint32 {
-	if m != nil {
-		return m.TcpiRcvSsthresh
+func (x *SocketOptionTcpInfo) GetTcpiRcvSsthresh() uint32 {
+	if x != nil {
+		return x.TcpiRcvSsthresh
 	}
 	return 0
 }
 
-func (m *SocketOptionTcpInfo) GetTcpiRtt() uint32 {
-	if m != nil {
-		return m.TcpiRtt
+func (x *SocketOptionTcpInfo) GetTcpiRtt() uint32 {
+	if x != nil {
+		return x.TcpiRtt
 	}
 	return 0
 }
 
-func (m *SocketOptionTcpInfo) GetTcpiRttvar() uint32 {
-	if m != nil {
-		return m.TcpiRttvar
+func (x *SocketOptionTcpInfo) GetTcpiRttvar() uint32 {
+	if x != nil {
+		return x.TcpiRttvar
 	}
 	return 0
 }
 
-func (m *SocketOptionTcpInfo) GetTcpiSndSsthresh() uint32 {
-	if m != nil {
-		return m.TcpiSndSsthresh
+func (x *SocketOptionTcpInfo) GetTcpiSndSsthresh() uint32 {
+	if x != nil {
+		return x.TcpiSndSsthresh
 	}
 	return 0
 }
 
-func (m *SocketOptionTcpInfo) GetTcpiSndCwnd() uint32 {
-	if m != nil {
-		return m.TcpiSndCwnd
+func (x *SocketOptionTcpInfo) GetTcpiSndCwnd() uint32 {
+	if x != nil {
+		return x.TcpiSndCwnd
 	}
 	return 0
 }
 
-func (m *SocketOptionTcpInfo) GetTcpiAdvmss() uint32 {
-	if m != nil {
-		return m.TcpiAdvmss
+func (x *SocketOptionTcpInfo) GetTcpiAdvmss() uint32 {
+	if x != nil {
+		return x.TcpiAdvmss
 	}
 	return 0
 }
 
-func (m *SocketOptionTcpInfo) GetTcpiReordering() uint32 {
-	if m != nil {
-		return m.TcpiReordering
+func (x *SocketOptionTcpInfo) GetTcpiReordering() uint32 {
+	if x != nil {
+		return x.TcpiReordering
 	}
 	return 0
 }
 
 type GetTopChannelsRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// start_channel_id indicates that only channels at or above this id should be
 	// included in the results.
 	// To request the first page, this should be set to 0. To request
@@ -2053,52 +1973,60 @@
 	// If non-zero, the server will return a page of results containing
 	// at most this many items. If zero, the server will choose a
 	// reasonable page size.  Must never be negative.
-	MaxResults           int64    `protobuf:"varint,2,opt,name=max_results,json=maxResults,proto3" json:"max_results,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	MaxResults int64 `protobuf:"varint,2,opt,name=max_results,json=maxResults,proto3" json:"max_results,omitempty"`
 }
 
-func (m *GetTopChannelsRequest) Reset()         { *m = GetTopChannelsRequest{} }
-func (m *GetTopChannelsRequest) String() string { return proto.CompactTextString(m) }
-func (*GetTopChannelsRequest) ProtoMessage()    {}
+func (x *GetTopChannelsRequest) Reset() {
+	*x = GetTopChannelsRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[20]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GetTopChannelsRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetTopChannelsRequest) ProtoMessage() {}
+
+func (x *GetTopChannelsRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[20]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetTopChannelsRequest.ProtoReflect.Descriptor instead.
 func (*GetTopChannelsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{20}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{20}
 }
 
-func (m *GetTopChannelsRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetTopChannelsRequest.Unmarshal(m, b)
-}
-func (m *GetTopChannelsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetTopChannelsRequest.Marshal(b, m, deterministic)
-}
-func (m *GetTopChannelsRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetTopChannelsRequest.Merge(m, src)
-}
-func (m *GetTopChannelsRequest) XXX_Size() int {
-	return xxx_messageInfo_GetTopChannelsRequest.Size(m)
-}
-func (m *GetTopChannelsRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetTopChannelsRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetTopChannelsRequest proto.InternalMessageInfo
-
-func (m *GetTopChannelsRequest) GetStartChannelId() int64 {
-	if m != nil {
-		return m.StartChannelId
+func (x *GetTopChannelsRequest) GetStartChannelId() int64 {
+	if x != nil {
+		return x.StartChannelId
 	}
 	return 0
 }
 
-func (m *GetTopChannelsRequest) GetMaxResults() int64 {
-	if m != nil {
-		return m.MaxResults
+func (x *GetTopChannelsRequest) GetMaxResults() int64 {
+	if x != nil {
+		return x.MaxResults
 	}
 	return 0
 }
 
 type GetTopChannelsResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// list of channels that the connection detail service knows about.  Sorted in
 	// ascending channel_id order.
 	// Must contain at least 1 result, otherwise 'end' must be true.
@@ -2106,52 +2034,60 @@
 	// If set, indicates that the list of channels is the final list.  Requesting
 	// more channels can only return more if they are created after this RPC
 	// completes.
-	End                  bool     `protobuf:"varint,2,opt,name=end,proto3" json:"end,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	End bool `protobuf:"varint,2,opt,name=end,proto3" json:"end,omitempty"`
 }
 
-func (m *GetTopChannelsResponse) Reset()         { *m = GetTopChannelsResponse{} }
-func (m *GetTopChannelsResponse) String() string { return proto.CompactTextString(m) }
-func (*GetTopChannelsResponse) ProtoMessage()    {}
+func (x *GetTopChannelsResponse) Reset() {
+	*x = GetTopChannelsResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[21]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GetTopChannelsResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetTopChannelsResponse) ProtoMessage() {}
+
+func (x *GetTopChannelsResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[21]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetTopChannelsResponse.ProtoReflect.Descriptor instead.
 func (*GetTopChannelsResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{21}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{21}
 }
 
-func (m *GetTopChannelsResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetTopChannelsResponse.Unmarshal(m, b)
-}
-func (m *GetTopChannelsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetTopChannelsResponse.Marshal(b, m, deterministic)
-}
-func (m *GetTopChannelsResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetTopChannelsResponse.Merge(m, src)
-}
-func (m *GetTopChannelsResponse) XXX_Size() int {
-	return xxx_messageInfo_GetTopChannelsResponse.Size(m)
-}
-func (m *GetTopChannelsResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetTopChannelsResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetTopChannelsResponse proto.InternalMessageInfo
-
-func (m *GetTopChannelsResponse) GetChannel() []*Channel {
-	if m != nil {
-		return m.Channel
+func (x *GetTopChannelsResponse) GetChannel() []*Channel {
+	if x != nil {
+		return x.Channel
 	}
 	return nil
 }
 
-func (m *GetTopChannelsResponse) GetEnd() bool {
-	if m != nil {
-		return m.End
+func (x *GetTopChannelsResponse) GetEnd() bool {
+	if x != nil {
+		return x.End
 	}
 	return false
 }
 
 type GetServersRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// start_server_id indicates that only servers at or above this id should be
 	// included in the results.
 	// To request the first page, this must be set to 0. To request
@@ -2161,52 +2097,60 @@
 	// If non-zero, the server will return a page of results containing
 	// at most this many items. If zero, the server will choose a
 	// reasonable page size.  Must never be negative.
-	MaxResults           int64    `protobuf:"varint,2,opt,name=max_results,json=maxResults,proto3" json:"max_results,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	MaxResults int64 `protobuf:"varint,2,opt,name=max_results,json=maxResults,proto3" json:"max_results,omitempty"`
 }
 
-func (m *GetServersRequest) Reset()         { *m = GetServersRequest{} }
-func (m *GetServersRequest) String() string { return proto.CompactTextString(m) }
-func (*GetServersRequest) ProtoMessage()    {}
+func (x *GetServersRequest) Reset() {
+	*x = GetServersRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[22]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GetServersRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetServersRequest) ProtoMessage() {}
+
+func (x *GetServersRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[22]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetServersRequest.ProtoReflect.Descriptor instead.
 func (*GetServersRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{22}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{22}
 }
 
-func (m *GetServersRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetServersRequest.Unmarshal(m, b)
-}
-func (m *GetServersRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetServersRequest.Marshal(b, m, deterministic)
-}
-func (m *GetServersRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetServersRequest.Merge(m, src)
-}
-func (m *GetServersRequest) XXX_Size() int {
-	return xxx_messageInfo_GetServersRequest.Size(m)
-}
-func (m *GetServersRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetServersRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetServersRequest proto.InternalMessageInfo
-
-func (m *GetServersRequest) GetStartServerId() int64 {
-	if m != nil {
-		return m.StartServerId
+func (x *GetServersRequest) GetStartServerId() int64 {
+	if x != nil {
+		return x.StartServerId
 	}
 	return 0
 }
 
-func (m *GetServersRequest) GetMaxResults() int64 {
-	if m != nil {
-		return m.MaxResults
+func (x *GetServersRequest) GetMaxResults() int64 {
+	if x != nil {
+		return x.MaxResults
 	}
 	return 0
 }
 
 type GetServersResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// list of servers that the connection detail service knows about.  Sorted in
 	// ascending server_id order.
 	// Must contain at least 1 result, otherwise 'end' must be true.
@@ -2214,133 +2158,157 @@
 	// If set, indicates that the list of servers is the final list.  Requesting
 	// more servers will only return more if they are created after this RPC
 	// completes.
-	End                  bool     `protobuf:"varint,2,opt,name=end,proto3" json:"end,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	End bool `protobuf:"varint,2,opt,name=end,proto3" json:"end,omitempty"`
 }
 
-func (m *GetServersResponse) Reset()         { *m = GetServersResponse{} }
-func (m *GetServersResponse) String() string { return proto.CompactTextString(m) }
-func (*GetServersResponse) ProtoMessage()    {}
+func (x *GetServersResponse) Reset() {
+	*x = GetServersResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[23]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GetServersResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetServersResponse) ProtoMessage() {}
+
+func (x *GetServersResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[23]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetServersResponse.ProtoReflect.Descriptor instead.
 func (*GetServersResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{23}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{23}
 }
 
-func (m *GetServersResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetServersResponse.Unmarshal(m, b)
-}
-func (m *GetServersResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetServersResponse.Marshal(b, m, deterministic)
-}
-func (m *GetServersResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetServersResponse.Merge(m, src)
-}
-func (m *GetServersResponse) XXX_Size() int {
-	return xxx_messageInfo_GetServersResponse.Size(m)
-}
-func (m *GetServersResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetServersResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetServersResponse proto.InternalMessageInfo
-
-func (m *GetServersResponse) GetServer() []*Server {
-	if m != nil {
-		return m.Server
+func (x *GetServersResponse) GetServer() []*Server {
+	if x != nil {
+		return x.Server
 	}
 	return nil
 }
 
-func (m *GetServersResponse) GetEnd() bool {
-	if m != nil {
-		return m.End
+func (x *GetServersResponse) GetEnd() bool {
+	if x != nil {
+		return x.End
 	}
 	return false
 }
 
 type GetServerRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// server_id is the identifier of the specific server to get.
-	ServerId             int64    `protobuf:"varint,1,opt,name=server_id,json=serverId,proto3" json:"server_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	ServerId int64 `protobuf:"varint,1,opt,name=server_id,json=serverId,proto3" json:"server_id,omitempty"`
 }
 
-func (m *GetServerRequest) Reset()         { *m = GetServerRequest{} }
-func (m *GetServerRequest) String() string { return proto.CompactTextString(m) }
-func (*GetServerRequest) ProtoMessage()    {}
+func (x *GetServerRequest) Reset() {
+	*x = GetServerRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[24]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GetServerRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetServerRequest) ProtoMessage() {}
+
+func (x *GetServerRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[24]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetServerRequest.ProtoReflect.Descriptor instead.
 func (*GetServerRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{24}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{24}
 }
 
-func (m *GetServerRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetServerRequest.Unmarshal(m, b)
-}
-func (m *GetServerRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetServerRequest.Marshal(b, m, deterministic)
-}
-func (m *GetServerRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetServerRequest.Merge(m, src)
-}
-func (m *GetServerRequest) XXX_Size() int {
-	return xxx_messageInfo_GetServerRequest.Size(m)
-}
-func (m *GetServerRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetServerRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetServerRequest proto.InternalMessageInfo
-
-func (m *GetServerRequest) GetServerId() int64 {
-	if m != nil {
-		return m.ServerId
+func (x *GetServerRequest) GetServerId() int64 {
+	if x != nil {
+		return x.ServerId
 	}
 	return 0
 }
 
 type GetServerResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The Server that corresponds to the requested server_id.  This field
 	// should be set.
-	Server               *Server  `protobuf:"bytes,1,opt,name=server,proto3" json:"server,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Server *Server `protobuf:"bytes,1,opt,name=server,proto3" json:"server,omitempty"`
 }
 
-func (m *GetServerResponse) Reset()         { *m = GetServerResponse{} }
-func (m *GetServerResponse) String() string { return proto.CompactTextString(m) }
-func (*GetServerResponse) ProtoMessage()    {}
+func (x *GetServerResponse) Reset() {
+	*x = GetServerResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[25]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GetServerResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetServerResponse) ProtoMessage() {}
+
+func (x *GetServerResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[25]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetServerResponse.ProtoReflect.Descriptor instead.
 func (*GetServerResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{25}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{25}
 }
 
-func (m *GetServerResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetServerResponse.Unmarshal(m, b)
-}
-func (m *GetServerResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetServerResponse.Marshal(b, m, deterministic)
-}
-func (m *GetServerResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetServerResponse.Merge(m, src)
-}
-func (m *GetServerResponse) XXX_Size() int {
-	return xxx_messageInfo_GetServerResponse.Size(m)
-}
-func (m *GetServerResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetServerResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetServerResponse proto.InternalMessageInfo
-
-func (m *GetServerResponse) GetServer() *Server {
-	if m != nil {
-		return m.Server
+func (x *GetServerResponse) GetServer() *Server {
+	if x != nil {
+		return x.Server
 	}
 	return nil
 }
 
 type GetServerSocketsRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	ServerId int64 `protobuf:"varint,1,opt,name=server_id,json=serverId,proto3" json:"server_id,omitempty"`
 	// start_socket_id indicates that only sockets at or above this id should be
 	// included in the results.
@@ -2351,59 +2319,67 @@
 	// If non-zero, the server will return a page of results containing
 	// at most this many items. If zero, the server will choose a
 	// reasonable page size.  Must never be negative.
-	MaxResults           int64    `protobuf:"varint,3,opt,name=max_results,json=maxResults,proto3" json:"max_results,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	MaxResults int64 `protobuf:"varint,3,opt,name=max_results,json=maxResults,proto3" json:"max_results,omitempty"`
 }
 
-func (m *GetServerSocketsRequest) Reset()         { *m = GetServerSocketsRequest{} }
-func (m *GetServerSocketsRequest) String() string { return proto.CompactTextString(m) }
-func (*GetServerSocketsRequest) ProtoMessage()    {}
+func (x *GetServerSocketsRequest) Reset() {
+	*x = GetServerSocketsRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[26]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GetServerSocketsRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetServerSocketsRequest) ProtoMessage() {}
+
+func (x *GetServerSocketsRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[26]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetServerSocketsRequest.ProtoReflect.Descriptor instead.
 func (*GetServerSocketsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{26}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{26}
 }
 
-func (m *GetServerSocketsRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetServerSocketsRequest.Unmarshal(m, b)
-}
-func (m *GetServerSocketsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetServerSocketsRequest.Marshal(b, m, deterministic)
-}
-func (m *GetServerSocketsRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetServerSocketsRequest.Merge(m, src)
-}
-func (m *GetServerSocketsRequest) XXX_Size() int {
-	return xxx_messageInfo_GetServerSocketsRequest.Size(m)
-}
-func (m *GetServerSocketsRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetServerSocketsRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetServerSocketsRequest proto.InternalMessageInfo
-
-func (m *GetServerSocketsRequest) GetServerId() int64 {
-	if m != nil {
-		return m.ServerId
+func (x *GetServerSocketsRequest) GetServerId() int64 {
+	if x != nil {
+		return x.ServerId
 	}
 	return 0
 }
 
-func (m *GetServerSocketsRequest) GetStartSocketId() int64 {
-	if m != nil {
-		return m.StartSocketId
+func (x *GetServerSocketsRequest) GetStartSocketId() int64 {
+	if x != nil {
+		return x.StartSocketId
 	}
 	return 0
 }
 
-func (m *GetServerSocketsRequest) GetMaxResults() int64 {
-	if m != nil {
-		return m.MaxResults
+func (x *GetServerSocketsRequest) GetMaxResults() int64 {
+	if x != nil {
+		return x.MaxResults
 	}
 	return 0
 }
 
 type GetServerSocketsResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// list of socket refs that the connection detail service knows about.  Sorted in
 	// ascending socket_id order.
 	// Must contain at least 1 result, otherwise 'end' must be true.
@@ -2411,513 +2387,1841 @@
 	// If set, indicates that the list of sockets is the final list.  Requesting
 	// more sockets will only return more if they are created after this RPC
 	// completes.
-	End                  bool     `protobuf:"varint,2,opt,name=end,proto3" json:"end,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	End bool `protobuf:"varint,2,opt,name=end,proto3" json:"end,omitempty"`
 }
 
-func (m *GetServerSocketsResponse) Reset()         { *m = GetServerSocketsResponse{} }
-func (m *GetServerSocketsResponse) String() string { return proto.CompactTextString(m) }
-func (*GetServerSocketsResponse) ProtoMessage()    {}
+func (x *GetServerSocketsResponse) Reset() {
+	*x = GetServerSocketsResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[27]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GetServerSocketsResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetServerSocketsResponse) ProtoMessage() {}
+
+func (x *GetServerSocketsResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[27]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetServerSocketsResponse.ProtoReflect.Descriptor instead.
 func (*GetServerSocketsResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{27}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{27}
 }
 
-func (m *GetServerSocketsResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetServerSocketsResponse.Unmarshal(m, b)
-}
-func (m *GetServerSocketsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetServerSocketsResponse.Marshal(b, m, deterministic)
-}
-func (m *GetServerSocketsResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetServerSocketsResponse.Merge(m, src)
-}
-func (m *GetServerSocketsResponse) XXX_Size() int {
-	return xxx_messageInfo_GetServerSocketsResponse.Size(m)
-}
-func (m *GetServerSocketsResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetServerSocketsResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetServerSocketsResponse proto.InternalMessageInfo
-
-func (m *GetServerSocketsResponse) GetSocketRef() []*SocketRef {
-	if m != nil {
-		return m.SocketRef
+func (x *GetServerSocketsResponse) GetSocketRef() []*SocketRef {
+	if x != nil {
+		return x.SocketRef
 	}
 	return nil
 }
 
-func (m *GetServerSocketsResponse) GetEnd() bool {
-	if m != nil {
-		return m.End
+func (x *GetServerSocketsResponse) GetEnd() bool {
+	if x != nil {
+		return x.End
 	}
 	return false
 }
 
 type GetChannelRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// channel_id is the identifier of the specific channel to get.
-	ChannelId            int64    `protobuf:"varint,1,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	ChannelId int64 `protobuf:"varint,1,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"`
 }
 
-func (m *GetChannelRequest) Reset()         { *m = GetChannelRequest{} }
-func (m *GetChannelRequest) String() string { return proto.CompactTextString(m) }
-func (*GetChannelRequest) ProtoMessage()    {}
+func (x *GetChannelRequest) Reset() {
+	*x = GetChannelRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[28]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GetChannelRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetChannelRequest) ProtoMessage() {}
+
+func (x *GetChannelRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[28]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetChannelRequest.ProtoReflect.Descriptor instead.
 func (*GetChannelRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{28}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{28}
 }
 
-func (m *GetChannelRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetChannelRequest.Unmarshal(m, b)
-}
-func (m *GetChannelRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetChannelRequest.Marshal(b, m, deterministic)
-}
-func (m *GetChannelRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetChannelRequest.Merge(m, src)
-}
-func (m *GetChannelRequest) XXX_Size() int {
-	return xxx_messageInfo_GetChannelRequest.Size(m)
-}
-func (m *GetChannelRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetChannelRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetChannelRequest proto.InternalMessageInfo
-
-func (m *GetChannelRequest) GetChannelId() int64 {
-	if m != nil {
-		return m.ChannelId
+func (x *GetChannelRequest) GetChannelId() int64 {
+	if x != nil {
+		return x.ChannelId
 	}
 	return 0
 }
 
 type GetChannelResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The Channel that corresponds to the requested channel_id.  This field
 	// should be set.
-	Channel              *Channel `protobuf:"bytes,1,opt,name=channel,proto3" json:"channel,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Channel *Channel `protobuf:"bytes,1,opt,name=channel,proto3" json:"channel,omitempty"`
 }
 
-func (m *GetChannelResponse) Reset()         { *m = GetChannelResponse{} }
-func (m *GetChannelResponse) String() string { return proto.CompactTextString(m) }
-func (*GetChannelResponse) ProtoMessage()    {}
+func (x *GetChannelResponse) Reset() {
+	*x = GetChannelResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[29]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GetChannelResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetChannelResponse) ProtoMessage() {}
+
+func (x *GetChannelResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[29]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetChannelResponse.ProtoReflect.Descriptor instead.
 func (*GetChannelResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{29}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{29}
 }
 
-func (m *GetChannelResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetChannelResponse.Unmarshal(m, b)
-}
-func (m *GetChannelResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetChannelResponse.Marshal(b, m, deterministic)
-}
-func (m *GetChannelResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetChannelResponse.Merge(m, src)
-}
-func (m *GetChannelResponse) XXX_Size() int {
-	return xxx_messageInfo_GetChannelResponse.Size(m)
-}
-func (m *GetChannelResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetChannelResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetChannelResponse proto.InternalMessageInfo
-
-func (m *GetChannelResponse) GetChannel() *Channel {
-	if m != nil {
-		return m.Channel
+func (x *GetChannelResponse) GetChannel() *Channel {
+	if x != nil {
+		return x.Channel
 	}
 	return nil
 }
 
 type GetSubchannelRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// subchannel_id is the identifier of the specific subchannel to get.
-	SubchannelId         int64    `protobuf:"varint,1,opt,name=subchannel_id,json=subchannelId,proto3" json:"subchannel_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	SubchannelId int64 `protobuf:"varint,1,opt,name=subchannel_id,json=subchannelId,proto3" json:"subchannel_id,omitempty"`
 }
 
-func (m *GetSubchannelRequest) Reset()         { *m = GetSubchannelRequest{} }
-func (m *GetSubchannelRequest) String() string { return proto.CompactTextString(m) }
-func (*GetSubchannelRequest) ProtoMessage()    {}
+func (x *GetSubchannelRequest) Reset() {
+	*x = GetSubchannelRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[30]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GetSubchannelRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetSubchannelRequest) ProtoMessage() {}
+
+func (x *GetSubchannelRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[30]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetSubchannelRequest.ProtoReflect.Descriptor instead.
 func (*GetSubchannelRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{30}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{30}
 }
 
-func (m *GetSubchannelRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetSubchannelRequest.Unmarshal(m, b)
-}
-func (m *GetSubchannelRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetSubchannelRequest.Marshal(b, m, deterministic)
-}
-func (m *GetSubchannelRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetSubchannelRequest.Merge(m, src)
-}
-func (m *GetSubchannelRequest) XXX_Size() int {
-	return xxx_messageInfo_GetSubchannelRequest.Size(m)
-}
-func (m *GetSubchannelRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetSubchannelRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetSubchannelRequest proto.InternalMessageInfo
-
-func (m *GetSubchannelRequest) GetSubchannelId() int64 {
-	if m != nil {
-		return m.SubchannelId
+func (x *GetSubchannelRequest) GetSubchannelId() int64 {
+	if x != nil {
+		return x.SubchannelId
 	}
 	return 0
 }
 
 type GetSubchannelResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The Subchannel that corresponds to the requested subchannel_id.  This
 	// field should be set.
-	Subchannel           *Subchannel `protobuf:"bytes,1,opt,name=subchannel,proto3" json:"subchannel,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
-	XXX_unrecognized     []byte      `json:"-"`
-	XXX_sizecache        int32       `json:"-"`
+	Subchannel *Subchannel `protobuf:"bytes,1,opt,name=subchannel,proto3" json:"subchannel,omitempty"`
 }
 
-func (m *GetSubchannelResponse) Reset()         { *m = GetSubchannelResponse{} }
-func (m *GetSubchannelResponse) String() string { return proto.CompactTextString(m) }
-func (*GetSubchannelResponse) ProtoMessage()    {}
+func (x *GetSubchannelResponse) Reset() {
+	*x = GetSubchannelResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[31]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GetSubchannelResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetSubchannelResponse) ProtoMessage() {}
+
+func (x *GetSubchannelResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[31]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetSubchannelResponse.ProtoReflect.Descriptor instead.
 func (*GetSubchannelResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{31}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{31}
 }
 
-func (m *GetSubchannelResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetSubchannelResponse.Unmarshal(m, b)
-}
-func (m *GetSubchannelResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetSubchannelResponse.Marshal(b, m, deterministic)
-}
-func (m *GetSubchannelResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetSubchannelResponse.Merge(m, src)
-}
-func (m *GetSubchannelResponse) XXX_Size() int {
-	return xxx_messageInfo_GetSubchannelResponse.Size(m)
-}
-func (m *GetSubchannelResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetSubchannelResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetSubchannelResponse proto.InternalMessageInfo
-
-func (m *GetSubchannelResponse) GetSubchannel() *Subchannel {
-	if m != nil {
-		return m.Subchannel
+func (x *GetSubchannelResponse) GetSubchannel() *Subchannel {
+	if x != nil {
+		return x.Subchannel
 	}
 	return nil
 }
 
 type GetSocketRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// socket_id is the identifier of the specific socket to get.
 	SocketId int64 `protobuf:"varint,1,opt,name=socket_id,json=socketId,proto3" json:"socket_id,omitempty"`
 	// If true, the response will contain only high level information
 	// that is inexpensive to obtain. Fields thay may be omitted are
 	// documented.
-	Summary              bool     `protobuf:"varint,2,opt,name=summary,proto3" json:"summary,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Summary bool `protobuf:"varint,2,opt,name=summary,proto3" json:"summary,omitempty"`
 }
 
-func (m *GetSocketRequest) Reset()         { *m = GetSocketRequest{} }
-func (m *GetSocketRequest) String() string { return proto.CompactTextString(m) }
-func (*GetSocketRequest) ProtoMessage()    {}
+func (x *GetSocketRequest) Reset() {
+	*x = GetSocketRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[32]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GetSocketRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetSocketRequest) ProtoMessage() {}
+
+func (x *GetSocketRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[32]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetSocketRequest.ProtoReflect.Descriptor instead.
 func (*GetSocketRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{32}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{32}
 }
 
-func (m *GetSocketRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetSocketRequest.Unmarshal(m, b)
-}
-func (m *GetSocketRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetSocketRequest.Marshal(b, m, deterministic)
-}
-func (m *GetSocketRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetSocketRequest.Merge(m, src)
-}
-func (m *GetSocketRequest) XXX_Size() int {
-	return xxx_messageInfo_GetSocketRequest.Size(m)
-}
-func (m *GetSocketRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetSocketRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetSocketRequest proto.InternalMessageInfo
-
-func (m *GetSocketRequest) GetSocketId() int64 {
-	if m != nil {
-		return m.SocketId
+func (x *GetSocketRequest) GetSocketId() int64 {
+	if x != nil {
+		return x.SocketId
 	}
 	return 0
 }
 
-func (m *GetSocketRequest) GetSummary() bool {
-	if m != nil {
-		return m.Summary
+func (x *GetSocketRequest) GetSummary() bool {
+	if x != nil {
+		return x.Summary
 	}
 	return false
 }
 
 type GetSocketResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The Socket that corresponds to the requested socket_id.  This field
 	// should be set.
-	Socket               *Socket  `protobuf:"bytes,1,opt,name=socket,proto3" json:"socket,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Socket *Socket `protobuf:"bytes,1,opt,name=socket,proto3" json:"socket,omitempty"`
 }
 
-func (m *GetSocketResponse) Reset()         { *m = GetSocketResponse{} }
-func (m *GetSocketResponse) String() string { return proto.CompactTextString(m) }
-func (*GetSocketResponse) ProtoMessage()    {}
+func (x *GetSocketResponse) Reset() {
+	*x = GetSocketResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[33]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GetSocketResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetSocketResponse) ProtoMessage() {}
+
+func (x *GetSocketResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[33]