Warum hat mein Linux Traffic Shaping-Skript nur begrenzte Ergebnisse?

7

Ich versuche, meinem Linux-Passthrough-Server einige Verkehrsregeln einzuführen, die eine bessere QoS für Folgendes bieten:

1) Geringer Portverkehr (Web-Verkehr und E-Mail usw.). 2) Geringer Portverkehr in die Box - speziell Port-Web-Management (80) und SSH (22). 3) Setzen Sie die Priorität der Dateifreigabe zuletzt. Dh der ganze andere Verkehr.

Ich habe ein Shell-Skript angepasst, um einige Grundregeln mit tc und htb einzurichten:

#!/bin/bash

UPLINK=7000
DOWNLINK=500

tc qdisc del dev eth0 root    2> /dev/null > /dev/null
tc qdisc del dev eth1 root    2> /dev/null > /dev/null

ip link set dev eth0 qlen 30 2> /dev/null > /dev/null
ip link set dev eth0 mtu 576 2> /dev/null > /dev/null

# add HTB root qdisc
tc qdisc add dev eth0 root handle 1: htb default 40
tc class add dev eth0 parent 1: classid 1:1 htb rate ${UPLINK}kbit

tc class add dev eth0 parent 1:1 classid 1:5 htb rate $[$UPLINK]kbit ceil ${UPLINK}kbit quantum 1 prio 0
tc class add dev eth0 parent 1:1 classid 1:10 htb rate $[(($UPLINK/8)*3)]kbit ceil ${UPLINK}kbit quantum 1 prio 1
tc class add dev eth0 parent 1:1 classid 1:20 htb rate $[(($UPLINK/8)*3)]kbit ceil ${UPLINK}kbit quantum 1 prio 2
tc class add dev eth0 parent 1:1 classid 1:30 htb rate $[(($UPLINK/8)*1)]kbit ceil ${UPLINK}kbit quantum 1 prio 3
tc class add dev eth0 parent 1:1 classid 1:40 htb rate $[(($UPLINK/8)*1)]kbit ceil ${UPLINK}kbit quantum 1 prio 4

# No SFQ because we should have almost no queue here. Better dropping packets than delay them in VoIP
tc qdisc add dev eth0 parent 1:20 handle 5: pfifo limit 5
tc qdisc add dev eth0 parent 1:10 handle 10: pfifo limit 30
tc qdisc add dev eth0 parent 1:20 handle 20: pfifo limit 30
tc qdisc add dev eth0 parent 1:30 handle 30: sfq perturb 10 limit 200
tc qdisc add dev eth0 parent 1:40 handle 40: sfq perturb 10 limit 300

iptables -t mangle -F QOSSHAPER-OUT 2> /dev/null > /dev/null
iptables -t mangle -X QOSSHAPER-OUT 2> /dev/null > /dev/null
iptables -t mangle -D POSTROUTING -o eth0 -j QOSSHAPER-OUT 2> /dev/null > /dev/null

########################################################################################################

iptables -t mangle -N QOSSHAPER-OUT
iptables -t mangle -I POSTROUTING -o eth0 -j QOSSHAPER-OUT

# ensure min delay by TOS field
iptables -t mangle -A QOSSHAPER-OUT -m tos --tos 0x10 -j CLASSIFY --set-class 1:5

iptables -t mangle -A QOSSHAPER-OUT -p icmp -j CLASSIFY --set-class 1:20
iptables -t mangle -A QOSSHAPER-OUT -p udp --dport domain -j CLASSIFY --set-class 1:20
iptables -t mangle -A QOSSHAPER-OUT -p tcp --tcp-flags SYN,RST,ACK SYN,FIN -j CLASSIFY --set-class 1:20
iptables -t mangle -A QOSSHAPER-OUT -p tcp -m length --length 60 -j CLASSIFY --set-class 1:30   #Small packets

########################################################################################################

Ich habe dann einige IPTABLES-Regeln hinzugefügt, um den Verkehr zu gestalten.

-A POSTROUTING -o eth0 -j QOSSHAPER-OUT 
-A QOSSHAPER-OUT -p tcp -m tcp --sport 80 -j CLASSIFY --set-class 0001:0020 
-A QOSSHAPER-OUT -p tcp -m tcp --sport 22 -j CLASSIFY --set-class 0001:0020 
-A QOSSHAPER-OUT -p tcp -m tcp --sport 7080 -j CLASSIFY --set-class 0001:0020 
-A QOSSHAPER-OUT -p tcp -m tcp --sport 9080 -j CLASSIFY --set-class 0001:0020 
-A QOSSHAPER-OUT -p tcp -m tcp --sport 1:1024 -j CLASSIFY --set-class 0001:0030 
-A QOSSHAPER-OUT -p tcp -m tcp --dport 1:1024 -j CLASSIFY --set-class 0001:0030 
-A QOSSHAPER-OUT -m tos --tos 0x10/0xff -j CLASSIFY --set-class 0001:0005 
-A QOSSHAPER-OUT -p icmp -j CLASSIFY --set-class 0001:0020 
-A QOSSHAPER-OUT -p udp -m udp --dport 53 -j CLASSIFY --set-class 0001:0020 
-A QOSSHAPER-OUT -p tcp -m tcp --tcp-flags SYN,RST,ACK FIN,SYN -j CLASSIFY --set-class 0001:0020 
-A QOSSHAPER-OUT -p tcp -m length --length 60 -j CLASSIFY --set-class 0001:0030 

Falls Sie sich fragen, werden die Ports 7080 und 9080 zum Proxying verwendet.

Ich hatte gehofft, dass LAN-Teilnehmer Priorität auf Port 80 haben könnten und dass Administratorbenutzer WAN-Zugriff auf Port 80 und 22 haben würden, vor allem auf eingehenden Datenverkehr - die Regeln haben jedoch wenig Unterschied gemacht.

Ratschläge oder Einblicke sind willkommen.

Zoredache
quelle
Definieren Sie "kleinen Unterschied". Hast du irgendwelche Veränderungen gesehen? Ja? Nein?
Kyle Brantley
Vielleicht ist der Verkehr im Netzwerk nicht wirklich so formbar. Sie sagten "wenig Wirkung haben", nicht "nicht funktionieren", also neige ich dazu zu glauben, dass es geformt wird und Ihre Wahrnehmung falsch ist.
Tom O'Connor

Antworten:

1

Drei Dinge zu überprüfen:

  1. Ich kenne Ihre Netzwerktopologie nicht, aber sind Sie sicher, dass Sie Sport verwenden möchten , um den Datenverkehr in iptables zu klassifizieren ? Vielleicht haben Sie dport beabsichtigt .

  2. Verwenden Sie das Protokollierungsmodul iptables. Sie haben schöne Beispiele in der Manpage. Mithilfe des Protokollierungsmoduls können Sie leicht erkennen, ob die Pakete so klassifiziert werden, wie Sie es beabsichtigt haben oder nicht.

  3. Verwenden Sie das iperf- Tool, um die Wirksamkeit Ihres neuen Routers zu betonen und zu testen!

new23d
quelle
-2

Zunächst entschuldige ich mich dafür, dass ich Ihre Frage nicht direkt beantwortet habe, aber ich habe ein paar Dinge durch das Lesen dieses Artikels gelernt: http://tomatousb.org/tut:using-tomato-s-qos-system Vielleicht finden Sie es hilfreich.

Waxhead
quelle
1
Es wäre besser, wenn Sie die wichtigsten Punkte aus diesem Artikel hier veröffentlichen würden, als nur einen Link außerhalb der Website bereitzustellen. Wenn dieser externe Link offline geschaltet würde, würde diese Antwort immer noch die relevanten Informationen enthalten.
Ben Pilbrow
Du hast Recht. Ich werde versuchen, dies bei meinen nächsten Antworten zu berücksichtigen. Es gibt jedoch auch einige Dinge in dem Artikel, die ich nicht ganz verstehe, aber ich dachte, es könnte sich lohnen, sie noch zu veröffentlichen, da das Originalplakat möglicherweise etwas aus dem Artikel gewonnen hat und daher möglicherweise seine eigene Frage und damit beantworten konnte Beibehaltung der relevanten Informationen, auch wenn der externe Link ausfällt. Wie auch immer - ich werde versuchen, es beim nächsten Mal besser zu machen!
Waxhead