Portál AbcLinuxu, 6. května 2025 17:47
# downlink eth1 /sbin/tc qdisc add dev eth1 handle 1: root htb default 99 r2q 1800 # uplink eth0 /sbin/tc qdisc add dev eth0 handle 1: root htb default 99 r2q 1800 /sbin/tc class add dev eth1 parent 1:0 classid 1:2 htb rate 1240kbit ceil 1240kbit quantum 103 prio 1 /sbin/tc class add dev eth0 parent 1:0 classid 1:2 htb rate 1240kbit ceil 1240kbit quantum 103 prio 1 /sbin/tc class add dev eth1 parent 1:0 classid 1:1 htb rate 999000kbit ceil 999040kbit quantum 83253 prio 1 /sbin/tc class add dev eth0 parent 1:0 classid 1:1 htb rate 999000kbit ceil 999040kbit quantum 83253 prio 1 /sbin/tc class add dev eth1 parent 1:1 classid 1:3 htb rate 2560kbit ceil 2560kbit quantum 213 prio 1 /sbin/tc class add dev eth0 parent 1:1 classid 1:3 htb rate 2560kbit ceil 2560kbit quantum 213 prio 1 /sbin/tc class add dev eth1 parent 1:2 classid 1:4 htb rate 2560kbit ceil 2560kbit quantum 213 prio 1 /sbin/tc class add dev eth0 parent 1:2 classid 1:4 htb rate 2560kbit ceil 2560kbit quantum 213 prio 1 /sbin/tc class add dev eth1 parent 1:1 classid 1:10 htb rate 1000kbit ceil 1001kbit quantum 83 prio 1 /sbin/tc class add dev eth0 parent 1:1 classid 1:10 htb rate 1000kbit ceil 1001kbit quantum 83 prio 1 # Jednolivi klienti -- rychlsoti echo Aktivuji IP 94.229.95.162 /sbin/tc class add dev eth1 parent 1:1 classid 1:1686 htb rate 800kbit ceil 8000kbit quantum 666 prio 1 /sbin/tc qdisc add dev eth1 parent 1:1686 handle 1686 esfq /sbin/tc filter add dev eth1 protocol ip parent 1: prio 1 u32 match ip dst 94.229.95.162 flowid 1:1686 action mirred egress redirect dev ifb0 /sbin/tc class add dev eth0 parent 1:1 classid 1:3336 htb rate 204kbit ceil 2048kbit quantum 170 prio 1 /sbin/tc qdisc add dev eth0 parent 1:3336 handle 3336 esfq /usr/src/iptables-1.4.3.2/iptables -t mangle -A POSTROUTING -s 94.229.95.162 -j MARK --set-mark 3336 /sbin/tc filter add dev eth0 parent 1:0 prio 1 protocol ip handle 3336 fw flowid 1:3336 echo Aktivuji IP 192.168.1.2 /sbin/tc class add dev eth1 parent 1:1 classid 1:107 htb rate 30000kbit ceil 300000kbit quantum 25000 prio 1 /sbin/tc qdisc add dev eth1 parent 1:107 handle 107 esfq /sbin/tc filter add dev eth1 protocol ip parent 1: prio 1 u32 match ip dst 192.168.1.2 flowid 1:107 action mirred egress redirect dev ifb0 /sbin/tc class add dev eth0 parent 1:1 classid 1:1757 htb rate 30000kbit ceil 300000kbit quantum 25000 prio 1 /sbin/tc qdisc add dev eth0 parent 1:1757 handle 1757 esfq /usr/src/iptables-1.4.3.2/iptables -t mangle -A POSTROUTING -s 192.168.1.2 -j MARK --set-mark 1757 /sbin/tc filter add dev eth0 parent 1:0 prio 1 protocol ip handle 1757 fw flowid 1:1757
Je opravdu nutné značkovat packety v netfilteru, když je stejně rozdělujete tc filterem podle IP adresy? Není slabým místem samotné značkování packetů?
Jinak bych doporučil obrátit se na příslušný mailing list (netdev@vger.kernel.org). Pokud se při stejném řádu pravidel takhle propadnete, viděl bych to na zaplněnou hash tabulku, kdy vyhledávání degeneruje na procházení lineárního seznamu.
Není slabým místem samotné značkování packetů?Pravdepodobne ano, iptables pravidla pro matchovani jsou linearni seznam. Chce to pridat aspon jednu uroven (rozdelit do chainu podle prefixu a pak presne matchovat v ramci prefixu).
iptables -t mangle -N net-192-168-2 iptables -t mangle -A POSTROUTING -s 192.168.2.0/24 -j net-192-168-2 iptables -t mangle -A net-192-168-2 -s 192.168.2.1 -j MARK --set-mark 123 iptables -t mangle -A net-192-168-2 -s 192.168.2.2 -j MARK --set-mark 124 iptables -t mangle -N net-192-168-3 iptables -t mangle -A POSTROUTING -s 192.168.3.0/24 -j net-192-168-3 iptables -t mangle -A net-192-168-3 -s 192.168.3.1 -j MARK --set-mark 125 iptables -t mangle -A net-192-168-3 -s 192.168.3.2 -j MARK --set-mark 126
Ahoj je to až příliš jednoduché. V jednoduchosti je genialita :). Vyskousim a aplikuju. Po te dam echo zdali pomohlo. Dle poslednich mereni to, ale asi nebude to prave makove. Myslim si, ze problem nastava pri naplneni tc trid. Jdu psat a testovat.
CPU0 CPU1 CPU2 CPU3 CPU4 CPU5 CPU6 CPU7 0: 38 0 0 281417869 0 0 0 0 IO-APIC-edge timer 1: 0 0 0 2 0 0 0 0 IO-APIC-edge i8042 6: 0 0 0 3 0 0 0 0 IO-APIC-edge floppy 8: 0 0 0 1 0 0 0 0 IO-APIC-edge rtc0 9: 0 0 0 0 0 0 0 0 IO-APIC-fasteoi acpi 12: 0 0 0 4 0 0 0 0 IO-APIC-edge i8042 19: 0 0 0 0 9319 0 0 0 IO-APIC-fasteoi ata_piix, ata_piix 499: 0 0 0 1 0 0 0 0 PCI-MSI-edge eth1 500: 0 0 0 412060966 0 0 0 0 PCI-MSI-edge eth1-tx0 501: 0 0 250872355 0 0 0 0 0 PCI-MSI-edge eth1-rx0 502: 0 0 653 0 0 0 0 0 PCI-MSI-edge eth0 503: 0 269950293 0 0 0 0 0 0 PCI-MSI-edge eth0-tx0 504: 0 350308723 0 0 0 0 0 0 PCI-MSI-edge eth0-rx0 NMI: 0 0 0 0 0 0 0 0 Non-maskable interrupts LOC: 706228 392838556 73890138 5618709 907137 383653 405311 502806 Local timer interrupts RES: 30465 20787 215368 27637 142048 127067 149189 153152 Rescheduling interrupts CAL: 468 512 510 512 431 492 464 244 Function call interrupts TLB: 6007 4085 6706 7232 54636 47404 55374 57804 TLB shootdowns TRM: 0 0 0 0 0 0 0 0 Thermal event interrupts THR: 0 0 0 0 0 0 0 0 Threshold APIC interrupts SPU: 0 0 0 0 0 0 0 0 Spurious interrupts ERR: 0 MIS: 0
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.