LINUX.ORG.RU
ФорумAdmin

Debian & tc + bonding


0

1

Добрый день.

Есть такого рода проблема:

Как только добавлю одну единственную строчку на НАТа (около 3к клиентов)

tc qdisc add dev bond1.400 root handle 1: htb default 2

практический сразу (в течение 1-3 минут) при пинге с клиентов сети, начинают идти потери, как только удаляю правило, все возвращается на круги своя.

В чем могут быть проблемы? Ядро? настройки сетевой? Не могу понять куда копать :(

Машина: Ядро: 2.6.32-5-amd64 Сетевуха интел, 4 головы, прерывания распределены равномерно, очереди включены. Процессоры: два проца, по 4 ядра, гипертрейдинг включен. Трафика: около 1-1,5Гбита

З.Ы. Заметил что когда отключаю fprobe, но добавляю правило, потери пропадают. То есть есть подозрение что машина не справляется с нагрузкой.


на 1.5 ГБит/с fprobe ? Это которое на ulogd ? Не, не взлетит.

Я бы еще ядро бы проапгрейдил на 3.14 или выше - нам было много исправлений.

посмотри через mpstat загрузку процессора - возможно ты уже уперся в производительность.

vel ★★★★★
()

офлоды хоть выключены? и вообще, бондинг и древние ядра это плохо, раньше там много багов было

anonymous
()

Неплохо бы еще знать что такое default 2. Без конфигурации остальных классов/фильтров/дисциплин tc нельзя ничего сказать. Не стоит грешить на ядро, не проделав вообще никакой диагностики.

ventilator ★★★
()
7 октября 2014 г.
Ответ на: комментарий от ventilator

тов. ventilator, был прав. проблема оказалась в дальнейших правилах. там была установлена маленькая очередь pfifo limit, поставил на 5000 данный косяк ушел.

Но возник еще вопрос, уже по правилам, может подскажете:

eth3.457 - интерфейс смотрит в сторону клиента. Клиентская сеть: 10.70.22.0/24 Скорость = 1024Кбит КлассИД = 2000 ИП клиента: 10.70.22.177

Делаю такие правила:

/sbin/tc qdisc del dev eth3.457 root handle 1: htb default 2
/sbin/tc qdisc add dev eth3.457 root handle 1: htb default 2
/sbin/tc class add dev eth3.457 parent 1: classid 1:1 htb rate 10240mbit ceil 10240mbit prio 100
/sbin/tc class add dev eth3.457 parent 1: classid 1:2 htb rate 10240mbit ceil 10240mbit prio 200

/sbin/tc qdisc add dev eth3.457 parent 1:2 handle 10: pfifo limit 5000

/sbin/tc filter add dev eth3.457 parent 1: prio 10 handle 900: protocol ip u32 divisor 256
/sbin/tc filter add dev eth3.457 protocol ip parent 1:0 prio 100 u32 ht 800:: match ip dst 10.70.22.0/24 hashkey mask 0x0000ff00 at 16 link 900:

/sbin/tc filter add dev eth3.457 parent 1: prio 10 handle ff: protocol ip u32 divisor 256
/sbin/tc filter add dev eth3.457 parent 1: protocol ip prio 10 u32 ht 900:16: match ip dst 10.70.22.0/24 hashkey mask 0x000000ff at 16 link ff:

/sbin/tc class replace dev eth3.457 parent 1:1 classid 1:2000 htb rate 1000kbit ceil 1000kbit burst 100kbit quantum 3000 prio 50
/sbin/tc qdisc replace dev eth3.457 parent 1:2000 handle 2000: pfifo limit 500
/sbin/tc filter replace dev eth3.457 protocol ip parent 1: handle ff:16:46 prio 5 u32 ht ff:16 match ip dst 10.70.22.177/32 classid 1:2000
(handle ff:16:46 - это 16 = hex(22), 46 = hex(70))

Потом смотрю результат:

root@nat:/home/utils/scripts# tc -s -d filter show dev eth3.457
filter parent 1: protocol ip pref 5 u32
filter parent 1: protocol ip pref 5 u32 fh 802: ht divisor 1
filter parent 1: protocol ip pref 10 u32
filter parent 1: protocol ip pref 10 u32 fh ff: ht divisor 256
filter parent 1: protocol ip pref 10 u32 fh ff:16:46 order 70 key ht ff bkt 16 flowid 1:2000  (rule hit 0 success 0)
  match 0a4616b1/ffffffff at 16 (success 0 )
filter parent 1: protocol ip pref 10 u32 fh 900: ht divisor 256
filter parent 1: protocol ip pref 10 u32 fh 900:16:800 order 2048 key ht 900 bkt 16 link ff:  (rule hit 62126 success 0)
  match 0a461600/ffffff00 at 16 (success 62126 )
    hash mask 000000ff at 16
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 900:  (rule hit 62129 success 0)
  match 0a461600/ffffff00 at 16 (success 62129 )
    hash mask 0000ff00 at 16
filter parent 1: protocol ip pref 100 u32
filter parent 1: protocol ip pref 100 u32 fh 801: ht divisor 1

если я правильно понимаю, то все цепочки проходит нормально, но вот именно сам ИП не матчится :( и скорость не режется соответственно.

Подскажете где я не прав?

Morbid
() автор топика
Ответ на: комментарий от Morbid
filter parent 1: protocol ip pref 10 u32 fh ff:16:46 order 70 key ht ff bkt 16 flowid 1:2000  (rule hit 0 success 0)

тут (rule hit 0 success 0) Значит что в бакет хештаблицы не попадает трафик. То есть проблема еще до срабатывания вышеприведенного фильтра(иначе бы rule hit был не нулевой). В зависимости от версии ядра менялась точка отсчета offset(то что после at), в моих конфигах для 3.16 работает offset=12 для матчига ip - это первое что стоит проверить.

Но мне кажется что ошибка в самих правилах которые организуют хештаблицы.

Я чуть позже гляну свои работающие щейперы, тк за 4 года уже подзабыл синтаксис и точно скажу)). Если желаете, пример скину вам.

ventilator ★★★
()
Последнее исправление: ventilator (всего исправлений: 1)
Ответ на: комментарий от ventilator

Буду признателен за пример и комментарии к нему

Morbid
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.