The Envoy external processing only supports 1x1 body streaming, which is, Envoy sends one chunk of body to the side stream server. The side stream server mutates the received body, then sends the mutated body back to Envoy as the response. This 1x1 requirement becomes a bottleneck for certain use cases like compression, in which the side stream server has to buffer M chunks of data before processing them. After processing, it needs to split the response data into N chunks and send them back one-by-one. Such MxN streaming is not supported in the 1x1 state machine, which greatly limits Envoy's external processing capability. Proposed MxN Algorithm: An API change is added to notify Envoy that there are more response chunks coming back corresponding to a request chunk. Envoy utilizes this API to process the received response and prepare its state machine to receive next chunks. Continue the MxN data streaming as data arrives. Config knob is added for security considerations.