¿La congelación del cgroup espera a que se vacíen los buffers de envío TCP?

¿La congelación del cgroup espera a que se vacíen los buffers de envío TCP?

¿Qué garantías existen para vaciar los buffers de envío TCP, si los hay, cuando elsubsistema congeladorcongela un grupo c?

Considere el siguiente escenario: el servidor A, que se ejecuta en un cgroup, envía datos al servidor B a través de TCP. El socket TCP está configurado para utilizar el algoritmo de Naggle (la TCP_NODELAYopción no está configurada). Por lo tanto, sendenviar datos a través del socket no bloquea el ACK del servidor B, sino que regresa después de que los datos a enviar se hayan copiado al búfer de envío TCP. Después de eso, pero antes de que los datos se hayan enviado al servidor B, el cgroup se congela.

¿Qué sucede con los datos en el búfer de envío TCP?

  • ¿Esperará la operación de congelación hasta que el servidor B haya reconocido todos los datos del búfer? ¿Qué pasa si el búfer de recepción del servidor B está lleno? ¿La congelación esperará indefinidamente hasta que el servidor B confirme?
  • ¿La congelación no esperará el ACK del servidor B y continuará enviando los datos después de que se haya descongelado el cgroup? Si el retraso entre la congelación y la descongelación es lo suficientemente largo como para que el servidor B cierre la conexión TCP, los datos del búfer se perderán.

Se agradecen los enlaces a especificaciones y garantías sobre ese comportamiento. Pero tal vez no haya garantías, por lo que confiar en cualquiera de los dos comportamientos sería frágil.

El trasfondo de la pregunta es que me pregunto qué tan cuidadoso se debe tener al enviar datos a través de TCP en AWS Lambda (mi suposición es que AWS Lambda usa cgroups para congelar/descongelar después/antes de que se maneje una invocación de Lambda). ¿Es suficiente vaciar los buffers de la aplicación al socket TCP/búfer de envío TCP? ¿O hay que asegurarse de que el servidor B haya recibido los datos en la capa de aplicación, por ejemplo, utilizando HTTP y esperando la respuesta HTTP del servidor?

información relacionada