FreeBSD: ¿Cómo solucionar "ping: sendto: No hay espacio en el búfer disponible"?

FreeBSD: ¿Cómo solucionar "ping: sendto: No hay espacio en el búfer disponible"?

Estoy intentando hacer ping a un host remoto, pero aparece un error.

# ping 192.168.80.1
PING 192.168.80.1 (192.168.80.1): 56 data bytes
ping: sendto: No buffer space available
ping: sendto: No buffer space available
^C
--- 192.168.80.1 ping statistics ---
2 packets transmitted, 0 packets received, 100% packet loss

Funciona para otros hosts:

# ping 192.168.16.1
PING 192.168.16.1 (192.168.16.1): 56 data bytes
64 bytes from 192.168.16.1: icmp_seq=0 ttl=254 time=0.442 ms
64 bytes from 192.168.16.1: icmp_seq=1 ttl=254 time=0.402 ms
^C
--- 192.168.16.1 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.402/0.422/0.442/0.020 ms
#

El mensaje "No hay espacio en el búfer disponible" parece indicar algún tipo de error de memoria. Y, de hecho, cuando verifico con Netstat, el número de "grupos mbuf" parece MUY incorrecto:

# netstat -m
11780 mbufs in use
4294966716/32768 mbuf clusters in use (current/max)
0/3/6656 sfbufs in use (current/peak/max)
1785 KBytes allocated to network
0 requests for sfbufs denied
0 requests for sfbufs delayed
0 requests for I/O initiated by sendfile
0 calls to protocol drain routines

¿Que esta pasando aqui? ¿Existe alguna forma de solucionar este problema sin tiempo de inactividad o necesito reiniciar el host o reiniciar la interfaz de red?

Respuesta1

Dado que el problema parece estar aislado de una sola interfaz (supongo que estás usando máscaras de clase C simples para estas dos redes), lo rebotaría rápidamente:

# ifconfig en0 down
# ifconfig en0 up

Obviamente, aquí debe sustituir el nombre de interfaz correcto por en0.

Es posible que tengas que reiniciar cualquier servidor que escuche en esa interfaz, y cualquier conexión TCP establecida que la utilice se interrumpirá cuando hagas esto. Sin embargo, es breve, por lo que realmente no considero que dicha prueba sea un "tiempo de inactividad".

Asegúrese de no hacer esto mientras esté conectado con ssh al cuadro de la interfaz que está rebotando. Es mejor iniciar sesión en la consola cuando hagas esto, si puedes. Si el servidor es remoto, lo mejor es una conexión por módem, ya que el rebote de las interfaces de red no afectará a los gettys serie. Si debe hacer esto mientras está conectado a la red, asegúrese de que su conexión se realice a través de una interfaz diferente.

información relacionada