Nginx TCP Fast Open Issue
Я настроил Nginx и Apache на одном из моих серверов. Сервер nginx прослушивает порт 80, а Apache - порт 81. Nginx работает как обратный прокси-сервер. В nginx я настроил TCP Fast Open:
server {
listen 107.6.155.74 fastopen=50;
server_name servtest.com www.servtest.com;
TCP Fast Open также включен на самом сервере:
root@server:~/projects/nginx# cat /proc/sys/net/ipv4/tcp_fastopen
3
Чтобы проверить, работает ли это, я настроил Chrome на ПК с Ubuntu для использования TCP Fast Open (страница chrome://flags). Настройки tcp_fastopen установлены на 1 на клиенте.
На сервере я использую следующий grep, чтобы узнать, используется ли TCP Fast Open:
grep '^TcpExt:' /proc/net/netstat | cut -d ' ' -f 87-92 | column -t
TCPOFOMerge TCPChallengeACK TCPSYNChallenge TCPFastOpenActive TCPFastOpenPassive TCPFastOpenPassiveFail
0 2 2 0 0 0
Я считаю, что счетчики TCPFastOpenActive и / или TCPFastOpenPassive не должны быть "0", если это работает. Любые идеи, как на самом деле узнать, если TCP Fast Open используется и работает, как ожидалось? Дайте мне знать, если мне нужно предоставить больше информации.
1 ответ
Я провел несколько тестов с использованием кода быстрого открытия TCP по адресу https://github.com/yuryu/tfoecho
Мой счет TCPFastOpenPassive повышается при использовании тестового кода.
$ grep '^TcpExt:' /proc/net/netstat | cut -d ' ' -f 87-92 | column -t
TCPOFOMerge TCPChallengeACK TCPSYNChallenge TCPFastOpenActive TCPFastOpenActiveFail TCPFastOpenPassive
1000 56217 1316 0 0 2041
Поэтому я думаю, что ваш метод анализа является правильным.
И, запустив wireshark, вы можете ясно увидеть Fast Open Cookie в настройках TCP.
Я тестировал на одной и той же паре машин с использованием Chromium и Nginx.
Хромированная версия:
Версия 55.0.2883.75, построенная на Debian stretch / sid, работает на Debian stretch/sid (64-битная версия)
Нет быстрых открытых файлов cookie в следах Wireshark. Даже с включенной опцией быстрого открытия в Chromium. Поэтому я подозреваю, что проблема заключается в Chromium.