Skip to content

gRPC Communication Issues with Network Intermediaries (Proxies, Load Balancers, Antivirus) #12741

@Devil2-O

Description

@Devil2-O

Hi All,

We recently migrated from CORBA to gRPC and while the transition was generally smooth, we're experiencing significant communication issues when network intermediaries are involved, such as proxies, reverse proxies, load balancers, and antivirus software.

Background:
Our application is a standalone system that handles large message payloads. When our server sends data to clients, these network intermediaries are causing several problems:

Issues Encountered:

  1. Stream termination: Intermediaries are closing streams prematurely
  2. TCP connection drops: Connections are being killed unexpectedly
  3. Timeout-based resets: Streams are reset after certain time thresholds, even when data is actively being transmitted
  4. Incomplete data delivery: Clients receive "end-of-midstream" or "stream closed" errors before receiving complete payloads

Root Cause Analysis:
Previously with CORBA, we never encountered these issues since CORBA uses the IIOP protocol. However, since gRPC uses HTTP/2, our communication is now subject to HTTP-based network policies and restrictions that these intermediaries enforce.

Current Situation:

  • Suggesting network configuration changes isn't a permanent solution for us
  • Our server needs to send large payloads and we cannot change our entire architecture immediately
  • We considered streaming the data, but this still uses a single HTTP/2 stream, which encounters the same intermediary restrictions

Question:
Since these HTTP port restrictions are implemented for security reasons, we cannot continuously ask network administrators to modify their configurations.

Are there any gRPC-specific solutions or best practices to mitigate these issues when dealing with network intermediaries that have strict HTTP policies?

Any suggestions or guidance would be greatly appreciated.

Thanks!

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions