photon Опубликовано 25 января, 2012 · Жалоба Делается ли на этой же машине NAT? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Antares Опубликовано 25 января, 2012 · Жалоба Делается ли на этой же машине NAT? Да Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
photon Опубликовано 25 января, 2012 · Жалоба Делается ли на этой же машине NAT? Да Ну естественно, что для серых IP шейпинг исходящего трафика работать не будет, т.к. адрес источника подменяется до того, как пакет попадет в очередь tc. Советую перенести NAT на бордер, а машину с шейпером сделать мостом. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kayot Опубликовано 25 января, 2012 · Жалоба Не обязательно, исход можно безболезненно полисить на игрессе. Попробуйте limit_method = hybrid, должно заработать. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Gunner Опубликовано 26 января, 2012 · Жалоба Можно ли адаптировать стартап скрипт к CentOS 5.x ? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
_INF_ Опубликовано 26 января, 2012 · Жалоба Можно ли адаптировать стартап скрипт к CentOS 5.x ? Если коротко, то нет http://forum.nag.ru/forum/index.php?showtopic=48301&view=findpost&p=595058 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Antares Опубликовано 26 января, 2012 · Жалоба Не обязательно, исход можно безболезненно полисить на игрессе. Попробуйте limit_method = hybrid, должно заработать. Заработало, но почему-то скорость исходящего в 2 раза меньше установленной скорости Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kayot Опубликовано 26 января, 2012 · Жалоба Не обязательно, исход можно безболезненно полисить на игрессе. Попробуйте limit_method = hybrid, должно заработать. Заработало, но почему-то скорость исходящего в 2 раза меньше установленной скорости С размерами буферов играйтесь, полисинг штука не очень точная, особенно для speedtest etc. При каких-то значениях должно выйти примерно сколько нужно для основных тарифов, но идеально все равно не будет. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
photon Опубликовано 26 января, 2012 (изменено) · Жалоба Для увеличения скорости исходящего трафика советую покрутить параметр policer_burst_ratio в сторону увеличения. Кроме того, учтите, что скорость при полисинге достигает равновесного значения намного позже, чем при шейпинге. Тестировать полисинг лучше с помощью передачи больших файлов. Изменено 26 января, 2012 пользователем photon Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Antares Опубликовано 26 января, 2012 · Жалоба в принципе у же и сам разобрался, спасибо за инфу :) ещё один вопрос, а как сделать, чтобы скорость на локальные интерфейсы не резалась? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
photon Опубликовано 27 января, 2012 · Жалоба Я не совсем понял, что значит "на локальные интерфейсы", но подозреваю что это означает трафик от самого шейпера. Проще всего поставить большую скорость соответствующему IP. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Antares Опубликовано 28 января, 2012 · Жалоба Сервер маршрутизирует ещё несколько интерфейсов, eth0 (инет), eth1(локаль1) eth2(локаль2). Допустим надо чтобы трафик не шейпился между eth1 и eth2. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
photon Опубликовано 30 января, 2012 · Жалоба http://lartc.org/howto/lartc.adv-filter.route.html Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Gunner Опубликовано 1 февраля, 2012 · Жалоба Вариант решения для CentOS http://centos.alt.ru/?p=504 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
G@riK Опубликовано 8 февраля, 2012 · Жалоба Добрый день. Решили перевести бриджи на линукс и, соответственно, использовать tc (с помощью sc). На данный момент сеть на серых адресах, масок /24 у нас примерно 540. Масок /16 около 40. 1. Есть ли более простой способ использовать sc в нашей ситуации, чем писать скрипт для перегруппировки всех IP в более мелкие маски? 2. Можно также при этом создать такие правила, чтобы одна скорость делилась на всю маску (возможно не генерируемые автоматически, а прописанные в скрипте/конфиге)? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
photon Опубликовано 9 февраля, 2012 (изменено) · Жалоба Добрый день. Решили перевести бриджи на линукс и, соответственно, использовать tc (с помощью sc). На данный момент сеть на серых адресах, масок /24 у нас примерно 540. Масок /16 около 40. Я бы вообще подумал, окупится ли в этом случае миграция на Linux. Не достаточно ли просто переписать правила шейпинга на уже существующих мостах? По-моему, при таких масштабах уже надо задумываться о каких-то фирменных решениях, например, Catalyst 6500 с sup720, если достаточно полисинга, или SCE 8000, если нужен более продвинутый QoS. sc -- это решение для небольшого провайдера, обслуживающего много юзеров, у каждого из которых один IP и одна полоса пропускания. 1. Есть ли более простой способ использовать sc в нашей ситуации, чем писать скрипт для перегруппировки всех IP в более мелкие маски? Если речь идет о конфигурации с несколькими IP на класс, то нужно чтобы такие IP обслуживались одним и тем же шейпером. А каким образом трафик раскидывается по разным мостам и сколько всего должно быть классов обслуживания с гарантированной полосой? Наилучший вариант, когда на каждом шейпере можно создать правила для нескольких подсетей, а не для всех сразу. Нужно учитывать, что число классов и фильтров, одновременно существующих в памяти ядра, ограничено. Т.е. фильтров в каждой цепочке может быть не более 7ff (минус накладные расходы на построение хэшей), а классов -- не более fffe. 2. Можно также при этом создать такие правила, чтобы одна скорость делилась на всю маску (возможно не генерируемые автоматически, а прописанные в скрипте/конфиге)? В сегодняшнем коде это можно реализовать достаточно просто, если маски у всех юзеров одинаковые (например, /28). Если нет, то возникает необходимость хранить эти маски (или списки secondary IP -- primary IP) в базе, что требует переписывания значительной части кода. Изменено 12 февраля, 2012 пользователем photon Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
G@riK Опубликовано 9 февраля, 2012 (изменено) · Жалоба На данный момент сеть на серых адресах, масок /24 у нас примерно 540. Масок /16 около 40. Немного уточню: смысл в том, что данные маски не полностью забиты абонентами. Т.е. в каждой маске может быть не более 100 IP, например. Насчёт шейпинга масок (одна скорость на всю маску) - у нас таких всего пара человек, т.е. они скорее исключение из правил. Ну и такой вопрос: возможно ли разделить скрипт на 2 части для IN и OUT? Не будут ли тогда пересекаться классы? Изменено 9 февраля, 2012 пользователем G@riK Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
photon Опубликовано 9 февраля, 2012 · Жалоба На данный момент сеть на серых адресах, масок /24 у нас примерно 540. Масок /16 около 40. Немного уточню: смысл в том, что данные маски не полностью забиты абонентами. Т.е. в каждой маске может быть не более 100 IP, например. Если пользователи не разбросаны случайным образом во всем диапазоне /16, то проблем нет. В параметре network нужно указать подсети с такими масками, которые охватывают диапазоны занятых IP. Подсети в данном случае используются только для создания правил шейпинга, и к реальной маршрутизации никакого отношения не имеют. Насчёт шейпинга масок (одна скорость на всю маску) - у нас таких всего пара человек, т.е. они скорее исключение из правил. Тогда для таких юзеров проще сделать загрузку правил из отдельного скрипта. Ну и такой вопрос: возможно ли разделить скрипт на 2 части для IN и OUT? Не будут ли тогда пересекаться классы? Если это разделение нужно для создания классов с различными скоростями на upload/download, то проще ввести множитель между скоростями. Разделить скрипт довольно просто, т.к. правила для входящего и исходящего трафика создаются двумя отдельными вызовами функций. Номера классов у каждого интерфейса свои, поэтому они не пересекаются. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
G@riK Опубликовано 9 февраля, 2012 · Жалоба Спасибо за ответ, будем пробовать! Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
G@riK Опубликовано 9 февраля, 2012 · Жалоба День добрый. Столкнулся с проблемой. Часть конфига: # Network interfaces out_if = bond0 in_if = bond1 filter_method = u32 limit_method = shaping network = 192.168.1.20/30 sc -v 2 -d 1 load RTNETLINK answers: File exists /sbin/tc qdisc add dev bond0 root handle 1: htb RTNETLINK answers: File exists We have an error talking to the kernel /sbin/tc filter add dev bond0 parent 1:0 protocol ip pref 10 handle 100: u32 divisor 4 RTNETLINK answers: File exists /sbin/tc qdisc add dev bond1 root handle 1: htb RTNETLINK answers: File exists We have an error talking to the kernel /sbin/tc filter add dev bond1 parent 1:0 protocol ip pref 10 handle 100: u32 divisor 4 sc show FILTERS: filter parent 1: protocol ip pref 10 u32 filter parent 1: protocol ip pref 10 u32 fh 100: ht divisor 4 filter parent 1: protocol ip pref 10 u32 fh 800: ht divisor 1 filter parent 1: protocol ip pref 10 u32 fh 800::800 order 2048 key ht 800 bkt 0 link 100: (rule hit 3 success 0) match IP dst 192.168.1.20/30 (success 0 ) hash mask 00000003 at 16 filter parent 1: protocol ip pref 10 u32 fh 800::801 order 2049 key ht 800 bkt 0 link 100: (rule hit 2 success 0) match IP dst 192.168.1.20/30 (success 0 ) hash mask 00000003 at 16 filter parent 1: protocol ip pref 30 u32 filter parent 1: protocol ip pref 30 u32 fh 801: ht divisor 1 filter parent 1: protocol ip pref 30 u32 fh 801::800 order 2048 key ht 801 bkt 0 terminal flowid ??? (rule hit 3 success 3) (success 3 ) police 0x4a rate 0bit burst 0b mtu 1b action drop overhead 0b ref 1 bind 1 Sent 358 bytes 3 pkts (dropped 3, overlimits 3) filter parent 1: protocol ip pref 30 u32 fh 801::801 order 2049 key ht 801 bkt 0 terminal flowid ??? (rule hit 0 success 0) (success 0 ) police 0x4c rate 0bit burst 0b mtu 1b action drop overhead 0b ref 1 bind 1 Sent 0 bytes 0 pkts (dropped 0, overlimits 0) filter parent 1: protocol ip pref 10 u32 filter parent 1: protocol ip pref 10 u32 fh 100: ht divisor 4 filter parent 1: protocol ip pref 10 u32 fh 800: ht divisor 1 filter parent 1: protocol ip pref 10 u32 fh 800::800 order 2048 key ht 800 bkt 0 link 100: (rule hit 0 success 0) match IP src 192.168.1.20/30 (success 0 ) hash mask 00000003 at 12 filter parent 1: protocol ip pref 10 u32 fh 800::801 order 2049 key ht 800 bkt 0 link 100: (rule hit 0 success 0) match IP src 192.168.1.20/30 (success 0 ) hash mask 00000003 at 12 filter parent 1: protocol ip pref 30 u32 filter parent 1: protocol ip pref 30 u32 fh 801: ht divisor 1 filter parent 1: protocol ip pref 30 u32 fh 801::800 order 2048 key ht 801 bkt 0 terminal flowid ??? (rule hit 0 success 0) (success 0 ) police 0x49 rate 0bit burst 0b mtu 1b action drop overhead 0b ref 1 bind 1 Sent 0 bytes 0 pkts (dropped 0, overlimits 0) filter parent 1: protocol ip pref 30 u32 fh 801::801 order 2049 key ht 801 bkt 0 terminal flowid ??? (rule hit 0 success 0) (success 0 ) police 0x4b rate 0bit burst 0b mtu 1b action drop overhead 0b ref 1 bind 1 Sent 0 bytes 0 pkts (dropped 0, overlimits 0) CLASSES: QDISCS: qdisc htb 1: root refcnt 2 r2q 10 default 0 direct_packets_stat 6 ver 3.17 Sent 360 bytes 6 pkt (dropped 3, overlimits 0 requeues 0) backlog 0b 0p requeues 0 qdisc htb 1: root refcnt 2 r2q 10 default 0 direct_packets_stat 0 ver 3.17 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0 Добавляю IP: sc dbadd 192.168.1.22 10Mibit Синхронизую: sc sync RTNETLINK answers: Invalid argument We have an error talking to the kernel Command failed (null):3 С выводом ошибок: sc -v 2 -d 1 load RTNETLINK answers: File exists /sbin/tc qdisc add dev bond0 root handle 1: htb RTNETLINK answers: File exists We have an error talking to the kernel /sbin/tc filter add dev bond0 parent 1:0 protocol ip pref 10 handle 100: u32 divisor 4 RTNETLINK answers: File exists /sbin/tc qdisc add dev bond1 root handle 1: htb RTNETLINK answers: File exists We have an error talking to the kernel /sbin/tc filter add dev bond1 parent 1:0 protocol ip pref 10 handle 100: u32 divisor 4 RTNETLINK answers: Invalid argument We have an error talking to the kernel /sbin/tc filter replace dev bond1 parent 1: pref 20 handle 100:16:800 u32 ht 100:16: match ip dst 192.168.1.22 flowid 1:4 RTNETLINK answers: Invalid argument We have an error talking to the kernel /sbin/tc filter replace dev bond0 parent 1: pref 20 handle 100:16:800 u32 ht 100:16: match ip src 192.168.1.22 flowid 1:4 Не подскажите в чем тут проблема может быть? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
photon Опубликовано 9 февраля, 2012 (изменено) · Жалоба На интерфейсах уже по каким-то причинам была создана корневая дисциплина. Чтобы ее удалить и загрузить правила заново, надо выполнить sc restart. sc sync нельзя запускать до sc load. Изменено 9 февраля, 2012 пользователем photon Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
G@riK Опубликовано 9 февраля, 2012 (изменено) · Жалоба Понятно, попробую На данный момент разбили наши IP по маске /30. Прописал их в network и filter_network в конфиге. Далее делаю сброс: sc reset Затем: sc -v 2 -d 1 load В итоге получаю такие ошибки (сюда привожу маленькую часть): RTNETLINK answers: File exists We have an error talking to the kernel /sbin/tc filter add dev bond0 parent 1:0 protocol ip pref 10 handle 800: u32 divisor 4 Illegal "link" /sbin/tc filter add dev bond0 parent 1:0 protocol ip pref 10 u32 ht 800:: match ip src 192.168.6.66/30 hashkey mask 0x00000003 at 12 link 1155: Illegal filter ID /sbin/tc filter add dev bond0 parent 1:0 protocol ip pref 10 handle 1156: u32 divisor 4 Illegal "link" /sbin/tc filter add dev bond0 parent 1:0 protocol ip pref 10 u32 ht 800:: match ip src 192.168.6.118/30 hashkey mask 0x00000003 at 12 link 1156: Illegal filter ID /sbin/tc filter add dev bond0 parent 1:0 protocol ip pref 10 handle 1157: u32 divisor 4 Illegal "link" /sbin/tc filter add dev bond0 parent 1:0 protocol ip pref 10 u32 ht 800:: match ip src 192.168.6.123/30 hashkey mask 0x00000003 at 12 link 1157: Illegal filter ID /sbin/tc filter add dev bond0 parent 1:0 protocol ip pref 10 handle 1158: u32 divisor 4 Illegal "link" /sbin/tc filter add dev bond0 parent 1:0 protocol ip pref 10 u32 ht 800:: match ip src 192.168.6.133/30 hashkey mask 0x00000003 at 12 link 1158: Illegal filter ID /sbin/tc filter add dev bond0 parent 1:0 protocol ip pref 10 handle 1159: u32 divisor 4 Illegal "link" /sbin/tc filter add dev bond0 parent 1:0 protocol ip pref 10 u32 ht 800:: match ip src 192.168.9.7/30 hashkey mask 0x00000003 at 12 link 1159: RTNETLINK answers: File exists We have an error talking to the kernel /sbin/tc filter add dev bond0 parent 1:0 protocol ip pref 30 u32 match u32 0 0 at 0 police mtu 1 action drop RTNETLINK answers: File exists We have an error talking to the kernel /sbin/tc filter add dev bond1 parent 1:0 protocol ip pref 10 handle 800: u32 divisor 4 ************** /sbin/tc filter add dev bond1 parent 1:0 protocol ip pref 10 handle 1155: u32 divisor 4 Illegal "link" /sbin/tc filter add dev bond1 parent 1:0 protocol ip pref 10 u32 ht 800:: match ip dst 192.168.6.66/30 hashkey mask 0x00000003 at 16 link 1155: Illegal filter ID /sbin/tc filter add dev bond1 parent 1:0 protocol ip pref 10 handle 1156: u32 divisor 4 Illegal "link" /sbin/tc filter add dev bond1 parent 1:0 protocol ip pref 10 u32 ht 800:: match ip dst 192.168.6.118/30 hashkey mask 0x00000003 at 16 link 1156: Illegal filter ID /sbin/tc filter add dev bond1 parent 1:0 protocol ip pref 10 handle 1157: u32 divisor 4 Illegal "link" /sbin/tc filter add dev bond1 parent 1:0 protocol ip pref 10 u32 ht 800:: match ip dst 192.168.6.123/30 hashkey mask 0x00000003 at 16 link 1157: Illegal filter ID /sbin/tc filter add dev bond1 parent 1:0 protocol ip pref 10 handle 1158: u32 divisor 4 Illegal "link" /sbin/tc filter add dev bond1 parent 1:0 protocol ip pref 10 u32 ht 800:: match ip dst 192.168.6.133/30 hashkey mask 0x00000003 at 16 link 1158: Illegal filter ID /sbin/tc filter add dev bond1 parent 1:0 protocol ip pref 10 handle 1159: u32 divisor 4 Illegal "link" /sbin/tc filter add dev bond1 parent 1:0 protocol ip pref 10 u32 ht 800:: match ip dst 192.168.9.7/30 hashkey mask 0x00000003 at 16 link 1159: RTNETLINK answers: File exists We have an error talking to the kernel /sbin/tc filter add dev bond1 parent 1:0 protocol ip pref 30 u32 match u32 0 0 at 0 police mtu 1 action drop Причем этой командой загружается больше масок, чем при выполнении load или reload. Но все так и не загрузились. Как такие ошибки можно отловить и пофиксить? UPD: почитал в инете, пишут что это ограничение ядра. Буду искать информацию по увеличению данного значения. Изменено 9 февраля, 2012 пользователем G@riK Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Zohan Опубликовано 9 февраля, 2012 · Жалоба G@riK, не хотите попробовать ipfw+dummynet for Linux? Отлично работает и лишен всех этих недостатков. Работает чуть более чем полностью стабильно. Прокачивает 2 Гбита. Последние версии здесь http://info.iet.unipi.it/~marta/dummynet/ Документация здесь http://info.iet.unipi.it/~luigi/dummynet/ Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
G@riK Опубликовано 10 февраля, 2012 · Жалоба Уже как-то пробовали :) Всё таки хотим сделать это на tc. Разбили на более крупные маски /28, всего масок оказалось 1796. При загрузке их с помощью sc -v 2 -d 1 load получаем загруженными все маски filter parent 1: protocol ip pref 10 u32 fh 800::eff order 3839 key ht 800 bkt 0 link 7ff: (rule hit 12 success 0) match IP dst 192.168.1.240/28 (success 0 ) hash mask 0000000f at 16 filter parent 1: protocol ip pref 10 u32 fh 800::f00 order 3840 key ht 800 bkt 0 link 800: (rule hit 12 success 0) match IP dst 192.168.2.240/28 (success 0 ) hash mask 0000000f at 16 filter parent 1: protocol ip pref 10 u32 fh 800::f01 order 3841 key ht 800 bkt 0 link 801: (rule hit 12 success 0) match IP dst 192.168.6.64/28 (success 0 ) hash mask 0000000f at 16 filter parent 1: protocol ip pref 10 u32 fh 800::f02 order 3842 key ht 800 bkt 0 link 802: (rule hit 12 success 0) match IP dst 192.168.6.112/28 (success 0 ) hash mask 0000000f at 16 filter parent 1: protocol ip pref 10 u32 fh 800::f03 order 3843 key ht 800 bkt 0 link 803: (rule hit 12 success 0) match IP dst 192.168.9.0/28 (success 0 ) hash mask 0000000f at 16 а если так: sc restart (или sc load) то последней маской получается: RTNETLINK answers: File exists We have an error talking to the kernel Command failed (null):3587 ****** filter parent 1: protocol ip pref 10 u32 fh 800::eff order 3839 key ht 800 bkt 0 link 7ff: (rule hit 12 success 0) match IP dst 192.168.1.240/28 (success 0 ) hash mask 0000000f at 16 Т.е. последний link 7ff = 2047, остальные записи с link 800,801,802,803 пропали. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
photon Опубликовано 10 февраля, 2012 (изменено) · Жалоба Для фильтров нужно указывать как можно более крупные подсети. Например 10.0.0.0/16 вместо сотен подсетей по /30. 7ff хэш-фильтров -- это безумие какое-то. Зачем вам эти 40 сетей по /16? Сделайте несколько по /24 -- /22, если сети заполнены несколькими сотнями юзеров. Изменено 10 февраля, 2012 пользователем photon Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...