Возьмем одну из четырех труб (неважно какую) например 768 кбит. Поставим на закачку, нечто из локальных ресурсов на трёх компах. Скорость поделится равномерно - тут всё чётко, НО!!..проходит минут 20-30 и начинается: пинги начинают рватся, причем хаотично (3 подряд через 30 пингов или по одному через 10 пингов). Если я остановлю закачку на одном из компов (через 30 минут после старта) - закачка останавливается, а пинг пропаает и примерно 5-6 секунд невозможно выйти с этой машины в инет. Если я возобновлю закачку (неважно через какое время), то на всех качающих компах пинг пропадает на 1 секунду почти синхронно. Если на одном из трёх компов остановить закачку и просто лазить по инету и открывать нетяжёлые старнички (mail.ru vkontakte) пинг еще какое то время будет рватся на этой тачке и вести себя так, как будто комп еще качает. Менял всевозможные параметры, гуглил и читал кучу статей, но так и не поборол эту фигню. Привожу конфиг думинета+очередей+гред и конфиг sysctl.conf:
DUMMYNET
Код: Выделить всё
# table 1
$fwcmd pipe 1 config bw 2000Kbit/s queue 230kbytes
$fwcmd pipe 2 config bw 256Kbit/s queue 28kbytes
# table 2
$fwcmd pipe 3 config bw 1000Kbit/s queue 115kbytes
$fwcmd pipe 4 config bw 256Kbit/s queue 28kbytes
# table 3
$fwcmd pipe 5 config bw 768Kbit/s queue 87kbytes
$fwcmd pipe 6 config bw 256Kbit/s queue 28kbytes
# table 4
$fwcmd pipe 7 config bw 256Kbit/s queue 28kbytes
$fwcmd pipe 8 config bw 256Kbit/s queue 28kbytes
#---queues for tables-------------------------------------------------------------------------------
# table 1
$fwcmd queue 1 config pipe 1 queue 239kbytes gred 0.002/38kbytes/115kbytes/0.1 mask dst-ip 0xffffffff
$fwcmd queue 2 config pipe 2 queue 28kbytes gred 0.002/4kbytes/14kbytes/0.1 mask src-ip 0xffffffff
# table 2
$fwcmd queue 3 config pipe 3 queue 115kbytes gred 0.002/19kbytes/57kbytes/0.1 mask dst-ip 0xffffffff
$fwcmd queue 4 config pipe 4 queue 28kbytes gred 0.002/4kbytes/14kbytes/0.1 mask src-ip 0xffffffff
# table 3
$fwcmd queue 5 config pipe 5 queue 87kbytes gred 0.002/14kbytes/43kbytes/0.1 mask dst-ip 0xffffffff
$fwcmd queue 6 config pipe 6 queue 28kbytes gred 0.002/4kbytes/14kbytes/0.1 mask src-ip 0xffffffff
# table 4
$fwcmd queue 7 config pipe 7 queue 28kbytes gred 0.002/4kbytes/14kbytes/0.1 mask dst-ip 0xffffffff
$fwcmd queue 8 config pipe 8 queue 28kbytes gred 0.002/4kbytes/14kbytes/0.1 mask src-ip 0xffffffff
#----allow pipe and queue traffic-------------------------
# table 1
$fwcmd add 1 queue 1 ip from any to "table(1)" out
$fwcmd add 2 queue 2 ip from "table(1)" to not me in
# table 2
$fwcmd add 3 queue 3 ip from any to "table(2)" out
$fwcmd add 4 queue 4 ip from "table(2)" to not me in
# table 3
$fwcmd add 5 queue 5 ip from any to "table(3)" out
$fwcmd add 6 queue 6 ip from "table(3)" to not me in
# table 4
$fwcmd add 7 queue 7 ip from any to "table(4)" out
$fwcmd add 8 queue 8 ip from "table(4)" to not me in
Код: Выделить всё
net.inet.ip.fw.one_pass=0
# Превращаем сервер в черную дыру. Так ядро не будет слать ответные пакеты при попытке подключиться к незанятым портам (снижает нагрузку на машину во время DD
net.inet.tcp.blackhole=2
net.inet.udp.blackhole=1
net.inet.tcp.fast_finwait2_recycle=1
net.inet.tcp.always_keepalive=0
net.inet.tcp.keepidle=40000
net.inet.tcp.keepintvl=40000
net.inet.tcp.keepinit=40000
net.inet.tcp.finwait2_timeout=5000
net.inet.tcp.delayed_ack=0
net.inet.tcp.sendspace=16384
# This parametr useable only on http-servers with 8192 and on file servers with 65535
net.inet.tcp.recvspace=8192
net.inet.tcp.syncookies=1
# Уменьшаем время ожидания ответного пакета на запрос SYN-ACK (защита от SYN-флуда):
net.inet.tcp.msl=7500
net.inet.tcp.maxtcptw=40960
net.inet.tcp.nolocaltimewait=1
net.inet.tcp.sack.enable=0
net.inet.tcp.sendbuf_max=16777216
net.inet.tcp.recvbuf_max=16777216
net.inet.tcp.mssdflt=1460
net.inet.tcp.slowstart_flightsize=54
net.inet.tcp.sack.enable=0
net.inet.tcp.drop_synfin=1
net.inet.ip.random_id=1
net.inet.ip.redirect=0
net.inet.ip.portrange.first=1024
net.inet.ip.portrange.last=65535
net.inet.ip.portrange.randomized=0
net.inet.ip.intr_queue_maxlen=1024
net.inet.ip.sourceroute=0
net.inet.ip.accept_sourceroute=0
# Increases TTL (default 64)
net.inet.ip.ttl=128
# Ограничиваем число ответов на ICMP-сообщения 50-ю в секунду (защита от ICMP-флуда)
net.inet.icmp.icmplim=100
net.inet.icmp.maskrepl=0
# не отвечаем на пинг на широковещательный адрес
net.inet.icmp.bmcastecho=0
net.inet.icmp.drop_redirect=1
net.inet.icmp.log_redirect=0
# Увеличиваем максимальное количество подключений к серверу (защита от всех видов DDoS)
kern.ipc.somaxconn=32768
# Recive clusters (on amd64 7.2+ 65k is default)
# For such high value vm.kmem_size must be increased to 3G
kern.ipc.nmbclusters=229376
kern.ipc.maxsockets=204800
kern.ipc.maxsockbuf=262144
kern.maxvnodes=2000000
kern.maxfiles=204800
kern.maxfilesperproc=200000
kern.timecounter.hardware=TSC
net.inet.ip.fw.dyn_buckets=1024
net.inet.ip.fw.dyn_max=65536
net.inet.ip.fw.dyn_ack_lifetime=120
net.inet.ip.fw.dyn_syn_lifetime=10
net.inet.ip.fw.dyn_fin_lifetime=2
net.inet.ip.fw.dyn_short_lifetime=10
net.link.ether.inet.max_age=1200
net.link.ether.inet.max_age=800
#---atacks log to messages-------
sysctl net.inet.tcp.log_in_vain=1
#---optimize dummynet-----------
# размер хэш-таблицы, используемой dummynet для
# хранения очередей. Увеличение этого значение ускоряет работу
# dummynet при большом #количестве очередей, естественно в
# обмен на оперативную память
net.inet.ip.dummynet.hash_size=1024
# режим шейпинга =1, эмуляция медленного соединения =0
net.inet.ip.dummynet.io_fast=1
# логическая переменная. При установке в 1 очереди dummynet удаляются
# через некоторое время после того, как через них перестали "бегать" пакеты.
# В противном случае очереди удаляются только при нехватке памяти для размещения новых.
# Значение по умолчанию - 1. Имеет смысл выставлять в 0, если Ваш сервер обслуживает
# несколько крупных потребителей трафика, постоянно находящихся в режиме on-line - в этом случае
# кратковременное прекращение активности потребителя не должно вызывать удаления
# его очереди, чтобы не тратить времени на ее создание заново при появлении
# потребителя. В случае множества мелких потребителей, подключающихся и
# отключающихся от сети на длительный срок имеет смысл освобождать
# ресурсы, чтобы ускорить работу dummynet за счет меньшей таблицы очередей.
net.inet.ip.dummynet.expire=0
# целочисленная переменная, значение по умолчанию - 16. Количество очередей,
# способных одновременно храниться в одной ячейке хэш-таблицы. При превышении этого
# значение пустые очереди удаляются. (или те, которым меньше всего повезло).
net.inet.ip.dummynet.max_chain_len=32