diff --git a/aos/network/message_bridge_client_lib.cc b/aos/network/message_bridge_client_lib.cc
index c43fc9a..0aefb5c 100644
--- a/aos/network/message_bridge_client_lib.cc
+++ b/aos/network/message_bridge_client_lib.cc
@@ -129,7 +129,7 @@
       [this]() { connect_timer_->Setup(event_loop_->monotonic_now()); });
 
   size_t max_write_size =
-      std::max(static_cast<size_t>(208u), connect_message_.span().size());
+      std::max(kHeaderSizeOverhead(), connect_message_.span().size());
   size_t max_read_size = 0u;
 
   for (const Channel *channel : *event_loop_->configuration()->channels()) {
@@ -139,8 +139,9 @@
         configuration::ChannelIsReadableOnNode(channel, event_loop_->node())) {
       VLOG(1) << "Receiving channel "
               << configuration::CleanedChannelToString(channel);
-      max_read_size = std::max(static_cast<size_t>(channel->max_size() + 208u),
-                               max_read_size);
+      max_read_size = std::max(
+          static_cast<size_t>(channel->max_size() + kHeaderSizeOverhead()),
+          max_read_size);
     }
   }
 
diff --git a/aos/network/message_bridge_protocol.h b/aos/network/message_bridge_protocol.h
index 485defe..23a6e0f 100644
--- a/aos/network/message_bridge_protocol.h
+++ b/aos/network/message_bridge_protocol.h
@@ -31,6 +31,10 @@
 // The stream on which timestamp replies are sent.
 constexpr size_t kTimestampStream() { return 1; }
 
+// Overhead constant for headers.  Both remote timestamps and the extra context
+// inside RemoteData need to fit inside this.
+constexpr size_t kHeaderSizeOverhead() { return 208u; }
+
 // Builds up a subscription request for my_node to remote_name.
 aos::FlatbufferDetachedBuffer<aos::message_bridge::Connect> MakeConnectMessage(
     const Configuration *config, const Node *my_node,
diff --git a/aos/network/message_bridge_server_lib.cc b/aos/network/message_bridge_server_lib.cc
index ce68402..df6d4b1 100644
--- a/aos/network/message_bridge_server_lib.cc
+++ b/aos/network/message_bridge_server_lib.cc
@@ -29,8 +29,7 @@
 flatbuffers::FlatBufferBuilder ChannelState::PackContext(
     FixedAllocator *allocator, const Context &context) {
   flatbuffers::FlatBufferBuilder fbb(
-      channel_->max_size() + MessageBridgeServer::kRemoteDataHeaderMaxSize,
-      allocator);
+      channel_->max_size() + kHeaderSizeOverhead(), allocator);
   fbb.ForceDefaults(true);
   VLOG(2) << "Found " << peers_.size() << " peers on channel "
           << channel_->name()->string_view() << " "
@@ -402,9 +401,11 @@
   CHECK(timestamp_state_ != nullptr);
 
   // Buffer up the max size a bit so everything fits nicely.
-  LOG(INFO) << "Max message size for all clients is " << max_size;
+  LOG(INFO) << "Max message read size for all clients is " << max_size;
+  LOG(INFO) << "Max message write size for all clients is "
+            << max_channel_size + kHeaderSizeOverhead();
   server_.SetMaxReadSize(max_size);
-  server_.SetMaxWriteSize(max_channel_size + kRemoteDataHeaderMaxSize);
+  server_.SetMaxWriteSize(max_channel_size + kHeaderSizeOverhead());
 
   // Since we are doing interleaving mode 1, we will see at most 1 message being
   // delivered at a time for an association.  That means, if a message is
@@ -415,7 +416,7 @@
   // and 1 new one with more of the data).
   server_.SetPoolSize((destination_nodes + 1) * 2);
 
-  allocator_ = FixedAllocator(max_channel_size + kRemoteDataHeaderMaxSize);
+  allocator_ = FixedAllocator(max_channel_size + kHeaderSizeOverhead());
 
   reconnected_.reserve(max_channels());
 }
diff --git a/aos/network/message_bridge_server_lib.h b/aos/network/message_bridge_server_lib.h
index fdc0441..98e1dd0 100644
--- a/aos/network/message_bridge_server_lib.h
+++ b/aos/network/message_bridge_server_lib.h
@@ -111,10 +111,6 @@
 // node.  It handles the session and dispatches data to the ChannelState.
 class MessageBridgeServer {
  public:
-  // Size to reserve when building the RemoteData message for the header over
-  // the data size.
-  static constexpr size_t kRemoteDataHeaderMaxSize = 208u;
-
   MessageBridgeServer(aos::ShmEventLoop *event_loop, std::string config_sha256);
 
   ~MessageBridgeServer() { event_loop_->epoll()->DeleteFd(server_.fd()); }
