LINUX.ORG.RU

Сообщения xneo

 

Linux shaper 10G (HTB)

Здравствуйте. Есть следующий вопрос:

Конфиг шейпера

tc qdisc add dev eth0 root handle 1:0 htb r2q 20
tc class add dev eth0 parent 1:0 classid 1:1 htb rate 10Gbit burst 12000k cburst 12000k
tc class add dev eth0 parent 1:1 classid 1:9 htb rate 10Mbit ceil 10Gbit burst 6000k cburst 6000k quantum 200000

Как только трафик через класс 1:9 переваливает приблизительно в 1Gbit, у него (класса 1:9) вырастает backlog (я так понимаю это очередь), растёт задержка и появляются дропы. Через корневой класс 1:1 в это время течёт около 5Gbit, он не загружен, дропов нет, весь остальной трафик протекает нормально. CPU 20%. IPerf’oм мимо 1:9 трафик легко поднимается до 10G.

Тоесть захлёбывается только класс 1:9 и не могу понять почему. r2q / burst / cburst крутил в разные стороны :)

 , ,

xneo
()

Linux ARP, изучение MAC из другой подсети

Здравствуйте.

Дано: Linux Debian 9.

Сетевая карта с несколькими VLan:

7: enp2s0f1.114@enp2s0f1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 00:90:fa:70:09:08 brd ff:ff:ff:ff:ff:ff
    inet 10.14.0.1/24 brd 10.14.0.255 scope global enp2s0f1.114
       valid_lft forever preferred_lft forever
8: enp2s0f1.116@enp2s0f1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 00:90:fa:70:09:08 brd ff:ff:ff:ff:ff:ff
    inet 10.16.0.1/21 brd 10.16.7.255 scope global enp2s0f1.116
       valid_lft forever preferred_lft forever
9

В ARP кеше вижу следующую картину:

# arp -n | grep 10.14.0.202
10.14.0.202              ether   14:4d:67:9a:78:3d   C                     enp2s0f1.116
10.14.0.202              ether   14:4d:67:9a:66:0d   C                     enp2s0f1.114

Т.е. в подсети 10.16.0.1/21 с vlan 116 есть машина с установленным IP 10.14.0.202, который не входит в данную подсеть. Я почему то думал ОС должна игнорировать такие ARP пакеты и не заносить их в кеш. Можно как-то подкорректировать данное поведение?

 , ,

xneo
()

Расширение SNMPD, права запуска скрипта python

Здравствуйте.

Есть Debian 9.4 / SNMPD 5.7.3 / Python 3.5.3. Сделал простенький скрипт на Python. Прописал в snmpd.conf:

pass .1.3.6.1.4.1.10001 /home/script/snmp/test.py

При запуске SNMPD от имени пользователя Debian-snmp возвращает ошибку «No Such Instance...». При запуске SNMPD из консоли от имени root всё работает.

Попробовал просто выполнить комманду:

su -c python3 Debain-snmp
Ничего не происходит. Никаких ошибок в ответ. От имени root срабатывает нормально.

Я так понимаю проблема в запуске Python от имени пользователя Debain-snmp? Куда копнуть? Права на запуск у бинарника Python вроде как установлены для всех.

 ,

xneo
()

Проблема с обновлением драйвера Igb

OS: Linux Debian wheezy.

По умолчанию стоит igb v3.2.10-k. Скачал драйвер igb v5.06. Скомпилил, установил. Перегрузился. В результате:

#modinfo igb
filename:       /lib/modules/3.2.0-4-amd64/kernel/drivers/net/igb/igb.ko
version:        5.0.6

#ethtool -i eth0
driver: igb
version: 3.2.10-k

Подскажите, что я упустил?

xneo
()

Загрузка CPU после обновления

Здравствуйте. Обновил сегодня Debian(ядро) с версии 2.6.32 до версии 3.2. Заметил повышенную нагрузку процессора. Сервер работает в роли роутера/шейпера. До этого в среднем на ядро было около 7% в пиковое время, после обновления около 12%. На сколько это нормальное поведение? Ядро само по себе тяжелее или такого не должно быть?

Сетевая Intel 82576. Трафик до 500мбит. Intel XEON, 4GB ОЗУ.

xneo
()

Выбор между SPINLOCK и RWLOCK

Здравствуйте. Возникла необходимость написать модуль ядра для Linux/IPTables. Опыта программирования под Linux очень мало, а написания модулей ядра ещё меньше. Поэтому сразу попрошу не кидаться, если что :)

В процессе разработки возникли вопросы с синхронизацией(блокировками). Модуль обрабатывает поток пакетов от IPTables. В каком именно контексте выполняется код обработчика я, честно говоря, толком не знаю. Какую функцию блокировки мне лучше использовать spin_lock / spin_lock_irqsave / spin_lock_bh? Чем именно они отличаются?

Сам модуль готов. Вроде работает, использую spin_lock_bh. Но не знаю верно ли я выбрал. Так как процессор многоядерный процедура обработки выходит может исполняться в несколько потоков одновременно. А значит лучше может было бы использовать в обработчике read_lock (внутри обработчика пакетов только обращение/чтение из хеш-таблицы)?

xneo
()

Linux шейпер

Здраствуйте.

Есть шлюз на Debian.
Есть 3 интерфейса
eth4 - локальная сеть
eth0 - UA-IX (внешний, NAT)
eth1 - мир (внешний, NAT)

Скрипт конфигурации шейпера:

iptables -t mangle -F
iptables -t mangle -X
iptables -t mangle -N SHAPER-OUT
iptables -t mangle -I POSTROUTING -o eth1 -j SHAPER-OUT
iptables -t mangle -I POSTROUTING -o eth0 -j SHAPER-OUT

tc qdisc del dev eth4 root
tc qdisc add dev eth4 root handle 1:0 htb default 10
tc class add dev eth4 parent 1:0 classid 1:1 htb rate 100Mbit burst 131072
tc class add dev eth4 parent 1:1 classid 1:10 htb rate 100Mbit burst 131072
tc qdisc add dev eth4 parent 1:10 sfq perturb 10

tc qdisc del dev eth1 root
tc qdisc add dev eth1 root handle 1:0 htb default 10
tc class add dev eth1 parent 1:0 classid 1:1 htb rate 100Mbit burst 131072
tc class add dev eth1 parent 1:1 classid 1:10 htb rate 100Mbit burst 131072
tc qdisc add dev eth1 parent 1:10 sfq perturb 10

tc qdisc del dev eth0 root
tc qdisc add dev eth0 root handle 1:0 htb default 10
tc class add dev eth0 parent 1:0 classid 1:1 htb rate 100Mbit burst 131072
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 100Mbit burst 131072
tc qdisc add dev eth0 parent 1:10 sfq perturb 10

# Один из пользователей
iptables -t mangle -A SHAPER-OUT -s 10.11.0.117 -j MARK --set-mark 0x1003
tc class add dev eth4 parent 1:1 classid 1:1003 htb rate 2048Kbit burst 25600
tc class add dev eth1 parent 1:1 classid 1:1003 htb rate 2048Kbit burst 25600
tc class add dev eth0 parent 1:1 classid 1:1003 htb rate 2048Kbit burst 25600
tc filter add dev eth4 parent 1:0 protocol ip u32 match ip dst 10.11.0.117 classid 1:1003
tc filter add dev eth1 parent 1:0 protocol ip handle 0x1003 fw classid 1:1003
tc filter add dev eth0 parent 1:0 protocol ip handle 0x1003 fw classid 1:1003

Недочёт в том что пользователь должен получать 2мбит входящего и 2мбит исходящего. А при текущем конфиге он получает по 2мбит исходящего на каждый внешний интерфейс шлюза. Как можно объединить исходящий поток двух интерфейсов чтобы пользователь получал суммарно исходящего не больше 2мбит?

P.S.: Если не сложно какойто минимальный пример, с линуксом работаю не так давно :)

xneo
()

RSS подписка на новые темы