Traffic Shaping за допомогою htb.init

12 травня, 2008
1 Star2 Stars3 Stars4 Stars5 Stars (Покищо ніхто не оцінював)

Якщо ви маєте власну домашню локальну мережу, котра під’єднана до мережі Інтернет, ви напевне знайомі з тими проблемами пов’язані з одночасним доступом до кількох користувачів, які обов’язково виникають при такому підключенні.

Найсерйознішою і найбільш дратуючою проблемою є рівномірне розділення мережного каналу між усіма учасниками мережі: коли ви намагаєтесь працювати через ssh з віддаленим сервером, а в цей момент ваша дружина/брат/друг вирішує подивитись супер популярний відеоролик на YouTube, ваше з’єднання завмирає і ви моментально забуваєте про комфортну роботу. У цій маленькій статті я дам маленьке вирішення цієї проблеми, яке дозволить вам розділяти усе, що завгодно, не думаючи про проблеми розділення трафіку.


Зауважу, що у мене інтернет під’єднаний до інтерфейсу eth0, а локальна мережа — до eth1, я маю симетричне підключення на 512Kbit/s, і усі нижченаведені приклади засновуються на цьому.

Встановлюємо htb.init

Першим ділом звантажте зі сторінки http://sourceforge.net/projects/htbinit/ сценарій htb.init. Розпакуйте його і покладіть до /sbin/htb.init. Тепер зробіть його виконуваним:

# sudo chmod +x /sbin/htb.init

Конфігурація для вихідного трафіку

Створіть дві наступні теки, в яких будуть зберігатись конфігураційні файли та кеш:

# sudo mkdir -p /etc/sysconfig/htb
# sudo mkdir -p /var/cache/htb.init

Перейдіть до теки /etc/sysconfig/htb, і створіть там файл з іменем ‘eth0′ (у мене це інтерфейс для вихідного трафіку) і наступним змістом:

DEFAULT=30
R2Q=100

Файл ‘eth0-2.root’ наступного змісту:

# root class containing outgoing bandwidth
RATE=512Kbit

Файл ‘eth0-2:10.ssh’ наступного змісту:

# class for outgoing ssh
RATE=256Kbit
CEIL=512Kbit
LEAF=sfq
RULE=*:22
PRIO=10

І, нарешті, файл ‘eth0-2:30.default’ наступного змісту:

# default class for outgoing traffic
RATE=256Kbit
CEIL=512Kbit
LEAF=sfq
PRIO=30

Конфігурація для вхідного трафіку

Тепер створіть набір файлів для управління вхідним трафіком:

Файл ‘eth1′ з наступним змістом:

DEFAULT=30
R2Q=100

Файл ‘eth1-2.root’ наступного змісту:

# root class containing incoming bandwidth
RATE=512Kbit

Файл ‘eth1-2:10.ssh’ наступного змісту:

# class for incoming ssh
RATE=256Kbit
CEIL=512Kbit
LEAF=sfq
RULE=*:22,
PRIO=10

Файл ‘eth1-2:20.mytraf’ для налаштування параметрів каналу для вашого комп’ютера:

# class for my incoming traffic
RATE=256Kbit
CEIL=512Kbit
LEAF=sfq
RULE=192.168.0.2 # Це моя ІР адреса
PRIO=20

І файл ‘eth1-2:30.default’ для параметрів каналу за замовчуванням, для усіх інших, наступного змісту:

# default class for outgoing traffic
RATE=256Kbit
CEIL=512Kbit
LEAF=sfq
PRIO=30

Запуск htb.init

Тепер сміливо запускаємо htb.init:

# sudo /etc/init.d/htb.init start

Якщо ви не зробили ніде помилки, то тепер зможете спокійно використовувати свій канал для роботи через ssh, звантаження файлів або ж простого веб-серфінгу… Ваше з’єднання буде чесно ділитись між усіма учасниками домашньої локальної мережі. Якщо ви знаходитесь в мережі один, то вам віддадуть увесь канал. Як тільки ваші сусіди забажають щось звантажити, канал автоматично буде поділено між вами порівну, однак, ваша робота лишатиметься такою ж комфортною, якою була у той момент, коли ви були в мережі один.

Автор: Alexey Kovyrin

Додаткові матеріали

  • http://luxik.cdi.cz/~devik/qos/htb/manual/userg.htm
  • http://www.docum.org/stef.coene/qos/faq/
  • http://tldp.org/HOWTO/ADSL-Bandwidth-Management-HOWTO/index.html
    Зберегти:
    • email
    • Digg
    • del.icio.us
    • Facebook
    • Google Bookmarks
    • LinkedIn
    • Twitter
  • Один коментар to “Traffic Shaping за допомогою htb.init”

    1. vanessa написав:

      Я так підозрюю пан трохи повоювавши із утилітою trickle та demmirror вирішив написати цю статтю. Я таку проблему вирішив можливо не так оптимально але на мою думку трохи простіше. Отже eth0 дивиться в інтернет. тоді достатньо виконати наступне

      # tc qdisc add dev eth0 handle ffff: ingress

      tc filter add dev eth0 parent ffff: protocol ip prio 50 u32 match ip src \
      0.0.0.0/0 police rate 500kbit burst 10k drop flowid :1

      у другій команді, параметер rate я задавав приблизно на 5-10 % менше ніж у мене пропускний канал. Ще зауважу що в мене це працює на укртелекомівському ОГО! тому у мене не eth0 а ррр0 і оскільки це є модемне з’єднаня яке деколи падає то я зробив скриптик наступного змісту

      #!/bin/sh
      tc qdisc add dev $PPP_IFACE handle ffff: ingress

      tc filter add dev $PPP_IFACE parent ffff: protocol ip prio 50 u32 match ip src \
      0.0.0.0/0 police rate 118kbit burst 10k drop flowid :1

      який поклав у /etc/ppp/ip-up.d/
      Наскільки я зрозумів, читавши LARTC, така штука ліквідує чергу пакунків у провайдера. У мене це спрацювало із укртелекомом.

      PS а от на роботі – WIMAX, бездротова мережа. тут тайкий фокус не потрібно було робити, видно чи в провайдера коротка черга чи ще що але навіть великі закачки дозволяють працювати із тим-же ssh , щоправда воно трохи гальмить але жити можна. Може дійсно спробувати розкидати пакунки в різні черги щоб менше галмило ?

    Залишіть Коментар

    Line and paragraph breaks automatic.
    Дозволені XHTML теґи: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">

    Why ask?

     


    Get Adobe Flash playerPlugin by wpburn.com wordpress themes