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

loginrl103

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

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

  • Посещение

О loginrl103

  • Звание
    Абитуриент
    Абитуриент

Контакты

  • ICQ
    Array
  1. Значит как итог - на текущих мыльницах просто выставляется одинаковый ssid и всё?
  2. Те можно взять самые тупые мыльницы, дать им всем один ssid и всё? Те для клиента на запрос определённого ssid получать несколько ответов нормально?
  3. Тут требуется 10 точек доступа Mikrotik RB751, настроите на них ограничение по минимальному уровню сигнала, расставите по ходу движения ноутбука. Подключите в одну локальную сеть. После всего можете хоть бегать с ноутбуком, он будет всегда на связи. Те программно ничего не придётся трогать на ноутах? Он сам при обнаружении нового сигнала подцепится? А каков алгоритм работы. Те скажем ноут подцеплен к точке А, связь теряется, ап А это видит и передаёт эту инфу - "разрыв связи" - точке Б, та в свою очередь включает ssid и ноут видит что сигнал снова появился. Те эти железки как бы предоставляют один ssid?
  4. Интересуют способы реализации такой схемы: имеется 10 точек доступа, между собой которые могут быть соединены через lan, и есть пару ноутбуков с которыми приходится носиться, соот-но периодически возникают ситуации когда ноут теряет точку доступа. Тут либо программно переподключаться к новой точке, находящейся в зоне видимости, либо как-то (как?) реализовать это железно на уровне самих ап'шек. Кто что подскажет?)
  5. Maximum Threads per Process = 100 Number of PHP Script Servers = 10 Script and Script Server Timeout Value = 420 The Maximum SNMP OID's Per SNMP Get Request = 80 таких таймаутов и такого числа тредов должно хватить для отслеживания в десяток раз большего числа серверов.
  6. 0.8.7g, без буста. порядком подзадолбал какти, рисовал графики нормально, после добавления нескольких серверов, ПО ВСЕМ графикам произошёл провал минут на 20, те в течении 20 минут данные не собирались, графики не строились. Щас рисует нормально. В логах - ничего криминального, ни одной ошибки. Кроме как перехода на нормальный мониторинг - есть хоть какие нить идеи?
  7. добавлена, запускается из под юзверя какти, права стоят правильные. в логах по нулям - в режиме debug в логах до фени всего, но ничего подозрительного.
  8. последняя версия какти, centos 2.6.18; проблема - графики обновляются только при просмотре через браузер графиков. те ночью графики не просматриваются, как результат - графики за ночь пустой, что естественно не правильно. стоит посмотреть графики через брузер - и о чудо, они начинают прорисовываться (с момента начала просмотра графиковб за ночь таки пусто и остаётся). в логах ошибок нету, права стоят вроде правильно...куда копать?
  9. так этот велосипед онли фо хоум )) в прошивке минимальное число классификаторов и дисциплин - через них не удалось сделать что надо)
  10. http://stat.oborona.net/temp/tc-viewer ./tc-viewer imq0 Визуально видно перераспределение? пока не пробовал; на днях буду
  11. весь инет трафик перенаправляется на imq0; хттп подсчитывается ulog-acctd; мы знаем какая скорость отдана под канал хттп и время, в течении которого собирается статика: рассчитываем порог время*скорость-несколько%; если собранная статика превышает рассчитанный порог (те загрузка канала для хттп высока), то значит скорости для хттп не хватает - накидываем скорости; если ниже порога - скорости выделено с излишком - начинаем постепенно урезать; ночью с 1-8 всё отдаём торрентам; скрипт крутится на ембедед железке - вся статика собирается в память (ramfs), поэтому чтоб память неожиданно не кончилась каждые 500 проходов файл очищаем; скрипт, которые всё это делает #!/opt/bin/bash insmod imq insmod ipt_IMQ ip link set imq0 up iptables -t mangle -F iptables -t mangle -A POSTROUTING -p tcp -d 172.16.0.0/16 -s \! 172.16.0.0/16 -j IMQ --todev 0 # сколько раз производилось чтения статики let count_update=0 # таймаут между проверками let timeout="20" # минимальная гарантированная скорость (kbit) let min_speed="200" # максимальная гарантированная скорость (kbit) let max_speed="1900" # current speed (kbit) let cur_speed="$min_speed" # шаг изменения скорости при увеличении скорости (kbit) let step_speed_up="700" # шаг изменения скорости при уменьшении скорости (kbit) let step_speed_down="150" # процент отклонения let accurate="30" # число прежде полученых бит let bytes_prev="$min_speed*($timeout-2) - (($min_speed*($timeout-2))/100*$accurate)" # сколько получено за последний раз let diff_bytes="0" function comp() { echo curb=`awk -f ./1.awk /opt/var/log/ulog-acctd/account.log` t=`echo $curb | wc -w` # если строка пустая if [ "$t" -eq 0 ] then echo " comp: awk script return empty string!" return -1 fi # если в строке несколько чисел if [ "$t" -gt 1 ] then echo " comp: awk script return more than 1 line!" return -1 fi # пересчитываем в килобиты let curb="$curb*8/1024" # thres - расчитанный необходимый порог для изменения скорости let thres="$cur_speed*($timeout-2) - (($cur_speed*($timeout-2))/100*$accurate)" # diff_bytes - сколько получено с последнего раза let diff_bytes="$curb-$bytes_prev" if [ "$diff_bytes" -ge "$thres" ] then # если превысили заданный раннее высчитанный порог - необходимо увеличить скорость echo " comp: cur_speed: $cur_speed kbit, diff_bytes: $diff_bytes kbit; curb: $curb kbit; bytes_prev: $bytes_prev kbit; thres: $thres; need increase speed" return 1 else # если не превысили заданный ранне высчитанный порог - необходимо уменьшить скорость echo " comp: cur_speed: $cur_speed kbit, diff_bytes: $diff_bytes kbit; curb: $curb kbit; bytes_prev: $bytes_prev kbit; thres: $thres; need decrease speed" return 0 fi } function update_shaper() { #return 0 TC=tc DEVB=imq0 let t="$max_speed-$cur_speed" ` $TC qdisc del dev $DEVB root $TC qdisc add dev $DEVB root handle 1: htb default 30 $TC class add dev $DEVB parent 1: classid 1:1 htb rate ${max_speed}kbit burst 10k $TC class add dev $DEVB parent 1:1 classid 1:10 htb rate ${cur_speed}kbit burst 30k prio 0 $TC class add dev $DEVB parent 1:1 classid 1:20 htb rate 10kbit ceil 200kbit burst 20k prio 0 $TC class add dev $DEVB parent 1:1 classid 1:30 htb rate 100kbit ceil ${t}kbit burst 20k prio 6 $TC qdisc add dev $DEVB parent 1:10 sfq perturb 10 $TC qdisc add dev $DEVB parent 1:20 sfq perturb 10 $TC qdisc add dev $DEVB parent 1:30 sfq perturb 10 # http $TC filter add dev $DEVB protocol ip prio 0 parent 1:0 u32 match ip sport 80 0xffff flowid 1:10 $TC filter add dev $DEVB protocol ip prio 0 parent 1:0 u32 match ip dport 80 0xffff flowid 1:10 # ssh $TC filter add dev $DEVB protocol ip prio 0 parent 1:0 u32 match ip sport 22 0xffff flowid 1:20 $TC filter add dev $DEVB protocol ip prio 0 parent 1:0 u32 match ip dport 22 0xffff flowid 1:20 ` # даём несколько секунда на восстановление скорости после изменения настроек шейпера sleep 2 } update_shaper while [ 1 ] do t=`date +%H` let t="$t" if [ "$t" -ge "1" ] && [ "$t" -le "8" ] then tc qdisc del dev imq0 root let t="7*3600" echo " main: night mode: shaper will delete! sleep: $t sec" sleep $t fi comp ret=$? bytes_prev=$curb # если канал таки загружен if [ "$ret" -eq 1 ] then # увеличиваем шаг let cur_speed="$cur_speed+$step_speed_up" # новая скорость не должна быть больше max_speed if [ "$cur_speed" -gt "$max_speed" ] then cur_speed=$max_speed fi # перестраиваем шейпер echo "main: increase speed: new cur_speed: $cur_speed" update_shaper # если канал таки не загружен elif [ "$ret" -eq "0" ] then if [ "$cur_speed" -ne "$min_speed" ] then # скорость понижаем гораздо медленее чем повышаем let cur_speed="$cur_speed-$step_speed_down" # новая скорость не должна быть меньше min_speed if [ "$cur_speed" -lt "$min_speed" ] then cur_speed=$min_speed fi update_shaper echo "main: decrease speed: new cur_speed: $cur_speed" else echo "main: decrease speed (without update_shaper): new cur_speed: $cur_speed" fi # если функция сравнения не смогла обработать данные elif [ "$ret" -eq "-1" ] then echo "main: ERROR: invalid argument passed in comapre function!" fi let count_update="$count_update+1" # каждые 500 обновлений очищаем файл if [ "$count_update" -eq "500" ] then if [ -e /opt/var/run/ulog-acctd.pid ]; then echo "main: stop aulog-acctd; remove log file" kill -STOP `cat /opt/var/run/ulog-acctd.pid`; rm /opt/var/log/ulog-acctd/account.log rm /opt/var/log/ulog-acctd/debug.log rm /opt/var/log/ulog-acctd/dump* rm /opt/var/log/ulog-acctd/qwe echo "main: create new account.log" touch /opt/var/log/ulog-acctd/account.log echo "main: continue execute ulog-acctd" kill -CONT `cat /opt/var/run/ulog-acctd.pid`; let count_update="0" let bytes_prev="0" fi fi sleep $timeout done и #!/usr/bin/awk -f { t=t+$3 } END { print t} работает нормальн )); торренты качают на максимуме пока нету нагрузки на хттп; как только появляется нагрузка - скорости накидывается почти мегабит [чтоб видео не тормозило], снижение скорости идёт гораздо медленнее - вероятность возобновления нагрузки на хттп довольно высока :)
  12. на выходных таки плюнул на это бадание (то ли лыжи не едут, то ли я ...), написал свой скрипт с шейпером под свои нужды: работает более чем достаточно.
  13. до сетевой карты? телепатически из воздуха?) он получает карты ИЗ драйвера сетевой карты, ДО обработки пакетов сетевой подсистемой; crc должен быть одним и тем же в случае расчёта как программно так и аппаратно.
  14. Когда сетевая карта поддерживает расчет crc, то CPU уже не производит расчет суммы. это я знаю, вопрос был насчёт "Если сетевуха отправителя сама рассчитывает чексуммы пакета, то в дампе мы увидим мусор вместо правильного CRC" - почему crc должны быть разной для аппаратно и программно рассчитанных?