Danke für Deinen Tip.
das Programm tc ist auch Thema bei meinem dritten Punkt mit iproute2.
Dazu habe ich versucht, mich an
diesen und
diesen Thread zu halten.
Im ersten Thread soll ein zweites tc als tc2 installiert werden, im zweiten wird, wenn ich das richtig verstehe, das tc aus dem Kernel um die nötigen Funktionen erweitert. Ich erhalte jedoch bei allen Versuchen, eine Firmware zu bauen, folgende Fehlermeldungen (in etwa), die mit iproute2 zusammenhängen (Das passiert auch, wenn ich 'make iproute2-precompiled' ausführe):
Code:
nils@KuShi-Ubuntu:~/Freetz/freetz-trunk2$ make iproute2-precompiled
PATH=""/home/nils/Freetz/freetz-trunk2/toolchain/build/mips_gcc-4.6.4_uClibc-0.9.32.1/mips-linux-uclibc/bin:/home/nils/Freetz/freetz-trunk2/toolchain/build/mips_gcc-4.6.4/mips-unknown-linux-gnu/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"" \
make -j2 CC="/home/nils/Freetz/freetz-trunk2/toolchain/build/mips_gcc-4.6.4_uClibc-0.9.32.1/mips-linux-uclibc/bin/mips-linux-uclibc-gcc" \
CROSS_COMPILE="/home/nils/Freetz/freetz-trunk2/toolchain/build/mips_gcc-4.6.4_uClibc-0.9.32.1/mips-linux-uclibc/bin/mips-linux-uclibc-" \
EXTRA_CFLAGS="-march=24kc -Os -pipe -Wa,--trap -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64" \
ARCH="mips" \
-C source/target-mips_gcc-4.6.4_uClibc-0.9.32.1/iproute2-3.6.0
make[1]: Betrete Verzeichnis '/home/nils/Freetz/freetz-trunk2/source/target-mips_gcc-4.6.4_uClibc-0.9.32.1/iproute2-3.6.0'
make[2]: Betrete Verzeichnis '/home/nils/Freetz/freetz-trunk2/source/target-mips_gcc-4.6.4_uClibc-0.9.32.1/iproute2-3.6.0/lib'
make[2]: Für das Ziel »all« ist nichts zu tun.
make[2]: Verlasse Verzeichnis '/home/nils/Freetz/freetz-trunk2/source/target-mips_gcc-4.6.4_uClibc-0.9.32.1/iproute2-3.6.0/lib'
make[2]: Betrete Verzeichnis '/home/nils/Freetz/freetz-trunk2/source/target-mips_gcc-4.6.4_uClibc-0.9.32.1/iproute2-3.6.0/ip'
/home/nils/Freetz/freetz-trunk2/toolchain/build/mips_gcc-4.6.4_uClibc-0.9.32.1/mips-linux-uclibc/bin/mips-linux-uclibc-gcc -Wl,-export-dynamic ip.o ipaddress.o ipaddrlabel.o iproute.o iprule.o ipnetns.o rtm_map.o iptunnel.o ip6tunnel.o tunnel.o ipneigh.o ipntable.o iplink.o ipmaddr.o ipmonitor.o ipmroute.o ipprefix.o iptuntap.o ipxfrm.o xfrm_state.o xfrm_policy.o xfrm_monitor.o iplink_vlan.o link_veth.o link_gre.o iplink_can.o iplink_macvlan.o iplink_macvtap.o ipl2tp.o link_vti.o ../lib/libnetlink.a ../lib/libutil.a -lresolv ../lib/libnetlink.a ../lib/libutil.a -ldl -o ip
/home/nils/Freetz/freetz-trunk2/toolchain/build/mips_gcc-4.6.4_uClibc-0.9.32.1/mips-linux-uclibc/bin/mips-linux-uclibc-gcc -Wl,-export-dynamic rtmon.o -lresolv ../lib/libnetlink.a ../lib/libutil.a -ldl -o rtmon
/home/nils/Freetz/freetz-trunk2/toolchain/build/mips_gcc-4.6.4_uClibc-0.9.32.1/mips-linux-uclibc/bin/../lib/gcc/mips-linux-uclibc/4.6.4/../../../../mips-linux-uclibc/bin/ld: cannot find -lresolv
collect2: ld returned 1 exit status
make[2]: *** [rtmon] Fehler 1
make[2]: *** Warte auf noch nicht beendete Prozesse...
/home/nils/Freetz/freetz-trunk2/toolchain/build/mips_gcc-4.6.4_uClibc-0.9.32.1/mips-linux-uclibc/bin/../lib/gcc/mips-linux-uclibc/4.6.4/../../../../mips-linux-uclibc/bin/ld: cannot find -lresolv
collect2: ld returned 1 exit status
make[2]: *** [ip] Fehler 1
make[2]: Verlasse Verzeichnis '/home/nils/Freetz/freetz-trunk2/source/target-mips_gcc-4.6.4_uClibc-0.9.32.1/iproute2-3.6.0/ip'
make[1]: *** [all] Fehler 2
make[1]: Verlasse Verzeichnis '/home/nils/Freetz/freetz-trunk2/source/target-mips_gcc-4.6.4_uClibc-0.9.32.1/iproute2-3.6.0'
make: *** [source/target-mips_gcc-4.6.4_uClibc-0.9.32.1/iproute2-3.6.0/tc/tc] Fehler 2
nils@KuShi-Ubuntu:~/Freetz/freetz-trunk2$
Ich weiß nicht, woran das liegt und kann den Fehler daher leider nicht beseitigen; ich kenne mich leider zu wenig aus mit den build-Vorgängen.
- edit
Ich erhalte übrigens auch einen ähnlichen Fehler, wenn ich versuche, tcpnice zu bauen. Dann hängt irgend ein Prozess beim Bau von libnids.
Code:
make[2]: *** [killtcp_pic.o] Fehler 1
make[2]: *** Warte auf noch nicht beendete Prozesse...
make[2]: Verlasse Verzeichnis '/home/nils/Freetz/freetz-trunk2/source/target-mips_gcc-4.6.4_uClibc-0.9.32.1/libnids-1.24/src'
make[1]: *** [shared] Fehler 2
make[1]: Verlasse Verzeichnis '/home/nils/Freetz/freetz-trunk2/source/target-mips_gcc-4.6.4_uClibc-0.9.32.1/libnids-1.24'
Beide Fehler kommen scheinbar wegen 'duplicate member [xy]' (insgesamt 16x)
- edit 2
Ich habe es jetzt geschafft, die iproute2 Pakete zu kompilieren.
Ich hatte die Patches aus den beiden Threads vermischt, was ja offensichtlich nicht funktionieren kann.
Nachdem ich nun den Patch aus dem ersten Thread nochmal durchgegangen bin und die Dateien manuell korrigiert habe, konnte 'iproute2' incl. 'tc' (als 'tc2') gebaut werden.
Leider erhalte ich bei der Eingabe einiger tc-Befehle folgende Fehlermeldung
Code:
root@fritz:/var/mod/root# tc2 qdisc add dev ath0 root handle 1:0 htb
root@fritz:/var/mod/root# tc2 class add dev ath0 parent 1: classid 1:1 htb rate 7mbit ceil 7mbit
root@fritz:/var/mod/root# tc2 class add dev ath0 parent 1:1 classid 1:10 htb rate 1512kbit ceil 7mbit
root@fritz:/var/mod/root# tc2 filter add dev ath0 protocol ip parent 1:0 prio 1 handle 2 fw classid 1:10
RTNETLINK answers: No such file or directory
We have an error talking to the kernel
Ich konnte mit folgendem Teil aus dem Patch auch nichts anfangen
Code:
Index: kernel/Config.in.modules
===================================================================
--- kernel/Config.in.modules (revision 10304)
+++ kernel/Config.in.modules (working copy)
@@ -524,6 +524,18 @@
select FREETZ_MODULE_l2cap
default n
+config FREETZ_MODULE_act_police
+ bool "act_police.ko"
+ default n
+ help
+ act_police allows tc qdisc QoS to limit traffic.
+
+config FREETZ_MODULE_act_mirred
+ bool "act_mirred.ko"
+ default n
+ help
+ Make it possible for traffic shaping to use redirect packets.
+
config FREETZ_MODULE_cls_u32
bool "cls_u32.ko"
default n
@@ -532,6 +544,19 @@
packet, so it is in some ways the most powerful filter provided
by the Linux traffic control engine.
+config FREETZ_MODULE_cls_fw
+ bool "cls_fw.ko"
+ default n
+ help
+ The fw filter allows you to match on based on the firewall mark
+ created by iptables.
+
+config FREETZ_MODULE_ifb
+ bool "ifb.ko"
+ default n
+ help
+ Makes it possible to use iptables on ingress queues.
+
config FREETZ_MODULE_ipv6
bool "ipv6.ko"
depends on FREETZ_TARGET_IPV6_SUPPORT && ! FREETZ_HAS_AVM_IPV6
@@ -574,6 +599,12 @@
HTB is very similar to the CBQ regarding its goals however it has
different properties and different algorithm.
+config FREETZ_MODULE_sch_hfsc
+ bool "sch_hfsc.ko"
+ default n
+ help
+ HFSC
+
config FREETZ_MODULE_sch_llq
bool "sch_llq.ko"
default n
@@ -602,6 +633,13 @@
See the top of <file:net/sched/sch_tbf.c> for a description of the
TBF algorithm.
+config FREETZ_MODULE_sch_ingress
+ bool "sch_ingess.ko"
+ default n
+ help
+ Allow traffic shaping on the ingress queue of network interfaces.
+ This makes it possible to drop packets to trigger TCP congestion control.
+
endmenu
Kann mir jemand von Euch sagen, welche Datei ich dafür editieren muss?
Eine Datei namens 'kernel/Config.in.modules' exisitiert bei mir nicht und wenn ich sie erstelle, hat das keine Auswirkung auf die Menüs. (Auch nicht als 'kernel/Config.in')
In den Kernel-Quellen sind alle Module enthalten, aber ich bekomme sie nicht in die Auswahl der Kernel-Module bei 'make menuconfig'
- edit 3
Okay, die Module liegen scheinbar auf meiner Fritzbox, können aber nicht korrekt geladen werden.
Ich weiß zwar nicht, was die Module machen, aber scheinbar werden sie benötigt, weil 'tc' ohne sie ja nicht richtig funktioniert.
Wenn ich versuche, die via 'modprobe' zu laden, erhalte ich bei 3 Modulen Fehlermeldungen:
Code:
root@fritz:/var/mod/root# modprobe ifb
root@fritz:/var/mod/root# modprobe sch_hfsc
root@fritz:/var/mod/root# modprobe sch_ingress
root@fritz:/var/mod/root# modprobe act_police
modprobe: can't load module act_police (kernel/net/sched/act_police.ko): unknown symbol in module, or unknown parameter
root@fritz:/var/mod/root# modprobe act_mirred
modprobe: can't load module act_mirred (kernel/net/sched/act_mirred.ko): unknown symbol in module, or unknown parameter
root@fritz:/var/mod/root# modprobe cls_fw
modprobe: can't load module cls_fw (kernel/net/sched/cls_fw.ko): unknown symbol in module, or unknown parameter
Was bedeutet das nun?
- edit 4
Okay, ich habe es hinbekommen.
Es läuft. Jetzt muss ich es nur noch konfigurieren.