chixpyx Опубликовано 7 февраля, 2011 (изменено) · Жалоба Чувствую что катастрофически не хватает познаний в Линуксе :) Итак 1. есть мост ipunnumbered построенный на igb, eth2 и eth3, если важно :) 2. есть третий интерфейс для его управления 3. тестовый сервер и тестовый клиент 4. есть sc и все что нужно, согласно README Когда iptables -P FORWARD ACCEPT клиент отлично видит сервер, файлы качаются, пинги бегают, всё пучком. Когда iptables -P FORWARD DROP соответственно ничего не работает Делаем 0. sc.conf: filter_method = u32 limit_method = shaping network = 192.168.32.0/19 filter_network = 192.168.32.0/19 set_type = iphash 1. sc reset 2. sc init 3. sc add 192.168.32.1 4mibit 4. sc list 3 192.168.32.1 4mibit Ничего не происходит. На внутреннем интерфейсе tcpdump регистрирует эхо-запросы идущего с клиента пинга. На внешнем тишина. На интерфейсе сервера соответственно тоже тишина. # lsmod Module Size Used by cls_flow 6450 0 xt_set 3120 0 ip_set 16778 1 xt_set ip6_tables 9733 1 ip_set act_police 3744 2 cls_u32 5544 6 sch_htb 11604 2 ipt_NETFLOW 16902 0 ipv6 217663 24 igb 114321 0 Сборка нетфлоу временно отключена. Три раза прочитал с 1 по 9 страницу и с 9 по 1 обратно так и не смог понять где я неправ :(. Так что поможите, люди добрые !!! P.S. пока писал вылезло интересное чудо :) мониторится интерфейс сервера. 03:46:34.070819 ARP, Request who-has 192.168.32.254 tell 192.168.32.1, length 46 03:46:34.070834 ARP, Reply 192.168.32.254 is-at 00:1d:60:98:ea:e1 (oui Unknown), length 28 всего 1 раз но чудо есть чудо :) даже 1 раз. Чувствую что истина где то рядом. Но все молчат как партизаны :) Тем не менее arp пакеты погуливают... негусто но и не пусто :) Изменено 7 февраля, 2011 пользователем chixpyx Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
photon Опубликовано 7 февраля, 2011 (изменено) · Жалоба Надо создать аккаунт прежде всего для IP-адреса шейпера. iptables при использовании u32 не нужен, т.к. IP-трафик блокируется с помощью правил tc. Модули Netfilter лучше на шейпере не загружать, чтобы не тратилось процессорное время. Изменено 7 февраля, 2011 пользователем photon Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
chixpyx Опубликовано 7 февраля, 2011 · Жалоба Надо создать аккаунт прежде всего для IP-адреса шейпера. iptables при использовании u32 не нужен, т.к. IP-трафик блокируется с помощью правил tc. Модули Netfilter лучше на шейпере не загружать, чтобы не тратилось процессорное время. А с какой целью создаётся аккаунт самого шейпера ? мне совершенно не нужно, чтобы шейпер ходил в интернет, а из management-сети он более чем замечательно виден. Да и вообще не совсем понятно, можно же вообще не иметь IP адреса ни одного на самом шейпере, а управлять им через ком порт например. Или вообще руками с консоли. Или же имеется ввиду "нужно создать аккаунт для IP адреса, назначенному интерфейсу br0", ну тогда наверное стоит начать с того что IP адрес там должен быть. В настоящую минуту интерфейс br0 всего лишь UP и его компоненты, eth2 и eth3 тоже UP. Не более того. Собственно без участия u32 данная конструкция совершенно изумительно работает как ethernet-коммутатор с двумя портами. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
chixpyx Опубликовано 7 февраля, 2011 · Жалоба Данный вопрос снят Никто об этом не сказал но tc в общем случае выступает в роли регулятор-только. Все что не запрещено то разрешено. Именно поэтому ему жизненно нужно чтобы iptables -P FORWARD ACCEPT осталось разобраться, чем же открывать и закрывать калитку.... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
photon Опубликовано 8 февраля, 2011 · Жалоба Я не понял, какой результат вам надо получить. Зачем по умолчанию разрешать доступ всем IP-адресам? В sc блокируются все IP, которых нет в базе. Без iptables, только средствами tc. Таблица разрешенных IP-адресов и скоростей должна периодически синхронизироваться с базой данных биллинга. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
chixpyx Опубликовано 13 февраля, 2011 · Жалоба Я не понял, какой результат вам надо получить. Зачем по умолчанию разрешать доступ всем IP-адресам? В sc блокируются все IP, которых нет в базе. Без iptables, только средствами tc. Таблица разрешенных IP-адресов и скоростей должна периодически синхронизироваться с базой данных биллинга. Именно потому что ничего не выходит с sc я и начал эту полемику. При POLICY FORWARD DROP вообще ничего не работает. При POLICY FORWARD ACCEPT те, кого добавили, шейпятся, остальные работают на полной скорости. И является ли использование БД жизненной необходимостью ? просто ADD ip speed и DEL не спасает ? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
photon Опубликовано 13 февраля, 2011 (изменено) · Жалоба Странно, а после sc init все ходят на полной скорости? Там же в конце инициализации создается правило, запрещающее ходить любому неклассифицированному исходящему IP-трафику: tc filter add dev ethX parent 1:0 protocol ip pref 30 u32 match 0 0 at 0 police mtu 1 action drop Если трафик не попадает в какой-либо класс, то он матчится этим правилом. Нужно знать, на каких интерфейсах вы создаете правила, т.е. видеть полностью файл sc.conf. Изменено 13 февраля, 2011 пользователем photon Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
technolab Опубликовано 15 февраля, 2011 · Жалоба Надо создать аккаунт прежде всего для IP-адреса шейпера. iptables при использовании u32 не нужен, т.к. IP-трафик блокируется с помощью правил tc. Модули Netfilter лучше на шейпере не загружать, чтобы не тратилось процессорное время. А с какой целью создаётся аккаунт самого шейпера ? мне совершенно не нужно, чтобы шейпер ходил в интернет, а из management-сети он более чем замечательно виден.Да и вообще не совсем понятно, можно же вообще не иметь IP адреса ни одного на самом шейпере, а управлять им через ком порт например. Или вообще руками с консоли. +1 Зачем шейпирующему мосту IP и IP какого интерфейса ему нужен? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
photon Опубликовано 15 февраля, 2011 (изменено) · Жалоба +1 Зачем шейпирующему мосту IP и IP какого интерфейса ему нужен? Странный вопрос. IP-адрес у bridge-интерфейса нужен для мониторинга и удаленного управления по SSH. Изменено 15 февраля, 2011 пользователем photon Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
technolab Опубликовано 15 февраля, 2011 · Жалоба :) я интересовался в контексте: Надо создать аккаунт прежде всего для IP-адреса шейпера.Но уже понял, что речь шла исключительно о доступе снаружи.Поддержку ceil достаточно легко сделать с помощью некоторого глобального коэффициента, на который домножаются rate...Попробовал строки с my $ceil = $rate; заменить на my $ceil = $crate и объявить $crate в разделе "Configurable psrsmeters"Получил class htb 1:75 root leaf 75: prio 0 qantum 1500 rate $rate ceil $ceil, однако не плавает :( Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
photon Опубликовано 15 февраля, 2011 · Жалоба Попробовал строки с my $ceil = $rate; заменить на my $ceil = $crate и объявить $crate в разделе "Configurable psrsmeters"Получил class htb 1:75 root leaf 75: prio 0 qantum 1500 rate $rate ceil $ceil, однако не плавает :( Не знаю, может быть для этого надо явно указать rate у корневого класса. Посмотрите в мануалах по HTB. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
technolab Опубликовано 15 февраля, 2011 (изменено) · Жалоба Не знаю, может быть для этого надо явно указать rate у корневого класса. Посмотрите в мануалах по HTB.Точно так, но сначала его создать надо. Итого: В sc сразу после всех строк (их всего две в коде - для flow и u32) $TC->("qdisc add dev $dev root handle 1: htb"); добавляем my $grate = 'значениеKibit'; $TC->("class replace dev $dev parent 1: classid 1:1 htb rate $grate"); а в $TC->("class replace dev $dev parent 1: classid 1:$cid htb rate $rate ceil $ceil quantum $quantum"); меняем родителя тоже в двух местах на parent 1:1 затем строки с my $ceil = $rate; заменить на my $ceil = $crate; и объявить $crate в разделе "Configurable parameters" Усе, теперь имеем динамическую полосу (на u32 погонял - работает). Можно украшательством заняться ;) ps: $grate общая ширина канала Изменено 15 февраля, 2011 пользователем technolab Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
minderm Опубликовано 19 февраля, 2011 · Жалоба Решая проблему создания шейпера учитывающего разные направления, написал скрипт. Список сетей по каждому направлению записывается в файл. например localnets 192.168.0.0/16 224.0.0.0/4 Суть сводится к созданию пары IFB интерфейсов на каждое направление, один на вход, другой на выход. А имея пару интерфейсов, заставить sc шейпить уже дело техники. #!/bin/sh TC="/sbin/tc" ETH_OUT="eth0" src="src" dst="dst" modprobe ifb numifbs=9 ifconfig ifb0 up #ZSTTK ifconfig ifb1 up ifconfig ifb2 up #TOMLINE ifconfig ifb3 up ifconfig ifb4 up #LOCALNETS ifconfig ifb5 up ifconfig ifb6 up #WORLD ifconfig ifb7 up ifconfig ifb8 up ##### #### ## echo Init ingress interface ifb0 $TC qdisc del dev $ETH_OUT ingress $TC qdisc add dev $ETH_OUT ingress echo Init base interface Qdisc $TC qdisc del dev $ETH_OUT root $TC qdisc add dev $ETH_OUT root handle 1: htb echo Init redirert zsttknets to ifb1 ifb2 cat /root/zsttknets | while read net do $TC filter add dev $ETH_OUT parent 1: protocol ip prio 1 u32 \ match ip $src $net flowid 1:1 \ action mirred egress redirect dev ifb1 $TC filter add dev $ETH_OUT parent ffff: protocol ip prio 1 u32 \ match ip $dst $net flowid 1:1 \ action mirred egress redirect dev ifb2 done echo Init redirert tomsknets to ifb3 ifb4 cat /root/tomsknets | while read net do $TC filter add dev $ETH_OUT parent 1: protocol ip prio 2 u32 \ match ip $src $net flowid 1:1 \ action mirred egress redirect dev ifb3 $TC filter add dev $ETH_OUT parent ffff: protocol ip prio 2 u32 \ match ip $dst $net flowid 1:1 \ action mirred egress redirect dev ifb4 done echo Init redirert localnets to ifb5 ifb6 cat /root/localnets | while read net do $TC filter add dev $ETH_OUT parent 1: protocol ip prio 3 u32 \ match ip $src $net flowid 1:1 \ action mirred egress redirect dev ifb5 $TC filter add dev $ETH_OUT parent ffff: protocol ip prio 3 u32 \ match ip $dst $net flowid 1:1 \ action mirred egress redirect dev ifb6 done echo Init redirert worlds to ifb7 ifb8 $TC filter add dev $ETH_OUT parent 1: protocol ip prio 4 u32 \ match ip $src 0.0.0.0/0 flowid 1:1 \ action mirred egress redirect dev ifb7 $TC filter add dev $ETH_OUT parent ffff: protocol ip prio 4 u32 \ match ip $dst 0.0.0.0/0 flowid 1:1 \ action mirred egress redirect dev ifb8 Может есть какие замечания? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
_INF_ Опубликовано 1 марта, 2011 · Жалоба Поставил RHEL 6 для тестов, sc к огромному сожалению из коробки не заработал sc init Can't locate AppConfig.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /usr/sbin/sc line 10. BEGIN failed--compilation aborted at /usr/sbin/sc line 10. В base perl-AppConfig к сожалению нет, в epel http://download.fedora.redhat.com/pub/epel/6/x86_64/ пока еще тоже, единственный выход это взять и пересобрать SRPMS пакеты из Fedora. rpm -ihv http://download.fedora.redhat.com/pub/fedo...-7.fc13.src.rpm Загружается http://download.fedora.redhat.com/pub/fedora/linux/releases/13/Everything/source/SRPMS/perl-AppConfig-1.66-7.fc13.src.rpm предупреждение: /var/tmp/rpm-tmp.HabGWS: Заголовок V3 RSA/SHA256 Signature, key ID e8e40fde: NOKEY 1:perl-AppConfig предупреждение: пользователь mockbuild не существует - используется root предупреждение: группа mockbuild не существует - используется root предупреждение: пользователь mockbuild не существует - используется root предупреждение: группа mockbuild не существует - используется root ########################################### [100%] Пробуем собрать rpmbuild -ba perl-AppConfig.spec Ошибка: Неудовлетворенные зависимости сборки: perl(File::HomeDir) >= 0.61 нужен для perl-AppConfig-1.66-7.el6.noarch perl(Test::Pod) нужен для perl-AppConfig-1.66-7.el6.noarch Устанавливаем yum install perl-Test-Pod Loaded plugins: rhnplugin This system is not registered with RHN. RHN support will be disabled. Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package perl-Test-Pod.noarch 0:1.40-1.el6 set to be updated --> Finished Dependency Resolution Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: perl-Test-Pod noarch 1.40-1.el6 base 14 k Transaction Summary ================================================================================ Install 1 Package(s) Upgrade 0 Package(s) Total download size: 14 k Installed size: 15 k Is this ok [y/N]: y Downloading Packages: Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Installing : perl-Test-Pod-1.40-1.el6.noarch 1/1 Installed: perl-Test-Pod.noarch 0:1.40-1.el6 Complete! perl-File-HomeDir тоже придется пересобирать из Fedora rpm -ihv http://download.fedora.redhat.com/pub/fedo...-3.fc13.src.rpm Загружается http://download.fedora.redhat.com/pub/fedora/linux/releases/13/Everything/source/SRPMS/perl-File-HomeDir-0.86-3.fc13.src.rpm предупреждение: /var/tmp/rpm-tmp.4b63Rd: Заголовок V3 RSA/SHA256 Signature, key ID e8e40fde: NOKEY 1:perl-File-HomeDir предупреждение: пользователь mockbuild не существует - используется root предупреждение: группа mockbuild не существует - используется root предупреждение: пользователь mockbuild не существует - используется root предупреждение: группа mockbuild не существует - используется root ########################################### [100%] правим perl-File-HomeDir.spec т к там есть ненужная зависимость от perl(Test::MinimumVersion) из за которой этих пакетов еще нет в EPEL :) :) :) Вместо BuildRequires: perl(Test::Pod), perl(Test::More), perl(Test::MinimumVersion) ставим BuildRequires: perl(Test::Pod), perl(Test::More) и собираем perl-File-HomeDir rpmbuild -ba perl-File-HomeDir.spec Записан: /root/rpmbuild/SRPMS/perl-File-HomeDir-0.86-3.el6.src.rpm Записан: /root/rpmbuild/RPMS/noarch/perl-File-HomeDir-0.86-3.el6.noarch.rpm Устанавливаем его rpm -ihv /root/rpmbuild/RPMS/noarch/perl-File-HomeDir-0.86-3.el6.noarch.rpm Подготовка... ########################################### [100%] 1:perl-File-HomeDir ########################################### [100%] и собираем rpmbuild -ba perl-AppConfig.spec пакет соберется Установим его rpm -ihv /root/rpmbuild/RPMS/noarch/perl-AppConfig-1.66-7.el6.noarch.rpm Подготовка... ########################################### [100%] 1:perl-AppConfig ########################################### [100%] После этого sc на RHEL 6 заработает P.S. написал SPEC для ipset под RHEL 6, брать здесь http://centos.alt.ru/pub/temp/Rhel6_ipset/ Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
_INF_ Опубликовано 1 марта, 2011 (изменено) · Жалоба sc version Shaper Control Tool (version 1.3.2) License and Copyright: Copyright (c) 2008-2010. Stanislav Kruchinin. License: GNU GPL version 2 or later This is free software: you are free to change and redistribute it. There is NO WARRANTY; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. не смог заставить работать режим hybrid чтобы исходящая и входящая скорость резались на одном интерфейсе eth1 интерфейс смотрящий в локальную сеть, хочу резать скорость на нем eth1 Link encap:Ethernet HWaddr 00:1A:11:8E:30:F1 inet addr:10.0.0.1 Bcast:10.0.0.255 Mask:255.255.255.0 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:27526 errors:0 dropped:0 overruns:0 frame:0 TX packets:43164 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:14206475 (13.5 MiB) TX bytes:56147362 (53.5 MiB) Memory:fbfe0000-fc000000 Создал две записи sc dblist 10.0.0.1 97656kibit 10.0.0.2 977kibit конфиг sc grep -v -E "#|^$" sc.conf tc = /sbin/tc out_if = eth1 in_if = eth1 filter_method = u32 limit_method = hybrid debug = 1 verbose = 3 quiet = 0 colored = 1 joint = 0 network = 10.0.0.0/16 filter_network = 10.0.0.0/16 quantum = 1500 rate_unit = kibit rate_ratio = 1.0 leaf_qdisc = 'pfifo limit 50' db_driver = SQLite db_host = 127.0.0.1 db_name = /etc/sc/sc.db db_user = username db_pass = password query_create = "CREATE TABLE rates (ip INTEGER PRIMARY KEY, rate INTEGER NOT NULL)" query_load = "SELECT ip,rate FROM rates" query_list = "SELECT ip,rate FROM rates WHERE ip=?" query_add = "INSERT OR REPLACE INTO rates VALUES (?, ?)" query_del = "DELETE FROM rates WHERE ip=?" query_change = "REPLACE INTO rates VALUES (?, ?)" syslog = 0 соответственно sc reload ругается sc load Use of uninitialized value $policer_burst in concatenation (.) or string at /usr/sbin/sc line 960. Illegal "buffer" Illegal "police" /sbin/tc filter replace dev eth1 parent ffff: pref 20 handle 100:2:800 u32 ht 100:2: match ip src 10.0.0.2 police rate 977kibit burst drop flowid ffff: Use of uninitialized value $policer_burst in concatenation (.) or string at /usr/sbin/sc line 960. Illegal "buffer" Illegal "police" /sbin/tc filter replace dev eth1 parent ffff: pref 20 handle 100:1:800 u32 ht 100:1: match ip src 10.0.0.1 police rate 97656kibit burst drop flowid ffff: как лечить ? Изменено 1 марта, 2011 пользователем _INF_ Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
photon Опубликовано 1 марта, 2011 (изменено) · Жалоба В конфиге надо определить переменную policer_burst. На всякий случай скачайте последнюю ревизию из Mercurial-репозитория. Изменено 2 марта, 2011 пользователем photon Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
_INF_ Опубликовано 2 марта, 2011 (изменено) · Жалоба В конфиге надо определить переменную policer_burst. На всякий случай скачайте последнюю ревизию из Mercurial-репозитория. Определил policer_burst = 1500Kb ошибка ушла. Версия из Mercurial, скорость режется только входящая, если необходимы еще какие-либо дополнительные данные - предоставлю. Изменено 2 марта, 2011 пользователем _INF_ Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
photon Опубликовано 3 марта, 2011 (изменено) · Жалоба В конфиге надо определить переменную policer_burst. На всякий случай скачайте последнюю ревизию из Mercurial-репозитория. Определил policer_burst = 1500Kb ошибка ушла. Версия из Mercurial, скорость режется только входящая, если необходимы еще какие-либо дополнительные данные - предоставлю. На самом деле, это только кажется, что скорость не режется. При полисинге всегда в начале передачи трафика наблюдается резкий всплеск с завышенной скоростью, который потом снижается до нужного значения. Чем больше буфер (policer_burst), тем дольше длится этот всплеск. Советую снизить policer_burst до 100Kb, т.к. значение 1500Kb рассчитано на скорости около 20 Мбит/с и выше. Если буфер слишком мал, то скорость наоборот будет недостаточной. Конечно, это плохо, что всем ставится одно и то же значение policer_burst вне зависимости от полосы, лучше сделать policer_burst функцией от полосы пропускания, но у меня сейчас нет времени ставить эксперименты и находить эту функцию. Изменено 3 марта, 2011 пользователем photon Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
_INF_ Опубликовано 4 марта, 2011 (изменено) · Жалоба В конфиге надо определить переменную policer_burst. На всякий случай скачайте последнюю ревизию из Mercurial-репозитория. Определил policer_burst = 1500Kb ошибка ушла. Версия из Mercurial, скорость режется только входящая, если необходимы еще какие-либо дополнительные данные - предоставлю. На самом деле, это только кажется, что скорость не режется. При полисинге всегда в начале передачи трафика наблюдается резкий всплеск с завышенной скоростью, который потом снижается до нужного значения. Чем больше буфер (policer_burst), тем дольше длится этот всплеск. Советую снизить policer_burst до 100Kb, т.к. значение 1500Kb рассчитано на скорости около 20 Мбит/с и выше. Если буфер слишком мал, то скорость наоборот будет недостаточной. Конечно, это плохо, что всем ставится одно и то же значение policer_burst вне зависимости от полосы, лучше сделать policer_burst функцией от полосы пропускания, но у меня сейчас нет времени ставить эксперименты и находить эту функцию. Огромнейшее спасибо policer_burst=100kb решило проблему. Было бы просто прекрасно если бы policer_burst был 10% от полосы пользователя, точнее 10%* (полоса пользователя)*rate_ratio. Изменено 4 марта, 2011 пользователем _INF_ Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
photon Опубликовано 4 марта, 2011 (изменено) · Жалоба Огромнейшее спасибо policer_burst=100kb решило проблему. Было бы просто прекрасно если бы policer_burst был 10% от полосы пользователя, точнее 10%* (полоса пользователя)*rate_ratio. Я не думаю, что там линейная зависимость, но в качестве первого приближения это лучше, чем просто постоянная величина. Сделал исправление в версии 1.3.3. К сожалению, сейчас нет времени на глобальные изменения, вроде реализации разных схем шейпинга в виде модулей или поддержку ceil и prio. Изменено 5 марта, 2011 пользователем photon Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
_INF_ Опубликовано 9 марта, 2011 · Жалоба Значит надо использовать более новую версию tc, в которой уже есть ключ -p, а не четырехлетней давности. Исходник здесь: http://devresources.linuxfoundation.org/de...oute2/download/Или можно убрать из sc ключ -p, который выводит в фильтрах IP-адреса в десятичном формате вместо шестнадцатеричных значений. Возникла аналогичная проблема с tc под CentOS 5. Простым убиранием ключа -p похоже не обойтись. Пересобрать свежий iproute2 под старое ядро 2.6.18 мне кажется не реальным. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
photon Опубликовано 9 марта, 2011 · Жалоба Возникла аналогичная проблема с tc под CentOS 5. Простым убиранием ключа -p похоже не обойтись. Пересобрать свежий iproute2 под старое ядро 2.6.18 мне кажется не реальным. Они все еще тянут 2.6.18 с миллионами патчей и бэкпортов? Какой бред. Предлагаю поставить Debian. Если это невозможно, надо переписать код, который опирается на использование этого ключа (добавить процедуру поиска IP-адреса по его hex-представлению), либо бэкпортировать ключ -p в редхатовский tc. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
codegencolix Опубликовано 18 апреля, 2011 · Жалоба Подскажите пожалуйста как можно ограничить пропускную способность канала. Этот метод не заработал: Если надо ограничить, можете в функциях rul_init_u32 и rul_init_flow после создания qdisc дописать код вида: $TC->("class add dev $dev parent 1: classid 1:$root_cid htb rate $max_rate ceil $max_rate"); где $dev -- интерфейс, $root_cid -- номер root classid (какой-то из неиспользуемых под хосты), $max_rate -- скорость. $root_cid указывал 0002 Трафик все равно ползет выше. В dmesg HTB: quantum of class 10002 is big. Consider r2q change. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
photon Опубликовано 18 апреля, 2011 (изменено) · Жалоба Это я малость ошибся. Чтобы полоса дочернего класса динамически расширялась, она должна быть унаследована от класса с более широкой полосой. Т.е. нужно дописать строку для создания корневого класса: $TC->("class replace dev $dev parent 1: classid 1:1 htb rate $grate"); где $grate -- общая ширина полосы, а в дочерних классах выбрать его как parent $TC->("class replace dev $dev parent 1:1 classid 1:$cid htb rate $rate ceil $ceil quantum $quantum"); Посмотрите пример из недавнего сообщения: http://forum.nag.ru/forum/index.php?showtopic=48301&view=findpost&p=587517 Изменено 18 апреля, 2011 пользователем photon Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
codegencolix Опубликовано 18 апреля, 2011 · Жалоба Это я малость ошибся. Чтобы полоса дочернего класса динамически расширялась, она должна быть унаследована от класса с более широкой полосой. Т.е. нужно дописать строку для создания корневого класса: $TC->("class replace dev $dev parent 1: classid 1:1 htb rate $grate"); где $grate -- общая ширина полосы, а в дочерних классах выбрать его как parent $TC->("class replace dev $dev parent 1:1 classid 1:$cid htb rate $rate ceil $ceil quantum $quantum"); Посмотрите пример из недавнего сообщения: http://forum.nag.ru/forum/index.php?showtopic=48301&view=findpost&p=587517 Все сделал. В итоге вижу: class htb 1:1 root rate 245760Kbit ceil 245760Kbit burst 1566b/8 mpu 0b overhead 0b cburst 1566b/8 mpu 0b overhead 0b level 7 Sent 47509049778 bytes 60644002 pkt (dropped 0, overlimits 0 requeues 0) rate 248751Kbit 40431pps backlog 0b 0p requeues 0 lended: 0 borrowed: 0 giants: 0 tokens: -4371032 ctokens: -4371032 Полоса у меня в 250 мегабит. В dmesg: HTB: quantum of class 10001 is big. Consider r2q change. Может быть сделать увеличение quantum до 60000 ? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...