xref: /aosp_15_r20/external/libwebsockets/READMEs/README.tcp_fastopen.md (revision 1c60b9aca93fdbc9b5f19b2d2194c91294b22281)
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