good evening,
i working on project using eventlet http://eventlet.net/ ontop of wsgi in python create websocket server. far working well. did deep level packet analysis today , noticed odd. trying minimize outbound data server. @ moment seems send ack's taking of data outbound @ moment (around 1m per hour).
no matter set receive window on ubuntu sysctl file ack being sent client @ same time (after 5 packets). want make window larger such maybe 1 ack sent every 15 packets these packets 1440 bytes in size
below our sysctl settings tcp send , receive buffers
net.core.wmem_max = 4194304 net.core.rmem_max = 6291456 net.ipv4.tcp_rmem = 4096 2097152 6291456 net.ipv4.tcp_wmem = 4096 1048576 4194304 net.ipv4.tcp_window_scaling = 1 net.ipv4.tcp_timestamps = 1 net.ipv4.tcp_sack = 1 net.core.netdev_max_backlog = 5000
as see have scaling enabled, enabled server setting win=8159 in ack disabled , default of 64k being sent in servers ack window ack being sent client around every 7k.
is there fundamental missing here? can client set buffer limit @ no longer send data unless receive ack? there sort of time limit @ ack sent regardless of received buffer size?
thank help.
is there sort of time limit @ ack sent regardless of received buffer size?
ack being sent give feedback receiver, if sender not receive ack during time (estimated rtt) guesses packet lost , retransmit packet again. in basic tcp version, ack sent in response every packet, optimization many os implements delayed ack. receiver wait time before sending ack, , if receiver receive packet during timeout, generate 1 ack (with largest number) packets received during time. because of ack sent regardless receiver buffer. on linux can disable delayed ack via tcp_quickack
socket option, in case every received packet generate ack packet. on versions of linux can change timeout, cause unnecessary data retransmission.
can client set buffer limit @ no longer send data unless receive ack?
it possible via changing send buffer. if send buffer full next write operations block (in case of blocking client). every ack free packet send buffer , allow next write operations.
Comments
Post a Comment