Update protobuf to v21.6 (#31015)

* Update third_party/protobuf

* run tools/distrib/python/make_grpcio_tools.py

* update build_handwritten.yaml

* regenerate projects

* Update Python version floor
diff --git a/bazel/grpc_deps.bzl b/bazel/grpc_deps.bzl
index 6e4f8bb..2c4dfcf 100644
--- a/bazel/grpc_deps.bzl
+++ b/bazel/grpc_deps.bzl
@@ -218,11 +218,11 @@
     if "com_google_protobuf" not in native.existing_rules():
         http_archive(
             name = "com_google_protobuf",
-            sha256 = "6b6c30c00eacbc888414916c9784fd2159b5f4a7b7200d947a19dfdf70eef6ff",
-            strip_prefix = "protobuf-ab840345966d0fa8e7100d771c92a73bfbadd25c",
+            sha256 = "63c5539a8506dc6bccd352a857cea106e0a389ce047a3ff0a78fe3f8fede410d",
+            strip_prefix = "protobuf-24487dd1045c7f3d64a21f38a3f0c06cc4cf2edb",
             urls = [
-                "https://storage.googleapis.com/grpc-bazel-mirror/github.com/protocolbuffers/protobuf/archive/ab840345966d0fa8e7100d771c92a73bfbadd25c.tar.gz",
-                "https://github.com/protocolbuffers/protobuf/archive/ab840345966d0fa8e7100d771c92a73bfbadd25c.tar.gz",
+                "https://storage.googleapis.com/grpc-bazel-mirror/github.com/protocolbuffers/protobuf/archive/24487dd1045c7f3d64a21f38a3f0c06cc4cf2edb.tar.gz",
+                "https://github.com/protocolbuffers/protobuf/archive/24487dd1045c7f3d64a21f38a3f0c06cc4cf2edb.tar.gz",
             ],
             patches = ["@com_github_grpc_grpc//third_party:protobuf.patch"],
             patch_args = ["-p1"],
diff --git a/build_handwritten.yaml b/build_handwritten.yaml
index aadc59c..2542e54 100644
--- a/build_handwritten.yaml
+++ b/build_handwritten.yaml
@@ -15,7 +15,7 @@
   core_version: 27.0.0
   csharp_major_version: 2
   g_stands_for: galley
-  protobuf_version: 3.21.5
+  protobuf_version: 3.21.6
   version: 1.50.0-dev
 configs:
   asan:
diff --git a/src/csharp/build/dependencies.props b/src/csharp/build/dependencies.props
index a146e1a..090dd02 100644
--- a/src/csharp/build/dependencies.props
+++ b/src/csharp/build/dependencies.props
@@ -2,6 +2,6 @@
 <Project>
   <PropertyGroup>
     <GrpcCsharpVersion>2.50.0-dev</GrpcCsharpVersion>
-    <GoogleProtobufVersion>3.21.5</GoogleProtobufVersion>
+    <GoogleProtobufVersion>3.21.6</GoogleProtobufVersion>
   </PropertyGroup>
 </Project>
diff --git "a/src/objective-c/\041ProtoCompiler-gRPCCppPlugin.podspec" "b/src/objective-c/\041ProtoCompiler-gRPCCppPlugin.podspec"
index 47dd9ae..e1faea4 100644
--- "a/src/objective-c/\041ProtoCompiler-gRPCCppPlugin.podspec"
+++ "b/src/objective-c/\041ProtoCompiler-gRPCCppPlugin.podspec"
@@ -100,7 +100,7 @@
   s.preserve_paths = plugin
 
   # Restrict the protoc version to the one supported by this plugin.
-  s.dependency '!ProtoCompiler', '3.21.5'
+  s.dependency '!ProtoCompiler', '3.21.6'
   # For the Protobuf dependency not to complain:
   s.ios.deployment_target = '9.0'
   s.osx.deployment_target = '10.10'
diff --git "a/src/objective-c/\041ProtoCompiler-gRPCPlugin.podspec" "b/src/objective-c/\041ProtoCompiler-gRPCPlugin.podspec"
index ae88c68..9220e59 100644
--- "a/src/objective-c/\041ProtoCompiler-gRPCPlugin.podspec"
+++ "b/src/objective-c/\041ProtoCompiler-gRPCPlugin.podspec"
@@ -102,7 +102,7 @@
   s.preserve_paths = plugin
 
   # Restrict the protoc version to the one supported by this plugin.
-  s.dependency '!ProtoCompiler', '3.21.5'
+  s.dependency '!ProtoCompiler', '3.21.6'
   # For the Protobuf dependency not to complain:
   s.ios.deployment_target = '9.0'
   s.osx.deployment_target = '10.10'
diff --git "a/src/objective-c/\041ProtoCompiler.podspec" "b/src/objective-c/\041ProtoCompiler.podspec"
index 6bab96d..6bd88c1 100644
--- "a/src/objective-c/\041ProtoCompiler.podspec"
+++ "b/src/objective-c/\041ProtoCompiler.podspec"
@@ -36,7 +36,7 @@
   # exclamation mark ensures that other "regular" pods will be able to find it as it'll be installed
   # before them.
   s.name     = '!ProtoCompiler'
-  v = '3.21.5'
+  v = '3.21.6'
   s.version  = v
   s.summary  = 'The Protobuf Compiler (protoc) generates Objective-C files from .proto files'
   s.description = <<-DESC
diff --git a/src/python/grpcio_channelz/setup.py b/src/python/grpcio_channelz/setup.py
index a1da3f7..f0a9c61 100644
--- a/src/python/grpcio_channelz/setup.py
+++ b/src/python/grpcio_channelz/setup.py
@@ -64,7 +64,7 @@
 }
 
 INSTALL_REQUIRES = (
-    'protobuf>=4.21.3',
+    'protobuf>=4.21.6',
     'grpcio>={version}'.format(version=grpc_version.VERSION),
 )
 
diff --git a/src/python/grpcio_csds/setup.py b/src/python/grpcio_csds/setup.py
index b01ab70..6523648 100644
--- a/src/python/grpcio_csds/setup.py
+++ b/src/python/grpcio_csds/setup.py
@@ -39,7 +39,7 @@
 }
 
 INSTALL_REQUIRES = (
-    'protobuf>=4.21.3',
+    'protobuf>=4.21.6',
     'xds-protos>=0.0.7',
     'grpcio>={version}'.format(version=grpc_version.VERSION),
 )
diff --git a/src/python/grpcio_health_checking/setup.py b/src/python/grpcio_health_checking/setup.py
index 2de7eaf..6c4725b 100644
--- a/src/python/grpcio_health_checking/setup.py
+++ b/src/python/grpcio_health_checking/setup.py
@@ -63,7 +63,7 @@
 }
 
 INSTALL_REQUIRES = (
-    'protobuf>=4.21.3',
+    'protobuf>=4.21.6',
     'grpcio>={version}'.format(version=grpc_version.VERSION),
 )
 
diff --git a/src/python/grpcio_reflection/setup.py b/src/python/grpcio_reflection/setup.py
index 16793ca..bd3f538 100644
--- a/src/python/grpcio_reflection/setup.py
+++ b/src/python/grpcio_reflection/setup.py
@@ -64,7 +64,7 @@
 }
 
 INSTALL_REQUIRES = (
-    'protobuf>=4.21.3',
+    'protobuf>=4.21.6',
     'grpcio>={version}'.format(version=grpc_version.VERSION),
 )
 
diff --git a/src/python/grpcio_status/setup.py b/src/python/grpcio_status/setup.py
index 350209f..593891c 100644
--- a/src/python/grpcio_status/setup.py
+++ b/src/python/grpcio_status/setup.py
@@ -63,7 +63,7 @@
 }
 
 INSTALL_REQUIRES = (
-    'protobuf>=4.21.3',
+    'protobuf>=4.21.6',
     'grpcio>={version}'.format(version=grpc_version.VERSION),
     'googleapis-common-protos>=1.5.5',
 )
diff --git a/src/python/grpcio_testing/setup.py b/src/python/grpcio_testing/setup.py
index c9b16e0..a983d8d 100644
--- a/src/python/grpcio_testing/setup.py
+++ b/src/python/grpcio_testing/setup.py
@@ -49,7 +49,7 @@
 }
 
 INSTALL_REQUIRES = (
-    'protobuf>=4.21.3',
+    'protobuf>=4.21.6',
     'grpcio>={version}'.format(version=grpc_version.VERSION),
 )
 
diff --git a/src/python/grpcio_tests/setup.py b/src/python/grpcio_tests/setup.py
index 3dd447b..b2c8f17 100644
--- a/src/python/grpcio_tests/setup.py
+++ b/src/python/grpcio_tests/setup.py
@@ -42,7 +42,7 @@
     'grpcio-status>={version}'.format(version=grpc_version.VERSION),
     'grpcio-tools>={version}'.format(version=grpc_version.VERSION),
     'grpcio-health-checking>={version}'.format(version=grpc_version.VERSION),
-    'oauth2client>=1.4.7', 'protobuf>=4.21.3', 'six>=1.10',
+    'oauth2client>=1.4.7', 'protobuf>=4.21.6', 'six>=1.10',
     'google-auth>=1.17.2', 'requests>=2.14.2')
 
 if not PY3:
diff --git a/third_party/protobuf b/third_party/protobuf
index ab84034..24487dd 160000
--- a/third_party/protobuf
+++ b/third_party/protobuf
@@ -1 +1 @@
-Subproject commit ab840345966d0fa8e7100d771c92a73bfbadd25c
+Subproject commit 24487dd1045c7f3d64a21f38a3f0c06cc4cf2edb
diff --git a/third_party/protobuf.patch b/third_party/protobuf.patch
index c779004..1ee120d 100644
--- a/third_party/protobuf.patch
+++ b/third_party/protobuf.patch
@@ -5,7 +5,7 @@
 @@ -31,3 +31,9 @@
  # Copyright 2007 Google Inc. All Rights Reserved.
 
- __version__ = '4.21.5'
+ __version__ = '4.21.6'
 +
 +if __name__ != '__main__':
 +  try:
diff --git a/tools/distrib/python/grpc_version.py b/tools/distrib/python/grpc_version.py
index af0cb60..0cfa62e 100644
--- a/tools/distrib/python/grpc_version.py
+++ b/tools/distrib/python/grpc_version.py
@@ -15,4 +15,4 @@
 # AUTO-GENERATED FROM `$REPO_ROOT/templates/tools/distrib/python/grpcio_tools/grpc_version.py.template`!!!
 
 VERSION = '1.50.0.dev0'
-PROTOBUF_VERSION = '3.21.5'
+PROTOBUF_VERSION = '3.21.6'
diff --git a/tools/distrib/python/grpcio_tools/grpc_version.py b/tools/distrib/python/grpcio_tools/grpc_version.py
index 81c2f01..b0022d7 100644
--- a/tools/distrib/python/grpcio_tools/grpc_version.py
+++ b/tools/distrib/python/grpcio_tools/grpc_version.py
@@ -15,4 +15,4 @@
 # AUTO-GENERATED FROM `$REPO_ROOT/templates/tools/distrib/python/grpcio_tools/grpc_version.py.template`!!!
 
 VERSION = '1.50.0.dev0'
-PROTOBUF_VERSION = '3.21.5'
+PROTOBUF_VERSION = '3.21.6'
diff --git a/tools/distrib/python/grpcio_tools/protoc_lib_deps.py b/tools/distrib/python/grpcio_tools/protoc_lib_deps.py
index 1f6318e..8d093d2 100644
--- a/tools/distrib/python/grpcio_tools/protoc_lib_deps.py
+++ b/tools/distrib/python/grpcio_tools/protoc_lib_deps.py
@@ -14,10 +14,10 @@
 # limitations under the License.
 
 # AUTO-GENERATED BY make_grpcio_tools.py!
-CC_FILES=['google/protobuf/compiler/zip_writer.cc', 'google/protobuf/compiler/subprocess.cc', 'google/protobuf/compiler/ruby/ruby_generator.cc', 'google/protobuf/compiler/python/pyi_generator.cc', 'google/protobuf/compiler/python/helpers.cc', 'google/protobuf/compiler/python/generator.cc', 'google/protobuf/compiler/plugin.pb.cc', 'google/protobuf/compiler/plugin.cc', 'google/protobuf/compiler/php/php_generator.cc', 'google/protobuf/compiler/objectivec/objectivec_primitive_field.cc', 'google/protobuf/compiler/objectivec/objectivec_oneof.cc', 'google/protobuf/compiler/objectivec/objectivec_message_field.cc', 'google/protobuf/compiler/objectivec/objectivec_message.cc', 'google/protobuf/compiler/objectivec/objectivec_map_field.cc', 'google/protobuf/compiler/objectivec/objectivec_helpers.cc', 'google/protobuf/compiler/objectivec/objectivec_generator.cc', 'google/protobuf/compiler/objectivec/objectivec_file.cc', 'google/protobuf/compiler/objectivec/objectivec_field.cc', 'google/protobuf/compiler/objectivec/objectivec_extension.cc', 'google/protobuf/compiler/objectivec/objectivec_enum_field.cc', 'google/protobuf/compiler/objectivec/objectivec_enum.cc', 'google/protobuf/compiler/java/string_field_lite.cc', 'google/protobuf/compiler/java/string_field.cc', 'google/protobuf/compiler/java/shared_code_generator.cc', 'google/protobuf/compiler/java/service.cc', 'google/protobuf/compiler/java/primitive_field_lite.cc', 'google/protobuf/compiler/java/primitive_field.cc', 'google/protobuf/compiler/java/name_resolver.cc', 'google/protobuf/compiler/java/message_lite.cc', 'google/protobuf/compiler/java/message_field_lite.cc', 'google/protobuf/compiler/java/message_field.cc', 'google/protobuf/compiler/java/message_builder_lite.cc', 'google/protobuf/compiler/java/message_builder.cc', 'google/protobuf/compiler/java/message.cc', 'google/protobuf/compiler/java/map_field_lite.cc', 'google/protobuf/compiler/java/map_field.cc', 'google/protobuf/compiler/java/kotlin_generator.cc', 'google/protobuf/compiler/java/helpers.cc', 'google/protobuf/compiler/java/generator_factory.cc', 'google/protobuf/compiler/java/generator.cc', 'google/protobuf/compiler/java/file.cc', 'google/protobuf/compiler/java/field.cc', 'google/protobuf/compiler/java/extension_lite.cc', 'google/protobuf/compiler/java/extension.cc', 'google/protobuf/compiler/java/enum_lite.cc', 'google/protobuf/compiler/java/enum_field_lite.cc', 'google/protobuf/compiler/java/enum_field.cc', 'google/protobuf/compiler/java/enum.cc', 'google/protobuf/compiler/java/doc_comment.cc', 'google/protobuf/compiler/java/context.cc', 'google/protobuf/compiler/csharp/csharp_wrapper_field.cc', 'google/protobuf/compiler/csharp/csharp_source_generator_base.cc', 'google/protobuf/compiler/csharp/csharp_repeated_primitive_field.cc', 'google/protobuf/compiler/csharp/csharp_repeated_message_field.cc', 'google/protobuf/compiler/csharp/csharp_repeated_enum_field.cc', 'google/protobuf/compiler/csharp/csharp_reflection_class.cc', 'google/protobuf/compiler/csharp/csharp_primitive_field.cc', 'google/protobuf/compiler/csharp/csharp_message_field.cc', 'google/protobuf/compiler/csharp/csharp_message.cc', 'google/protobuf/compiler/csharp/csharp_map_field.cc', 'google/protobuf/compiler/csharp/csharp_helpers.cc', 'google/protobuf/compiler/csharp/csharp_generator.cc', 'google/protobuf/compiler/csharp/csharp_field_base.cc', 'google/protobuf/compiler/csharp/csharp_enum_field.cc', 'google/protobuf/compiler/csharp/csharp_enum.cc', 'google/protobuf/compiler/csharp/csharp_doc_comment.cc', 'google/protobuf/compiler/cpp/string_field.cc', 'google/protobuf/compiler/cpp/service.cc', 'google/protobuf/compiler/cpp/primitive_field.cc', 'google/protobuf/compiler/cpp/parse_function_generator.cc', 'google/protobuf/compiler/cpp/padding_optimizer.cc', 'google/protobuf/compiler/cpp/message_field.cc', 'google/protobuf/compiler/cpp/message.cc', 'google/protobuf/compiler/cpp/map_field.cc', 'google/protobuf/compiler/cpp/helpers.cc', 'google/protobuf/compiler/cpp/generator.cc', 'google/protobuf/compiler/cpp/file.cc', 'google/protobuf/compiler/cpp/field.cc', 'google/protobuf/compiler/cpp/extension.cc', 'google/protobuf/compiler/cpp/enum_field.cc', 'google/protobuf/compiler/cpp/enum.cc', 'google/protobuf/compiler/command_line_interface.cc', 'google/protobuf/compiler/code_generator.cc', 'google/protobuf/wrappers.pb.cc', 'google/protobuf/wire_format.cc', 'google/protobuf/util/type_resolver_util.cc', 'google/protobuf/util/time_util.cc', 'google/protobuf/util/message_differencer.cc', 'google/protobuf/util/json_util.cc', 'google/protobuf/util/internal/utility.cc', 'google/protobuf/util/internal/type_info.cc', 'google/protobuf/util/internal/protostream_objectwriter.cc', 'google/protobuf/util/internal/protostream_objectsource.cc', 'google/protobuf/util/internal/proto_writer.cc', 'google/protobuf/util/internal/object_writer.cc', 'google/protobuf/util/internal/json_stream_parser.cc', 'google/protobuf/util/internal/json_objectwriter.cc', 'google/protobuf/util/internal/json_escaping.cc', 'google/protobuf/util/internal/field_mask_utility.cc', 'google/protobuf/util/internal/error_listener.cc', 'google/protobuf/util/internal/default_value_objectwriter.cc', 'google/protobuf/util/internal/datapiece.cc', 'google/protobuf/util/field_mask_util.cc', 'google/protobuf/util/field_comparator.cc', 'google/protobuf/util/delimited_message_util.cc', 'google/protobuf/unknown_field_set.cc', 'google/protobuf/type.pb.cc', 'google/protobuf/timestamp.pb.cc', 'google/protobuf/text_format.cc', 'google/protobuf/stubs/substitute.cc', 'google/protobuf/struct.pb.cc', 'google/protobuf/source_context.pb.cc', 'google/protobuf/service.cc', 'google/protobuf/reflection_ops.cc', 'google/protobuf/message.cc', 'google/protobuf/map_field.cc', 'google/protobuf/io/tokenizer.cc', 'google/protobuf/io/printer.cc', 'google/protobuf/io/gzip_stream.cc', 'google/protobuf/generated_message_tctable_full.cc', 'google/protobuf/generated_message_reflection.cc', 'google/protobuf/generated_message_bases.cc', 'google/protobuf/field_mask.pb.cc', 'google/protobuf/extension_set_heavy.cc', 'google/protobuf/empty.pb.cc', 'google/protobuf/dynamic_message.cc', 'google/protobuf/duration.pb.cc', 'google/protobuf/descriptor_database.cc', 'google/protobuf/descriptor.pb.cc', 'google/protobuf/descriptor.cc', 'google/protobuf/compiler/parser.cc', 'google/protobuf/compiler/importer.cc', 'google/protobuf/api.pb.cc', 'google/protobuf/any.pb.cc', 'google/protobuf/any.cc', 'google/protobuf/wire_format_lite.cc', 'google/protobuf/stubs/time.cc', 'google/protobuf/stubs/strutil.cc', 'google/protobuf/stubs/structurally_valid.cc', 'google/protobuf/stubs/stringprintf.cc', 'google/protobuf/stubs/stringpiece.cc', 'google/protobuf/stubs/statusor.cc', 'google/protobuf/stubs/status.cc', 'google/protobuf/stubs/int128.cc', 'google/protobuf/stubs/common.cc', 'google/protobuf/stubs/bytestream.cc', 'google/protobuf/repeated_ptr_field.cc', 'google/protobuf/repeated_field.cc', 'google/protobuf/parse_context.cc', 'google/protobuf/message_lite.cc', 'google/protobuf/map.cc', 'google/protobuf/io/zero_copy_stream_impl_lite.cc', 'google/protobuf/io/zero_copy_stream_impl.cc', 'google/protobuf/io/zero_copy_stream.cc', 'google/protobuf/io/strtod.cc', 'google/protobuf/io/io_win32.cc', 'google/protobuf/io/coded_stream.cc', 'google/protobuf/inlined_string_field.cc', 'google/protobuf/implicit_weak_message.cc', 'google/protobuf/generated_message_util.cc', 'google/protobuf/generated_message_tctable_lite.cc', 'google/protobuf/generated_enum_util.cc', 'google/protobuf/extension_set.cc', 'google/protobuf/arenaz_sampler.cc', 'google/protobuf/arenastring.cc', 'google/protobuf/arena.cc', 'google/protobuf/any_lite.cc']
-PROTO_FILES=['google/protobuf/wrappers.proto', 'google/protobuf/type.proto', 'google/protobuf/timestamp.proto', 'google/protobuf/struct.proto', 'google/protobuf/source_context.proto', 'google/protobuf/field_mask.proto', 'google/protobuf/empty.proto', 'google/protobuf/duration.proto', 'google/protobuf/api.proto', 'google/protobuf/any.proto']
+CC_FILES=['google/protobuf/any.cc', 'google/protobuf/any.pb.cc', 'google/protobuf/any_lite.cc', 'google/protobuf/api.pb.cc', 'google/protobuf/arena.cc', 'google/protobuf/arenastring.cc', 'google/protobuf/arenaz_sampler.cc', 'google/protobuf/compiler/code_generator.cc', 'google/protobuf/compiler/command_line_interface.cc', 'google/protobuf/compiler/cpp/enum.cc', 'google/protobuf/compiler/cpp/enum_field.cc', 'google/protobuf/compiler/cpp/extension.cc', 'google/protobuf/compiler/cpp/field.cc', 'google/protobuf/compiler/cpp/file.cc', 'google/protobuf/compiler/cpp/generator.cc', 'google/protobuf/compiler/cpp/helpers.cc', 'google/protobuf/compiler/cpp/map_field.cc', 'google/protobuf/compiler/cpp/message.cc', 'google/protobuf/compiler/cpp/message_field.cc', 'google/protobuf/compiler/cpp/padding_optimizer.cc', 'google/protobuf/compiler/cpp/parse_function_generator.cc', 'google/protobuf/compiler/cpp/primitive_field.cc', 'google/protobuf/compiler/cpp/service.cc', 'google/protobuf/compiler/cpp/string_field.cc', 'google/protobuf/compiler/csharp/csharp_doc_comment.cc', 'google/protobuf/compiler/csharp/csharp_enum.cc', 'google/protobuf/compiler/csharp/csharp_enum_field.cc', 'google/protobuf/compiler/csharp/csharp_field_base.cc', 'google/protobuf/compiler/csharp/csharp_generator.cc', 'google/protobuf/compiler/csharp/csharp_helpers.cc', 'google/protobuf/compiler/csharp/csharp_map_field.cc', 'google/protobuf/compiler/csharp/csharp_message.cc', 'google/protobuf/compiler/csharp/csharp_message_field.cc', 'google/protobuf/compiler/csharp/csharp_primitive_field.cc', 'google/protobuf/compiler/csharp/csharp_reflection_class.cc', 'google/protobuf/compiler/csharp/csharp_repeated_enum_field.cc', 'google/protobuf/compiler/csharp/csharp_repeated_message_field.cc', 'google/protobuf/compiler/csharp/csharp_repeated_primitive_field.cc', 'google/protobuf/compiler/csharp/csharp_source_generator_base.cc', 'google/protobuf/compiler/csharp/csharp_wrapper_field.cc', 'google/protobuf/compiler/importer.cc', 'google/protobuf/compiler/java/context.cc', 'google/protobuf/compiler/java/doc_comment.cc', 'google/protobuf/compiler/java/enum.cc', 'google/protobuf/compiler/java/enum_field.cc', 'google/protobuf/compiler/java/enum_field_lite.cc', 'google/protobuf/compiler/java/enum_lite.cc', 'google/protobuf/compiler/java/extension.cc', 'google/protobuf/compiler/java/extension_lite.cc', 'google/protobuf/compiler/java/field.cc', 'google/protobuf/compiler/java/file.cc', 'google/protobuf/compiler/java/generator.cc', 'google/protobuf/compiler/java/generator_factory.cc', 'google/protobuf/compiler/java/helpers.cc', 'google/protobuf/compiler/java/kotlin_generator.cc', 'google/protobuf/compiler/java/map_field.cc', 'google/protobuf/compiler/java/map_field_lite.cc', 'google/protobuf/compiler/java/message.cc', 'google/protobuf/compiler/java/message_builder.cc', 'google/protobuf/compiler/java/message_builder_lite.cc', 'google/protobuf/compiler/java/message_field.cc', 'google/protobuf/compiler/java/message_field_lite.cc', 'google/protobuf/compiler/java/message_lite.cc', 'google/protobuf/compiler/java/name_resolver.cc', 'google/protobuf/compiler/java/primitive_field.cc', 'google/protobuf/compiler/java/primitive_field_lite.cc', 'google/protobuf/compiler/java/service.cc', 'google/protobuf/compiler/java/shared_code_generator.cc', 'google/protobuf/compiler/java/string_field.cc', 'google/protobuf/compiler/java/string_field_lite.cc', 'google/protobuf/compiler/objectivec/objectivec_enum.cc', 'google/protobuf/compiler/objectivec/objectivec_enum_field.cc', 'google/protobuf/compiler/objectivec/objectivec_extension.cc', 'google/protobuf/compiler/objectivec/objectivec_field.cc', 'google/protobuf/compiler/objectivec/objectivec_file.cc', 'google/protobuf/compiler/objectivec/objectivec_generator.cc', 'google/protobuf/compiler/objectivec/objectivec_helpers.cc', 'google/protobuf/compiler/objectivec/objectivec_map_field.cc', 'google/protobuf/compiler/objectivec/objectivec_message.cc', 'google/protobuf/compiler/objectivec/objectivec_message_field.cc', 'google/protobuf/compiler/objectivec/objectivec_oneof.cc', 'google/protobuf/compiler/objectivec/objectivec_primitive_field.cc', 'google/protobuf/compiler/parser.cc', 'google/protobuf/compiler/php/php_generator.cc', 'google/protobuf/compiler/plugin.cc', 'google/protobuf/compiler/plugin.pb.cc', 'google/protobuf/compiler/python/generator.cc', 'google/protobuf/compiler/python/helpers.cc', 'google/protobuf/compiler/python/pyi_generator.cc', 'google/protobuf/compiler/ruby/ruby_generator.cc', 'google/protobuf/compiler/subprocess.cc', 'google/protobuf/compiler/zip_writer.cc', 'google/protobuf/descriptor.cc', 'google/protobuf/descriptor.pb.cc', 'google/protobuf/descriptor_database.cc', 'google/protobuf/duration.pb.cc', 'google/protobuf/dynamic_message.cc', 'google/protobuf/empty.pb.cc', 'google/protobuf/extension_set.cc', 'google/protobuf/extension_set_heavy.cc', 'google/protobuf/field_mask.pb.cc', 'google/protobuf/generated_enum_util.cc', 'google/protobuf/generated_message_bases.cc', 'google/protobuf/generated_message_reflection.cc', 'google/protobuf/generated_message_tctable_full.cc', 'google/protobuf/generated_message_tctable_lite.cc', 'google/protobuf/generated_message_util.cc', 'google/protobuf/implicit_weak_message.cc', 'google/protobuf/inlined_string_field.cc', 'google/protobuf/io/coded_stream.cc', 'google/protobuf/io/gzip_stream.cc', 'google/protobuf/io/io_win32.cc', 'google/protobuf/io/printer.cc', 'google/protobuf/io/strtod.cc', 'google/protobuf/io/tokenizer.cc', 'google/protobuf/io/zero_copy_stream.cc', 'google/protobuf/io/zero_copy_stream_impl.cc', 'google/protobuf/io/zero_copy_stream_impl_lite.cc', 'google/protobuf/map.cc', 'google/protobuf/map_field.cc', 'google/protobuf/message.cc', 'google/protobuf/message_lite.cc', 'google/protobuf/parse_context.cc', 'google/protobuf/reflection_ops.cc', 'google/protobuf/repeated_field.cc', 'google/protobuf/repeated_ptr_field.cc', 'google/protobuf/service.cc', 'google/protobuf/source_context.pb.cc', 'google/protobuf/struct.pb.cc', 'google/protobuf/stubs/bytestream.cc', 'google/protobuf/stubs/common.cc', 'google/protobuf/stubs/int128.cc', 'google/protobuf/stubs/status.cc', 'google/protobuf/stubs/statusor.cc', 'google/protobuf/stubs/stringpiece.cc', 'google/protobuf/stubs/stringprintf.cc', 'google/protobuf/stubs/structurally_valid.cc', 'google/protobuf/stubs/strutil.cc', 'google/protobuf/stubs/substitute.cc', 'google/protobuf/stubs/time.cc', 'google/protobuf/text_format.cc', 'google/protobuf/timestamp.pb.cc', 'google/protobuf/type.pb.cc', 'google/protobuf/unknown_field_set.cc', 'google/protobuf/util/delimited_message_util.cc', 'google/protobuf/util/field_comparator.cc', 'google/protobuf/util/field_mask_util.cc', 'google/protobuf/util/internal/datapiece.cc', 'google/protobuf/util/internal/default_value_objectwriter.cc', 'google/protobuf/util/internal/error_listener.cc', 'google/protobuf/util/internal/field_mask_utility.cc', 'google/protobuf/util/internal/json_escaping.cc', 'google/protobuf/util/internal/json_objectwriter.cc', 'google/protobuf/util/internal/json_stream_parser.cc', 'google/protobuf/util/internal/object_writer.cc', 'google/protobuf/util/internal/proto_writer.cc', 'google/protobuf/util/internal/protostream_objectsource.cc', 'google/protobuf/util/internal/protostream_objectwriter.cc', 'google/protobuf/util/internal/type_info.cc', 'google/protobuf/util/internal/utility.cc', 'google/protobuf/util/json_util.cc', 'google/protobuf/util/message_differencer.cc', 'google/protobuf/util/time_util.cc', 'google/protobuf/util/type_resolver_util.cc', 'google/protobuf/wire_format.cc', 'google/protobuf/wire_format_lite.cc', 'google/protobuf/wrappers.pb.cc']
+PROTO_FILES=['google/protobuf/any.proto', 'google/protobuf/api.proto', 'google/protobuf/duration.proto', 'google/protobuf/empty.proto', 'google/protobuf/field_mask.proto', 'google/protobuf/source_context.proto', 'google/protobuf/struct.proto', 'google/protobuf/timestamp.proto', 'google/protobuf/type.proto', 'google/protobuf/wrappers.proto']
 
 CC_INCLUDE='third_party/protobuf/src'
 PROTO_INCLUDE='third_party/protobuf/src'
 
-PROTOBUF_SUBMODULE_VERSION="ab840345966d0fa8e7100d771c92a73bfbadd25c"
+PROTOBUF_SUBMODULE_VERSION="24487dd1045c7f3d64a21f38a3f0c06cc4cf2edb"
diff --git a/tools/distrib/python/grpcio_tools/setup.py b/tools/distrib/python/grpcio_tools/setup.py
index b8a13e9..1ac1c0c 100644
--- a/tools/distrib/python/grpcio_tools/setup.py
+++ b/tools/distrib/python/grpcio_tools/setup.py
@@ -290,7 +290,7 @@
                  packages=setuptools.find_packages('.'),
                  python_requires='>=3.7',
                  install_requires=[
-                     'protobuf>=4.21.3,<5.0dev',
+                     'protobuf>=4.21.6,<5.0dev',
                      'grpcio>={version}'.format(version=grpc_version.VERSION),
                      'setuptools',
                  ],
diff --git a/tools/run_tests/sanity/check_submodules.sh b/tools/run_tests/sanity/check_submodules.sh
index 3a01062..b4fd2b3 100755
--- a/tools/run_tests/sanity/check_submodules.sh
+++ b/tools/run_tests/sanity/check_submodules.sh
@@ -36,7 +36,7 @@
 third_party/libuv 02a9e1be252b623ee032a3137c0b0c94afbe6809
 third_party/opencensus-proto 4aa53e15cbf1a47bc9087e6cfdca214c1eea4e89
 third_party/opentelemetry 60fa8754d890b5c55949a8c68dcfd7ab5c2395df
-third_party/protobuf ab840345966d0fa8e7100d771c92a73bfbadd25c
+third_party/protobuf 24487dd1045c7f3d64a21f38a3f0c06cc4cf2edb
 third_party/re2 8e08f47b11b413302749c0d8b17a1c94777495d5
 third_party/xds cb28da3451f158a947dfc45090fe92b07b243bc1
 third_party/zlib 21767c654d31d2dccdde4330529775c6c5fd5389