Назад | Перейти на главную страницу

Интерпретация логов Envoy Proxy - мои данные были отправлены?

Я пытаюсь настроить Envoy для работы в качестве прокси-сервера TCP, где нисходящие соединения выполняются с Envoy с использованием TCP, зашифрованного TLS. В восходящем направлении используются незашифрованные TCP-соединения. Связи долговечные.

На нисходящем конце клиента я иногда не вижу всех данных, отправленных Envoy. Я получаю кое-что из этого, но данные в конечном итоге полностью поступают только тогда, когда дальнейшие данные отправляются из восходящего потока. Я пытаюсь выяснить, есть ли проблема в моем клиентском коде, который читает и расшифровывает данные TLS, полученные от Envoy (все данные были отправлены, я просто не читаю их должным образом), или есть проблема с тем, как я настроил Envoy (и на самом деле не все данные были отправлены).

Я хочу убедиться, что я правильно интерпретирую журналы, может ли кто-нибудь подтвердить мою интерпретацию?

[2020-05-05 20:05:00.961][40][trace][connection] [source/common/network/connection_impl.cc:466] [C329] socket event: 3
[2020-05-05 20:05:00.961][40][trace][connection] [source/common/network/connection_impl.cc:554] [C329] write ready
[2020-05-05 20:05:00.961][40][trace][connection] [source/common/network/connection_impl.cc:504] [C329] read ready
[2020-05-05 20:05:00.961][40][trace][connection] [source/common/network/raw_buffer_socket.cc:24] [C329] read returns: 16384
[2020-05-05 20:05:00.961][40][trace][connection] [source/common/network/raw_buffer_socket.cc:24] [C329] read returns: 227
[2020-05-05 20:05:00.961][40][trace][connection] [source/common/network/raw_buffer_socket.cc:38] [C329] read error: Resource temporarily unavailable
[2020-05-05 20:05:00.961][40][trace][filter] [source/common/tcp_proxy/tcp_proxy.cc:531] [C328] upstream connection received 16611 bytes, end_stream=false
[2020-05-05 20:05:00.961][40][trace][connection] [source/common/network/connection_impl.cc:402] [C328] writing 16611 bytes, end_stream false
[2020-05-05 20:05:00.961][40][trace][connection] [source/common/network/connection_impl.cc:466] [C328] socket event: 2
[2020-05-05 20:05:00.961][40][trace][connection] [source/common/network/connection_impl.cc:554] [C328] write ready
[2020-05-05 20:05:00.961][40][trace][connection] [source/extensions/transport_sockets/tls/ssl_socket.cc:259] [C328] ssl write returns: 16384
[2020-05-05 20:05:00.961][40][trace][connection] [source/extensions/transport_sockets/tls/ssl_socket.cc:259] [C328] ssl write returns: 227
[2020-05-05 20:05:00.961][40][trace][connection] [source/common/network/connection_impl.cc:466] [C329] socket event: 3
[2020-05-05 20:05:00.961][40][trace][connection] [source/common/network/connection_impl.cc:554] [C329] write ready
[2020-05-05 20:05:00.961][40][trace][connection] [source/common/network/connection_impl.cc:504] [C329] read ready
[2020-05-05 20:05:00.961][40][trace][connection] [source/common/network/raw_buffer_socket.cc:24] [C329] read returns: 186
[2020-05-05 20:05:00.961][40][trace][connection] [source/common/network/raw_buffer_socket.cc:38] [C329] read error: Resource temporarily unavailable
[2020-05-05 20:05:00.961][40][trace][filter] [source/common/tcp_proxy/tcp_proxy.cc:531] [C328] upstream connection received 186 bytes, end_stream=false
[2020-05-05 20:05:00.961][40][trace][connection] [source/common/network/connection_impl.cc:402] [C328] writing 186 bytes, end_stream false
[2020-05-05 20:05:00.961][40][trace][connection] [source/common/network/connection_impl.cc:466] [C328] socket event: 2
[2020-05-05 20:05:00.961][40][trace][connection] [source/common/network/connection_impl.cc:554] [C328] write ready
[2020-05-05 20:05:00.961][40][trace][connection] [source/extensions/transport_sockets/tls/ssl_socket.cc:259] [C328] ssl write returns: 186
[2020-05-05 20:05:02.799][1][debug][main] [source/server/server.cc:174] flushing stats
[2020-05-05 20:05:07.797][1][debug][main] [source/server/server.cc:174] flushing stats
[2020-05-05 20:05:11.639][40][trace][connection] [source/common/network/connection_impl.cc:466] [C329] socket event: 3
[2020-05-05 20:05:11.639][40][trace][connection] [source/common/network/connection_impl.cc:554] [C329] write ready
[2020-05-05 20:05:11.639][40][trace][connection] [source/common/network/connection_impl.cc:504] [C329] read ready

C329 - это соединение прокси-сервера с моим вышестоящим сервером с использованием незашифрованного TCP.

Мой сервер записывает 16611 байт (я знаю это, потому что проверил журналы своего сервера) и отправляет их Envoy. Похоже, что C329 получает это двумя блоками (16384 и 227 байтов).

C328 - это мое соединение между моим клиентом и Envoy с использованием TCP с шифрованием TLS.

Мои вопросы:

Q1. Означает ли первая пара записей C328 (16384 и 227), что данные окончательно переданы по сети?

Q2. Существует значительная задержка между другой записью C328 (186 байт) и socket event: 3. Эта задержка значительна? Переход от socket event 2 к socket event 3 что-нибудь значить с точки зрения того, что передается по сети? Что вызывает переход?