Перейти к содержимому
Калькуляторы

Nekto

Пользователи
  • Публикации

    22
  • Зарегистрирован

  • Посещение

Все публикации пользователя Nekto


  1. Спасибо за ответ. Про тюнинг арпа читал, но это не то, о чем я спрашивал. Пока решил собрать клиентские вланы в один бридж, так все нормально работаеи и потом легче обработку делать для шапера. На стороне ону можно на порту разрешить только определенные адреса на порт в качестве защиты. За ссылку на дхцп спасибо, слышал про него, но пока обходился isc с патчем -dd.
  2. Хммм. Проверил с обычным свичом, все работает. Проблема в том, что у меня GPON ZTE C-300 c f660 и проблема именно с онушками. Надо копать конфиги, чтобы разобраться в таком поведении. На стороне линукса все в порядке. Попробую проверить с 2 разных онушек, чтобы понять где конкретно проблема в голове или самой ону. Поставил рядом вторую ону - между ними все нормально пашет. Надо разбираться, как настроить изоляцию портов в пределах одной онушки, думаю проблема в этом. Если кто сталкивался с такой ситуацией - подскажите решение?
  3. Сделал схему похожую на вашу по примеру из интернета ip route add unreachable 192.0.2.0/24 ip addr add 192.0.2.1/32 dev lo vconfig add eth0 101 ip link set eth0.101 up ip route add 192.0.2.100/32 dev eth0.100 src 192.0.2.1 ip route add 192.0.2.101/32 dev eth0.101 src 192.0.2.1 echo 1 > /proc/sys/net/ipv4/conf/eth0.100/proxy_arp echo 1 > /proc/sys/net/ipv4/conf/eth0.101/proxy_arp Поднял 2 vlan 100,101 Трафик наружу ходит без проблем. Между ними пинги проходят изредка. Понимаю, что какая-то тонкость в настройке proxy_arp, но не могу найти решения. Никто не сталкивался с проблемой?
  4. присоединяюсь к вопросу
  5. Ни у кого не завалялась для С300 V1.2.0P1 нужны scxm и gucd файлы для прошивки старой карты Вопрос решил.
  6. Вы невнимательно читали ветку. По такой схеме не работает на 4.4.18 ядре. Если ставлю 3.18.ХХ то работает.
  7. У меня нет ppp интерфейсов, но для каждого vlan пакеты направляются в свой сет, где собраны ip исходящие из этого интерфейса. Правила получаются слеюующие: -A POSTROUTING -o eth0.+ -m set --match-set in_vlan11 src -j ACCEPT -A POSTROUTING -o eth0.+ -m set --match-set in_vlan12 src -j ACCEPT Для каждого интерфейса задается свой сет. через + не получится так сделать.
  8. Пока проц справляется с нагрузкой менять его смысла нет. 7 лет пашет без остановок. Я описывал загрузку, чтобы было наглядное представление о применении данной схемы шэйпера. Кстати, сколько pps тот же I7-6700 без проблем пережевывает?
  9. Наконец привязал новую схему шапера к биллингу. Особо не торопились, поскольку загрузка проца не превышала 50%. В итоге остановился на схеме, предложенной taf_321, с использованием skbinfo, за идею ему отдельное спасибо. В моем случае главной причиной была возможность использовать схему на любой версии ядра. Посчитал, что отказ от tc filter тоже скажится положительно. При использовании Vlan правило iptables приходится прописывать на интерфейс vlan. Зато правила htb работают на родительском интерфейсе eth0, eth1,ethX, что меня полностью устраивает. Боевой рутер на котором все крутится в строю уже ~7 лет. 4х ядерный Xeon X3330 @ 2.66GHz 2Gb ram. сетевуха Intel 82576. Без шапера загрузка cpu в пределах 10-15%. 2 полных таблицы BGP, DNS, DHCP, Squid (заворачивать блочные сайты) ната нет. Включаем неоптимизированный шапер - при 50 kpps загрузка cpu ~50% при 40 kpps загрузка ~40% при 30 kpps ~30%, прямо как под заказ :) Запустил оптимизированный вариант. Всего в ipset 4900 записей . ~2000 вида hash:ip где проставляется skbinfo, остальные hash:ip,port и где-то 500 hash:net,port. Правил htb ~ 2000 (их количество не менялось). Добавилось 13 правил iptables по количеству vlan. Результаты загрузки cpu: 60 kpps загрузка cpu 33% при 40 kpps загрузка cpu ~26% при 30 kpps загрузка cpu ~19% Думаю по результатам все понятно - инструкция в ветке. Да, для каждого ип мы маркируем трафик отдельной маркой, так сложилось исторически - отвязать от биллинга сложно. При работе с субнетами прирост может оказаться выше. ipset рулит! Только что посмотрел статистику 48kpps - 24% - с чем связано не знаю.
  10. Я попробовал на ядре 3Х запустить правило без протокола all - работает с u32 без проблем. (Думаю поэтому и ipset срабатывает) Попробовал создать стандартное правило для хэшей - не работает. Все же в новых ядрах в плане vlan что-то поменяли.
  11. В таком случае я могу через ipset загнать пачку адресов или субнетов в один сет и потом одним правилом iptables направить этот сет в определенный клас/марку. Собственно для определенного вида трафика я так и делаю. В моем случае речь идет об индивидуальной настройке для каждого адреса. Как я понимаю ipset прекрасно работает с адресами на уровне хэшей, а tc пережевывает вывод из правила напрямую. tc не сканирует весь пробегающий трафик, а лишь подбирает выборку ipseta. Если я ошибаюсь - поправьте. В любом случае на следующей неделе будут результаты. Единственные грабли коорые я могу предположить, это когда ipset прогоняет всю цепочку для каждого правила, но интуищия мне подсказывает, что у него выборка идет глобально и он сортирует пакеты по сетам используя свои внутренние метки. Во всяком случае такой сценарий мне кажется правдоподобным.
  12. Напишите пожалуйста пример для трех произвольных ип. Не понимаю, как я получу индивидуальные параметры скоростей для каждого ип, с одним правилом иптэйблов? В классическом использовании хэшей перебор идет по последнему знаку ип адреса, здесь перебор на уровне хэша выполнит ипсет и направит прямо в клас тц
  13. Ура - решение найдено. Заработало! ipset create test hash:ip hashsize 64 ipset add test 192.168.0.5 tc qdisc add dev eth0 root handle 1 htb default 30 r2q 32 tc class add dev eth0 parent 1: classid 1:2 htb rate 100Mbit tc class add dev eth0 parent 1:2 classid 1:11 htb rate 20Mbit ceil 30Mbit burst 50k prio 3 tc qdisc add dev eth0 parent 1:11 handle 11 esfq perturb 10 hash dst tc filter add dev eth0 parent 1:0 protocol all prio 200 handle 11 fw classid 1:11 tc filter add dev eth0 parent 1:0 protocol all prio 100 basic match ipset'(test dst)' classid 1:11 Из ipset пакеты прямиком направляются в нужный класс шэйпера. Никаких промежуточных iptables не надо! Я правильно смотрел в направлении ipset. Теперь собственно о граблях, почему у меня сразу не получилось. Стояла стоковая версия ipset 6.20. Собрал 6.29, когда на skbinfo полезли ошибки - он после 6.22 включен. По случаю я в это время работал на ядре 3.18.42 - все прекрасно запустилось. Перешел на версию 4.4.18 - получил облом. На сегодняшний момент ядро 3.18.42 ipset 6.29 iproute2-4.7.0 - все работает на машине с vlan. У кого не используется vlan проблем скорее всего не возникнет с любым ядром. Осталось переписать скрипты под новый формат.
  14. Не получится. Нужно указать куда попадают данные из субнета - эта строка tc filter add dev eth0 protocol ip parent 1:0 prio 200 u32 ht 800:: match ip dst 192.168.0.0/24 hashkey mask 0x000000ff at 16 link 2: Последняя запись из субнета попадает в свой divisor на свой link, а в нем откусывается только последня циферка по маске. правило с указателем protocol all не работает. tc не видит тэгированный трафик как ip пробую указать вид протокола 802,1q - получаю ту же ошибку: tc filter add dev eth0 protocol 802.1q parent 1:0 prio 200 u32 ht 800:: match ip dst 192.168.0.0/24 hashkey mask 0x000000ff at 16 link 2: RTNETLINK answers: Invalid argument We have an error talking to the kernel Без этого правила работать ничего не будет. Каким образом указать, что ip протокол нужно смотреть в конкретном vlan я не понимаю.
  15. Методам построчного ввода заметили, что команда вида: /sbin/tc filter add dev eth0 protocol all parent 1:0 prio 200 u32 ht 2:0x05 match ip dst 192.168.0.5 flowid 1:11 не принимается - идет ругань на аргументы. Разобрались, что для запуска команды нужно указать протокол ip. если есть значение ht 2:0x05 протокол all не срабатывает. Без протокола all тегированный трафик tc не видит. аналогично с командой для субнета: sbin/tc filter add dev eth0 protocol all parent 1:0 prio 200 u32 ht 800:: match ip dst 192.168.0.0/24 hashkey mask 0x000000ff at 16 link 2: протокол нужно указать ip Как заставить обрабатывать тегированный трафик для хэшей - не понимаю.
  16. Попробовал запустить без использования хэшей с указанием протокола all - работает! /sbin/tc qdisc del dev eth0 root /sbin/tc qdisc add dev eth0 root handle 1 htb default 30 r2q 32 /sbin/tc class add dev eth0 parent 1: classid 1:2 htb rate 100Mbit /sbin/tc class add dev eth0 parent 1:2 classid 1:11 htb rate 20Mbit ceil 30Mbit burst 50k prio 3 /sbin/tc qdisc add dev eth0 parent 1:11 handle 11 esfq perturb 10 hash dst /sbin/tc filter add dev eth0 parent 1:0 protocol all prio 200 handle 11 fw classid 1:11 /sbin/tc filter add dev eth0 parent 1:0 protocol all prio 100 u32 match ip dst 192.168.0.5 classid 1:11 Как только указываю использование хэш - ничего не работает. Пакеты в класс не направляются. Ниже пример: /sbin/tc qdisc del dev eth0 root /sbin/tc qdisc add dev eth0 root handle 1 htb default 30 r2q 32 /sbin/tc class add dev eth0 parent 1: classid 1:2 htb rate 100Mbit /sbin/tc filter add dev eth0 parent 1:0 prio 200 handle 2: protocol all u32 divisor 256 /sbin/tc class add dev eth0 parent 1:2 classid 1:11 htb rate 20Mbit ceil 30Mbit burst 50k prio 3 /sbin/tc qdisc add dev eth0 parent 1:11 handle 11 esfq perturb 10 hash dst /sbin/tc filter add dev eth0 parent 1:0 protocol all prio 100 handle 11 fw classid 1:11 /sbin/tc filter add dev eth0 protocol all parent 1:0 prio 200 u32 ht 2:0x05 match ip dst 192.168.0.5 flowid 1:11 /sbin/tc filter add dev eth0 protocol all parent 1:0 prio 200 u32 ht 800:: match ip dst 192.168.0.0/24 hashkey mask 0x000000ff at 16 link 2: Выделил строки которые добавляются для хэша. С их появлением не работает. Подскажите - куда копать? В ссылках которые я приводил есть упоминание: VLAN tag is stripped from skb in recent kernels и там же примеры. Думаю проблемма именно в этом. Пока запустил без применения хэша, но хотелось бы уменьшить нагрузку на сервер.
  17. Пробовал ip link set eth0.3 type vlan reorder_hdr on/off На результат никак не влияет. Пробовал /sbin/tc filter add dev eth0 parent 1:0 protocol all u32 ht 800:: match ip dst 192.168.0.0/24 hashkey mask 0x000000ff at 20 в надежде, что 4 бита сработают, но нет. Решения пока не нахожу. Ниже ссылки, но я уже окончательно запутался. Пробую разные варианты - никак не получается. Ниже несколько ссылок по теме. Как я понимаю в новых ядрах поменяли что-то. Без хэшей мне удалось все запустить, но с хэш пока ника не получается. Ссылка Ссылка До завтра мой лимит ссобщений исчерпан :(
  18. Попробовал как вы говорите - не работает. У меня на сутки еще только одно сообщение доступно :( Возможно не сразу отвечу. При добавлений правил ругани нет, но пакеты в фильтр не попадают. Что я делаю не так? /sbin/tc qdisc del dev eth0 root /sbin/tc qdisc add dev eth0 root handle 1 htb default 30 r2q 32 /sbin/tc class add dev eth0 parent 1: classid 1:2 htb rate 100Mbit /sbin/tc filter add dev eth0 parent 1:0 handle 2: protocol all u32 divisor 256 /sbin/tc class add dev eth0 parent 1:2 classid 1:11 htb rate 20Mbit ceil 30Mbit burst 50k prio 3 /sbin/tc qdisc add dev eth0 parent 1:11 handle 11 sfq perturb 10 /sbin/tc filter add dev eth0 parent 1:0 protocol all handle 11 fw classid 1:11 /sbin/tc filter add dev eth0 parent 1:0 protocol all u32 ht 2:0x05 match ip dst 192.168.0.5 flowid 1:11 /sbin/tc filter add dev eth0 parent 1:0 protocol all u32 ht 800:: match ip dst 192.168.0.0/24 hashkey mask 0x000000ff at 16
  19. На ядре 2.6.Х работала следующая конструкция шейпера: /sbin/tc qdisc del dev eth0 root /sbin/tc qdisc add dev eth0 root handle 1 htb default 30 r2q 32 /sbin/tc class add dev eth0 parent 1: classid 1:2 htb rate 100Mbit /sbin/tc filter add dev eth0 parent 1:0 prio 200 handle 2: protocol ip u32 divisor 256 /sbin/tc class add dev eth0 parent 1:2 classid 1:11 htb rate 20Mbit ceil 30Mbit burst 50k prio 3 /sbin/tc qdisc add dev eth0 parent 1:11 handle 11 sfq perturb 10 /sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 100 handle 11 fw classid 1:11 /sbin/tc filter add dev eth0 protocol ip parent 1:0 prio 200 u32 ht 2:0x05 match ip dst 192.168.0.5 flowid 1:11 /sbin/tc filter add dev eth0 protocol ip parent 1:0 prio 200 u32 ht 800:: match ip dst 192.168.0.0/24 hashkey mask 0x000000ff at 16 link 2: Собрал новую машину на ядре 4.4.18 и вылезла неожиданная проблема с vlan интерфейсами. Предыдущая конструкция работает только если указать в качестве интерфейся конкретный vlan - типа eth0.3 и только на карточке интел c MSI - похоже сама карточка тэг снимает. Только в этом случае теряется наследование класса. Нужно запустить фильтр на корневом интерфейсе eth0. На форуме здесь http://forum.nag.ru/forum/index.php?showtopic=98225 нашел решение которое работает С приведенным ниже конфигом все нормально работает на любой карточке: /sbin/tc qdisc del dev eth0 root /sbin/tc qdisc add dev eth0 root handle 1 htb default 30 r2q 32 /sbin/tc class add dev eth0 parent 1: classid 1:2 htb rate 100Mbit /sbin/tc filter add dev eth0 parent 1:0 prio 200 handle 2: protocol ip u32 divisor 256 /sbin/tc filter add dev eth0 parent 1: protocol all handle 0x5 basic match 'meta (vlan eq 3 )' action ok /sbin/tc class add dev eth0 parent 1:2 classid 1:11 htb rate 20Mbit ceil 30Mbit burst 50k prio 3 /sbin/tc qdisc add dev eth0 parent 1:11 handle 11 sfq perturb 10 /sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 100 handle 11 fw classid 1:11 /sbin/tc filter add dev eth0 parent 1: protocol all handle ::5 u32 match ip dst 192.168.0.5 flowid 1:11 /sbin/tc filter add dev eth0 protocol ip parent 1:0 prio 200 u32 ht 800:: match ip dst 192.168.0.0/24 hashkey mask 0x000000ff at 16 link 2: Только в этом случае хэш не задействован. Подскажите, гуру, как реализовать возможность шэйпить виланы на корневом интерфейсе с использованием хэшей? Перелопатил кучу сайтов, но точного решения так и не нашел. Думаю данная проблема станет в скором времени актуальной для многих с переходом на новые ядра. Кто в теме - накидайте пример, буду весьма признателен.
  20. Какой тип нарезки использовать это дело вкуса и потребностей. Я думаю, что мало у кого один роутер нарезает поровну полосу для десятков тысяч ИП. 10-30 ц классов на мой взгляд оптимальная нагрузка на сервер. Для большинства необходимы индивидуальные настройки скоростей по ип, но еще более важны на мой взгляд классы htb. Я у себя использую несколько классов по тарифам и задействую параметр ceil. Наследование полосы когда сосед не качает наиболее важная функция. В данной версии эта возможность htb не используется. Относительно коммерческой версии - где можно с ней ознакомиться? Относительно портов и марок они нужны буквально для нескольких записей - 80 25 порт итд. но они явно не будут лишними для сетей определенных масштабов.
  21. Нашел данную программу. Возник вопрос по конфигурации. Возможно ли с ее помощью создавать классы для htb. Родительский клас и так далее. Я для этого использую htb.init но поместить настройки в базу данных весьма неплохое решение и работает прога шустро. Еще не заметил возможности добавлять марки пакетов и порты. Сгенерил небольшой пример. Посмотрите как такое реализовать при помощи sc. Два класса для тарифов, внутри классов нарезка для конкретных ип или групп. Субнет вычисляется по хэшу, а классы это уже для htb. /sbin/tc qdisc del dev eth0 root /sbin/tc qdisc add dev eth0 root handle 1 htb default 30 r2q 32 /sbin/tc class add dev eth0 parent 1: classid 1:2 htb rate 100Mbit /sbin/tc filter add dev eth0 parent 1:0 prio 200 handle 3: protocol ip u32 divisor 256 /sbin/tc class add dev eth0 parent 1:2 classid 1:11 htb rate 20Mbit ceil 30Mbit burst 50k prio 3 /sbin/tc qdisc add dev eth0 parent 1:11 handle 11 esfq perturb 10 /sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 100 handle 80 fw classid 1:11 /sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 200 u32 match ip sport 443 0xffff match ip dst 192.168.1.4 classid 1:11 /sbin/tc filter add dev eth0 protocol ip parent 1:0 prio 200 u32 ht 3:0x04 match ip dst 192.168.1.4 flowid 1:11 /sbin/tc class add dev eth0 parent 1:2 classid 1:256 htb rate 30Mbit ceil 40Mbit burst 50k prio 3 /sbin/tc qdisc add dev eth0 parent 1:256 handle 256 esfq perturb 10 /sbin/tc class add dev eth0 parent 1:256 classid 1:12 htb rate 10Mbit ceil 20Mbit burst 50k prio 3 /sbin/tc qdisc add dev eth0 parent 1:12 handle 12 esfq perturb 10 /sbin/tc filter add dev eth0 protocol ip parent 1:0 prio 200 u32 ht 3:0x0c match ip dst 192.168.1.12 flowid 1:12 /sbin/tc class add dev eth0 parent 1:256 classid 1:16 htb rate 10Mbit ceil 20Mbit burst 50k prio 3 /sbin/tc qdisc add dev eth0 parent 1:16 handle 16 esfq perturb 10 /sbin/tc filter add dev eth0 protocol ip parent 1:0 prio 200 u32 ht 3:0x10 match ip dst 192.168.1.16 flowid 1:16 /sbin/tc class add dev eth0 parent 1:2 classid 1:512 htb rate 40Mbit ceil 60Mbit burst 50k prio 3 /sbin/tc qdisc add dev eth0 parent 1:512 handle 512 esfq perturb 10 /sbin/tc class add dev eth0 parent 1:512 classid 1:15 htb rate 20Mbit ceil 30Mbit burst 50k prio 3 /sbin/tc qdisc add dev eth0 parent 1:15 handle 15 esfq perturb 10 /sbin/tc filter add dev eth0 protocol ip parent 1:0 prio 200 u32 ht 3:0x0f match ip dst 192.168.1.15 flowid 1:15 /sbin/tc class add dev eth0 parent 1:512 classid 1:17 htb rate 20Mbit ceil 30Mbit burst 50k prio 3 /sbin/tc qdisc add dev eth0 parent 1:17 handle 17 esfq perturb 10 /sbin/tc filter add dev eth0 protocol ip parent 1:0 prio 200 u32 ht 3:0x11 match ip dst 192.168.1.17 flowid 1:17 /sbin/tc filter add dev eth0 protocol ip parent 1:0 prio 200 u32 ht 3:0x12 match ip dst 192.168.1.18 flowid 1:17 /sbin/tc filter add dev eth0 protocol ip parent 1:0 prio 200 u32 ht 800:: match ip dst 192.168.1.0/24 hashkey mask 0x000000ff at 16 link 3: