1*1c60b9acSAndroid Build Coastguard Worker# `TCP_FASTOPEN` support in lws 2*1c60b9acSAndroid Build Coastguard Worker 3*1c60b9acSAndroid Build Coastguard WorkerLws supports enabling TCP_FASTOPEN oper-vhost for listen sockets. 4*1c60b9acSAndroid Build Coastguard Worker 5*1c60b9acSAndroid Build Coastguard Worker## Enabling per vhost serving 6*1c60b9acSAndroid Build Coastguard Worker 7*1c60b9acSAndroid Build Coastguard WorkerSet the `info.fo_listen_queue` to nonzero at vhost creation. Different 8*1c60b9acSAndroid Build Coastguard Workerplatforms interpret this number differently, zero always disables it 9*1c60b9acSAndroid Build Coastguard Workerbut on Linux, the number is interpreted as a SYN queue length. 10*1c60b9acSAndroid Build Coastguard Worker 11*1c60b9acSAndroid Build Coastguard WorkerOn FreeBSD, OSX and Windows, the number is basically a bool, with the 12*1c60b9acSAndroid Build Coastguard Workerextra restriction OSX and Windows only allows 0 or 1. 13*1c60b9acSAndroid Build Coastguard Worker 14*1c60b9acSAndroid Build Coastguard Worker## Enabling Linux for serving with TCP_FASTOPEN 15*1c60b9acSAndroid Build Coastguard Worker 16*1c60b9acSAndroid Build Coastguard WorkerTo configure the kernel for listening socket TCP_FASTOPEN, you need 17*1c60b9acSAndroid Build Coastguard Worker 18*1c60b9acSAndroid Build Coastguard Worker``` 19*1c60b9acSAndroid Build Coastguard Worker# sysctl -w net.ipv4.tcp_fastopen=3 20*1c60b9acSAndroid Build Coastguard Worker``` 21*1c60b9acSAndroid Build Coastguard Worker 22*1c60b9acSAndroid Build Coastguard Worker## Enabling BSD for serving with TCP_FASTOPEN 23*1c60b9acSAndroid Build Coastguard Worker 24*1c60b9acSAndroid Build Coastguard WorkerAt least on FreeBSD, you need to set the net.inet.tcp.fastopen.enabled 25*1c60b9acSAndroid Build Coastguard Workersysctl to 1 26*1c60b9acSAndroid Build Coastguard Worker 27*1c60b9acSAndroid Build Coastguard Worker## Enabling Windows for serving with TCP_FASTOPEN 28*1c60b9acSAndroid Build Coastguard Worker 29*1c60b9acSAndroid Build Coastguard Worker``` 30*1c60b9acSAndroid Build Coastguard Worker> netsh int tcp set global fastopenfallback=disabled 31*1c60b9acSAndroid Build Coastguard Worker> netsh int tcp show global 32*1c60b9acSAndroid Build Coastguard Worker``` 33