Problème avec un nouveau noyau [QoS] - Linux et OS Alternatifs
Marsh Posté le 30-10-2004 à 08:54:55
Non je n'ai rien touché d'autre, pour la config, j'ai fais un menuconfig et j'ai rechargé mon fichier de config du noyau précédent. Ensuite j'ai rajouté toutes les options de QoS and queue...
C'est tout !
C'est assez bizarre quand même, si quelqu'un à une idée.
Sinon je vais rebooter tout à l'heure sur ce noyau pour retester.
Marsh Posté le 30-10-2004 à 10:52:33
Je viens de refaire le test à l'instant. Rien à faire ! Impossible d'accèder au net depuis les postes du réseau local, par contre aucun probleme depuis la paserelle.
N'y a-t-il pas quelque chose à initialiser pour la QoS ? Ou est-ce que mon firewall qui fonctionnait sans la QoS pose problème avec ce nouveau noyau ?
Si quelqu'un à une piste...
Marsh Posté le 30-10-2004 à 16:19:34
Résolu ! Il me manquait les options suivantes dans pour la compilation du noyau :
IP : advanced router
IP : policy routing
Par contre je n'arrive pas à utiliser les scripts de QoS tout fait, j'ai de multiples erreurs. J'ai lu quelque part qu'il faut une version d'iproute2 patcher pour utiliser HTB... Quelqu'un peut m'en dire plus car je nage un peu dan ce ce domaine !
Marsh Posté le 30-10-2004 à 17:58:05
Normalement la debian a un iproute2 utilisable avec htb, donne un message d'erreur histoire qu'on puisse te dire
Marsh Posté le 01-11-2004 à 16:11:14
J'ai essayé le script CBQ et le script HTB trouvé ici : http://www.linux-france.org/prj/in [...] ing-Howto/
Voilà le résultat :
root@eclips:~# ./qos_htb.sh
RTNETLINK answers: Invalid argument
RTNETLINK answers: No such file or directory
RTNETLINK answers: No such file or directory
RTNETLINK answers: No such file or directory
RTNETLINK answers: No such file or directory
RTNETLINK answers: No such file or directory
RTNETLINK answers: Invalid argument
RTNETLINK answers: Invalid argument
RTNETLINK answers: Invalid argument
RTNETLINK answers: Invalid argument
RTNETLINK answers: Invalid argument
root@eclips:~# ./qos_cbq.sh
RTNETLINK answers: Invalid argument
RTNETLINK answers: No such file or directory
RTNETLINK answers: No such file or directory
RTNETLINK answers: No such file or directory
RTNETLINK answers: No such file or directory
RTNETLINK answers: No such file or directory
RTNETLINK answers: Invalid argument
RTNETLINK answers: Invalid argument
RTNETLINK answers: Invalid argument
RTNETLINK answers: Invalid argument
RTNETLINK answers: Invalid argument
RTNETLINK answers: Invalid argument
Marsh Posté le 01-11-2004 à 17:01:59
Ca ressemble, en effet, à un pb avec la version de iproute2 que tu utilises ...
Marsh Posté le 01-11-2004 à 17:15:08
Quelle version faut-il utiliser ? Quelqu'un à un lien à me donner ?
Marsh Posté le 01-11-2004 à 17:34:36
Linux eclips 2.4.27 #8 SMP Sat Oct 30 15:26:26 CEST 2004 i686 unknown
Marsh Posté le 01-11-2004 à 17:55:03
bizarre ...
Modifies le script de QoS et rajoutes un -x devant l'interpréteur de commandes au début pour avoir des infos de débuggage ...
Marsh Posté le 01-11-2004 à 18:04:48
root@eclips:~# ./qos.sh
+ DOWNLINK=550
+ UPLINK=100
+ DEV=eth1
+ tc qdisc del dev eth1 root
+ tc qdisc del dev eth1 ingress
+ tc qdisc add dev eth1 root handle 1: htb default 20
RTNETLINK answers: Invalid argument
+ tc class add dev eth1 parent 1: classid 1:1 htb rate 100kbit burst 6k
RTNETLINK answers: No such file or directory
+ tc class add dev eth1 parent 1:1 classid 1:10 htb rate 100kbit burst 6k prio 1
RTNETLINK answers: No such file or directory
+ tc class add dev eth1 parent 1:1 classid 1:20 htb rate 90kbit burst 6k prio 2
RTNETLINK answers: No such file or directory
+ tc qdisc add dev eth1 parent 1:10 handle 10: sfq perturb 10
RTNETLINK answers: No such file or directory
+ tc qdisc add dev eth1 parent 1:20 handle 20: sfq perturb 10
RTNETLINK answers: No such file or directory
+ tc filter add dev eth1 parent 1:0 protocol ip prio 10 u32 match ip tos 0x10 0xff flowid 1:10
RTNETLINK answers: Invalid argument
+ tc filter add dev eth1 parent 1:0 protocol ip prio 10 u32 match ip protocol 1 0xff flowid 1:10
RTNETLINK answers: Invalid argument
+ tc filter add dev eth1 parent 1: protocol ip prio 10 u32 match ip protocol 6 0xff match u8 0x05 0x0f at 0 match u16 0x0000 0xffc0 at 2 match u8 0x10 0xff at 33 flowid 1:10
RTNETLINK answers: Invalid argument
+ tc qdisc add dev eth1 handle ffff: ingress
RTNETLINK answers: Invalid argument
+ tc filter add dev eth1 parent ffff: protocol ip prio 50 u32 match ip src 0.0.0.0/0 police rate 550kbit burst 10k drop flowid :1
RTNETLINK answers: Invalid argument
Marsh Posté le 01-11-2004 à 18:24:46
root@eclips:~# ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:50:22:BB:6E:AA
inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:43436 errors:0 dropped:0 overruns:0 frame:0
TX packets:44165 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:5938699 (5.6 MiB) TX bytes:37905134 (36.1 MiB)
Interrupt:9 Base address:0xaf00
eth1 Link encap:Ethernet HWaddr 00:06:29:12:68:36
inet addr:82.253.127.29 Bcast:82.253.127.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:36306 errors:0 dropped:0 overruns:0 frame:0
TX packets:31716 errors:0 dropped:0 overruns:31 carrier:0
collisions:0 txqueuelen:1000
RX bytes:36341569 (34.6 MiB) TX bytes:4592622 (4.3 MiB)
Interrupt:15 Base address:0xf000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:53 errors:0 dropped:0 overruns:0 frame:0
TX packets:53 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:5950 (5.8 KiB) TX bytes:5950 (5.8 KiB)
Une freebox est branchée en DHCP sur eth1...
Marsh Posté le 01-11-2004 à 18:53:11
Euh ... y'a ptet une erreur dans le script qos.sh ...
Je peux jeter un oeil dessus ?
Marsh Posté le 01-11-2004 à 18:58:28
#!/bin/bash -x
# La configuration ultime pour votre connexion Internet domestique
#
# Configurez les valeurs suivantes avec des valeurs légèrement inférieures que
# vos vitesses de flux montant et descendant. Exprimé en kilobits.
DOWNLINK=550
UPLINK=100
DEV=eth1
#Nettoie les gestionnaires de sortie et d'entrés, cache les erreurs
tc qdisc del dev $DEV root 2> /dev/null > /dev/null
tc qdisc del dev $DEV ingress 2> /dev/null > /dev/null
###### Flux montant (uplink)
# installe HTB à la racine, le trafic ira par défaut vers 1:20 :
tc qdisc add dev $DEV root handle 1: htb default 20
# Le trafic est mis en forme à une vitesse de $UPLINK. Ceci évite
# d'énormes files d'attente dans votre modem DSL qui pénalisent le temps de
# latence.
tc class add dev $DEV parent 1: classid 1:1 htb rate ${UPLINK}kbit burst 6k
# la classe de haute priorité 1:10 :
tc class add dev $DEV parent 1:1 classid 1:10 htb rate ${UPLINK}kbit \
burst 6k prio 1
# bulk & default class 1:20 - gets slightly less traffic,
# and a lower priority:
tc class add dev $DEV parent 1:1 classid 1:20 htb rate $[9*$UPLINK/10]kbit \
burst 6k prio 2
# Les deux sont gérées par SFQ :
tc qdisc add dev $DEV parent 1:10 handle 10: sfq perturb 10
tc qdisc add dev $DEV parent 1:20 handle 20: sfq perturb 10
# le bit Délai Minimum du champ TOS (ssh, PAS scp) est dirigé vers
# 1:10 :
tc filter add dev $DEV parent 1:0 protocol ip prio 10 u32 \
match ip tos 0x10 0xff flowid 1:10
# ICMP (ip protocol 1) est dirigé vers la classe interactive 1:10 de telle
# sorte que nous pouvons réaliser des mesures et impressionner nos
# amis :
tc filter add dev $DEV parent 1:0 protocol ip prio 10 u32 \
match ip protocol 1 0xff flowid 1:10
# Pour accélérer les téléchargements vers l'aval lors de la présence d'un
# flux montant, les paquets ACK sont placés dans la classe
# interactive :
tc filter add dev $DEV parent 1: protocol ip prio 10 u32 \
match ip protocol 6 0xff \
match u8 0x05 0x0f at 0 \
match u16 0x0000 0xffc0 at 2 \
match u8 0x10 0xff at 33 \
flowid 1:10
# Le reste est considéré 'non-interactif' cad 'de masse' et fini dans 1:20
########## Flux descendant (downlink) #############
# Ralentir le flux descendant à une valeur légèrement plus faible que votre
# vitesse rélle de manière à éviter la mise en file d'attente chez notre
# FAI. Faites des tests pour voir la vitesse maximum à laquelle vous pouvez
# le configurer. Les FAI ont tendance à avoir *d'énormes* files d'attente
# pour s'assurer de la rapidité des gros téléchargements.
#
# attache la réglementation d'entrée (ingress policer) :
tc qdisc add dev $DEV handle ffff: ingress
# Filtre *tout* (0.0.0.0/0), rejette tout ce qui arrive trop
# rapidement :
tc filter add dev $DEV parent ffff: protocol ip prio 50 u32 match ip src \
0.0.0.0/0 police rate ${DOWNLINK}kbit burst 10k drop flowid :1
Marsh Posté le 01-11-2004 à 19:12:54
tu peux donner le résultat d'un lsmod juste après avoir essayé de lancer le script et d'un find /lib/modules/ -iname "*htb*" stp ?
Marsh Posté le 01-11-2004 à 19:22:47
root@eclips:~# lsmod
Module Size Used by Not tainted
ipt_ipp2p 2880 2
ppp_async 7200 0 (autoclean)
ppp_generic 23052 0 (autoclean) [ppp_async]
slhc 4608 0 (autoclean) [ppp_generic]
ipt_MASQUERADE 1504 1 (autoclean)
ipt_state 608 6 (autoclean)
ipt_LOG 3392 3 (autoclean)
iptable_mangle 2208 0 (autoclean) (unused)
iptable_nat 16564 1 (autoclean) [ipt_MASQUERADE]
ip_conntrack 21076 0 (autoclean) [ipt_MASQUERADE ipt_state iptable_nat]
iptable_filter 1760 1 (autoclean)
ip_tables 12032 9 [ipt_ipp2p ipt_MASQUERADE ipt_state ipt_LOG iptable_mangle iptable_nat iptable_filter]
eepro100 19372 1
keybdev 1792 0 (unused)
usbkbd 2880 0 (unused)
usbcore 59072 0 [usbkbd]
input 3520 0 [keybdev usbkbd]
root@eclips:~# find /lib/modules/ -iname "*htb*"
(rien!)
Marsh Posté le 01-11-2004 à 19:26:56
mwé
Soit le support de HTB est carrément en dur dans ton noyau (et le pb est ailleurs ... mais où ? )
Soit ton noyau n'a pas été compilé avec le support HTB ...
Il faut que tu vérifies ça dans ton noyau ...
Marsh Posté le 01-11-2004 à 20:58:27
Lorsque j'ai compilé le noyau, j'ai effectivement choisi le support HTB inclus dans le noyau (pas en module), le problème peut venir de là ?
Sinon je n'ai pas pris quelques options :
<M> CSZ packet scheduler
< > H-FSC packet scheduler
<*> The simplest PRIO pseudoscheduler
<M> RED queue
<*> SFQ queue
< > TEQL queue
<M> TBF queue
<M> GRED queue
< > Network emulator
<M> Diffserv field marker
<M> Ingress Qdisc
[ * ] QoS support
[ * ] Rate estimator
[ * ] Packet classifier API
<M> TC index classifier
<M> Routing table based classifier
<*> Firewall based classifier
<M> U32 classifier
< > Special RSVP classifier
< > Special RSVP classifier for IPv6
[ * ] Traffic policing (needed for in/egress)
Marsh Posté le 01-11-2004 à 21:56:02
Jerem22 a écrit : Lorsque j'ai compilé le noyau, j'ai effectivement choisi le support HTB inclus dans le noyau (pas en module), le problème peut venir de là ? |
Je pense pas mais bon ...
Marsh Posté le 02-11-2004 à 17:22:56
A tout hasard, essaies de voir si y'a pas une version plus récente de iproute2 que tu pourrais installer et refais le test ...
Sinon, vérifies bien tes options de compil du noyau et recompiles le ...
Marsh Posté le 02-11-2004 à 18:21:18
J'ai récupéré la dernière version d'iproute et j'essaye de là compiler, mais j'obtiens une erreur :
/usr/bin/gcc-3.0 -D_GNU_SOURCE -O2 -Wstrict-prototypes -Wall -g -I../include -DRESOLVE_HOSTNAMES -I/usr/include -o arpd arpd.c ../lib/libnetlink.a ../lib/libutil.a -ldb
/usr/bin/ld: cannot find -ldb
collect2: ld returned 1 exit status
make[1]: *** [arpd] Error 1
make[1]: Leaving directory `/root/iproute2-2.6.8-040823/iproute2-2.6.8/misc'
make: *** [all] Error 2
Une idée ?
Marsh Posté le 02-11-2004 à 19:56:24
Pourtant j'ai bien fait un apt-get install libdb3
Le problème doit se situer au niveau du dossier qui contient ces fichiers, je vais regarder ça !
Marsh Posté le 02-11-2004 à 20:14:02
plutot que de compiler iproute, t'avais pas le moyen de récupérer un package plus récent de celui-ci pour ta Debian ?
Marsh Posté le 02-11-2004 à 20:27:28
Avec la nouvelle version d'iproute, j'ai moins d'erreur (le début du script passe) mais pas la suite :
root@eclips:~# ./qos.sh
+ DOWNLINK=550
+ UPLINK=100
+ DEV=eth1
+ tc qdisc del dev eth1 root
+ tc qdisc del dev eth1 ingress
+ tc qdisc add dev eth1 root handle 1: htb default 20
+ tc class add dev eth1 parent 1: classid 1:1 htb rate 100kbit burst 6k
+ tc class add dev eth1 parent 1:1 classid 1:10 htb rate 100kbit burst 6k prio 1
+ tc class add dev eth1 parent 1:1 classid 1:20 htb rate 90kbit burst 6k prio 2
+ tc qdisc add dev eth1 parent 1:10 handle 10: sfq perturb 10
+ tc qdisc add dev eth1 parent 1:20 handle 20: sfq perturb 10
+ tc filter add dev eth1 parent 1:0 protocol ip prio 10 u32 match ip tos 0x10 0xff flowid 1:10
RTNETLINK answers: Invalid argument
We have an error talking to the kernel
+ tc filter add dev eth1 parent 1:0 protocol ip prio 10 u32 match ip protocol 1 0xff flowid 1:10
RTNETLINK answers: Invalid argument
We have an error talking to the kernel
+ tc filter add dev eth1 parent 1: protocol ip prio 10 u32 match ip protocol 6 0xff match u8 0x05 0x0f at 0 match u16 0x0000 0xffc0 at 2 match u8 0x10 0xff at 33 flowid 1:10
RTNETLINK answers: Invalid argument
We have an error talking to the kernel
+ tc qdisc add dev eth1 handle ffff: ingress
RTNETLINK answers: Invalid argument
+ tc filter add dev eth1 parent ffff: protocol ip prio 50 u32 match ip src 0.0.0.0/0 police rate 550kbit burst 10k drop flowid :1
RTNETLINK answers: Invalid argument
We have an error talking to the kernel
Il semblerait comme tu l'avais dis que le problème se situe maintenant au niveau du kernel. Tu as une idée de ce que je dois vérifier avant de me lancer dans la compilation du nouveau noyau ?
Encore merci pour ton aide
Marsh Posté le 02-11-2004 à 20:29:52
je crois me souvenir qu'il faut être en testing pour avoir la bonne version d'iproute2
c'est pour ça entres autres que je suis en testing now
Marsh Posté le 02-11-2004 à 21:07:03
en effet, c'est un modinfo cls_u32 qu'il faudrait balancer ... mais ce qui est bizarre, si ca règle le problème, c'est que le noyau ait pas chargé ce module, à la demande ...
Marsh Posté le 02-11-2004 à 21:25:00
root@eclips:~# modprobe cls_u32
/lib/modules/2.4.27/kernel/net/sched/cls_u32.o: unresolved symbol tcf_police_dump
/lib/modules/2.4.27/kernel/net/sched/cls_u32.o: unresolved symbol qdisc_copy_stats
/lib/modules/2.4.27/kernel/net/sched/cls_u32.o: unresolved symbol tcf_police
/lib/modules/2.4.27/kernel/net/sched/cls_u32.o: unresolved symbol tcf_police_destroy
/lib/modules/2.4.27/kernel/net/sched/cls_u32.o: unresolved symbol unregister_tcf_proto_ops
/lib/modules/2.4.27/kernel/net/sched/cls_u32.o: unresolved symbol register_tcf_proto_ops
/lib/modules/2.4.27/kernel/net/sched/cls_u32.o: unresolved symbol tcf_police_locate
/lib/modules/2.4.27/kernel/net/sched/cls_u32.o: insmod /lib/modules/2.4.27/kernel/net/sched/cls_u32.o failed
/lib/modules/2.4.27/kernel/net/sched/cls_u32.o: insmod cls_u32 failed
Marsh Posté le 02-11-2004 à 21:27:42
rassures moi, tu as bien renommé /lib/modules/2.4.27 en /lib/modules/2.4.27.old avant de recompiler ??
Marsh Posté le 02-11-2004 à 21:31:09
oups... maintenant que tu le dis, je crois que j'ai zappé ça ! j'ai compilé 4 noyaux en 2 jours donc j'ai peut être oublié ça !
Marsh Posté le 02-11-2004 à 21:40:17
même j'ai pas toujours fait ce que je dis et que j'ai jamais eu de pb
Marsh Posté le 02-11-2004 à 21:56:39
Jerem22 a écrit : root@eclips:~# modprobe cls_u32 |
ouh là ... noyal foireux là j'ai l'impression
Balances un depmod -a pour voir ce qu'il dit ...
Marsh Posté le 02-11-2004 à 22:01:05
tomate a écrit : rassures moi, tu as bien renommé /lib/modules/2.4.27 en /lib/modules/2.4.27.old avant de recompiler ?? |
C'est pas nécessaire
Et si le but c'est de garder une version "propre" d'un ancien noyau, il vaut mieux changer la ligne suivante du Makefile "principal" dans /usr/src/linux
EXTRAVERSION = ... |
et avoir une bonne convention de nommage des différents bzImage générés ...
Marsh Posté le 29-10-2004 à 18:15:45
Bonsoir,
Sur ma Debian 3.0 Stable, j'avais compilé un noyau 2.4.27. Jusque là aucun soucis. Cette machine me sert de passerelle internet, avec un firewall netfilter.
Cette aprem, j'ai voulu recompilé cette même version noyau mais avec le support de la QoS pour faire quelque test. Aucun problème à la compilation. Cependant avec ce noyau, impossible d'accèder à Internet depuis les autres postes du réseau, alors que je n'ai rien changé d'autre...
Une idée ???
Merci d'avance,
Jérem