Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Taille des paquets UDP

3 réponses
Avatar
Nicolas Ecarnot
Bonjour,

[Contexte]
J'utilise quotidiennement le logiciel de backup 'Amanda'.
Le principe de ce logiciel repose sur une partie serveur, qui
tourne chez moi sur un freebsd 5.1 Release avec noyau
générique, et sur des clients de tous types. Le serveur initie
la demande de backup auprès des clients.
Parmi mes clients, plus d'une centaine sont des windows, dont
les sauvegardes sont faites par samba. C'est le serveur de
backup qui fait tourner smbclient pour chaque client windows.

Lors de l'init du backup, amanda commence par lancer une
demande à chaque client, afin de connaître les caractéristiques
des données à recevoir (taille, débit...). Un grand NOMBRE de
requêtes est donc lancé via une requête UDP (d'après ce que
j'ai compris).

[Spécifique à BSD]
Or lors de la réception des infos, il semble que la réponse est
trop grosse pour tenir dans un paquet UDP (64k d'après un
codeur d'amanda).
Après avoir pris contact avec ce codeur, j'ai rajouté une trace
afin de savoir la taille réelle que je recevais, et qui posait
problème, et elle n'est en fait que de 10,6k.

Pour info, voila un bout de log :
[...]
GETTING ESTIMATES...
planner: time 0.154: no feature set from host toto.tata.fr
planner: time 0.178: dgram_send_addr: sendto
(192.168.22.166.10080) failed: Message too long
planner: time 0.180: dgram_send_addr: sendto size: 10594
send req failed: Message too long
planner: time 4.066: got result for host toto.tata.fr disk
/dev/sd0a: 0 -> 23886K, 1 -> 128K, -1 -> -1K
planner: time 10.074: dgram_send_addr: sendto
(192.168.22.166.10080) failed: Message too long
planner: time 10.074: dgram_send_addr: sendto size: 10594
send req failed: Message too long
planner: time 20.084: dgram_send_addr: sendto
(192.168.22.166.10080) failed: Message too long
planner: time 20.084: dgram_send_addr: sendto size: 10594
send req failed: Message too long
[...]

La chaîne "Message too long" est renvoyée par l'OS, et ne fait
pas partie du code de amanda.
Quelques tests avec le codeur nous ont appris que le problème
ne venait pas d'amanda. Et d'après lui, inetd n'est pas en
cause car le paquet ne "sort" jamais du process "planner"
(celui qui lance cette requête).

Donc, mes questions à ceux qui connaissent les OS BSD au niveau
réseau :
- Existe-t-il une limitation au niveau du noyau, ou dans un
fichier de config, ou ailleurs, sur la taille limite des
paquets UDP ?
- Avez-vous une idée de l'endroit d'où peut être émis ce string
"Message too long" ?

Merci.

--
Nicolas Ecarnot

3 réponses

Avatar
pornin
According to Nicolas Ecarnot :
- Existe-t-il une limitation au niveau du noyau, ou dans un
fichier de config, ou ailleurs, sur la taille limite des
paquets UDP ?


"man udp" nous apprend qu'il y a un réglage sysctl nommé
"net.inet.udp.maxdgram". Sur ma machine (FreeBSD 4.x d'il y a quinze
jours), c'est réglé à 9216. "man sysctl" pour voir comment on change ça.


- Avez-vous une idée de l'endroit d'où peut être émis ce string
"Message too long" ?


Probablement la fonction strerror(), ou alors perror(). strerror()
fournit un message d'erreur standard correspondant à un code d'erreur
numérique tel que fourni par une fonction de la libc. perror() affiche
ce message d'erreur, en allant puiser le numéro de l'erreur dans la
variable errno. Dans les deux cas, le message "Message too long"
correspond à une erreur EMSGSIZE, qui est parfaitement adapté à un cas
de "message trop long pour être envoyé".


--Thomas Pornin

Avatar
Miod Vallat
- Existe-t-il une limitation au niveau du noyau, ou dans un
fichier de config, ou ailleurs, sur la taille limite des
paquets UDP ?


sysctl net.inet.udp.recvspace
sysctl net.inet.udp.sendspace

- Avez-vous une idée de l'endroit d'où peut être émis ce string
"Message too long" ?


strerror(EMSGSIZE)

Avatar
Nicolas Ecarnot
(Thomas Pornin) wrote in news:bljb9j$2jfv$1
@biggoron.nerim.net:

According to Nicolas Ecarnot :
- Existe-t-il une limitation au niveau du noyau, ou dans un
fichier de config, ou ailleurs, sur la taille limite des
paquets UDP ?


"man udp" nous apprend qu'il y a un réglage sysctl nommé
"net.inet.udp.maxdgram". Sur ma machine (FreeBSD 4.x d'il y a quinze
jours), c'est réglé à 9216. "man sysctl" pour voir comment on change ça.


Ah yes, trop bien.
Merci beaucoup.

J'ai rajouté un paramétrage spécifique dans /etc/sysctl.conf, dont j'ai vu
qu'il était relu par /etc/rc.d/sysctl

Encore merci.

--
Nicolas Ecarnot