Comments 61
Как мне кажется, можно было обойтись и без контроллера. Можно установить переключатель между выводами rx и tx ft232, и проверять его состояние, посылая байты в порт. Если выключатель замкнут, байты будут возвращаться, если разомкнут — нет.
Как раз для таких случаев, чтобы не лепить контроллер, у FT232 есть 5 выводов CBUS, которые можно использовать как порты ввода-вывода. Но для варианта с одним тумблером, конечно проще замыкать rx-tx.
Про дополнительные выводы я знаю, но насколько сложно работать с ними под Linux?
Работа с портом очень проста — он видится как файл.
Работа с портом очень проста — он видится как файл.
Элементарно работать. При помощи ioctl.
Я даже больше скажу, Драйверы от FTDI (и Linux и Windows) позволяют программно задавать минимум восьми ножкам микросхемы направление работы и переключать их произвольно.
То же самое умеют делать драйверы от SiLabs с чипами CP210x (под Windows — точно, там даже можно режим с push-pull на open drain менять)
То же самое умеют делать драйверы от SiLabs с чипами CP210x (под Windows — точно, там даже можно режим с push-pull на open drain менять)
А руки не чесались сделать побрутальнее? Ну как-то так:
Мелочь, но для коллектива это бы стало событием и предметом для шуток — а вам профит в виде заработанной репутации. Людям же важно не только то, «чтобы работало», но и немножко шоу.
Мелочь, но для коллектива это бы стало событием и предметом для шуток — а вам профит в виде заработанной репутации. Людям же важно не только то, «чтобы работало», но и немножко шоу.
Тогда уже вентилем.
Типо, сразу шейпить? Тогда уж несколько вентилей, с бирками: «Руководство», «Бухгалтерия», «Склад».
А для чего внешние pull-up резисторы? Можно же включить на соответствующих ногах встроенные
Светодиоды в идеале лучше было бы зажигать программно — желаемый стейт и так виден по положению тумблера, а какой он на деле — от софта зависит, пинов под это хватает
Ясное дело, что не всегда есть смысл слишком заморачиваться с полной реализацией, но оставить такую возможность в железе было бы в тему, а в прошивке зажечь леды по текущей схеме
А так можно было бы в будущем добавить веселую индикацию типа мигания при каких-то неполадках, во время переключения и тп
Вместо пустого цикла имхо лучше уводить мк в idle — таймеры и прерывания в нем останутся, а потребление меньше и в целом красивее
Светодиоды в идеале лучше было бы зажигать программно — желаемый стейт и так виден по положению тумблера, а какой он на деле — от софта зависит, пинов под это хватает
Ясное дело, что не всегда есть смысл слишком заморачиваться с полной реализацией, но оставить такую возможность в железе было бы в тему, а в прошивке зажечь леды по текущей схеме
А так можно было бы в будущем добавить веселую индикацию типа мигания при каких-то неполадках, во время переключения и тп
Вместо пустого цикла имхо лучше уводить мк в idle — таймеры и прерывания в нем останутся, а потребление меньше и в целом красивее
Душевно. Вопрос — а нельзя ли было просто ключ-переключатель на линии витой пары поставить? Правда в этом варианте нельзя разместить где угодно переключатель
Если Вы о физическом ключе — баловался я как-то с такой штукой в студенчестве. Пришел добрый препод армянского происхождения, указал пальцем на сертификатор и сказал «ПрАвЭрЪ». Вобщем не комильфо. Прям так сразу результат не выдам — больше десяти лет прошло, помню только что удивился очень. Правда переключатель был сделань такой себе медной «гребенкой» которая елозила от одного набора контактов на другой.
А через web-интерфейс почему не сделали?
UFO just landed and posted this here
А что будет с офисным интернетом, если кто-нибудь догадается скрестить ваш переключатель
с двумя такими штуками с двух сторон?
Можно было упростить, скрестив с devd.
Следующий этап — setfib, часть клиентов перекидываем в запасной канал.
Ну, и еще корректный шейпер для приоритезации типа и назначения траффика.
Следующий этап — setfib, часть клиентов перекидываем в запасной канал.
Ну, и еще корректный шейпер для приоритезации типа и назначения траффика.
Ожидал сложное устройство с тремя разъёмами Ethernet (два входа и «выход) и, по сути, с функциями MultiWAN-роутера. Но тоже вполне зачётно.
Топикстартер знает толк в извращениях ;)
Возьмите микротик и не страдайте фигней.
а смысл? у автора полноценный маршрутизатор на фряхе. переключать каналы как минимум можно автоматом по cron… единственный плюс в роутерборде — малый размер. К тому же не известно что на этом компе еще крутится
Автоматом нельзя. Ибо критерий переключения, субъективное мнение человека: «Что-то инет подтормаживает». Каналы могут работать стабильно несколько дней, а потом начаться «тормоза».
Для полноценной статистики нужно такое же устройство только не подключенное к роутеру. Главное чтоб лампочка при переключении загоралась и «тормоза» сразу уходят!
Более того, можно пойти дальше и провести в офис третий виртуальный интернет канал с синей лампочкой, на котором вообще «всё всегда летать будет» :)
Более того, можно пойти дальше и провести в офис третий виртуальный интернет канал с синей лампочкой, на котором вообще «всё всегда летать будет» :)
Полуавтоматический режим — когда инет ломается, он должен сам переключить в то же время можно переключить переключателем. Но для этого надо иметь возможность управлять светодиодами чтобы знать когда сработал автомат.
Ну тогда я вообще ничего не понимаю. Если у него полноценный биэсди почему просто нельзя вставить в него вторую сетевуху завести туда второй канал и балансить/переключать маршруты/отслеживать длину очереди отправки на канале и т.д. И т.п. Зачем этот «понт» с переключателем? Кто за него отвечает? Какова стратегия переключения если админ заболел и один канал отвалился?
А суть в том, что один канал быстрый но лимитированый по трафику, т.е. дорогой. А второй безлимитный, но иногда бывает падает скорость. Балансировать между ними не нужно. Если дешевый не лагает — работаем через него, иначе переключаемся на дорогой. Переключение силами ближайшего сотрудника, которому достаточно просто щелкнуть тумблером. При этом все видят, что сейчас инет по дорогому каналу и лишнего не качать.
А как же SLA?
я про то, что если канал упал и ваш комп-роутер перекинет канал на рабочий самостоятельно — лампочка-то останется прежней…
а судя по описанию, система тут же вернётся на использование дохлого канала из-за положения тумблера.
я про то, что если канал упал и ваш комп-роутер перекинет канал на рабочий самостоятельно — лампочка-то останется прежней…
а судя по описанию, система тут же вернётся на использование дохлого канала из-за положения тумблера.
А почему BGP не воспользовались? :)
А по-моему, забавно и симпатично.
Реализовать то можно многими способами, просто человеку захотелось и «смоглось» именно так.
Реализовать то можно многими способами, просто человеку захотелось и «смоглось» именно так.
Хм. У меня расклад похожий с каналами но я поступил по другому. Переключает таки автомат, на основе пингования инетовских серверов. Постоянно пингуется гугль, яндекс, и провайдер почты, с невысокой частотой. Проверяется сколько пакетов вернулось за последние полчаса.
Если оба канала примерно равны — то трафик идет по обоим, но на более слабый канал идет только 20% трафика. Если на одном из них потерь за последние полчаса примерно на 1% больше, то этот канал исключается. Плюс правится dns на внешнем серваке, чтобы люди до нас добирались по другому ip. Плюс почту шлёт, что переключился.
Иногда, когда на обоих каналах проблемы, то автомат может чудить, ибо у него лаг в полчаса. Но в остальном надежность инета стала радикально выше, чем на одном канале. И никаких BGP и AS просто не надо. Такую схему можно хоть для домашнего инета развернуть. Правда роутер — полноценный писюк на линухе — убунте.
Если оба канала примерно равны — то трафик идет по обоим, но на более слабый канал идет только 20% трафика. Если на одном из них потерь за последние полчаса примерно на 1% больше, то этот канал исключается. Плюс правится dns на внешнем серваке, чтобы люди до нас добирались по другому ip. Плюс почту шлёт, что переключился.
Иногда, когда на обоих каналах проблемы, то автомат может чудить, ибо у него лаг в полчаса. Но в остальном надежность инета стала радикально выше, чем на одном канале. И никаких BGP и AS просто не надо. Такую схему можно хоть для домашнего инета развернуть. Правда роутер — полноценный писюк на линухе — убунте.
Расскажите, пожалуйста, более подробно о реализации переключении?
тупой скрипт на баше.
#!/bin/bash
to="name@gmail.com"
log=/var/log/autoreroute.log
datadir=/tmp/ardd
aa="ya.ru google.com cas.dtln.ru"
host=`hostname`
if [ "$host" == "router1" ]; then
nhost=0
ia=( 11.11.11.1 22.22.22.1 )
gwa=( 11.11.11.2 22.22.22.2 )
else
if [ "$host" == "router2" ]; then
nhost=1
ia=( 11.11.12.1 22.22.23.1 )
gwa=( 11.11.12.2 22.22.23.2 )
else
exit
fi
fi
mkdir -p $datadir
cd $datadir || exit
rm *_*_*.log
ns=60
n=60
s=100
while true
do
n=$[$n+1]
if [ $n -ge $ns ] ; then
n=0
fi
for a in $aa
do
for i in ${ia[*]}
do
ping -c 6 -i 6 -n -I $i $a > ${n}_${a}_${i}.log &
done
done
for a in $aa
do
for i in ${ia[*]}
do
wait
done
done
for t in ${!ia[*]}
do
i=${ia[$t]}
v[$t]=`cat *_${i}.log | grep -F " bytes from " | wc -l`
done
so=$s
dif=$[${v[0]}-${v[1]}]
lim1=15
lim2=15
if [ $s -eq 1 ]; then
lim1=2
fi
if [ $s -eq 2 ]; then
lim2=2
fi
if [ $dif -gt -$lim1 -a $dif -lt $lim2 ] ; then
s=0
else
if [ ${v[0]} -lt ${v[1]} ] ; then
s=1
else
s=2
fi
fi
if [ $so -ne $s ] ; then
dt=`date --rfc-3339=seconds`
ip route flush table 100
ip route flush table 150
ip route flush cache
if [ $s -eq 0 ] ; then
ip route add default table 150 nexthop via ${gwa[0]} weight 3 nexthop via ${gwa[1]} weight 1
dt="$dt Both chanel up ${v[0]} ${v[1]}"
dnsi=1
else
if [ $s -eq 1 ] ; then
ip route add default via ${gwa[1]} table 100
conntrack -D -n ${ia[0]} > /dev/null 2>&1
dt="$dt Provider 2 down ${v[0]} ${v[1]}"
dnsi=0
else
ip route add default via ${gwa[0]} table 100
conntrack -D -n ${ia[1]} > /dev/null 2>&1
dt="$dt Provider 1 down ${v[0]} ${v[1]}"
dnsi=1
fi
fi
echo "$dt" >> $log
ip route flush cache
conntrack -D -s 10.0.1.6 > /dev/null 2>&1
conntrack -D -g 10.0.1.6 > /dev/null 2>&1
tst=5
while [ $tst -gt 0 ]; do
sleep 5
ssh dnseditor@ns.ourdomen.ru sudo /root/ed-dns.sh $nhost $dnsi >> $log && tst=1
tst=$[$tst-1]
done
tst=5
while [ $tst -gt 0 ]; do
sleep 5
( echo "To: $to" ; echo Subject: auto-reroute on $host ; echo ; echo "$dt" ) | sendmail -t >> $log 2>&1 && tst=1
tst=$[$tst-1]
done
fi
done
Естественно, кроме него надо прописать двух провайдеров в той части где описываются интерфейсы.
Плюс требуются таблицы правил. Плюс требуется настройка iptables в части nat и mangle, но это статические настройки. Они не меняются в процессе переключения провайдера.
Думал то что мне нужно. Но вчитавшись понял, что мне нужна «обратная» реализация. На основе каких-то «умозаключений», чтобы тумблер сам двигался.
В таком случае зачем «тумблер»? Если «умозаключения» могут переключить канал напрямую на сервере.
Да всё верно, но нужно что бы «железно» переключалось. Грозозащиту хочу.
Тогда управляемое реле — самое то.
получается 8 штук реле? ethernet
Есть реле с двумя группами контактов, так что 4 :)
Два реле с двумя группами контактов — редко когда используется все 4 пары кабеля. Но не так всё просто, туда нужны высокочастотные реле, иначе работать нифига не будет из-за огромных потерь на контактах и межконтактных емкостей.
Да, реле грозозащиту не обеспечивают — большинство из них рассчитано на напряжения не более 100 вольт на контактах а высокочастотные и того меньше.
Если нужна грозозащита именно на контактах то расстояние между разомкнутыми контактами должно быть сантиметров 5 и отключенные контакты надо заземлять
Да, реле грозозащиту не обеспечивают — большинство из них рассчитано на напряжения не более 100 вольт на контактах а высокочастотные и того меньше.
Если нужна грозозащита именно на контактах то расстояние между разомкнутыми контактами должно быть сантиметров 5 и отключенные контакты надо заземлять
Тоесть связка ардуина, датчик грозы+ реле, не сработает?
Если только в качестве реле не ставить контактор от электровоза — он на 25кВ рассчитан. И то, от прямого попадания — не убережет.
Контакты реле прошибёт. нужна защита от грозы — изолирующий трансформатор и супрессоры до трансформатора. И супрессоры от линейного напряжения — с проводов на заземление, иначе и трансформатор прошибёт.
Есть вариант дороже — выполните часть линии оптикой. Медь — конвертер — метр оптики — конвертер — медь.
Хороший и весёлый девайс.
Можно было бы сделать не менее брутальную, но более полезную штуку.
На стороне софтверного раутера настроить source based routing. А железку в виде диммера на распбери или микроконтролере. Который управляет раутером и перебрасывает определенный процент маршрутов с одного канала на другой. Так и балансировка нагрузки происходит, и внешний вид крут.
Можно было бы сделать не менее брутальную, но более полезную штуку.
На стороне софтверного раутера настроить source based routing. А железку в виде диммера на распбери или микроконтролере. Который управляет раутером и перебрасывает определенный процент маршрутов с одного канала на другой. Так и балансировка нагрузки происходит, и внешний вид крут.
Я для этого делал простую веб страничку с авторизацией, чтобы определенные люди, которым это разрешено, могли переключаться на нужный канал, когда меня нет на месте и чтобы меня не дергать. Роутер тоже был на базе компа с FreeBSD, делать железный вариант, как-то не пришло в голову :)
Многие вспомнили:
garth.typepad.com/.a/6a00d8341d6d8d53ef01a3fce223c7970b-pi
garth.typepad.com/.a/6a00d8341d6d8d53ef01a3fce223c7970b-pi
Sign up to leave a comment.
Офисный переключатель интернета