Differences

This shows you the differences between two versions of the page.

doc:howto:packet.scheduler:packet.scheduler [2012/12/05 12:52]
orca
doc:howto:packet.scheduler:packet.scheduler [2014/09/01 10:41] (current)
hamy
Line 1: Line 1:
- +====== Network Traffic Control ======
- +
-====== Traffic Control ======+
Traffic Control is the umbrella term for packet prioritizing, traffic [[#shaping|shaping]], bandwidth limiting, AQM (Active Queue Management), etc. This HowTo will help you understand and set up traffic control on your router. Is it one strategy to address problems caused by [[wp>Network congestion]]. Traffic Control is the umbrella term for packet prioritizing, traffic [[#shaping|shaping]], bandwidth limiting, AQM (Active Queue Management), etc. This HowTo will help you understand and set up traffic control on your router. Is it one strategy to address problems caused by [[wp>Network congestion]].
| {{:meta:icons:tango:dialog-information.png?nolink}} | You //can// control, i.e. prioritize and/or shape, ANY **upload traffic**, i.e. traffic being sent from your router to the Internet. Doing so //will// solve problems that occur with congestion, i.e. [[wp>Jitter#Packet_jitter_in_computer_networks|jitter]] and delay. | | {{:meta:icons:tango:dialog-information.png?nolink}} | You //can// control, i.e. prioritize and/or shape, ANY **upload traffic**, i.e. traffic being sent from your router to the Internet. Doing so //will// solve problems that occur with congestion, i.e. [[wp>Jitter#Packet_jitter_in_computer_networks|jitter]] and delay. |
-| {{:meta:icons:tango:dialog-information.png?nolink}} | You do NOT have the same level of control over **download traffic**, i.e. traffic arriving at your router from the Internet. Here, you can only drop packets but not rearrange them.\\ The dropping of TCP packets, causes the sending site to reduce it's transmission rate, the dropping of UDP packets however, will only help to keep the buffer empty. |+| {{:meta:icons:tango:dialog-information.png?nolink}} | You do NOT have the same level of control over **download traffic**, i.e. traffic arriving at your router from the Internet. Here, you can only drop packets but not rearrange them.\\ The dropping of TCP packets, causes the sending site to reduce its transmission rate, the dropping of UDP packets however, will only help to keep the buffer empty. |
===== Preparations ===== ===== Preparations =====
Line 106: Line 104:
| -> [[sch_sfb]]    |  Stochastic Fair Blue                |  ??  | bla  |  |  | | -> [[sch_sfb]]    |  Stochastic Fair Blue                |  ??  | bla  |  |  |
| -> [[sch_sfq]]    |  Stochastic Fairness Queueing        |  ☒  | distibutes bandwidth for known tcp-connections fairly  |  |  ☑  | | -> [[sch_sfq]]    |  Stochastic Fairness Queueing        |  ☒  | distibutes bandwidth for known tcp-connections fairly  |  |  ☑  |
 +| -> [[sch_sfqred]] |  mixture of qfq and red              |  ?  |      | | |
| -> [[sch_tbf]]    |  Token Bucket Filter                  |  ☒  | limit bandwidth  |  |  ☑  | | -> [[sch_tbf]]    |  Token Bucket Filter                  |  ☒  | limit bandwidth  |  |  ☑  |
| -> [[sch_teql]]  |  True/Trivial Link Equalizer          |  ??  | bla  |  |  ☑  | | -> [[sch_teql]]  |  True/Trivial Link Equalizer          |  ??  | bla  |  |  ☑  |
**''Note:''** The PRIO QDisc does contain three classes, but since they cannot be configured further, PRIO is considered to be a classless QDisc. Its classes are sometimes called bands. **''Note:''** The PRIO QDisc does contain three classes, but since they cannot be configured further, PRIO is considered to be a classless QDisc. Its classes are sometimes called bands.
 +
 +==== Actions ====
 +
 +^ Action  ^^  Description  ^  kmod-sched-core  ^  kmod-sched ^
 +| [[act_police]]  | Input police filter        |  |  |
 +| [[act_nat]]    | Stateless NAT actions      | | |
 +| [[act_mirred]]  | packet mirroring and redirect actions | | |
 +| [[act_skbedit]] | | | |
 +
==== Filters ==== ==== Filters ====
Line 116: Line 124:
  * In principle it works exactly like [[doc:howto:netfilter#configuration|netfilter rules]], the only difference is that <color blue>matches</color> are called <color blue>classifiers</color> and the <color red>TARGET</color> are called <color red>VERDICT</color> in available documentation. However, since it is possible to do the filtering <del>entirely</del> with netfilter (almost, doesn't forget Layer 2 packets like arp), this does not really matter.   * In principle it works exactly like [[doc:howto:netfilter#configuration|netfilter rules]], the only difference is that <color blue>matches</color> are called <color blue>classifiers</color> and the <color red>TARGET</color> are called <color red>VERDICT</color> in available documentation. However, since it is possible to do the filtering <del>entirely</del> with netfilter (almost, doesn't forget Layer 2 packets like arp), this does not really matter.
-^ Filter  ^^  Description  ^  kmod-sched-core  ^  kmod-sched ^+^ Filter (Classifier) ^^  Description  ^  kmod-sched-core  ^  kmod-sched ^
| -> [[http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commit;h=e5dfb815181fcb186d6080ac3a091eadff2d98fe|cls_flow]]    | flow classifier  | bla  |  ☑  |  | | -> [[http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commit;h=e5dfb815181fcb186d6080ac3a091eadff2d98fe|cls_flow]]    | flow classifier  | bla  |  ☑  |  |
| -> [[cls_fw]]    | firewall classifier  | bla  |  ☑  |  | | -> [[cls_fw]]    | firewall classifier  | bla  |  ☑  |  |
Line 123: Line 131:
| -> [[cls_u32]]    | u32 classifier  | bla  |  ☑  |  | | -> [[cls_u32]]    | u32 classifier  | bla  |  ☑  |  |
| -> [[cls_basic]]    | basic classifier  | bla  |  |  ☑  | | -> [[cls_basic]]    | basic classifier  | bla  |  |  ☑  |
 +| -> [[cls_cgroup]] | [[wp>cgroups]] (Control Group) Classifier |  |  |
=== Filter with packet scheduler === === Filter with packet scheduler ===
Line 196: Line 205:
  *[[packet.scheduler.example4]] HFSC + FQ_CODEL + FLOW classifier; basic fair sharing behind triple play box   *[[packet.scheduler.example4]] HFSC + FQ_CODEL + FLOW classifier; basic fair sharing behind triple play box
-**''Note:''** The above examples do not make any use of UCI or anthing else, that is OpenWrt-specific, so you can simply port them to any other Linux distributions and back.+**''Note:''** The above examples do not make any use of UCI or anthing else, that is not OpenWrt-specific, so you can simply port them to any other Linux distributions and back.
==== Check results ==== ==== Check results ====
Line 306: Line 315:
  * ''**Work-Conserving**'' A work-conserving QDisc never delays packets. It does NOT "shape" packets.   * ''**Work-Conserving**'' A work-conserving QDisc never delays packets. It does NOT "shape" packets.
  * ''**Non-Work-Conserving**'' A non-work-conserving QDiscs may delay packets and "shape" them. This means that they sometimes refuse to pass a packet, even though they have one available.   * ''**Non-Work-Conserving**'' A non-work-conserving QDiscs may delay packets and "shape" them. This means that they sometimes refuse to pass a packet, even though they have one available.
 +  * ''**Tail drop Queue**'' see [[wp>Tail drop]]
**''Classes''** Classes are sub-QDiscs which allow the user to configure QoS in more detail. Classes can contain additional classes. Classes do not have a queue, do not contain any network packets and cannot contain filters. **''Classes''** Classes are sub-QDiscs which allow the user to configure QoS in more detail. Classes can contain additional classes. Classes do not have a queue, do not contain any network packets and cannot contain filters.
Line 336: Line 346:
  * [[http://linuxgazette.net/135/pfeiffer.html|TCP and Linux' Pluggable Congestion Control Algorithms]]   * [[http://linuxgazette.net/135/pfeiffer.html|TCP and Linux' Pluggable Congestion Control Algorithms]]
  * [[http://www.mail-archive.com/lartc@mailman.ds9a.nl/msg17009.html|Packet scheduler and VLANs]]   * [[http://www.mail-archive.com/lartc@mailman.ds9a.nl/msg17009.html|Packet scheduler and VLANs]]
 +
 +===== Tags =====
 +{{tag>QoS}}

Back to top

doc/howto/packet.scheduler/packet.scheduler.1354708348.txt.bz2 · Last modified: 2012/12/05 12:52 by orca