O
outbreaker
Grünschnabel
Hallo,
ich habe mal eine Frage was die Funktionsweise von Linux TC betrifft.
Ich möchte mir eine Hierarchie bauen wo TCP und UCP jeweils eine eigene bfifo haben und mittels dem HTB die Bandbreite aufteilen und begrenzen. Das mit der Bandbreite aufteilen und begrenzen funktioniert auch aber leider irgendwie die FIFO nicht richtig. Ich möchte das wenn das Limit der FIFO erreicht ist alle weiteren ankommenden Pakete verworfen werden. Das passiert aber nicht. Irgendwie wird meine Datenquelle von TC veranlasst weniger zu senden. Es werden auch keine Pakete verworfen sondern einfach weniger gesendet. Was nicht an der Datenquelle liegt.
Ich habe mir mit dem Befehl "tc -s qdisc ls dev eth1" die Qdiscs ausgeben lassen und da erhöht sich auch nur die Anzahl der Overlimits aber nie die dropped.
Im Moment baue ich nur ein HTB mit einer pfifo auf wo alles rein sollte (alles TCP und UDP). Meine Daten erzeuge ich mit einem Selbsgeschriebenen Programm. Das ganze soll ein Testaufbau werden um die verschiedenen Einstellungen zu testen und die Änderung der Laufzeit zu ermitteln sowie Paketverluste etc.
Ich habe es schon mit verschiedenen limit Einstellungen usw. versucht aber keinen unterschied feststellen können.
Das ist die Ausgabe mit tc -s qdisc ls dev eth1:
und das ist mein Konfigurationsscript:
kann mir einer sagen warum keine Pakete weggeworfen werden?
oder mache ich bei der Konfiguration etwas falsch?
Danke für die Hilfe
ich habe mal eine Frage was die Funktionsweise von Linux TC betrifft.
Ich möchte mir eine Hierarchie bauen wo TCP und UCP jeweils eine eigene bfifo haben und mittels dem HTB die Bandbreite aufteilen und begrenzen. Das mit der Bandbreite aufteilen und begrenzen funktioniert auch aber leider irgendwie die FIFO nicht richtig. Ich möchte das wenn das Limit der FIFO erreicht ist alle weiteren ankommenden Pakete verworfen werden. Das passiert aber nicht. Irgendwie wird meine Datenquelle von TC veranlasst weniger zu senden. Es werden auch keine Pakete verworfen sondern einfach weniger gesendet. Was nicht an der Datenquelle liegt.
Ich habe mir mit dem Befehl "tc -s qdisc ls dev eth1" die Qdiscs ausgeben lassen und da erhöht sich auch nur die Anzahl der Overlimits aber nie die dropped.
Im Moment baue ich nur ein HTB mit einer pfifo auf wo alles rein sollte (alles TCP und UDP). Meine Daten erzeuge ich mit einem Selbsgeschriebenen Programm. Das ganze soll ein Testaufbau werden um die verschiedenen Einstellungen zu testen und die Änderung der Laufzeit zu ermitteln sowie Paketverluste etc.
Ich habe es schon mit verschiedenen limit Einstellungen usw. versucht aber keinen unterschied feststellen können.
Das ist die Ausgabe mit tc -s qdisc ls dev eth1:
Code:
qdisc htb 1: r2q 10 default 12 direct_packets_stat 349
Sent 63039762 bytes 41985 pkt (dropped 0, overlimits 62786 requeues 0)
rate 0bit 0pps backlog 0b 48p requeues 0
qdisc pfifo 12: parent 1:12 limit 1000p
Sent 62096506 bytes 41357 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 48p requeues 0
und das ist mein Konfigurationsscript:
Code:
tc qdisc del dev eth1 root
iptables -t mangle -F
tc qdisc add dev eth1 root handle 1:0 htb default 12
tc class add dev eth1 parent 1: classid 1:1 htb prio 5 rate 2.9mbit ceil 2.9mbit
tc class add dev eth1 parent 1:1 classid 1:12 htb rate 2.9mbit ceil 2.9mbit prio 5
tc qdisc add dev eth1 parent 1:12 handle 12:0 pfifo
iptables -A POSTROUTING -t mangle -o eth1 -p tcp -j MARK --set-mark 12
iptables -A POSTROUTING -t mangle -o eth1 -p udp -j MARK --set-mark 12
tc filter add dev eth1 parent 1:0 prio 0 protocol ip handle 12 fw flowid 1:12
kann mir einer sagen warum keine Pakete weggeworfen werden?
oder mache ich bei der Konfiguration etwas falsch?
Danke für die Hilfe