spartacus
Goto Top

Mikrotik: Begrenzung der Bandbreite über "Queue" und "MAC-Adresse"

Hallo,
ich möchte die Bandbreites eines Clients in meinem internen Netz begrenzen. Da man dies in den Queue-Einstellungen nur auf Basis der IP-Adresse machen kann muss dieses über das MArkieren von Paketen gelöst werden. Dazu habe ich folgendes implementiert:

Firewall:

mangle_1
mangle_2
mangle_3


Queue:

queue_1
queue_2

Ich habe auch die Limits in den rot markierten Bereich geändert, zeigt aber offenbar keine Wirkung, der Client zieht unvermindert mit der vollen Bandbreite.

Welche Einstellung stimmt hier nicht? kann jemand einen Tipp geben?

Spartacus

Content-Key: 379893

Url: https://administrator.de/contentid/379893

Printed on: April 19, 2024 at 08:04 o'clock

Member: colinardo
colinardo Jul 11, 2018, updated at Jul 12, 2018 at 07:08:49 (UTC)
Goto Top
Servus Spartacus.
Welche Einstellung stimmt hier nicht? kann jemand einen Tipp geben?
Nun, das ist so. Du markierst bei dir zwar die Pakete von der MAC-Adresse am MK ankommen aber es kommen ja auch Pakete von der anderen Seite zurück die eben nicht markiert sind. Deswegen musst du hier erst einmal die zugehörige Connection mit einer Connection-Mark versehen und dann alle Pakete mit dieser Connection-Mark mit einer Paket-Mark versehen damit auch alle zugehörigen Pakete erfasst werden:
/ip firewall mangle 
add action=mark-connection chain=prerouting new-connection-mark=MyConnectionMark connection-state=new passthrough=yes src-mac-address=XX:XX:XX:XX:XX:XX
add action=mark-packet chain=prerouting connection-mark=MyConnectionMark new-packet-mark=MyPacketMark passthrough=no
In der Queue setzt du sowohl MAX-LIMIT als auch Limit-at auf die selben Werte.
Beachte auch die Passthrough-Eigenschaft oben!
/queue simple add limit-at=1M/1M max-limit=1M/1M name=LIMIT_MAC packet-marks=MyPacketMark target=""  

Die Bedeutung der beiden Limits:
limit-at (NUMBER/NUMBER) : normal upload/download data rate that is guaranteed to a target
max-limit (NUMBER/NUMBER) : maximal upload/download data rate that is allowed for a target to reach to reach what

Limit-At ist quasi die Bandbreite ab der der Queue erst beginnt den Traffic zu limitieren, alles darunter wird nicht beachtet, erst wenn der Traffic die Limit-At Werte erreicht fängt der Queue an damit zu arbeiten. Max-Limit ist dann das eigentliche Absolute Limit den der Queue erreichen kann.

Natürlich solltest du hier lokale Netze zusätzlich (z.B. über Dst-Addresslist oder DST-Interface etc.) in der Mangle-Rule ausnehmen sonst werden auch lokale Verbindungen gedrosselt face-wink.

Das Thema ist umfangreich und du solltest dir dringend die Mikrotik eigenen speziellen Begrifflichkeiten im Handbuch erlesen und verstehen bevor du irgendwas probierst es aber nicht vollkommen verstehst was es letztendlich bewirkt. Sonst läufst du immer wieder gegen die Wand und verstehst nicht warum.

Auch hier mal lesen
https://wiki.mikrotik.com/wiki/Bandwidth_Managment_and_Queues

Und ganz wichtig, sollte ganz oben auf deiner Liste stehen:
https://wiki.mikrotik.com/wiki/Manual:Packet_Flow_v6
Der Packetflow ist essentiell, den sollte man immer im Kopf haben wenn es um Mangle&Co geht.

Der Mikrotik kann viel, verlangt aber auch einiges an Background-Wissen von seinem Bediener face-smile da du hier nicht von Assistenten begleitet wirst sondern es bis ins kleinste selbst konfigurieren musst.

Grüße Uwe
Member: Spartacus
Spartacus Jul 12, 2018 at 15:37:14 (UTC)
Goto Top
Hallo colinardo,
sorry für die späte Antwort, aber ich hatte heute ein echtes Problem mit dem RB3011. Nach dem Update auf 6.42.6 hatte mein RB plötzlich 3.41 drauf und es ging nix mehr. Nach einem manuellen Update war die Konfiguration irgendwie kaputt und ich hatte echt Mühe das wieder ans Fliegen zu kriegen....keine Ahnung was da passiert ist face-sad

Zum Thema:
Ich hatte es gestern schon über Queue-Tree gelöst, und es jetzt auf Simple Queue umgestellt da Deine Lösung irgendwie einfacher aussieht. Auf jeden Fall geht das ganz gut!

Ich möchte sehr wohl den Traffic im lokalen Netzt limitieren, damit hier nicht jeder WLAN-Client HD-Videos vom NAS schaut und am Ende mein Kodi auf dem FireTV-Stick bei Life-TV aussteigt. Das Dingen kann ich leider nur per WLAN anbinden und der braucht einfach seine Bandbreite.

Mal eine blöden Frage:
Kann man den Spieß nicht einfach umdrehen und dem Kodi eine garantierte Downloadrate zuweisen? Das wäre dann doch sicherlich die klügere Lösung. Was ist denn hier das Stichwort?

Danke und Gruß,
Christian
Member: colinardo
colinardo Jul 12, 2018 updated at 17:52:46 (UTC)
Goto Top
und dem Kodi eine garantierte Downloadrate zuweisen?
Kannst du ja, entweder, wie du schon angemerkt hast, mit dem QueueTree, indem du deinem Device per limit-at eine minimal verfügbare Bandbreite zuweist und dem Rest in einem weiteren Queue in deinem Tree mit niedrigerer Prio.
Bei simple Queues brauchst du dort auch einen weiteren Queue der alle anderen Clients erfasst damit der Router die verfügbate Bandbreite balancen kann.

Schau dir die Beipiele im Mikrotik Wiki dazu an, dort findest du sehr anschauliche Exemplare dazu und hier
https://wiki.mikrotik.com/wiki/Manual:HTB
Member: Spartacus
Spartacus Jul 13, 2018 at 12:35:29 (UTC)
Goto Top
Hi Uwe,
danke Dir für die Infos. Ich habe mir das mal angeschaut, aber ich bin mir nicht sicher, ob ich es richtig vertsanden habe:

Daher hier noch mal einen Zusammenfassung:

Anforderung:
Ich möchte einem Client (Client1) in meinem WLAN-Netz eine Downloadrate von 25Mbit garantieren. Alle anderen Clients an diesem WLAN-AP dürfen sich den Rest teilen, allerdings dynamisch.
Das heisst, wenn Client1 weniger als 25Mbit Bandbreite belegt, haben die anderen Clients entsprechend mehr Bandbreite zur Verfügung.
Upload ist hier unkritisch und wird nicht limitiert.

Vorgehensweise:
  • ich benutze Queue-Tree anstatt Simple Queue
  • ich markiere die Connection von Client1 (Src.-MAC), die priorisiert werden soll
  • ich markiere die Pakete der o.a. Connection
  • ich definiere eine globale Queue (parent) mit der max. Bandbreite für diese Queue (hier unbegrenzt)
  • ich definiere eine Child - Queue mit "limit at" 25Mbit für die o.a. markierten Pakete mit Prio 1
  • ich definiere eine Child - Queue "unbegrenzt" für die o.a markierten Pakete mit Prio 6

Und beim letzten Punkt habe ich noch einen Knoten im Kopf. Brauche ich wirklich eine separate Queue für die Clients die nicht priorisiert werden sollen, oder regelt sich das automatisch durch die Client 1 - Queue mit Prio 1? Wenn nicht, brauche ich dann nicht auch noch eine Mangle-Regel für alle anderen Clients auf dem Interface "WLANxy"

Ich habe auch gelesen, dass Fast-Track in der FW ausgeschaltet werden muss. Aktuell ist das bei mir noch eingeschaltet, scheint aber mit Simple Queue trotzdem zu funzen.

Gruß,
Christian
Member: colinardo
colinardo Jul 13, 2018 updated at 16:11:38 (UTC)
Goto Top
Zitat von @Spartacus:
Vorgehensweise:
  • ich benutze Queue-Tree anstatt Simple Queue
Ok.
* ich markiere die Connection von Client1 (Src.-MAC), die priorisiert werden soll
  • ich markiere die Pakete der o.a. Connection
Ok.
* ich definiere eine globale Queue (parent) mit der max. Bandbreite für diese Queue (hier unbegrenzt)
  • ich definiere eine Child - Queue mit "limit at" 25Mbit für die o.a. markierten Pakete mit Prio 1
  • ich definiere eine Child - Queue "unbegrenzt" für die o.a markierten Pakete mit Prio 6
Statt des global Queue nutze einen Interface-Queue der ist nicht vom fasttrack betroffen (s. deine andere Frage).
Die Prios brauchst du hier nicht weil sie ohne Max-Limit Angabe nicht wirken, aber du brauchst sie hier auch nicht da der der MK immer erst alle limit-at's befriedigt, also dem Client sowieso immer 25MBit zur Verfügung stehen und der Rest auf den anderen Queue verteilt wird.

Und beim letzten Punkt habe ich noch einen Knoten im Kopf. Brauche ich wirklich eine separate Queue für die Clients die nicht priorisiert werden sollen,
Ja, denn alles was nicht durch einen Queue läuft hat eine höhere Prio als die Pakete die durch den Queue müssen.
Before sending data over an interface, it is processed with a queuing discipline. By default, queuing disciplines are set under /queue interface for each physical interface (there is no default queuing discipline for virtual interfaces). Once we add a queue (in /queue tree) to a physical interface, the interface default queue, defined in /queue interface, for that particular interface gets ignored. It means - when a packet does not match any filter, it is sent through the interface with the highest priority
Quelle: https://mikrotik.com/testdocs/ros/2.9/root/queue.php

Ich habe auch gelesen, dass Fast-Track in der FW ausgeschaltet werden muss. Aktuell ist das bei mir noch eingeschaltet, scheint aber mit Simple Queue trotzdem zu funzen.
Warum das so ist und ob deine Pakete überhaupt tatsächlich den Fasttrack-Pfad laufen liest du hier, denn ein eingeschaltetes Fasttrack bedeutet nicht zwingend das sie es auch sind.
https://wiki.mikrotik.com/wiki/Manual:IP/Fasttrack