[lang_en]5 Minutes Guide To Linux Traffic Shaping[/lang_en][lang_ru]Linux Traffic Shaping За 5 Минут При Помощи htb.init[/lang_ru]
6 Apr2006

[lang_en]

If you have your own home network with two or more computers, you definitely know all of the problems with concurrent access to internet channel. Most annoying problem is bandwidth sharing: when you are trying to use remote ssh connection to some server, and at the same time your wife/brother/friend decided to watch some new and very cool video clip at Google Video or YouTube, your connection will be stalled and you can forget about comfortable work. In this small article I will give you a simple solution for this problem and you will be able to do anything without worrying about traffic sharing problems!

[/lang_en]

[lang_ru]

Если у Вас есть Ваша собственная домашняя сеть с двумя или более компьютерами и она подключена к интернету, вы точно знаете о тех проблемах с одновременным доступом к сети, которые практически неизбежны при таком подключении. Самой большой и раздражающей проблемой является разделение ширины канала между всеми участниками сети: когда вы пытаетесь работать серез ssh с удаленным сервером, а в этот момент ваша wife/брат/друг решает поглядеть новый и очень классный видео клип с Google Video или YouTube, Ваше соединение замирает и вы можете забыть о комфортабельной работе . В этой маленькой статье я дам вам простое решение этой проблемы, которое позволит вам делать все, что угодно не думая о проблемах разделения трафика!

[/lang_ru]

[lang_en]

First of all, you need to be connected to internet via Linux server. If your connection is some dumb hardware router, you can not use described advice.

If your server is Linux-driven, then use following instructions to make your life easier. My internet channel is connected to eth0 and LAN is on the eth1, and my channel is symmetrical 512Kbit/s cable connection, so all examples are based on this facts:

  1. Download htb.init script from sourceforge.
  2. Extract it, place htb.init file to /sbin/htb.init and change its permissions to make it executable:

    # chmod +x /sbin/htb.init
    

  3. Create htb.init configuration and cache directories:

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

  4. Go to htb.init configuration directory and create following configuration files for outgoing traffic:
    • File ‘eth0’ with following content:

      DEFAULT=30
      R2Q=100
      

    • File ‘eth0-2.root’ with following content:

      # root class containing outgoing bandwidth
      RATE=512Kbit
      

    • File ‘eth0-2:10.ssh’ with following content:

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

    • File ‘eth0-2:30.default’ with following content:

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

  5. Next, create following configuration files for incoming traffic:
    • File ‘eth1’ with following content:

      DEFAULT=30
      R2Q=100
      

    • File ‘eth1-2.root’ with following content:

      # root class containing incoming bandwidth
      RATE=512Kbit
      

    • File ‘eth1-2:10.ssh’ with following content:

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

    • File ‘eth1-2:20.mytraf’ for your home computer IP with following content:

      # class for my incoming traffic
      RATE=256Kbit
      CEIL=512Kbit
      LEAF=sfq
      RULE=192.168.0.2 # this is my ip
      PRIO=20
      

    • File ‘eth1-2:30.default’ with following content:

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

  6. And last your step will be compile and run traffic control rules:

    # /sbin/htb.init start
    #
    

If all described steps was successfully completed, you can use your connection to connect to any ssh host or to download files or to browse your favorite sites… Your connection will be divided between you and all other home network members. If you are alone in network now, you can use full bandwidth, if your neighbours will try to download something, bandwidth will be divided between you and them, but you connections will be as fast as when you were alone.

If you want to know more, you can use following resources:

[/lang_en]

[lang_ru]

Для начала замечу, что Ваша сеть должна быть подключена к Internet при помощи Linux сервера. Если Вы подключены через какой-то тупой аппаратный маршрутизатор, то Вам сильно не повезло и вы не сможете воспользоваться приведенным примером.

Если же Ваш сервер работает под управлением Linux, тогда используйте слудеющие ниже интсрукции чтобы сделать вашу жизнь проще. Замечу, что у меня интернет подключен к интерфейсу eth0, а локальная сеть – к eth1, канал у меня – симметричное подслючение на 512Kbit/s, потому все примеры будут очновываться на этих параметрах:

  1. Скачайте скрипт htb.init с сайта sourceforge.
  2. Распакуйте его и положите в /sbin/htb.init, сменив ему аттрибуты, чтобы сделать его исполнимым:

    # chmod +x /sbin/htb.init
    

  3. Создайте каталоги для конфигурации и кеша htb.init:

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

  4. Перейдите в каталог коныигурации htb.initи создайте следующие конфигурационные файлы для исходящего трафика:
    • Файл ‘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
      

  5. Теперь, создайте набор файлов для управления входящим трафиком:
    • Файл ‘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 # this is my ip
      PRIO=20
      

    • И файл ‘eth1-2:30.default’ для параметров канала по умолчанию для остальных со следующим содержимым:

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

  6. Последний шаг – запуск системы контроля трафика при помощи следующей команды:

    # /sbin/htb.init start
    #
    

Если все шаги были выполнены правльно и успешно, Вы можете использовать Ваш канал для работы через ssh, для скачивания файлов или для простого серфинга… Ваше соединение будет честно делиться между всеми участниками домашней сети. Если вы находитесь в сети один, Вы будете использовать всю ширину канала. Как только ваши соседи захотят что-то скачать, ширина канала будет разделена между вами поровну, но ваша работа будет настолько же комфортной, как и в тот момент, когда Вы были одни.

Если хотите узнать больше, используйте следующие ресурсы:

[/lang_ru]