User Tools

Site Tools


doc:howto:packet.scheduler:packet.scheduler

Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
doc:howto:packet.scheduler:packet.scheduler [2012/12/18 12:54]
orca
doc:howto:packet.scheduler:packet.scheduler [2014/09/01 10:41] (current)
hamy
Line 3: Line 3:
  
 | {{:​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 81: Line 81:
 | ->   ​sch_atm ​     |  name                                 ​| ​ ??  | bla  |  |  | | ->   ​sch_atm ​     |  name                                 ​| ​ ??  | bla  |  |  |
 | ->   ​sch_blackhole| ​ Black hole queue                 ​| ​ ??  | bla  |  |  | | ->   ​sch_blackhole| ​ Black hole queue                 ​| ​ ??  | bla  |  |  |
-| -> [[sch_bfs]] ​   |  Brain Fuck Scheduler ​             |  ??  | bla  | no | no | 
 | -> [[sch_cbq]] ​   |  Class-Based Queueing discipline ​     |  ☑  | very complex ​ |  |  | | -> [[sch_cbq]] ​   |  Class-Based Queueing discipline ​     |  ☑  | very complex ​ |  |  |
 | -> [[sch_choke]] ​ |  CHOKe scheduler ​                     |  ??  | bla  |  |  | | -> [[sch_choke]] ​ |  CHOKe scheduler ​                     |  ??  | bla  |  |  |
Line 105: 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 115: 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 122: 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 195: 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 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}}
doc/howto/packet.scheduler/packet.scheduler.1355831688.txt.bz2 · Last modified: 2012/12/18 12:54 by orca