http connection manager#
First of all, http connection manager(HCM) is a Network Filter from the Listener’s point of view.
For scalability, Envoy’s http connection manager uses the classic filter chain design pattern. This is similar to Listener Filter Chain:
Figure: http connection manager Design model#
The filter flow of http request:
source: life_of_a_request
The filter flow of http response:
source: life_of_a_request
http filter abstract object definition#
HttpFilter is called StreamFilter or more precisely Http::StreamFilterBase in the source code. An http connection manager has an Http::FilterManager and a FilterManager has list<StreamFilterBase*> filters_.
Figure: http filter abstract object#
http filter C++ class relationships#
Figure: http filter C++ class relationships#