[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" ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
According to Nicolas Ecarnot <nicolas.ecarnot@alussinan.org>:
- 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é".
- 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
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 ?
- Avez-vous une idée de l'endroit d'où peut être émis ce string "Message too long" ?
strerror(EMSGSIZE)
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
pornin@nerim.net (Thomas Pornin) wrote in news:bljb9j$2jfv$1
@biggoron.nerim.net:
According to Nicolas Ecarnot <nicolas.ecarnot@alussinan.org>:
- 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
(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