linux - resultados - Deshabilitar ACK retrasados de TCP
resultados de netstat (2)
Puede setsockopt(sockfd, IPPROTO_TCP, TCP_QUICKACK, (int[]){1}, sizeof(int))
después de cada recv
que realice. Parece que TCP_QUICKACK
solo se restablece cuando hay datos enviados o recibidos; si no está enviando ningún dato, solo se restablecerá cuando reciba datos, en cuyo caso puede simplemente configurarlo nuevamente.
Puede verificar esto en el campo 14 de /proc/net/tcp
; si no es 1, los ACK deben enviarse de inmediato ... si estoy leyendo el código TCP correctamente. (No soy un experto en esto tampoco).
Tengo una aplicación que recibe tráfico relativamente escaso sobre TCP sin respuestas a nivel de aplicación. Creo que la pila TCP está enviando ACK retrasados (en función de echar un vistazo a la captura de paquetes de red). ¿Cuál es la forma recomendada de desactivar ACK retardado en la pila de red para un solo socket? He visto TCP_QUICKACK
, pero parece que la pila lo cambiará bajo mis pies de todos modos.
Esto se ejecuta en un kernel de Linux 2.6, y no estoy preocupado por la portabilidad.
Creo que usando la función setsockopt () puedes usar el TCP_NODELAY
que deshabilitará el algoritmo Nagle.
Editar Encontrado un enlace: http://www.ibm.com/developerworks/linux/library/l-hisock.html
Editar 2 Tom es correcto. Nagle no afecta los ACK retardados.