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

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 и работает ли он должным образом? Дайте мне знать, если мне понадобится дополнительная информация.

Я провел несколько тестов, используя тестовый код быстрого открытия 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

Поэтому я считаю, что ваш метод анализа правильный.

Запустив wirehark, вы можете четко увидеть Fast Open Cookie в параметрах TCP.

Я тестировал ту же пару машин, используя Chromium и Nginx.

Версия Chromium:

Версия 55.0.2883.75 построена на Debian stretch / sid, работает на Debian stretch / sid (64-разрядная версия)

В следах Wirehark нет файлов cookie быстрого открытия. Даже если в Chromium включена опция быстрого открытия. Так что я подозреваю, что проблема в Chromium.