subal Опубликовано 27 июня, 2012 (изменено) · Жалоба имеется локальная сеть у которой шлюзом является FreeBSD 8.2-RELEASE (IPFW) на клиентов выделен канал 512/512 Кб/с все как бы норм но у 1 клиента идет превышение скорости канала в 4 раза. клиент использует программу Sharaman качает фильмы... вот конфиг ipfw #!/bin/sh FwCMD="/sbin/ipfw -q" ${FwCMD} -f flush IFACE="bce1" IFNet="bce0" myLan="x.x.0.0/24" ${FwCMD} -f flush ${FwCMD} -f pipe flush ${FwCMD} pipe 1 config bw 512Kbit/s queue 32Kbytes mask dst-ip 0xffffffff ${FwCMD} pipe 10 config bw 512Kbit/s queue 32Kbytes mask dst-ip 0xffffffff ${FwCMD} pipe 2 config bw 1024Kbit/s queue 32Kbytes mask dst-ip 0xffffffff ${FwCMD} pipe 3 config bw 2Mbit/s queue 512Kbytes mask dst-ip 0xffffffff ${FwCMD} pipe 4 config bw 15Mbit/s queue 512Kbytes mask dst-ip 0xffffffff ${FwCMD} add 100 allow ip from any to any via lo ${FwCMD} add 4000 pipe 4 ip from table\(1\) to any via $IFACE in ${FwCMD} add 4001 pipe 4 ip from any to table\(1\) via $IFACE out ${FwCMD} add 4100 pipe 3 ip from table\(3\) to any via $IFACE in ${FwCMD} add 4101 pipe 3 ip from any to table\(3\) via $IFACE out ${FwCMD} add 4500 pipe 1 ip from table\(4\) to any via $IFACE in ${FwCMD} add 4501 pipe 2 ip from any to table\(4\) via $IFACE out ${FwCMD} add 5000 pipe 1 ip from table\(2\) to any via $IFACE in ${FwCMD} add 5001 pipe 10 ip from any to table\(2\) via $IFACE out ${FwCMD} add 30000 deny log ip from 0.0.0.0/0 to any via $IFACE in ${FwCMD} add 30000 deny log ip from any to 0.0.0.0/0 via $IFACE out ${FwCMD} add 65530 allow log ip from any to any sysctl.conf net.inet.ip.forwarding=1 net.inet.ip.fw.verbose=1 net.inet.ip.fw.verbose_limit=1000 net.inet.ip.fw.one_pass=1 ipfw pipe 10 show ipfw pipe 10 show 00010: 512.000 Kbit/s 0 ms burst 0 q131082 32 KB 0 flows (1 buckets) sched 65546 weight 0 lmax 0 pri 0 droptail sched 65546 type FIFO flags 0x1 64 buckets 7 active mask: 0x00 0x00000000/0x0000 -> 0xffffffff/0x0000 BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp 23 ip 0.0.0.0/0 х.х.х.х/0 247033 123869328 74 32862 53537 (проблемный клиент) как быть? в чем проблема? почему идет превышение скорости? Изменено 27 июня, 2012 пользователем subal Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
st_re Опубликовано 27 июня, 2012 · Жалоба он в таблицу/пайп 3 не попал ? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
subal Опубликовано 27 июня, 2012 · Жалоба ну по идее клиент присутствует в table 2 ${FwCMD} pipe 1 config bw 512Kbit/s queue 32Kbytes mask dst-ip 0xffffffff ${FwCMD} pipe 10 config bw 512Kbit/s queue 32Kbytes mask dst-ip 0xffffffff ${FwCMD} add 5000 pipe 1 ip from table\(2\) to any via $IFACE in ${FwCMD} add 5001 pipe 10 ip from any to table\(2\) via $IFACE out Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
nnb Опубликовано 27 июня, 2012 · Жалоба ${FwCMD} pipe 1 config bw 512Kbit/s queue 32Kbytes mask dst-ip 0xffffffff ${FwCMD} add 5000 pipe 1 ip from table\(2\) to any via $IFACE in превышение идет для pipe 1? или для pipe 10? В pipe 1 config может mask src-ip 0xffffffff писать. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ilya Evseev Опубликовано 27 июня, 2012 · Жалоба 1) Входящий и исходящий трафик направляется в один и тот же pipe: table 1 = pipe 4, table 3 = pipe 3. Это сделано намеренно? 2) В pipe 1 направляется трафик из двух таблиц, 4 и 2. Это тоже намеренно? 3) Попробуйте вместо "via $IFACE in" написать просто "out" или "via $IFNet out". Шаманство, но иногда почему-то помогает. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
st_re Опубликовано 27 июня, 2012 · Жалоба ну по идее клиент присутствует в table 2 ${FwCMD} pipe 1 config bw 512Kbit/s queue 32Kbytes mask dst-ip 0xffffffff ${FwCMD} pipe 10 config bw 512Kbit/s queue 32Kbytes mask dst-ip 0xffffffff ${FwCMD} add 5000 pipe 1 ip from table\(2\) to any via $IFACE in ${FwCMD} add 5001 pipe 10 ip from any to table\(2\) via $IFACE out А без идей ? В таблице 3 и/или пайпе 3 его нет ? мы вообще что ищем вход или исход? Как тут верно заметили у Вас там вообще бардель с пайпами и таблицами. В приведенном куске у Вас в одну сторону режется трафик к Вашим клиентам по 512 кб на каждого Вашего клиента, а в обратную сторону по 512 кбит на хост получателя (mask dst-ip). т.е. 2 человека одновременно заливающие на наг картинку будут толкаться в очереди. но 1 человек зальет на скорости порта торентов во все направления по миру. ибо DST у небо будет 100500 разных (и каждому не быстрее 512 кб). зы $IFACE это интерфейс куда уходит трафик на Ваших клиентов и отттуда приходиит трафик от них ? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
subal Опубликовано 28 июня, 2012 · Жалоба извините за лишний конфиг... запутал вас! клиент находится в table 2 т.к. pipe на этой таблице настроен 512/512. остальные тестовые и временные.... канал мерил на порту т.е. там показывает превышение исходящего трафика! а насчет mask dst-ip и src-ip да это логично! что то я об этом не подумал... конфиг создавал давно про это и позабыл... сейчас данную маску поправил и попробую понаблюдать за каналами! $IFACE это интерфейс в локальную сеть сделал ${FwCMD} pipe 1 config bw 512Kbit/s queue 32Kbytes mask SRC-IP 0xffffffff Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ixi Опубликовано 28 июня, 2012 · Жалоба У нас тоже временами скорость где-нибудь да поднимется в 4-5 раз больше разрешённой. С чем связано -- так и не разобрались (торрентами грузить пытались, всё ровно). disable one_pass deny ip from table(2) to table(2) divert tablearg ip from any to table(96) in via em0 pipe tablearg ip from any to table(0) out pipe tablearg ip from table(1) to any out netgraph 100 ip from 10.2.0.0/16 to any out netgraph 100 ip from any to 10.2.0.0/16 out divert tablearg ip from table(97) to not table(2) out via em0 Таблицы правильные, в ipfw pipe list всё красиво, но на порту и в нетфлоу-- явное превышение. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
st_re Опубликовано 28 июня, 2012 · Жалоба Ну если нетфлов до шейпера, то там таки может быть все что угодно... никто не мешает залить клиенту гигабит. Через шейпер оно пролезать не должно. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ixi Опубликовано 28 июня, 2012 · Жалоба Ну если нетфлов до шейпера, то там таки может быть все что угодно... никто не мешает залить клиенту гигабит. Через шейпер оно пролезать не должно. Нетфлоу после шейпера, это видно из конфига. Да и физический канал после. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
st_re Опубликовано 28 июня, 2012 · Жалоба тогда ищите где оно не в те пайпы попадает или не попадает вовсе. почитайте в районе kern/127209, kern/144269 and kern/143474 У меня в то время когда данная проблема бывала левые IP в show pipe появлялись. опять же у меня в варианте pipe tablearg ip from any to table(0) out были только проблемы попадания в пайп когда IP вообще нет в таблице, а попадания в другой пайп небыло, но не факт, что такое невозможно в принципе. В вариате конфига же из первого сообщения IP вместо 10 пайпа моглдо попасть и во 2 и в 3 и в 4. Если у Вас 8.х и оно попадает не в тот пайп, то отпишите sendpr ибо я не видел это в 8. но сначала убедиться, что в логике все на месте. И для кучи kern/148429. И еще. net.inet.ip.dummynet.hash_size: ? ( или ipfw pipe xxx config xxx buckets ___) ? его хватает ? Там по умолчанию 64, что несколько маловато для промышленного использования.... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ixi Опубликовано 28 июня, 2012 · Жалоба тогда ищите где оно не в те пайпы попадает или не попадает вовсе. Не подходит. Левых адресов и удвоений не наблюдалось, пайпы правильные (на момент проверок), и как правило работают нормально (всплески разовые на полчаса-час, у разных пользователей). 8.0-RELEASE, hash_size/buckets с запасом. Добавлю сохранение таблиц/пайпов в крон, понаблюдаю, может что и всплывёт в момент таких аномалий. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ixi Опубликовано 28 июня, 2012 · Жалоба Очередной инцидент не заставил себя ждать. # ipfw table 0 list | grep 1.2.3.4 1.2.3.4/32 828 # ipfw -a list 15149 140 59507 count ip from any to 1.2.3.4 out 15150 26610746597 29639299137601 pipe tablearg ip from any to table(0) out # ipfw pipe list | grep 1.2.3.4 <пусто> # ipfw -f pipe flush # ipfw -f queue flush # <восстанавливаем> # ipfw pipe list | grep 1.2.3.4 <пусто> # ipfw table 0 delete 1.2.3.4/32 # ipfw table 0 add 1.2.3.4/32 828 # ipfw pipe list | grep 1.2.3.4 <пусто> # ipfw table all flush # <восстановливаем> # ipfw pipe list | grep 1.2.3.4 5891 ip 0.0.0.0/0 1.2.3.4/0 6267 8995803 0 0 0 3084 ip 1.2.3.4/0 0.0.0.0/0 2875 177227 0 0 0 Похоже, что проблема таки с таблицами. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
st_re Опубликовано 28 июня, 2012 · Жалоба Это что за версия ? (uname -a) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ixi Опубликовано 29 июня, 2012 · Жалоба Это что за версия ? (uname -a) FreeBSD *** 8.0-RELEASE FreeBSD 8.0-RELEASE #0: Tue Dec 8 13:58:20 MSK 2009 root@fiziki1:/usr/obj/usr/src/sys/fiziki.2009-08-12 i386 Похоже, что придётся таки искать резерв и пересобирать. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Hawk128 Опубликовано 29 июня, 2012 · Жалоба В первую очередь обновись до stable. Там изменений туча была. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
st_re Опубликовано 29 июня, 2012 · Жалоба ну да, 8.0 в продакшене вообще не ставил. Дождался 8.1. Массово ставил уже 8.2. Я бы начал с обновления. х.0-RELEASE вообще стремно. Ее массово почитай и не пользовал никто до выхода. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...