  traffic control Mini-Howto
  V aO, pierre@astrum.co.jp
  1999/11/09 v0.13

   Mini-HOWTO ł́ALinux ғ̃zXg瑗opPbg̗
  ʂ QoS @\păRg[@ɂĊȒPɐ܂B
  ______________________________________________________________________

  ڎ

  1. ͂߂
     1.1 {hLg̗Lp
     1.2 Ɛ
     1.3 쌠\L
     1.4 ̑

  2. ʓIȊbm
     2.1 ш搧ƗD搧
        2.1.1 ш搧
        2.1.2 D搧
     2.2 QoS

  3. \tgEFA̓Eݒ
     3.1 Kvȃ\tgEFA
     3.2 CXg[̌
     3.3 QoS T|[ggݍ񂾃J[l̃RpC
     3.4 iproute+tc ̃CXg[
     3.5 cbq.init XNvg̃CXg[

  4. gtBbNRg[̐݌v
     4.1 ӎ
     4.2 gtBbNRg[̐݌v
        4.2.1 ׂẴpPbg̑ш𐧌
        4.2.2 http, ftp ̂ݐ
        4.2.3 t@CEH[ʉ߂pPbgɂĐ

  5. ݒ菇
     5.1 ׂẴpPbg𐧌
     5.2 http, ftp ̂ݐ
     5.3 t@CEH[ʉ߂pPbgɂĐ

  6. 

  ______________________________________________________________________

  1.  ͂߂

  1.1.  {hLg̗Lp

  LɊÝA{hLgQƂ邱Ƃŉ炩̃bg
  邩܂B

  o  ftp  http  linux J[lȂǂ̑ʂ̃f[^MɉɂԂ
     ˂ă[̑M̑sĂ݂̂́AX|XA
     炢炵Ƃ

  o  lbg[Nɑ΂镉ׂ̍@ނ Linux ŉ^pĂāAȂƂ
     ƍlĂ

  o  t@CEH[ʉ߂pPbg̑ш𐧌

  o  telnet  ssh ŉun̋@ނ̃eiXsۂ̃X|X
     ftp  http Ȃǂ̃gtBbNŒቺ邱Ƃ

  tɉLɊYɂ́A{hLg͕sv܂B

  o  ݂̉iɕsĂȂ

  o  lbg[Nɑ΂镉ׂ̍@ނ^pĂȂ

  1.2.  Ɛ

  ̃hLg̓eɂč쐬҂͈؂̐ӔC𕉂܂B

  1.3.  쌠\L

  Copyright (C) 1999 Kazuhiro Inoue (Astrum, Inc)

  ̃hLǵAt[\tgEGAłB GNU General Public
  License  (͂ȍ~̔) ɏ]A̕zz܂
  ύXł܂B

  1.4.  ̑

  {hLgɂep̗p@͊ԈĂ\܂B
  ̃hLǵuƂ肠vƂő̖ړIƂĂ܂̂Ő
  [߂ɂ͑̓K؂ȏГ킹Ăǂ݂B

  {œǂ߂hLgƂĂ Internet Week 98 `[gA
  C12uQoSZpFIntservdiffservv
  <http://www.nic.ad.jp/iw98/presentations/C12.pdf> ȂǂQlɂȂ
  B

  ܂Aш搧䂪\ȃ[^̃hLgǂނ̂悢ł傤B

  2.  ʓIȊbm

  2.1.  ш搧ƗD搧

  lbg[NɐڑĂ@킪pPbg𑗏oꍇApPbg̏
  ˂Ȃ͖ɑos܂B

  ̂ߓZOgɑʂ̃pPbg𑗏o@킪݂Ƒ̋@
  ̃f[^̑M̃X|X啝Ɉ錴ƂȂ܂B

  ܂ 128Kbps ȉ̒ᑬȉł́A ftp  http őʂ̃f[^̑M
  sƁA[̑M telnet, ssh ̂悤ȐڑŃX|X
  ܂Blbg[Nɕ̒[ڑĂꍇ
  ́AX|Ẍ茰ɏoĂ܂B

  pPbg̑MAhX|[gԍɉđш̏lDx
  𒲐邱Ƃł΁Aftp őʂ̃f[^Mł pop3  smtp
  Ȃǂ̃pPbgDIɑołAX|X̌ɂȂ܂B

  Linux J[lł͂̂悤Ȑш搧ƗD搧gݍ킹Đݒ
  ł܂B

  2.1.1.  ш搧

  ш搧ł͊{IɎ̃[ŃpPbg̑osĂ܂B

  o  PʎԂ̓]ʂݒlĂԂ̓pPbg̑os
     B

  o  PʎԂ̓]ʂݒl𒴂ꍇ̓pPbg̑o~
     B

  Ƃ 128Kbps ̉ɂ ftp ̑ш 64Kbps Ɛݒ肵ꍇA
  ̑̃pPbgɂĂ͏ȂƂ 64Kbps ̑ш悪cĂ邽߁AO
  lbg[N pop3 T[o烁[M悤ȏꍇłX|X
  傫ቺ邱Ƃ͂܂B

  2.1.2.  D搧

  D搧ł͓ɕ̃pPbg̑MꍇɗDx̍p
  Pbg珈s܂BDx̍pPbg݂Ԃ͊{IɗD
  x̒ႢpPbg̑o͍s܂B

  Ƃ telnet  ssh ̂悤ȃpPbg ftp  http ̃pPbg
  D悷悤ɐݒ肷΁AuñzXgɐڑꍇł\ȃX|
  Xmۂ邱Ƃs\ł͂܂BDx̐ݒtɂ
  ƁAftp  http őʂ̃f[^M telnet  ssh ̐ڑs
  SRڑłȂƂ󋵂ɂȂ܂B

  ̂߁AD搧̐ݒsۂ͏\ɒӂKv܂B

  2.2.  QoS

  QoS (Quality of Service) ̓lbg[N̑шʓIɗp邽
  ߂̋ZpŁALinux kernel ł͊JŃJ[l 2.1 ŎÄ݂
  ŃJ[l 2.2.x ŗpł܂B

  Linux kernel  QoS ł͑Oq̑ш搧ƗD搧̗\łB

  3.  \tgEFA̓Eݒ

  3.1.  Kvȃ\tgEFA

  QoS @\𗘗pɂ͉L̃\tgEFAKvłB

  1. Linux kernel 2.2

     {hLgM_ (1999/10/29) ł̈ŃJ[l̃o[W
      2.2.13 łB QoS ͊JŃJ[l (2.1.x) łT|[gĂ
     ܂AʂȗRȂΈŃJ[l𗘗p̂悢ł
     B

  2. iproute+tc

     QoS ̐ݒɂ iproute+tc KvłB
     <ftp://ftp.infoscience.co.jp/pub/linux/ip-
     routing/iproute2-current.tar.gz>  <ftp://ftp.inr.ac.ru/ip-
     routing/iproute2-current.tar.gz> ł܂B tarball ł͂
      rpm 肵ꍇ
     <ftp://ftp.kddlabs.co.jp/.9/Linux/ipv6-rpm/> 
     <ftp://omni.rk.tusur.ru/Tango/> ł悤łAM҂͎
      Slackware gpĂ邽ߓ̊mF͂Ă܂B

  3. cbq.init

     ݒeVvȏꍇ cbq.init XNvgpƕ֗łB
     <ftp://ftp.equinox.gu.net/pub/linux/cbq/cbq.init> ł
     B

  3.2.  CXg[̌

  iproute2+tc  cbq.init K؂ȃpXɎŃRs[Kv܂
  ŁAǂ̃fBNgɃRs[邩\ߌ߂Ă܂傤B

  cbq.init ftHgݒ̂܂܂ŗpꍇ͉L̂ƂƂȂ
  B

  o  iproute2+tc
     /sbin

  o  cbq.init
     /etc/rc.d

  o  cbq.init Ŏgpݒt@C
     /etc/sysconfig/cbq

  3.3.  QoS T|[ggݍ񂾃J[l̃RpC

  ł̓J[lRpC@łɗĂƂOŘb
  i߂܂BJ[l̃RpCɂĂ̒ms\ȏꍇ Linux
  Kernel HOWTO Ȃǂ̓K؂ȃhLgɎQƂĂB

  QoS 𗘗pɂ͏ȂƂȉ̃IvVgݍŃRpC
  Kv܂BW[ƂăRpCĂ삷悤łAm
  F͂Ă܂B

  o  Prompt for development and/or incomplete code/drivers

  o  QoS and/or fair queueing

  o  CBQ packet scheduler

  o  TBF queue

  o  QoS support

  o  Rate estimator

  o  Packet classifier API

  o  Routing table based classifier

  o  Firewall based classifier

  o  U32 classifier

  o  Ingres traffic policing

  3.4.  iproute+tc ̃CXg[

  iproute2-current.tar.gz Cӂ̃fBNgœWJĂB
  Alibc5 ̊ BIND 4  libresolv VFA[hCu݂
  ꍇ Makefile ̏CKvłBglibc6 ł͓ʂȏC͕svłB

  RpC̏ł make s܂BRpCɏI
  琶ꂽoCîAip/ip  tc/tc K؂ȃfBNgɃR
  s[܂B

  cbq.init ł /sbin ɃCXg[Ă邱ƂOƂĂ܂
  悭킩Ȃ͂ɃRs[ĂB

  3.5.  cbq.init XNvg̃CXg[

  cbq.init XNvgK؂ȃfBNgɃRs[Achmod 500 cbq.init
  Ȃǂ̓K؂ȃp[~bVݒ肵Ă܂B Slackware ̏ꍇ
  /etc/rc.d ɃRs[ĂƂ悢ł傤B

  Ɋɍ킹 cbq.init ̏Cs܂BύXKvȐݒ
  Ă܂B

  o  PATH
     ip, tc ̃CXg[pX܂܂悤ɂĂB /sbin ɃC
     Xg[Ăꍇ͕ύXsvłB

  o  CBQ_PATH
     cbq.init gpݒt@Ci[pXŁAftHg
     /etc/sysconfig/cbq łBKvɉďCĂB

  o  CBQ_INIT
     cbq.init ł̓XNvgĝ̃CXg[pX /etc/rc.d Ƃ
     邽߁AقȂpXɃCXg[ꍇ͐pXw肵
     B݂̂Ƃ낱̕ϐ͖gp̂悤Ȃ̂œɕύXȂ
     ͂ȂƎv܂B

  o  W[̑gݍݐݒ
     QoS ֘ÃW[J[lɒڑgݍłꍇ́AW[
     ̑gݍ݂sĂRgɂ܂B

  o  ̑
     tc, ip ̃CXg[pX /sbin ȊȌꍇ́Acbq.init 
     /sbin/tc, /sbin/ip ݂Ă邩ǂmFĂ 1 
     ܂̂œK؂ɏCĂB

  4.  gtBbNRg[̐݌v

  4.1.  ӎ

  ݌vsOɈӂׂ_܂B QoS ̐ݒ̓foCX
  瑗opPbgɂĂ̂ݗLłAMpPbgɂĐݒ
  邱Ƃ͂ł܂B
  t@CEH[oR鑗M̏ꍇ́AfoCXŐݒs
  ƂŊOMpPbgɂĂ̗ʂ𒲐邱ƂɂȂ܂B

  4.2.  gtBbNRg[̐݌v

  ^Cg͌ꂵ\gĂ܂Aʂɓb͂
  ܂Bǂ̃vgRi|[gԍjɂǂ̒x̑ш蓖Ă邩
  ߂܂傤AƂƂłB

  ł͗ƂĉL̂悤ȐݒŝƂ܂B

  4.2.1.  ׂẴpPbg̑ш𐧌

  ̃P[Xł͐ݒ͔ɃVvȂ̂ŁAcbq.init gpȂĂ
  ł܂Bׂ̍@ނłs telnet ł̃ei
  XƂȂ܂̂ł̐ݒsP[X͏Ȃ܂B

  ł eth0 ̑ш 512Kbps ɐݒsĂ݂܂B

  4.2.2.  http, ftp ̂ݐ

  ̃P[Xł cbq.init XNvg𗘗pقݒ肪ȒPłB
  ł http  64Kbps, ftp  32Kbps ̑ш蓖ĂP[Xl
  B

  4.2.3.  t@CEH[ʉ߂pPbgɂĐ

  ł͎̂悤ȃlbg[NɂĐݒŝƂ܂B

  192.168.0.0/24 ̓vCx[glbg[NŁAlocal t@CEH
  [ʉ߂邷ׂẴpPbg IP }XJ[hŕϊ̂Ƃ
  B

         (any)
           |
        router
           |
       ---------------------------- 172.16.0.0/24 (global)
              |
              | eth0, 10baseT, 172.16.0.1
             F/W
              | eth1, 10BaseT, 192.168.0.1
              |
       ---------------------------- 192.168.0.0/24 (local)

  ݒj:

  o  telnet, ssh ͐ȂB

  o  local -> global ͐ȂB

  o  any <-> local  http  96Kbps ɐ

  o  any <-> local  ftp  64kbps ɐ

  o  any <-> local ւ̂̑̃pPbg͐ȂB

  o  ̑̃pPbg͐ȂB

  o  D揇ʂ ftp < http < ̑̏ ftp łႢ

  5.  ݒ菇

  5.1.  ׂẴpPbg𐧌

  ̃R}hsĂB

       tc qdisc add dev eth0 root tbf limit 15Kb buffer 10Kb/8 rate
       512Kbps

  ɐݒ肪LƂȂĂ邱ƂK؂ȃc[pĊmF܂B ncftp
   wget Ȃǂ̂悤ɓ][gmFłc[păt@C̓]
  sĂ݂ĂB

  ݒ폜ꍇ͎̃R}hs܂B

       tc qdisc del dev eth0 root

  ш̏l rate ̕Cӂ̐lɕύX邱ƂŎRɐݒł
  BPʂ Kbps, Mbps gpł܂B

  삪mFłAݒR}hNXNvg̓K؂ȌŎs
  悤ɂĂB

  5.2.  http, ftp ̂ݐ

  cbq.init p̐ݒt@CL̂悤ɍ쐬܂B

       /etc/sysconfig/cbq/cbq-64.http
       DEVICE=eth0,10Mbit,1Mbit
       RATE=64Kbit
       WEIGHT=6Kbit
       PRIO=5
       RULE=:80

       /etc/sysconfig/cbq/cbq-32.ftp
       DEVICE=eth0,10Mbit,1Mbit
       RATE=32Kbit
       WEIGHT=3Kbit
       PRIO=5
       RULE=:20
       RULE=:21

  ̗̓lbg[NfoCX̑ш摬x 10Mbps OƂĂ܂
  ŁA 100BaseTX ̃J[h𗘗pĂꍇ DEVICE=eth0,100Mbit,10Mbit
  Ɛݒ肵܂B

  t@C쐬ł 'cbq.init start' sAwget  ncftp Ȃǂ
  mF܂B

  삪mFł cbq.init XNvgNXNvg̓K؂Ȍ
  s悤ɂ܂B

  cbq.init ̐ݒt@Cׂ̍ɂẮAcbq.init XNvg̃R
  gɉ܂̂łQƂĂB

  5.3.  t@CEH[ʉ߂pPbgɂĐ

  t@CEH[ʉ߂pPbgɂĂA{Iɂ cbq.init XN
  vggpĐݒ肷邱Ƃł܂Bݒ肪GɂȂ
  cbq.init XNvgł̓G[ƂȂP[X܂̂ŁAł tc
  R}h𒼐ڎsXNvg쐬Ă݂܂B

  iproute+tc ɓYt̃hLg͉pȂ̂ŁApꂪȕ͂
  ނ̂JƎv܂{ōׂ͂߂ƃhLg
  ʂĂ܂܂B

  ̂ߓmFς݂̃TvXNvgpĂ܂̂ŁAK
  ɏCĎgȂAQƂȂ iproute+tc ̃hLgǂނȂ
  ėĂB

  TvXNvgł cbq.init Ɠl CBQ (Class Based Queue) XP
  W[pĐݒsĂ܂B CBQ ̑傫ȓ̖͂ÔƂ
  ANX\ɂш搧sƂ\łƂƂłB

  ̂ CBQ ł̊{IȐݒ菇͎̂悤ɂȂ܂B

  1. [gNX̐ݒ
     lbg[NfoCX cbq pPbgXPW[ݒ肵܂B

  2. eNX̑шݒ
     ׂẴNX̃x[XƂȂeNXݒ肵܂B

  3. qNX̑шݒ
     eNXhqNXݒ肵܂B

  4. qNXɑNXݒ肷邩A܂̓pPbgXPW[ݒ
     qNXɑ΂ĕKvɉđNXݒ肵܂BNXsv
     ꍇ͂ tbf pPbgXPW[ݒ肵܂B

  5. ݒ肵NXKptB^̐ݒ
     ݒ肵eNXKptB^ݒ肵܂B

  Ȃ IP }XJ[hgpĂłA̐ݒsۂɂ͓
  AÕlbg[N̂܂܎w肷邾ŐݒsƂł
  ܂B

  ȉ͐ݒXNvg̗łB

  #!/bin/sh
  ########################################################################
  #
  # rc.cbq
  #
  #       1999/10/10 Kazuhiro Inoue (Astrum, Inc)
  #
  ########################################################################

  PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/sbin"

  GLOBAL=172.16.0.0/16
  LOCAL=192.168.0.0/24

  ################
  # [̏

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

  ##############################
  # [gNXEeNX̍쐬

  ## /dev/eth0 ̃[gNX cbq ZbgAnh 10 Ƃ ##
  tc qdisc add dev eth0 root handle 10: cbq \
          bandwidth 10Mbit avpkt 1000 cell 8

  ## /dev/eth1 ̃[gNX cbq ZbgAnh 11 Ƃ ##
  tc qdisc add dev eth1 root handle 11: cbq \
          bandwidth 10Mbit avpkt 1000 cell 8

  ## 10Mbit/sec ̑шNX priority 8 ō쐬 (classid 10:1)
  ##
  ## ȌAhandle 10:1  parent ƂNX͍ő 10Mbit/sec 
  ## ш悪p\ƂȂB
  tc class add dev eth0 parent 10:0 classid 10:1 cbq \
          bandwidth 10Mbit rate 10Mbit allot 1514 cell 8 \
          weight 1Mbit prio 8 maxburst 20 avpkt 1000

  ## 10Mbit/sec ̑шNX priority 8 ō쐬 (classid 10:1)
  ##
  ## ȌAhandle 11:1  parent ƂNX͍ő 10Mbit/sec 
  ## ш悪p\ƂȂB
  tc class add dev eth1 parent 11:0 classid 11:1 cbq \
          bandwidth 10Mbit rate 10Mbit allot 1514 cell 8 \
          weight 1Mbit prio 8 maxburst 20 avpkt 1000

  ##################################
  # /dev/eth0 ̑ш搧NX̍쐬

  ## 64Kbit/sec ̑шNX priority 5, classid 10:64, parent 10:1  ##
  ## 쐬 tbf XPW[ݒ ##
  tc class add dev eth0 parent 10:1 classid 10:64 cbq \
          bandwidth 10Mbit rate 64Kbit allot 1514 cell 8 \
          weight 6Kbit prio 5 maxburst 20 avpkt 1000 bounded
  tc qdisc add dev eth0 parent 10:64 tbf \
          rate 64Kbit buffer 10Kb/8 limit 15Kb

  ## 96Kbit/sec ̑шNX priority 4, classid 10:65, parent 10:1  ##
  ## 쐬 tbf XPW[ݒ ##
  tc class add dev eth0 parent 10:1 classid 10:65 cbq \
          bandwidth 10Mbit rate 96Kbit allot 1514 cell 8 \
          weight 9Kbit prio 4 maxburst 20 avpkt 1000 bounded
  tc qdisc add dev eth0 parent 10:65 tbf \
          rate 96Kbit buffer 10Kb/8 limit 15Kb

  ## 10Mbit/sec ̑шNX priority 3, classid 10:66, parent 10:1  ##
  ## 쐬 tbf XPW[ݒ ##
  tc class add dev eth0 parent 10:1 classid 10:66 cbq \
          bandwidth 10Mbit rate 10Mbit allot 1514 cell 8 \
          weight 1Mbit prio 3 maxburst 20 avpkt 1000 bounded
  tc qdisc add dev eth0 parent 10:66 tbf \
          rate 10Mbit buffer 10Kb/8 limit 15Kb

  ##########################################
  # eшNXKplbg[N`

  ## GLOBAL  LOCAL ̊ԂɃNX 10:66 Kp ##
  tc filter add \
          dev eth0 parent 10:0 protocol ip prio 100 u32 \
          match ip src $GLOBAL \
          match ip dst $LOCAL flowid 10:66

  ## LOCAL Cӂ̃zXgւ ssh ɃNX 10:66 Kp ##
  tc filter add \
          dev eth0 parent 10:0 protocol ip prio 100 u32 \
          match ip sport 22 0xffff \
          match ip dst $LOCAL flowid 10:66

  ## LOCAL Cӂ̃zXgւ telnet ɃNX 10:66 Kp ##
  tc filter add \
          dev eth0 parent 10:0 protocol ip prio 100 u32 \
          match ip sport 23 0xffff \
          match ip dst $LOCAL flowid 10:66

  ## LOCAL Cӂ̃zXgւ http ɃNX 10:65 Kp ##
  tc filter add \
          dev eth0 parent 10:0 protocol ip prio 100 u32 \
          match ip sport 80 0xffff \
          match ip dst $LOCAL flowid 10:65

  ## LOCAL Cӂ̃zXgւ ftp ɃNX 10:64 Kp ##
  tc filter add \
          dev eth0 parent 10:0 protocol ip prio 100 u32 \
          match ip sport 21 0xffff \
          match ip dst $LOCAL flowid 10:64
  tc filter add \
          dev eth0 parent 10:0 protocol ip prio 100 u32 \
          match ip sport 20 0xffff \
          match ip dst $LOCAL flowid 10:64

  ## LOCAL Cӂ̃zXgւ̔Cӂ̐ڑɃNX 10:66 Kp ##
  tc filter add \
          dev eth0 parent 10:0 protocol ip prio 100 u32 \
          match ip dst $LOCAL flowid 10:66

  ##################################
  # /dev/eth1 ̑ш搧NX̍쐬

  ## 64Kbit/sec ̑шNX priority 4, classid 11:64, parent 11:1  ##
  ## 쐬 tbf XPW[ݒ ##
  tc class add dev eth1 parent 11:1 classid 11:64 cbq \
          bandwidth 10Mbit rate 64Kbit allot 1514 cell 8 \
          weight 6Kbit prio 5 maxburst 20 avpkt 1000 bounded
  tc qdisc add dev eth1 parent 11:64 tbf \
          rate 64Kbit buffer 10Kb/8 limit 15Kb

  ## 96Kbit/sec ̑шNX priority 4, classid 11:65, parent 11:1  ##
  ## 쐬 tbf XPW[ݒ ##
  tc class add dev eth1 parent 11:1 classid 11:65 cbq \
          bandwidth 10Mbit rate 96Kbit allot 1514 cell 8 \
          weight 9Kbit prio 4 maxburst 20 avpkt 1000 bounded
  tc qdisc add dev eth1 parent 11:65 tbf \
          rate 96Kbit buffer 10Kb/8 limit 15Kb

  ## 10Mbit/sec ̑шNX priority 3, classid 11:66, parent 11:1  ##
  ## 쐬 tbf XPW[ݒ ##
  tc class add dev eth1 parent 11:1 classid 11:66 cbq \
          bandwidth 10Mbit rate 10Mbit allot 1514 cell 8 \
          weight 1Mbit prio 3 maxburst 20 avpkt 1000 bounded
  tc qdisc add dev eth1 parent 11:66 tbf \
          rate 10Mbit buffer 10Kb/8 limit 15Kb

  ##########################################
  # eшNXKplbg[N`

  ## GLOBAL  LOCAL ̊ԂɃNX 11:66 Kp ##
  tc filter add \
          dev eth1 parent 11:0 protocol ip prio 100 u32 \
          match ip src $LOCAL \
          match ip dst $GLOBAL flowid 11:66

  ## LOCAL Cӂ̃zXgւ ssh ɃNX 11:66 Kp ##
  tc filter add \
          dev eth1 parent 11:0 protocol ip prio 100 u32 \
          match ip sport 22 0xffff \
          match ip dst $LOCAL flowid 11:66

  ## LOCAL Cӂ̃zXgւ telnet ɃNX 11:66 Kp ##
  tc filter add \
          dev eth1 parent 11:0 protocol ip prio 100 u32 \
          match ip sport 23 0xffff \
          match ip dst $LOCAL flowid 11:66

  ## LOCAL Cӂ̃zXgւ http ɃNX 11:65 Kp ##
  tc filter add \
          dev eth1 parent 11:0 protocol ip prio 100 u32 \
          match ip sport 80 0xffff \
          match ip dst $LOCAL flowid 11:65

  ## LOCAL Cӂ̃zXgւ ftp ɃNX 11:64 Kp ##
  tc filter add \
          dev eth1 parent 11:0 protocol ip prio 100 u32 \
          match ip sport 20 0xffff \
          match ip dst $LOCAL flowid 11:64
  tc filter add \
          dev eth1 parent 11:0 protocol ip prio 100 u32 \
          match ip sport 21 0xffff \
          match ip dst $LOCAL flowid 11:64

  ## LOCAL Cӂ̃zXgւ̔Cӂ̐ڑɃNX 11:66 Kp ##
  tc filter add \
          dev eth1 parent 11:0 protocol ip prio 100 u32 \
          match ip dst $LOCAL flowid 11:66

  ## end of rc.cbq ##

  6.  

  ̃hLg͓es\Ȃ߁Aꂾ 100% 𗝉邱Ƃ
  ܂B Linux kernel  QoS @\ɂĂ͓{
  ͂납p̃hLgł܂葶݂Ȃ悤łB

  Ӗł́ÃhLgł QoS @\𗘗pĂ݂Ƃ
  ɂ͉炩̖ɗƂł傤B

