Multiplexer¶
Multiplexer is a remap plug-in that allows a request to be multiplexed one or more times and sent to
different remap entries. Both headers and body (in case of POST or PUT methods, only) are copied
into the new requests. Optionally POST/PUT requests can be skipped via
pparam=proxy.config.multiplexer.skip_post_put=1
.
Description¶
Actions:
Adds
X-Multiplexer: original
header into client’s request.Copies client’s request (bodies are copied by transforming the request)
Changes
Host
header of the copy according topparam
from the remap rule.Changes
X-Multiplexer header
to “copy”.Sends the copied request with
TSHttpConnect
.
Multiplexer dispatches the request in background without blocking the original request. Multiplexed responses are drained and discarded.
A global timeout can be overwritten through multiplexer__timeout
environment variable representing how many nanoseconds to wait. A default 1s timeout is hard-coded.
Please use multiplexer
tag for debugging purposes. While debugging, multiplexed requests and
responses are printed into the logs.
Multiplexer produces the following statistics consumed with traffic_ctl
:
failures: number of failed multiplexed requests
hits: number of successful multiplexed requests
requests: total number of multiplexed requests
time(avg): average time taken between multiplexed requests and their responses
timeouts: number of multiplexed requests which timed-out
size(avg): average size of multiplexed responses
Example remap.config:
map http://www.example.com/a http://www.example.com/ @plugin=multiplexer.so @pparam=host1.example.com
map http://www.example.com/b http://www.example.com/ @plugin=multiplexer.so @pparam=host2.example.com
map http://www.example.com/c http://www.example.com/ @plugin=multiplexer.so @pparam=host1.example.com @pparam=host2.example.com
map http://www.example.com/d http://www.example.com/ @plugin=multiplexer.so @pparam=host1.example.com @pparam=host2.example.com @pparam=proxy.config.multiplexer.skip_post_put=1
Implementation¶
Parsing Chunk Encoded Data¶
Multiplexer parses chunked data with its own home brew parser. In the parser size_
is the size of
a chunk to be consumed. The local variable / parameter size
is raw input size as read from an
TSIOBufferBlock
. The “size states” are marked blue.
Notes¶
Note
This should be moved to the Traffic Server documentation.